我们什么时候用到特征缩放呢?特征缩放的意义又是什么呢?
如果我们有多个特征一起来用于作出某一个决定。有些特征的值可能数值极大。有些特征可能数值较小。这是简单的对特征累加之后用于判断显然是不太合适的。特征缩放的意义便在于此。
特征缩放公式
公式的特点是他的值总是在0和1之间。这个公式不足之处在于她比较容易受极值影响,如果极值是异常值的话,情况会十分糟糕。
在sklearn中使用最小最大值缩放器
from sklearn.preprocessing import MinMaxScaler
import numpy
# MinMaxScaler中要求必须是浮点数且必须是numpy.array类型
weights = numpy.array([[115.], [140.], [170.]])
scaler = MinMaxScaler()
rescaled_weight = scaler.fit_transform(weights)
print rescaled_weight
什么样的算法受特征缩放影响
受特征缩放影响的算法有支持向量机和K均值算法。
他们之所以受特征缩放的影响是因为他们都是根据距离数据的距离进行划分的。支持向量机划分是根据到数据点间的最大距离,K均值的选取和优化也和距离有十分密切的关系。因此,当一点的距离成倍增加时必然会对分类造成影响。
不受特征缩放影响的算法有决策树和线性回归。
决策树之所以不受特征缩放影响是因为决策树总是横向的分割,即使某一个变量成比例的扩大倍数也没有关系。线性回归之所以不受影响的是因为线性方程的比例关系总是不变的,所以缩放对其没有影响。