在数据挖掘构建模型时,数据的标准化是重要的一环。因为若某些属性的总体分布和标准正态分布不太相似,模型的性能可能会较差[2]。
在实践中通常会忽略样本分布,而只是简单地通过使用数据的每个特征减去每个特征的平均值变换数据,然后将变换后的数据除以特征的标准差,从而完成数据缩放。例如,学习算法的目标函数中使用的许多元素(支持向量机的径向基核函数内核或线性模型的L1和L2正则化)都假设所有特征以0为中心并且具有相同的方差。如果某个特征的方差比其他特征大好几个数量级,则它可能会支配目标函数,并使估计器无法按预期从其他特征中正确学习。
实现代码如下:
对缩放后代码进行观察,发现每一个特征对应的均值为0,方差为1。
1.将特征缩放到一定区间
使用均值方差归一化时,有时方差非常小,接近0,方差作为分母时,数据缩放得到的数值较大,不利于后续的模型构建。可选的替代方法是,将特征的数值缩放到一定的范围中。分析者可以基于给定最大值和最小值将特征的数值缩放至[0,1]之间,或者将每个特征的最大数值的绝对值作为一个单位放在分母中,对数值进行缩放。这两种功能可分别通过Scikit-learn的MinMaxscalar和MaxAbsScaler实现[3,4]。(www.xing528.com)
MinMaxScaler的实现代码如下:
使用MaxAbsScaler放缩后,特征的数值范围在[-1,1]之间,该放缩方法要求数据已经是零均值或者较为稀疏。该方法有利于保留记录中的零值,实现代码如下:
2.缩放稀疏与离群点数据
数据应该在缩放过程中保持其稀疏性。数据若有较多离群点,简单地使用均值方差进行归一化,效果不佳。此时,应采用Robust_Scale和RobustScaler进行缩放,该缩放方法利用了特征值分布的统计数据,从而能让标准化方法的鲁棒性更好。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。