StanFord 機器學習公開課筆記(2):(Over/Under)fitting

本講視頻及講義鏈接

前言

涉及的知識點:

  • 使用最小二乘法來擬合參數的本質原因
  • 擬合和過擬合的概念
  • 局部線性回歸算法(Locally Weighted Regression)——接觸的首個“non-parametric”(非參數)機器學習方法
  • 二元分類問題的機器學習解法

為什么使用最小二乘法?

回想高中的時候老師教最小二乘法狞膘,就直接告訴你用這個最小二乘公式來算直線的斜率k和截距b洪灯,得到的直線就能夠最好地擬合圖中出現的數據赎线。這里“最好地擬合”的含義,我記得老師說是“經過最多點且未經過的點在直線兩邊均勻分布”。

本講用概率的方法使我明白了:“最好的擬合”本質上是求出一個擬合函數 h_\theta(x) 使得圖像上的所有離散點出現在這個函數圖像上或者在這個函數圖像附近的概率最大。從概率觀點出發(fā)愈腾,自然地推導出最小二乘法炉爆。

符號定義

P(y|x;\theta) :在確定了 \theta 作為參數的前提下堕虹, x 出現后,y 出現的概率芬首。注意這個符號和 P(y|x,\theta) 不同赴捞。前者的 \theta 不是隨機變量而是一個確定的值(只不過我們還沒有擬合出來);后者的 \theta 是一個隨機變量郁稍,在概率論中的含義是“在隨機變量 x , \theta 出現的情況下赦政, y 出現的條件概率”.

P(\vec y|X;\theta) : 表示在給定 \theta 作為參數時,所有訓練樣本出現的條件下得到結果 \vec y 的概率耀怜。

L(\theta) = P(\vec y|X;\theta) :定義 L(\theta)\theta 為極大似然函數恢着,強調的是 P(\vec y|X;\theta) 是隨 \theta 的變化而變化的。但是數值上二者是一樣的财破。

l(\theta) = log(L(\theta)) : 為了數學計算的方便而定義掰派。

推導過程

y^{(i)} = \theta^T x^{(i)} + \epsilon(i) ;其中 \epsilon(i) 為誤差函數。

假設誤差函數 \epsilon(i) 服從正態(tài)分布(Gaussian distribution),則由于y^{(i)} = \theta^T x^{(i)} + \epsilon(i) \Rightarrow \epsilon(i) = y^{(i)} -\theta^T x^{(i)} 狈究, 所以 P(y^{(i)})|x^{(i)};\theta) = \frac{1}{\sqrt{2\pi}}e^{-\frac{(y^{(i)}-\theta^Tx^{(i)})^2}{2\sigma^2}}

假設誤差函數滿足正態(tài)分布的原因是“中心極限定理”:許多獨立的隨機變量之和趨向于服從正態(tài)分布碗淌。
我們假設引起誤差的因子之間是“獨立同分布的”(Independent and identically distributed),即因子都為隨機變量盏求,相互之間不互相影響,且具有相同的分布亿眠。
這個假設是比較符合事實的碎罚,因為引起誤差的因子往往是互不相關的。比如你要擬合房價和房子面積的關系函數纳像,對于獲取到的面積-房價數據荆烈,一定存在某種不可估量的誤差:你記錄數據的時候恰好房東太太心情不好,把房價定的偏高竟趾、記錄房價的時候抄錯數據等等憔购。這些引起誤差的因子之間是鮮有關聯的。

{% asset_img markdown-img-paste-20180101182814570.png %}

因此可以計算 L(\theta):

\begin{aligned} L(\theta) &= P(\vec y|X;\theta)\\ &=\prod_{i=1}^{m}P(y^{(i)} | x^{(i)};\theta)\\ &=\prod_{i=1}^{m}\frac{1}{\sqrt{2\pi}}e^{-\frac{(y^{(i)}-\theta^Tx^{(i)})^2}{2\sigma^2}} \end{aligned}

極大似然估計:

求出一個 \theta 使上式得最大值岔帽,也就是使數據集 X 中的數據及其對應的 y 出現的可能性最大玫鸟。

易知: 使 l(\theta) 最大的 \theta 值也能夠使 l(\theta) 達到最大.

