目录
一、特征归一化
1. 为什么要做归一化
为了消除数据特征间的量纲影响,是的不同指标之间具有可比性
(1)归一化加快了梯度下降求最优解的速度
在学习速率相同的情况下,取值空间较大的特征x1更新速度会大于x2,需要较多迭代才能找到最优解。通过梯度下降法求解的模型通常需要归一化,包括线性回归、逻辑回归、支持向量机、神经网络等,但对于决策树不适用,归一化并不会改变样本在特征x上的信息增益。
(2)归一化有可能提高精度
一些分类器需要计算样本件距离(如欧氏距离),若一个特征值域范围较大,则距离计算会主要取决于该特征,从而与实际情况相悖。
2. 归一化的类型
(1)线性归一化/min-max标准化
该方法适用于数值较集中的情况。缺点:若min\max不稳定,则结果不稳定,实际使用中使用经验常值来代替max、min
(2)标准差标准化/Z-Score
经过标准化后数据符合标准正态分布,即均值为0,标准差为1。适用于属性最大值最小值位置的情况,或有超出取值范围的离群数据的情况。该方法要求是原始数据分布可近似为高斯分布,否则归一化效果较差。
(3)非线性归一化
常用在数据分化较大的场景,通过数学函数,对原始值进行映射,包括 log、指数、正切的等,需根据数据分布情况,决定非线性函数的曲线。
二、类别型特征
在对数据处理时,应怎样处理类别型特征?
(1) 序号编码
序号编码通常用于处理类别间具有大小关系的数据。按照大小关系对类别型特征赋予一个数值ID, 例如高表示为3、 中表示为2、 低表示为1, 转换后依然保留了大小关系。
(2)独热编码
独热编码通常用于处理类别间不具有大小关系的特征,将数据处理为多维系数矩阵。 对于类别取值较多的情况下使用独热编码需要注意以下问题。
- 使用稀疏向量来节省空间。 在独热编码下, 特征向量只有某一维取值为1, 其他位置取值均为0。 因此可以利用向量的稀疏表示有效地节省空间, 并且目前大部分的算法均接受稀疏向量形式的输入。
- 配合特征选择来降低维度。 高维度特征会带来几方面的问题。 一是在K近邻算法中, 高维空间下两点之间的距离很难得到有效的衡量; 二是在逻辑回归模型中, 参数的数量会随着维度的增高而增加, 容易引起过拟合问题; 三是通常只有部分维度是对分类、 预测有帮助, 因此可以考虑配合特征选择来降低维度。
(3) 二进制编码
二进制编码主要分为两步, 先用序号编码给每个类别赋予一个类别ID, 然后将类别ID对应的二进制编码作为结果。以A、 B、 AB、 O血型为例, A型血的ID为1, 二进制表示为001; B型血的ID为2, 二进制表示为010; 以此类推可以得到AB型血和O型血的二进制表示。 二进制编码本质上是利用二进制对ID进行哈希映射, 最终得到0/1特征向量, 且维数少于独热编码, 节省了存储空间。