技術之路

站在代碼以外看技術

機械進修之線性回歸(linear regression)

版權解釋

作者:朱濤
原文地址:#1
簽名 堅持完全性 CC

《機械進修之線性回歸(linear regression)》

總的解釋

regression,不管是線性回清償是logistic回歸,從高條理來看,是我們以為壹切的特定組數據是相幹的,相符必定的散布紀律(可以想象各類曲線),而regression就是來肯定這個曲線的參數從而肯定這個曲線(函數),繼而我們可以依據肯定的函數來盤算(猜測)新的數據的成果。

那末不管是線性回歸 (#1) ,經由過程線性函數來肯定這個散布函數;或許logistic回歸 ( #2 ),經由過程p(x)>threshold 來肯定散布函數;都是在求得響應的曲線(函數)的參數的進程。

平日的求法就是 yhat – y的間隔最短(yhat是我們的函數求得的成果,y是現實的成果),所以平日應用均方差(mean squared error), (yhat-y)^2 ,那末這個求解參數的進程就釀成了:

《機械進修之線性回歸(linear regression)》

這裏的f(x)就是yhat.

或許更普通地,我們以為壹切的特定(這是個絕對的概念,我們說特定,是指其相符統壹散布,然則隨著data set變大,模子加倍龐雜,特定也能夠擴大,例如一階擴大爲二階等)的data set都是相符必定的pattern(也就是下面說的散布,我們用函數可以描寫),然則現實情形通常為我們只曉得這個特定data set的一部門數據(也就是子集,例如training set, test set),那末限于數據的不完整,必定會存在必定的樂音,所以全部機械進修的進程就是關於不完整的數據(包括有樂音)我們找出個中的pattern(或許叫切近親近),那末也包括樂音的處置進程(例如 overfitting #3 )

甚麽是線性回歸?

現實上,限于機械進修的年青(比擬于數學,統計學,生物學等),機械進修許多的辦法都是來自于其它範疇,線性回歸也不破例,它是來自于統計學的一個辦法。

界說:給定命據集D={(x1, y1), (x2, y2), … },我們試圖從此數據集中進修獲得一個線性模子,這個模子盡量精確地反響x(i)和y(i)的對應關系。這裏的線性模子,就是屬性(x)的線性組合的函數,可表現爲:

《機械進修之線性回歸(linear regression)》

向量表現爲:
《機械進修之線性回歸(linear regression)》

個中,w=(w1; w2;w3; …, wd) 表現列向量(; 爲行分隔,見于matlab/octave中應用)

這裏w表現weight,權重的意思,表現對應的屬性在猜測成果的權重,這個很好懂得,權重越大,關於成果的影響越大;更普通化的表現是theta(Andrew ng的課程就是用theta),是線性模子的參數,用于盤算成果。

那末平日的線性回歸,就釀成了若何求得變量參數的成績,依據求得的參數,我們可以對新的輸出來盤算猜測的值。(也能夠用于對練習數據盤算模子的精確度)

淺顯的懂得:x(i)就是一個個屬性(例如西瓜書中的光彩,根蒂;Andrew ng示例中的衡宇面積,臥室數目等),theta(或許w/b),就是對應屬性的參數(或許權重),我們依據已稀有據集來求得屬性的參數(相當于求得函數的參數),然後依據模子來關於新的輸出或許舊的輸出來停止猜測(或許評價)。

若何停止線性回歸?

解析解法(公式法)

關於數據集D,我們須要依據每組輸出(x, y)來盤算出線性模子的參數值,那末若何盤算?

《機械進修之線性回歸(linear regression)》

也就是說我們盡可能使得f(xi)接近于yi,那末成績來了,我們若何權衡兩者的差異?經常使用的辦法是均方誤差,也就是(均方誤差的幾何意義就是歐氏間隔,詳細的解釋可以搜索知乎中的說明)

《機械進修之線性回歸(linear regression)》

這裏的arg min是指前面的表達式值最小時的(w, b)取值。

現實上這就是赫赫有名的最小二乘法 (least square method),關于這個算法的面前還有創造權爭辯(撕逼)的進程,有興致可以自行搜索瀏覽。

那末下面的公式我們若何求得參數w,b呢?因而我們又須要一些微積分(calculus)的常識。(插一句:機械進修為何許多人抱著極大的熱忱來開端,又很快灰頭土臉地分開,大致就是由於這是一個須要較多,不是較深,數學常識的範疇,所以不須要泄氣,而是賴著性質,我們持續進修和懂得)。

這裏
《機械進修之線性回歸(linear regression)》

E是關于(w, b)的凸函數(哈哈,又來了個新的fancy word,簡略懂得爲Andrew ng說的boat shape的函數,也就是有一個最小值),只要一個最小值,而E在最小值時的(w, b)就是我們所請求的參數值,關于凸函數的精確界說可以參考我們大學的高數課程(還記得嗎?),周志華西瓜書p54旁注有解釋。

關於凸函數E關于w,b導數都爲零時,就獲得了最優解。

E對w求導:
《機械進修之線性回歸(linear regression)》

E對b求導:
《機械進修之線性回歸(linear regression)》

下面我本身停止了推到(固然這是最簡略的部門求導,重要就是平方睜開),終究令下面的2個導數爲0,便可獲得w,b的求解公式:

《機械進修之線性回歸(linear regression)》

《機械進修之線性回歸(linear regression)》

個中

《機械進修之線性回歸(linear regression)》

是x的均勻值。

以上是關於輸出屬性爲1個的評論辯論

關於多個屬性的評論辯論,平日這時候就引入了矩陣表現(頭又變大,微積分曾經早已忘卻,線性幾何也是啊!),矩陣表現可以很簡練地表現出公式,例如 f(xi) = wTxi + b

將b作爲w的一個參數(Andrew ng的課程中都是用theta來表現),那末

《機械進修之線性回歸(linear regression)》

然後對w(hat)求導就能夠獲得w矩陣的解:

《機械進修之線性回歸(linear regression)》

下面這個公式就是Andrew ng給出的解析解(也就是不消梯度降低的算法),其時Andrew ng一筆帶過沒有給出求解進程,周志華先生p55有簡略的求解進程。

這外面存在一個成績就是矩陣的逆能否存在的成績(非滿秩矩陣非正定矩陣時,頭好大哦,沒聽過,查查線代的書吧),假如不存在若何處置?Andrew ng提到了2種辦法:削減屬性個數(d),正則化(regularization,這個後續無機會可以再寫一篇)。這就像解方程,等式個數少于未知數個數時,我們就會解出多組解,下面提到的削減屬性個數就是削減未知數個數。

下面說的都是解析解(也就是直接依據公式來盤算,比擬于上面引見的切近親近法),上面再說說梯度降低(Gradient Descent)大法。

梯度降低(Gradient Descent) 切近親近法

起首甚麽是梯度,可以參考上面這張slide(說的嚴謹而清楚):

《機械進修之線性回歸(linear regression)》

簡略地說,我們須要沿著梯度降低的偏向找到一個收斂的參數值,Andrew ng給出的算法以下:

repeat until converge {

《機械進修之線性回歸(linear regression)》

}

個中alpha是learning rate, 是用來掌握降低每步的間隔(太小收斂會很慢,太大則能夠跳過最長處),Andrew ng提到了依照對數的辦法來選擇,例如0.1, 0.03, 0.01, 0.003, etc.

個中的J函數是所謂的cost function(loss function),異樣在數學、統計學中有大批的運用,是權衡我們的猜測函數f(x)精度的函數,異樣我們的目的是最小化J。

《機械進修之線性回歸(linear regression)》

留意到個中的參數1/2m,這個參數是可以簡化部門求導(消失落2m)。除參數外,其它部門與解析解部門是完整雷同的(現實上,解析解部門的公式也是cost function)。
這裏的參數是不主要的,由於alpha的選擇可以對沖失落。

這個進程可以寫法式來完成,詳細可以做下Andrew ng的響應部門演習題,完成的進程照樣很成心思的,也是賡續加深關於梯度降低辦法的懂得。

留意下面的theta息爭析解部門的w,b是一樣的(只是換了下字母)。

若何選擇

那末兩種辦法(解析解和切近親近法)若何選擇,解析解利益是不言而喻的,例如無需選擇learning rate alpha,無需輪回,害處是要有龐雜的矩陣運算(轉置矩陣,逆矩陣等),龐雜度比擬高O(n^3),相較而言,梯度降低則是O(d*n^2)

Andrew ng提到n<10000,大致可以用解析解,n>10000則可以用梯度降低。固然這不是必定的,我們須要懂得為何不選擇解析解,重要是我們的盤算機太慢(龐雜度太高招致時光太長),隨著盤算機愈來愈快,這個經歷值可以調劑。

為何停止線性回歸?

周志華先生提到的西瓜辨別,Andrew ng提到的房價猜測,都是很好的運用。線性回歸鑒于其簡略易用,易懂得(留意下面提到的權重的懂得),所以獲得了很普遍的運用,在某些場景下也許有優于其它龐雜辦法的表示。

別的,隨著機械進修的發展,近期湧現的explainable AI(也就是不只需猜測出成果,還有給出猜測的緣由說明),而線性回歸辦法則很相符explainable的請求。(別的決議計劃樹也很explainable)

最初

Andrew ng在講完線性回歸後忽然收回了以下的感嘆:

95%的硅谷做AI的engineer都不懂線性回歸,而當你懂了線性回歸後,你就跨越了大多半硅谷弄AI的人,可以去請求Offer了。

很誇大乃至勵志是吧?然則你要記得他錄視頻是在2011年10月閣下(source: 演示的電腦),6年曩昔了,懂個線性回歸明顯不敷了,所以我們照樣要持續進修其它的ML常識,比方下一篇對數概率回歸(logistic regression #2 )

參考材料

  1. 周志華 《機械進修》
  2. Andrew ng: Machine Learning in Coursera
  3. http://www.geek720.com/
  4. http://www.geek720.com/ latex轉換爲圖片(markdown不支撐公式)
  5. http://www.geek720.com/
  6. http://www.geek720.com/
  7. http://math.fudan.edu.cn/gdsx/KEJIAN/偏向導數和梯度.pdf
  8. http://www.geek720.com/
  9. http://www.geek720.com/
點贊

揭櫫評論

電子郵件地址不會被公開。 必填項已用*標注