因此轉而求 l(\theta) 的最大值:

\begin{aligned} l(\theta) &= logL(\theta)\\ &=log\prod_{i=1}^{m}\frac{1}{\sqrt{2\pi}}e^{-\frac{(y(i)-\theta^Tx^{(i)})^2}{2\sigma^2}}\\ &=\sum^{m}_{i=1}log\frac{1}{\sqrt{2\pi}}e^{-\frac{(y(i)-\theta^Tx^{(i)})^2}{2\sigma^2}}\\ &=mlog\frac{1}{\sqrt{2\pi}}+\sum^{m}_{i=1}-\frac{(y(i)-\theta^Tx^{(i)})^2}{2\sigma^2} \end{aligned}

為使上式最大,只需要使 \frac{(y^{(i)}-\theta^Tx^{(i)})^2}{2} 最小即可犀勒。

結論

從上述推導可以看出屎飘,使用最小二乘估計來擬合訓練樣本的方法,從概率論的角度看贾费,實質上是在假設誤差符合IID的情況下(這個假設符合實際)钦购,求出一個 \theta 使訓練樣本中的數據出現的概率最大。(這應該也是擬合的本質褂萧?)

擬合和過擬合的概念

對于給定的訓練樣本押桃,比如之前使用的房價-房子面積的例子,其中只有“房子面積”這一個特征导犹,在之前的定義中唱凯,我們這樣定義 h_\theta(x) :

h_\theta(x) = \theta_0 + \theta_1x_1 。這樣擬合出的將會是一條直線:

markdown-img-paste-20180101172911341.png

為了更加精確地擬合每個訓練樣本锡足,我們可以這樣定義 h_\theta(x):

h_\theta(x) = \theta_0 + \theta_1x_1 + \theta_2(x_1)^2

這樣擬合出的是一個二次函數波丰,可以看到擬合效果比上面好一些壳坪,因為經過了更多的點且未經過的點在函數圖像兩邊均勻分布:

markdown-img-paste-20180101172941230.png

以此類推舶得,如果有6個訓練樣本,我們可以這么定義 h_\theta(x)

h_\theta(x) = \theta_0 + \theta_1x_1 + \theta_2(x_1)^2 + ... + \theta_6(x_1)^6

看起來有點像泰勒公式爽蝴,這樣擬合出的曲線將經過每個訓練樣本:

markdown-img-paste-20180101173154707.png

上面的三個例子中:

第一個例子稱為"underfitting"(欠擬合)沐批,因為它沒有較好地反映出房價和房子面積的關系結構。

第三個例子稱為"overfitting"(過擬合)蝎亚,因為它太過于注重擬合訓練樣本九孩,而沒有體現出宏觀上的房價和房子面積的結構關系,也就是說它只能夠表現已知的數據发框,不能夠根據輸入變量來預測輸出變量躺彬。(輸入變量和輸出變量在上一講的筆記中定義)

“非參數”算法

不知道為啥課程要在這里提一嘴“非參數算法”,并以局部線性回歸算法為例子簡要講解了一下,這似乎和之前和之后將要講的內容沒什么關聯宪拥。但是既然講了我就記一下仿野。

所謂“非參數”,是區(qū)別于“確定參數”算法的另一類算法她君,在之前的線性回歸中脚作,我們使用訓練樣本擬合出一個參數 \theta 后,如果要根據新的輸入變量預測輸出變量缔刹,那么只需要將新的輸入變量代入擬合出的函數即可球涛。在“非參數”算法中,我們的 h_\theta(x) 的參數和訓練樣本數據是緊密相關的校镐,(可以說訓練樣本數據就是參數的一部分亿扁?)隨著訓練樣本數量的增加,為計算 h_\theta(x) 需要保存的東西也線性增加鸟廓。

“非參數”算法的例子:局部線性回歸算法

在線性回歸算法中魏烫,我們的計算過程如下:

  1. 確定 \theta 使得 \sum_{i=1}^{m}(y^{(i)}-\theta^Tx^{(i)}) 最小

  2. 輸出 \theta^Tx

而在局部線性回歸算法中,我們需要這么計算:

  1. 確定 \theta 使得 \sum_{i=1}^{m}\omega^{(i)}(y^{(i)}-\theta^Tx^{(i)}) 最小

  2. 輸出 \theta^Tx

