小时候的世界是单纯的,非黑即白,人的性格也是RIO耿直,不懂得掩饰,在他人面前展露无遗,没有那么多防范。后来发现,现实世界是个错综复杂的函数,不一定是garbage in, garbage out;有时候也会garbage in, master piece out(我是在贩卖毒鸡汤吗?Σ(っ °Д °;)っ)。总之,没有那么多想当然。同样,在机器学习的世界里,一条直线往往无法拟合那些变幻莫测的数据点,这样做too simple,sometimes naive。如果直的不行,那用弯的可以吗?事实证明,二次曲线有时比直线拟合效果好得多。将低维转化为高维,很多之前想不通、看不透的都瓦解冰消,这是认知上的胜利,值得每个人去追求。
下面我们来学习在sklearn中将直线掰成曲线的正确姿势:)
代码地址:http://pan.baidu.com/s/1eRI8lSA
1
二次曲线拟合vs直线拟合
图上可以发现 quadratic fit 比 linear fit 效果更好。
MSE 下降到61, R^2 上升到98%, 说明在这个数据集上 quadratic fit 效果更好。
2
波士顿房价数据的非线性关系建模
首先回顾一下波士顿房价数据的scatterplot matrix:
- LSTAT % lower status of the population 低层人口比例
- MEDV Median value of owner-occupied homes in $1000‘s 业主自住房屋中值 (要预测的变量)
下面我们将house prices 与 LSTAT 做 quadratic 及 cubic polynomials fit,并与 linear fit 对比:
对比R^2,可以看出拟合效果 cubic fit (R^2=0.66) > quadratic fit (R^2=0.64) > linear fit (R^2=0.54) 。
下面尝试一种全新的转化:Transforming the dataset by log。
经过 log 变换后,线性拟合效果不错(R^2=0.69),比单纯 polynomial fit 更好。
看了这次笔记,你是不是也跃跃欲试了?不要害怕get your hands dirty,把工作和学习当作享受吧。近一年来大部分时间在家远程工作,一开始觉得无聊,空虚,没有归属感,后来开始享受这种自由,最后,在得到的自由浓度足够高时,竟然奇迹般地不厌恶工作了!希望大家都能找到轻松愉悦的工作状态:)