机器学习入门(三)——简单线性回归

1.0 模型之母

        线性回归模型虽然看起来非常简单,但实际上,线性回归模型可以说是最重要的数学模型之一,很多模型都是建立在它的基础之上,可以被称为是“模型之母”。

        之前介绍的kNN算法属于分类(Classification),即label为离散的类别型(categorical variable),如:颜色类别、手机品牌、是否患病等。而简单线性回归是属于回归(regression),即label为连续数值型(continuous numerical variable),如:房价、股票价格、降雨量等。

        所谓简单线性回归,是指以线性方程的形式来描述一个特征(自变量)和label(因变量)之间的关联关系。线性方程,简单理解就是自变量的幂指数为1且只进行相加运算。简单线性回归的一般形式如下:y = ax+b

        对于每个样本点x^i ,根据线性方程有\hat{y} ^i=ax^i + b

        那么若回归方程预测效果越好,则预测值\hat{y} ^i
与真实值y^i
之间的差距应当越小。考虑到正负抵消与可导性,可以使用距离的概念来度量二者的差距。考虑所有的m个样本点,则有\sum_{i=1}^m ( y^i-\hat{y} ^i)^2 
,而模型预测的目标就是求上式的最小值。

2.0 损失函数

        损失函数(loss function),就是衡量模型的拟合结果与实际结果之间的差距部分,有时也被称为效用函数(utility function)。在确定完损失函数之后,通过最优化损失函数,得到相应的参数取值,最终获得机器学习模型。

        简单线性回归的损失函数形式即为\sum_{i=1}^m (y^i-\hat{y} ^i)^2 = \sum_{i=1}^m (y^i - ax^i - b)^2 

,而此时的目标就是求min \sum_{i=1}^m (\hat{y} ^i - ax^i - b)^2 

时的ab

        近乎所有参数学习算法都是这样的套路,区别是模型不同,建立的目标函数不同,优化的方式也不同。

3.0 最小二乘法

        简单线性回归模型就是求损失函数的\sum_{i=1}^m(y^i-\hat{y} ^i)^2,这里求最小值就是最小二乘法的“最小”,“二乘”的意思就是平方。

        使用最小二乘法的简单线性回归推导过程,设L(a,b) = \sum_{i=1}^m (y^i - ax^i - b)^2 

,分别对a和b进行求导,如下:

\frac{d L(a,b)}{da}  = \sum_{i=1}^m(y^i - ax^i - b)x^i =0

......(1)

\frac{d L(a,b)}{ d b}  = \sum_{i=1}^m(y^i - ax^i - b) =0


......(2)

        由(2)可推,\sum_{i=1}^my^i - a\sum_{i=1}^mx^i - mb =0

,进一步化简有

b = \frac{\sum_{i=1}^my^i}{m}  - \frac{a\sum_{i=1}^m x^i}{m} 
= \bar{y} -a\bar{x} 

......(3)

        把(3)代入(1),则可得:

a=
\frac{\sum_{i=1}^mx^i y^i  - \sum_{i=1}^mx^i
\bar{y}}{\sum_{i=1}^m(x^i)^2 -  \sum_{i=1}^mx^i
\bar{x} } 
......(4)

      由于\sum_{i=1}^mx^i\bar{y}=\bar{y}\sum_{i=1}^mx^i=
 \frac{m\bar{y}\sum_{i=1}^mx^i}{m} 
=m\bar{x}\bar{y}=\sum_{i=1}^m\bar{x}y^i

=\sum_{i=1}^m\bar{x}\bar{y}

,代入(4)中并适当 增添辅助项,得:

a=
\frac{\sum_{i=1}^mx^i y^i  - \sum_{i=1}^mx^i
\bar{y}}{\sum_{i=1}^m(x^i)^2 -  \sum_{i=1}^mx^i
\bar{x} } =
\frac{\sum_{i=1}^mx^i y^i  - \sum_{i=1}^mx^i
\bar{y} - \sum_{i=1}^m\bar{x}y^i + \sum_{i=1}^m\bar{x}\bar{y}
} 
{\sum_{i=1}^m(x^i)^2 -  \sum_{i=1}^mx^i
\bar{x}-\sum_{i=1}^mx^i
\bar{x}+\sum_{i=1}^m
(\bar{x})^2 }

        最终得简单线性回归的各项系数为:

a=
\frac{\sum_{i=1}^m(x^i -\bar{x})(y^i -\bar{y})}
{\sum_{i=1}^m(x^i -\bar{x})^2}