其中 \omega^{(i)} 稱為第i組數據的權重肝箱,是一個非負的值哄褒,它的標準定義如下:

\omega^{(i)} = e^{(-\frac{(x^{(i)}-x)^2}{2\tau^2})}

其中 x 是新輸入的輸入變量。

可以看到煌张,在局部線性回歸算法中呐赡,每次根據新的輸入變量 x計算輸出變量 y都需要所有之前出現過的訓練樣本參與確定新的 \theta,且從 \omega 的表達式中可以看出骏融,距離 x越遠的訓練樣本中的輸入變量 x^{(i)} 對應的權重 \omega^{(i)} 越小链嘀,根據這個算法計算每次計算出來的 \theta 具有很強的局部特征,因此稱為局部線性回歸算法档玻。

二元分類問題

二元分類問題是指輸出變量y的值域為 \{0,1\} 的問題怀泊。比如判斷一個人是否患病、判斷一個軟件是否是惡意軟件误趴、判斷一個人是男是女等等問題霹琼,這些問題只有兩種可能的答案,是或者不是凉当。

線性回歸算法在二元分類問題中表現較差

在之前的線性回歸問題中枣申,我們定義 h_\theta(x) = \theta^Tx 這樣擬合出來的將會是一個線性函數,現在考慮用線性函數來擬合一個簡單的二元分類問題:

現有一組訓練樣本分布看杭,根據線性回歸算法可以擬合出下圖中的直線:

markdown-img-paste-20180101183339130.png

在上述訓練樣本分布下用線性回歸算法解決二元分類問題是簡單的忠藤,只需要根據擬合出的直線求出 y=0.5 時對應的 x_0 的值,則 x > x_0 \Rightarrow y = 1;x < x_0 \Rightarrow y = 0

但是對于下面這個訓練樣本分布楼雹,上述線性回歸算法就不能準確分類:

markdown-img-paste-20180101183957602.png

可以看到線性回歸算法解決分類問題時受訓練樣本數據分布的影響較大(如果硬要用線性回歸來解決分類問題似乎要用之前說的”非參數”算法?)

logistic(也稱sigmoid)函數解決分類問題

logistic函數: g(z) = \frac{1}{1+e^{z}} 函數圖像大致如下:

markdown-img-paste-20180101185852327.png

注意到這個函數值域為 [0,1]模孩。

定義不同于線性回歸算法的新 h_\theta(x)h_\theta(x)=g(\theta^Tx) = \frac{1}{1+e^{\theta^Tx}}

至于為什么在二分類問題中使用logistic函數來定義 h_\theta(x) (應該有很多其他值域為 [0,1]可供選擇)尖阔,這個問題將在下一講的廣義線性模型(GLM)中很自然地解決。

那么榨咐,如何擬合這個新的 h_\theta(x) 的參數呢诺祸?

在線性回歸問題中,我們使用最小二乘法來擬合 h_\theta(x) = \theta^Tx 的參數祭芦,為什么使用最小二乘法筷笨,上面已經解釋清楚;那么龟劲,如何擬合這個新定義的 h_\theta(x) 的參數呢胃夏?首先我們要明確參數擬合的最終目的是為了得出一個 \theta 使得訓練樣本數據出現的概率最大,也就是達到極大似然估計昌跌。

在二元分類問題中仰禀,定義概率分布如下:

P(y=1|x;\theta) = h_\theta(x)

P(y=0|x;\theta) = 1 - h_\theta(x)

因為y的取值只能是0或1,上述兩式可以合并為一個式子:

P(\vec y|X) = h_\theta(x)^y(1-h_\theta(x))^{1-y}

則極大似然函數
\begin{aligned} L(\theta) &= P(\vec y|X;\theta)\\ &=\prod_{i=1}^{m}P(y^{(i)}|x^{(i)};\theta)\\ &=\prod_{i = 1}^{m}(h_\theta(x^{(i)})^{y{(i)}}(1-h_\theta(x))^{(1-y^{(i)})}) \end{aligned}

因此蚕愤,

