1. 简述
在某些类型的机器学习中,特征缩放是特征处理的重要步骤。在机器学习中 使用RBF的 SVM函数 和 K-均值 算法会受到特征缩放的影响。
2. 特征缩放的必要性
先了解一下特征缩放的必要性。
假设目前 Chris 想知道自己应该穿多大的衬衫,但不知道自己的尺码。他有两个朋友 Cameron 和 Sarah 知道各自的尺码,以及身高和体重,Chris 需要对比Cameron 和 Sarah 身高、体重、以及衬衫尺寸,推算出适合自己的尺寸。
在这种情况下,直观的判断可能是 Chris 应该是穿 L 尺码的衬衫。S 尺码似乎太小了。
well ! 对比数据需要一个度量值,现在有身高和体重的两种数据特征,需要一个统一的度量值。可使用 身高 + 体重 作为度量值。与 Chris 度量值最接近的,就是所选的尺寸。
chris 度量值:200。 Cameron 度量值:236 。 Sarah 度量值:217 。
根据上图比较度量值。似乎Chris 更接近 Sarah 的 S 尺寸(从 Chris 度量值减去 Cameron 和 Sarah 的度量值,然后去绝对值比较可得出)。这似乎跟直观的推断结果不一样。为什么会出现这种情况?
其实原因很简单:使用身高 + 体重作为度量值,身高占有很大的比例,或者可以说身高越大,度量值越高。身高和体重两种特征数据不平衡。
为此需要进行缩放操作,让特征数据处于同一个 0 ~ 1 之间,具有可比性。之后将特征数据进行合并,得出的结论将不相同。
特征缩放数学公式
其中 X‘ 为新的特征。X_min 和 X_max 为被特征缩放前的最小值和最大值。X 为原始特征。
上图中身高特征值:X_min = 120 、X_max = 175、X = [140、175、120]
体重的特征值为:X_min = 50 、X_max = 60、X = [60、60、50]
代入对应的X_min 、X_max、X 即可得到新的特征值。如Chris 身高的特征值 X‘ = (140 - 120)/ (175 - 120 )= 0.36
特征缩放的优点是比较简单、预估输出相对稳定。缺点是如果输入的数据中有异常值,那么X_max 和 X_min 可能会出现极端情况。
3. sklearn中的特征缩放
sklearn 中MinMaxScaler 的API:http://lijiancheng0614.github.io/scikit-learn/modules/generated/sklearn.preprocessing.MinMaxScaler.html
sklearn 中特征缩放例子:http://lijiancheng0614.github.io/scikit-learn/modules/preprocessing.html#preprocessing