b = \bar{y} -a\bar{x}

4.0 (简单)线性回归的评价指标

        由前面可知线性回归的损失函数形式为\sum_{i=1}^m (y^i -\hat{y}^i )^2,那么当数据集的长度增加是,损失势必然也是随之增加的。为了消除数据量大小带来的影响,就需要了解均方差等指标的概念。

4.1 均方误差MSE

        均方差MSE(mean squared error),通过对损失求均值来消除数据量的影响,MSE =\frac{\sum_{i=1}^m (y^i -\hat{y}^i )^2}{m}

        sklearn中的MSE:


from sklearn.metrics import mean_squared_error

mean_squared_error(y_test, y_predict)


4.2 均方根误差RMSE

        由于预测损失或误差有时需要进行解读,此时平方计算后的数值在单位上不具备可解释性(如万元变成万元平方),因此需要急性开方,此时得到的值为均方根误差(root mean square error),RMSE =\sqrt{\frac{\sum_{i=1}^m (y^i -\hat{y}^i )^2}{m} } 
=\sqrt{MSE}

        sklearn中没有RMSE的直接计算方法,可手动对MSE开方。

4.3 平均绝对误差MAE

        从距离的角度看,均方误差计算的是预测值与真实值之间的欧式距离,当然还可以使用曼哈顿距离来描述这一误差,这就是平均绝对误差(mean absolute error),MAE =\frac{\sum_{i=1}^m \vert y^i -\hat{y}^i \vert }{m}

        sklearn中的MAE:


from sklearn import mean_absolute_error

mean_absolute_error(y_test, y_predict)


4.4 R squared

        对于分类模型,模型的各评价指标是在0-1之间取值,但RMSE和MAE没有这样的性质,因此RMSE和MAE就有这样的局限性。此外,当预测标签的量纲不同时,如身高和体重,一个模型的RMSE值是4.9(公斤) ,一个模型的RMSE是10(厘米)。此时无法判断哪个模型预测得更准确,因为二者的量纲根本就不是一类东西。

        以上的局限性,可以使用指标R Squared解决,即R^2 =1-

\frac{\sum_{i=1}^m (y^i -\hat{y}^i )^2}
{\sum_{i=1}^m (\bar{y} -y^i )^2} =1-\frac{\frac{1}{m} \sum_{i=1}^m (y^i -\hat{y}^i )^2}
{\frac{1}{m} \sum_{i=1}^m (\bar{y} -y^i )^2}
=1-\frac{MSE}{var}

        分子其实就是模型预测的所有误差或损失。分布是标签真实值的方差,也可以理解为用均值去估计所有预测值所产生的误差,是一个基准模型(baseline model)。使用baseline模型产生的错误较多,使用回归模型的错误较少。因此用1减去较少的错误除以较多的错误,实际上是衡量了回归模型拟合住数据的地方,即没有产生错误的相应指标

        因此R^2 <=1R^2越大越好;当R^2=0时,说明回归模型等效于基准模型;当

R^2<0时,说明回归模型不如基准模型,还有可能数据间没有任何线性关系。

        sklearn中的R Squared:


from sklearn.metrics import r2_score

r2_score(y_test, y_predict)


©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,132评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,802评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,566评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,858评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,867评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,695评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,064评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,705评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,915评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,677评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,796评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,432评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,041评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,992评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,223评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,185评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,535评论 2 343

推荐阅读更多精彩内容

  • 对于想深入了解线性回归的童鞋,这里给出一个完整的例子,详细学完这个例子,对用scikit-learn来运行线性回归...
    派派森森阅读 516评论 0 0
  • 机器学习的目的是使学到的模型不仅对已知数据,而且对未知数据都能有很好的预测能力。当损失函数给定时,基于损失函数的模...
    隐士飞猪阅读 2,674评论 0 3
  • 这个世界上没有无杂念的人,世人皆有烦恼,有不可能完成的梦想,和追求! 然而有这么多我们得不到的东西,但我们都努力的...
    阳光生命阅读 654评论 0 0
  • 【R】控制情绪_“收情绪” 选自《你为什么总焦虑》1.转移自己的注意力,把情绪的焦点吸引到那些愉快和积极的...
    彤彤妈_子叶阅读 90评论 1 0
  • 初冬的上午,因为工作去了乡下一趟,在毛毛细雨中穿梭。 天气说不上冷,但是这个季节,树已经开始掉叶子了。天幕是灰色的...
    手执阳光阅读 106评论 0 1