机器学习之特征归一化(normalization)
2017-02-11 21:07
260 查看
参考自斯坦福机器学习课程
一 引子
对房屋售价进行预测时,我们的特征仅有房屋面积一项,但是,在实际生活中,卧室数目也一定程度上影响了房屋售价。下面,我们有这样一组训练样本:
注意到,房屋面积及卧室数量两个特征在数值上差异巨大,如果直接将该样本送入训练,则代价函数的轮廓会是“扁长的”,在找到最优解前,梯度下降的过程不仅是曲折的,也是非常耗时的:
数据标准化(归一化)处理是数据挖掘的一项基础工作,不同评价指标往往具有不同的量纲和量纲单位,这样的情况会影响到数据分析的结果,为了消除指标之间的量纲影响,需要进行数据标准化处理,以解决数据指标之间的可比性。原始数据经过数据标准化处理后,各指标处于同一数量级,适合进行综合对比评价。以下是两种常用的归一化方法:
其中,u和delta分别为对应特征xixi的均值和标准差。量化后的特征将分布在[-1,
1]区间。
量化后的特征将分布在[0,1][0,1]区间。
大多数机器学习算法中,会选择Standardization来进行特征缩放,但是,Min-Max Scaling也并非会被弃置一地。在数字图像处理中,像素强度通常就会被量化到[0,1]区间,在一般的神经网络算法中,也会要求特征被量化[0,1]区间。
进行了特征缩放以后,代价函数的轮廓会是“偏圆”的,梯度下降过程更加笔直,收敛更快性能因此也得到提升:
三 实现
对房屋售价进行预测时,我们的特征仅有房屋面积一项,但是,在实际生活中,卧室数目也一定程度上影响了房屋售价。下面,我们有这样一组训练样本:
房屋面积(英尺) | 卧室数量(间) | 售价(美元) |
---|---|---|
2104 | 3 | 399900 |
1600 | 3 | 329900 |
2400 | 3 | 369000 |
1416 | 2 | 232000 |
3000 | 4 | 539900 |
1985 | 4 | 299900 |
.... | ... | .... |
二 归一化
该问题的出现是因为我们没有同等程度的看待各个特征,即我们没有将各个特征量化到统一的区间。数据标准化(归一化)处理是数据挖掘的一项基础工作,不同评价指标往往具有不同的量纲和量纲单位,这样的情况会影响到数据分析的结果,为了消除指标之间的量纲影响,需要进行数据标准化处理,以解决数据指标之间的可比性。原始数据经过数据标准化处理后,各指标处于同一数量级,适合进行综合对比评价。以下是两种常用的归一化方法:
Standardization
Standardization又称为Z-score normalization,量化后的特征将服从标准正态分布:其中,u和delta分别为对应特征xixi的均值和标准差。量化后的特征将分布在[-1,
1]区间。
Min-Max Scaling
Min-Max Scaling又称为Min-Max normalization, 特征量化的公式为:量化后的特征将分布在[0,1][0,1]区间。
大多数机器学习算法中,会选择Standardization来进行特征缩放,但是,Min-Max Scaling也并非会被弃置一地。在数字图像处理中,像素强度通常就会被量化到[0,1]区间,在一般的神经网络算法中,也会要求特征被量化[0,1]区间。
进行了特征缩放以后,代价函数的轮廓会是“偏圆”的,梯度下降过程更加笔直,收敛更快性能因此也得到提升:
三 实现
# ... def standardize(X): """特征标准化处理 Args: X: 样本集 Returns: 标准后的样本集 """ m, n = X.shape # 归一化每一个特征 for j in range(n): features = X[:,j] meanVal = features.mean(axis=0) std = features.std(axis=0) if std != 0: X[:, j] = (features-meanVal)/std else X[:, j] = 0 return X def normalize(X): """Min-Max normalization sklearn.preprocess 的MaxMinScalar Args: X: 样本集 Returns: 归一化后的样本集 """ m, n = X.shape # 归一化每一个特征 for j in range(n): features = X[:,j] minVal = features.min(axis=0) maxVal = features.max(axis=0) diff = maxVal - minVal if diff != 0: X[:,j] = (features-minVal)/diff else: X[:,j] = 0 return X
相关文章推荐
- python机器学习库sklearn——数据归一化、标准化、特征选择、逻辑回归、贝叶斯分类器、KNN模型、支持向量机、参数优化
- 机器学习--特征缩放/均值归一化
- 机器学习中特征归一化的方法
- 在什么情况需要对特征使用归一化处理?--从机器学习项目中开始学习
- 机器学习实践之特征工程
- 机器学习-特征选择(降维) 线性判别式分析(LDA)
- 机器学习之特征工程(一)
- [置顶] 机器学习中的特征工程
- 机器学习中的特征工程总结
- 机器学习-4 多特征 Multiple Features
- 机器学习笔记--特征工程
- 机器学习系列(5)_从白富美相亲名单看特征选择与预处理(上)
- 参考美团的"机器学习中的数据清洗与特征处理综述"(转载)
- 机器学习:Scikit-learn与特征工程
- 【机器学习】【计算机视觉】人体行为识别特征点提取小综述
- 机器学习(一)特征工程基本流程
- 归一化交叉相关Normalization cross correlation (NCC)
- 机器学习中的特征工程总结一
- 机器学习-特征提取
- 特征工程(补充)--机器学习数据集里的不均衡数据问题