l(\theta) = \sum_{i = 1}^my^{(i)}logh_\theta(x^{(i)}) + (1-y^{(i)})log(1-h_\theta(x^{(i)}))

為了使 l(\theta) 達到最大值(還記得嗎答恶?我們在線性回歸部分通過使 \frac{(y(i)-\theta^Tx^{(i)})^2}{2} 最小來做到這一點),我們需要使用“梯度上升法”萍诱,簡單來說就是朝著梯度方向每次走一步悬嗓,直到梯度為0時達到最大值。

求解過程在講義中能找到裕坊,如下:

首先要知道怎么求 g(z) 的導數:

markdown-img-paste-20180101202209928.png

l(\theta) 的梯度為:

markdown-img-paste-2018010120244888.png

根據梯度上升包竹,得到 \theta 的更新公式:

markdown-img-paste-20180101202523684.png

這個更新公式除了梯度上升和下降導致的符號不同之外,和線性回歸中推出的更新公式看起來是一樣的籍凝,只是這里的 h_\theta(x) 和線性回歸中的不同周瞎。這不是巧合,在下一講中的廣義線性模型中我們就能知道原因饵蒂。

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末声诸,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子退盯,更是在濱河造成了極大的恐慌彼乌,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,539評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件得问,死亡現場離奇詭異囤攀,居然都是意外死亡软免,警方通過查閱死者的電腦和手機宫纬,發(fā)現死者居然都...
    沈念sama閱讀 93,594評論 3 396
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來膏萧,“玉大人漓骚,你說我怎么就攤上這事蝌衔。” “怎么了蝌蹂?”我有些...
    開封第一講書人閱讀 165,871評論 0 356
  • 文/不壞的土叔 我叫張陵噩斟,是天一觀的道長。 經常有香客問我孤个,道長剃允,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,963評論 1 295
  • 正文 為了忘掉前任齐鲤,我火速辦了婚禮斥废,結果婚禮上,老公的妹妹穿的比我還像新娘给郊。我一直安慰自己牡肉,他們只是感情好,可當我...
    茶點故事閱讀 67,984評論 6 393
  • 文/花漫 我一把揭開白布淆九。 她就那樣靜靜地躺著统锤,像睡著了一般。 火紅的嫁衣襯著肌膚如雪炭庙。 梳的紋絲不亂的頭發(fā)上饲窿,一...
    開封第一講書人閱讀 51,763評論 1 307
  • 那天,我揣著相機與錄音焕蹄,去河邊找鬼免绿。 笑死,一個胖子當著我的面吹牛擦盾,可吹牛的內容都是我干的嘲驾。 我是一名探鬼主播,決...
    沈念sama閱讀 40,468評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼迹卢,長吁一口氣:“原來是場噩夢啊……” “哼辽故!你這毒婦竟也來了?” 一聲冷哼從身側響起腐碱,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤誊垢,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后症见,有當地人在樹林里發(fā)現了一具尸體喂走,經...
    沈念sama閱讀 45,850評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,002評論 3 338
  • 正文 我和宋清朗相戀三年谋作,在試婚紗的時候發(fā)現自己被綠了芋肠。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,144評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡遵蚜,死狀恐怖帖池,靈堂內的尸體忽然破棺而出奈惑,到底是詐尸還是另有隱情,我是刑警寧澤睡汹,帶...
    沈念sama閱讀 35,823評論 5 346
  • 正文 年R本政府宣布肴甸,位于F島的核電站,受9級特大地震影響囚巴,放射性物質發(fā)生泄漏原在。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,483評論 3 331
  • 文/蒙蒙 一彤叉、第九天 我趴在偏房一處隱蔽的房頂上張望晤斩。 院中可真熱鬧,春花似錦姆坚、人聲如沸澳泵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽兔辅。三九已至,卻和暖如春击喂,著一層夾襖步出監(jiān)牢的瞬間维苔,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評論 1 272
  • 我被黑心中介騙來泰國打工懂昂, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留介时,地道東北人。 一個月前我還...
    沈念sama閱讀 48,415評論 3 373
  • 正文 我出身青樓凌彬,卻偏偏與公主長得像沸柔,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子铲敛,可洞房花燭夜當晚...
    茶點故事閱讀 45,092評論 2 355

推薦閱讀更多精彩內容