文章目录
问题清单
为什么要对特征做归一化
归一化和标准化本质上都是一种线性变换。线性变换有很多良好的性质,这些性质决定了为什么对数据进行改变后竟然不会造成 失效 ,反而还能提高数据的表现 拿其中很重要的一个性质为例,线性变化不改变原始数据的数值排序
什么是归一化
归一化方法有两种形式,一种是把数变为(0,1)之间的小数,一种是把有量纲表达式变为无量纲表达式。主要是为了数据处理方便提出来的,把数据映射到0~1范围之内处理,更加便捷快速,应该归到数字信号处理范畴之内。
归一化的作用
在机器学习领域中,不同评价指标(即特征向量中的不同特征就是所述的不同评价指标)往往具有不同的量纲和量纲单位,这样的情况会影响到数据分析的结果,为了消除指标之间的量纲影响,需要进行数据标准化处理,以解决数据指标之间的可比性。原始数据经过数据标准化处理后,各指标处于同一数量级,适合进行综合对比评价。其中,最典型的就是数据的归一化处理。
简而言之,归一化的目的就是使得预处理的数据被限定在一定的范围内(比如[0,1]或者[-1,1]),从而消除奇异样本数据导致的不良影响
如果不进行归一化,那么由于特征向量中不同特征的取值相差较大,会导致目标函数变“扁”。这样在进行梯度下降的时候,梯度的方向就会偏离最小值的方向,走很多弯路,即训练时间过长
1)归一化后加快了梯度下降求最优解的速度;
2)归一化有可能提高精度(如KNN)
常用的归一化方法
最大最小标准化(Min-Max Normalization)
- 本归一化方法又称为离差标准化,使结果值映射到[0 ,1]之间,转换函数如下:
x ′ = x − m i n ( x ) m a x ( x ) − m i n ( x ) ‾ x' =x -min(x) \\ \overline{max(x)-min(x)} x′=x−min(x)max(x)−min(x) - 本归一化方法比较适用在数值比较集中的情况
- 缺陷:如果max和min不稳定,很容易使得归一化结果不稳定,使得后续使用效果也不稳定。实际使用中可以用经验常量来替代max和min。
- 应用场景:在不涉及距离度量、协方差计算、数据不符合正太分布的时候,可以使用第一种方法或其他归一化方法(不包括Z-score方法)。比如图像处理中,将RGB图像转换为灰度图像后将其值限定在[0 255]的范围
Z-score标准化方法
- 数据处理后符合标准正态分布,即均值为0,标准差为1,其转化函数为
其中μ为所有样本数据的均值,σ为所有样本数据的标准差。 - 本方法要求原始数据的分布可以近似为高斯分布,否则归一化的效果会变得很糟糕
- 应用场景:在分类、聚类算法中,需要使用距离来度量相似性的时候、或者使用PCA技术进行降维的时候,Z-score standardization表现更好
非线性归一化
- 本归一化方法经常用在数据分化比较大的场景,有些数值很大,有些很小。通过一些数学函数,将原始值进行映射
- 该方法包括 log,正切等,需要根据数据分布的情况,决定非线性函数的曲线
- log对数函数转换方法
- atan反正切函数转换方法
- L2范数归一化方法
应用场景说明
- 概率模型不需要归一化,因为这种模型不关心变量的取值,而是关心变量的分布和变量之间的条件概率;
- SVM、线性回归之类的最优化问题需要归一化,是否归一化主要在于是否关心变量取值;
- 神经网络需要标准化处理,一般变量的取值在-1到1之间,这样做是为了弱化某些变量的值较大而对模型产生影响。一般神经网络中的隐藏层采用tanh激活函数比sigmod激活函数要好些,因为tanh双曲正切函数的取值[-1,1]之间,均值为0.
- 在K近邻算法中,如果不对解释变量进行标准化,那么具有小数量级的解释变量的影响就会微乎其微。
归一化和标准化的区别
- 归一化:缩放仅仅跟最大 最小值的差别有关
- 标准化:缩放和每个点都有关系,通过方差(variance)体现出来 与归一化对比,标准化中所有数据点都有贡献(通过均值和标准差造成影响)
- 归一化: 输出范围在0-1之间
- 标准化:输出范围是负无穷到正无穷
什么是组合特征?如何处理高维组合特征?
为了提高复杂关系的拟合能力,在特征工程中经常会把一阶离散特征两两组合,构成高阶组合特征。以广告点击预估问题为例,原始数据有语言和类型两种 离散特征,表1.2是语言和类型对点击的影响。为了提高拟合能力,语言和类型可 以组成二阶特征,表1.3是语言和类型的组合特征对点击的影响.
为了提高复杂关系的拟合能力,我们时常把两个特征变量的
m
m
m个特征和
n
n
n个特征合在一块组成一个由
m
∗
n
m*n
m∗n个特征组成的向量。这种方法当引入ID类特征的时候,问题就出现了。这时需要引入一个较小的数
k
(
k
<
<
m
,
n
)
k(k<<m,n)
k(k<<m,n),来达成降维目的。等价于矩阵分解(包括lu分解、qr分解和奇异值分解),他们都有各自独特的算法决定
K
K
K值,使得特征数下降到
(
m
+
n
)
∗
k
(m+n)*k
(m+n)∗k,甚至到只有
k
k
k个特征(这时的
k
k
k可能还只是个位数)。
怎样有效地找到组合特征
从根本上看,得用决策树算法(简单说就是根据不同特征的分叉去构建因变量模型)
请比较欧式距离与曼哈顿距离?
欧氏距离,最常见的两点之间或多点之间的距离表示法,又称之为欧几里得度量,它定义于欧几里得空间中,以二维空间为例,两点
(
x
1
,
y
1
)
(x_1,y_1)
(x1,y1),
(
x
2
,
y
2
)
(x_2,y_2)
(x2,y2)之间的欧氏距离为:
p
=
(
x
2
−
x
1
)
2
+
(
y
2
−
y
1
)
2
p =\sqrt{(x_2-x_1)^2+(y_2-y_1)^2}
p=(x2−x1)2+(y2−y1)2
曼哈顿距离表示两个点在标准坐标轴上的绝对轴距之和,以二维空间为例,两点
(
x
1
,
y
1
)
(x_1,y_1)
(x1,y1),
(
x
2
,
y
2
)
(x_2,y_2)
(x2,y2)之间的欧氏距离为:
c
=
∣
x
1
−
x
2
∣
+
∣
y
1
−
y
2
∣
c =|x_1-x_2|+|y_1-y_2|
c=∣x1−x2∣+∣y1−y2∣
欧氏距离虽然很有用,但也有明显的缺点。它将样本的不同属性(即各指标或各变量量纲)之间的差别等同看待,这一点有时不能满足实际要求。例如,在教育研究中,经常遇到对人的分析和判别,个体的不同属性对于区分个体有着不同的重要性。因此,欧氏距离适用于向量各分量的度量标准统一的情况。
曼哈顿距离中的距离计算公式比欧氏距离的计算公式看起来简洁很多,只需要把两个点坐标的 x 坐标相减取绝对值,y 坐标相减取绝对值,再加和。
曼哈顿距离和欧氏距离的意义相近,也是为了描述两个点之间的距离,不同的是曼哈顿距离只需要做加减法,这使得计算机在大量的计算过程中代价更低,而且会消除在开平方过程中取近似值而带来的误差。不仅如此,曼哈顿距离在人脱离计算机做计算的时候也会很方便
曼哈顿距离,我们可以定义曼哈顿距离的正式意义为L1-距离或城市区块距离,也就是在欧几里得空间的固定直角坐标系上两点所形成的线段对轴产生的投影的距离总和
通俗来讲,想象你在曼哈顿要从一个十字路口开车到另外一个十字路口,驾驶距离是两点间的直线距离吗?显然不是,除非你能穿越大楼。而实际驾驶距离就是这个“曼哈顿距离”,这也是曼哈顿距离名称的来源, 同时,曼哈顿距离也称为城市街区距离(City Block distance)。
为什么一些场景中使用余弦相似度而不是欧式距离
欧式距离和余弦相似度的区别
&emsp余弦相似度衡量的是维度间取值方向的一致性,注重维度之间的差异,不注重数值上的差异,而欧氏度量的正是数值上的差异性
如某T恤从100块降到了50块(A(100,50)),某西装从1000块降到了500块(B(1000,500)),那么T恤和西装都是降价了50%,两者的价格变动趋势一致,可以用余弦相似度衡量,即两者有很高的变化趋势相似度,但是从商品价格本身的角度来说,两者相差了好几百块的差距,欧氏距离较大,即两者有较低的价格相似度。
如果要对电子商务用户做聚类,区分高价值用户和低价值用户,用消费次数和平均消费额,这个时候用余弦夹角是不恰当的,因为它会将(2,10)和(10,50)的用户算成相似用户,但显然后者的价值高得多,因为这个时候需要注重数值上的差异,而不是维度之间的差异。
两用户只对两件商品评分,向量分别为(3,3)和(5,5),显然这两个用户对两件商品的偏好是一样的,但是欧式距离给出的相似度显然没有余弦值合理。
One-hot的作用是什么?为什么不直接使用数字作为表示
http://www.likecs.com/show-64021.html
https://www.jianshu.com/p/181475ea545b
one hot编码是将类别变量转换为机器学习算法易于利用的一种形式的过程。
独热编码(是因为大部分算法是基于向量空间中的度量来进行计算的,为了使非偏序关系的变量取值不具有偏序性,并且到原点是等距的。使用one-hot编码,将离散特征的取值扩展到了欧式空间,离散特征的某个取值就对应欧式空间的某个点。将离散型特征使用one-hot编码,会让特征之间的距离计算更加合理。离散特征进行one-hot编码后,编码后的特征,其实每一维度的特征都可以看做是连续的特征。就可以跟对连续型特征的归一化方法一样,对每一维特征进行归一化。比如归一化到[-1,1]或归一化到均值为0,方差为1。
为什么特征向量要映射到欧式空间?
将离散特征通过one-hot编码映射到欧式空间,是因为,在回归,分类,聚类等机器学习算法中,特征之间距离的计算或相似度的计算是非常重要的,而我们常用的距离或相似度的计算都是在欧式空间的相似度计算,计算余弦相似性,基于的就是欧式空间。
独热编码的优缺点
- 优点:独热编码解决了分类器不好处理属性数据的问题,在一定程度上也起到了扩充特征的作用。它的值只有0和1,不同的类型存储在垂直的空间。
- 缺点:当类别的数量很多时,特征空间会变得非常大,成为一个高维稀疏矩阵。在这种情况下,一般可以用PCA来减少维度。而且one hot encoding+PCA这种组合在实际中也非常有用。
什么情况下(不)用独热编码
- 用:独热编码用来解决类别型数据的离散值问题
- 不用:将离散型特征进行one-hot编码的作用,是为了让距离计算更合理,但如果特征是离散的,并且不用one-hot编码就可以很合理的计算出距离,那么就没必要进行one-hot编码。 有些基于树的算法在处理变量时,并不是基于向量空间度量,数值只是个类别符号,即没有偏序关系,所以不用进行独热编码。Tree Model不太需要one-hot编码: 对于决策树来说,one-hot的本质是增加树的深度。
- 总的来说,要是one hot encoding的类别数目不太多,建议优先考虑
什么情况下(不)需要归一化?
- 需要: 基于参数的模型或基于距离的模型,都是要进行特征的归一化
- 不需要: 基于树的方法是不需要进行特征的归一化,例如随机森林,bagging 和 boosting等