特征标准化

为什么要特征标准化

今天我们会来聊聊机器学习所需要的数据,为了让机器学习方面消化, 我们需不需要对数据动些手脚呢. 所以今天就会提到特征数据的标准化, 也可以说正常化, 归一化, 正规化等等.

现实中的数据
说特征标准化之前, 我们先来说说现实生活中, 我们的数据是什么样的. 它们很可能来自不同的地方, 被不同的人采集, 有着不同的规格. 用最经典的房价预测例子来和大家说说. 我们用机器学习从房屋的各个层面来预测房价, 房屋的特征可能包括, 离市中心的距离, 房屋楼层, 房屋面积, 所在城市, 几室几厅等等. 这些数据的取值范围往往差距悬殊, 比如楼层一般在2-30层以内, 面积可能上百, 离市中心距离可以以千来记.

数据方程
回到机器学习中, 如果我们以一个简单的线性回归方程来预测房屋的价格, 那方程可能会是这样 . 价格= a* 离市中心 + b * 楼层 + c * 面积. 其中的 a b c 就是机器学习需要努力努力再努力 来优化的参数.

我们说的在具体一点, 用 abc 算出来的价格是预测价格 . 机器学习需要计算预测值和实际值的差别, 然后对这个误差进行一些数学上的处理, 使之变成进步的阶梯, 然后反向地传递回参数 a b c 来提升下次的预测准确度. 好了. 这些概念和我们要提到的标准化有什么关系呢?
举例说明
我们可以把 abc 想想成3个人. 他们共同努力解决一个问题, 在某一个问题中, a工作的时候总是不知道发生了什么, b 的能力适中, c 工作能力最强, 老板看了他们一起工作的结果, 发现还有很多可以提高的地方, 然后不屑地说: 你们这个结果和我期望的还有很大差距, 你们快去缩小差距. 老板给的要求只是缩小差距. 可是 abc 都不知道差距在哪. 所以他们这次只好平分接下来的任务, 不过 c 很快就做完了, b 第二, a 做得很慢, 所以花的总时间很长, c 和 b 都要等 a 把剩下的工作做完才能再给老板看结果, 这样 效率并不高.

把这个问题放在机器学习中, 为了好理解, 我们把 b 先排除掉. 再把房价问题也简化一下, 留下两个特征. 因为面积的跨度一般可以从0 到 2-300, 而离市中心的距离跨度一般在10以内. 所以在这个公式中, c 只要稍稍变化一点, 他乘以面积的变化就会很大, 因为面积的值可以很大, 但是当a也变化那一点点时, 他对预测价格的影响力不会像 c 那样巨大.

使用这些标准化手段. 我们不仅可以快速推进机器学习的学习速度, 还可以避免机器学习 学得特扭曲.

 

什么特征标准化?

这样的差别就会影响最终的工作效率. 所以, 我们要提高效率, 特征的标准化就可以帮上忙.我们在机器学习训练之前, 先对数据预先处理一下, 取值跨度大的特征数据, 我们浓缩一下, 跨度小的括展一下, 使得他们的跨度尽量统一.

 

 

特征标准化的方法?

  • z-score标准化:这是最常见的特征预处理方式,基本所有的线性模型在拟合的时候都会做 z-score标准化。具体的方法是求出样本特征x的均值mean和标准差std,然后用(x-mean)/std来代替原特征。这样特征就变成了均值为0,方差为1了。
  • max-min标准化:也称为离差标准化,预处理后使特征值映射到[0,1]之间。具体的方法是求出样本特征x的最大值max和最小值min,然后用(x-min)/(max-min)来代替原特征。如果我们希望将数据映射到任意一个区间[a,b],而不是[0,1],那么也很简单。用(x-min)(b-a)/(max-min)+a来代替原特征即可。
  • L1/L2范数标准化:如果我们只是为了统一量纲,那么通过L2范数整体标准化也是可以的,具体方法是求出每个样本特征向量 x的L2范数||x||2,然后用x/||x||2代替原样本特征即可。当然L1范数标准化也是可以的,即用x /||x||1代替原样本特征。通常,范数标准化首选L2范数标准化。
  • 此外,经常我们还会用到中心化,主要是在PCA降维的时候,此时我们求出特征x的平均值mean后,用x-mean代替原特征,也就是特征的均值变成了0, 但是方差并不改变。这个很好理解,因为PCA就是依赖方差来降维的,如果我们做了z-score标准化,所以特征的方差为1,那么就没法来降维了。

 

 

什么情况不需要标准化?

主要是基于概率分布的模型,比如决策树大家族的CART,随机森林等。当然此时使用标准化也是可以的,大多数情况下对模型的泛化能力也有改进。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
特征标准化对某些算法的性能和收敛速度有积极影响。以下是一些常见的算法模型,通常需要对特征进行标准化: 1. K均值聚类(K-means Clustering):K均值聚类算法使用特征之间的距离来确定聚类结果,如果特征的尺度差异很大,可能会导致聚类结果偏向于具有较大尺度的特征。通过特征标准化,可以确保特征之间的尺度一致,提高聚类效果。 2. 支持向量机(Support Vector Machines,SVM):SVM是一种基于间隔最大化的分类算法,对于特征的尺度敏感。如果特征的尺度差异较大,可能会导致模型对具有较大尺度的特征更为敏感,从而影响模型性能。通过特征标准化,可以确保特征的尺度一致,提高模型效果。 3. 线性回归(Linear Regression)和逻辑回归(Logistic Regression):这两种回归算法假设特征之间是线性相关的。如果特征的尺度差异较大,可能会使得某些特征对模型拟合产生过大的影响,从而影响模型的性能。通过特征标准化,可以确保特征之间的尺度一致,提高模型的拟合效果。 需要注意的是,并不是所有的算法模型都需要对特征进行标准化。例如决策树、随机森林等基于树的算法通常不需要对特征进行标准化,因为它们不受特征尺度的影响。此外,一些基于规则的算法(如关联规则挖掘)也不需要进行特征标准化。 最好的做法是在应用具体算法之前,考虑特征的尺度和算法对特征尺度的敏感性,决定是否对特征进行标准化

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值