美文网首页程序员
关于数据建模变量标准化,你想知道的都在这里了

关于数据建模变量标准化,你想知道的都在这里了

作者: Yan文怡 | 来源:发表于2018-01-26 04:11 被阅读0次

    很多人在建模前看到一组变量,都会有这样的一个问题,这些变量需要标准化吗?然后转身问了下身边的同事、教授。哦!原来要做标准化的,接着把所有变量转化成平均数为0,标准差为1的变量,开开心心地开始建模了。

    多数人觉得标准化变量是建模的固定步骤,其实他们也不清楚标准化的作用到底是什么,他们认为做总是比没做好。那么标准化究竟解决了什么,如果不做的话,会产生怎么样的结果呢?今天我们一步一步的来详细讨论一下这个问题吧。


    01 我们来举个回归的例子

    我们先从简单的预测房价的线性回归模型开始:
    有一组关于房价和房子变量的数据集,通过房子的面积,房间数量,房子的层数来预测房价。

    占地面积1800尺,房间数量3间,房子层数2层-> 房价$$?;
    为了方便对比,我们分别看一下标准化前和标准化后的模型输出分布是怎么样的。

    可以看出,标准化前后变量的系数不同,误差不同,但是R平方,和变量的t值是相同的。

    001 解释有区别吗?

    那标准化前后得到的公式,怎么来解释呢?

    标准化前 标准化后
    如果居住面积,房间数,房间层数都是0的情况下,房子的价格为91830万 如果居住面积,房间数,房间层数是各自的平均数的情况下,房子的价格为539400万

    当一个外行人在听解释的时候,一定会问,什么呀?所有东西都是0,空气造的房子还能卖9万?!
    接着你会问,系数不同,那预测出来的房价会相同吗?

    002 预测值有区别吗?

    现在我们来预测一个1590尺,3个卧室,3层的房屋

    标准化前房价 标准化后房价
    $406641.02 $406641.02

    我们发现预测出来的房价是一样的。
    这时你一定会想,既然结果都一样,做不做标准化,都一样嘛。说到这里,我们再看一下,建模时寻找最优解的时间吧。

    003 花费时间有区别吗?

    标准化前处理时间 标准化后处理时间
    0.026s 0.021s

    为什么标准化后的建模时间会短呢?这时候就要说起寻找系数最优解-梯度下降法。

    标准化前,由于变量的单位相差很大,导致了椭圆型的梯度轮廓。标准化后,把变量变成统一单位,产生了圆形轮廓。由于梯度下降是按切线方向下降,所以导致了系统在椭圆轮廓不停迂回地寻找最优解,而圆形轮廓就能轻松找到了。

    还有一种比较极端的情况,有时没做标准化,模型始终找不到最优解,一直不收敛。

    02 PCA,Kmeans,KNN需要标准化数据吗?

    这种情况下,可见标准化的重要性了吧。
    我们再来看一下,如果将预测房价的变量,用PCA方法来降维,会不会对结果产生影响。

    我们看出在标准化前,用一个成分就能解释99%的变量变化,而标准化后一个成分解释了75%的变化。 主要原因就是在没有标准化的情况下,我们给了居住面积过大权重,造成了这个结果。

    那还有什么情况下,不做归一化会发生这么大的影响?

    Kmeans,KNN一些涉及到距离有关的算法,或者聚类的话,都是需要先做变量标准化的。

    举个例子,我们将3个城市分成两类,变量有面积和教育程度占比;三个城市分别是这样的:

    城市A,面积挺大,但是整天发生偷盗抢劫,教育程度低;

    城市B,面积也挺大,治安不错,教育程度高;

    城市C,面积中等,治安也挺好,教育程度也挺高;

    我们如果不做标准化,直接做聚类模型的话,A城市和B城市分在一块儿了,你想想,一个治安挺好的城市和一个整体偷盗抢劫城市分在一起,实在是有点违反常理。

    03 总结

    当然,也不是所有的模型都需要做归一的,比如模型算法里面有没关于对距离的衡量,没有关于对变量间标准差的衡量。比如decision tree 决策树,他采用算法里面没有涉及到任何和距离等有关的,所以在做决策树模型时,通常是不需要将变量做标准化的。

    相关文章

      网友评论

        本文标题:关于数据建模变量标准化,你想知道的都在这里了

        本文链接:https://www.haomeiwen.com/subject/bbtqaxtx.html