Stanford機器學習課程筆記——多變數線性迴歸模型

bigface1234fdfg發表於2015-01-23

Stanford機器學習課程筆記——多變數線性迴歸模型

    

1. 多變數線性迴歸模型引入


    前面一篇中學習了單變數的線性迴歸模型,那麼自然就會想到多變數線性迴歸模型,以及非線性模型。這篇我們就學習。

    其實,前面的單變數,顧名思義就是樣本的特徵只有1個,那麼多變數就是樣本的特徵有多個。同樣是前面的房屋價格的例子,吳恩達大叔給出了多變數的例子,如下:



這個新例子中,每個樣本的特徵有4個(房屋面積,臥室個數,樓層,建築年代),需要許褚的依舊是房屋的價格。

    多變數線性迴歸模型的假設和前面是類似的,只不過theta的個數隨著變數個數增加而增加,為:。然後我們可以給theta_0配對一個x_0,這樣整個形式就一樣了。也就是:,其中我們可以令x_0=1,這樣可以轉換成常見的向量乘矩陣的形式。也就是:。其中的theta是行向量,裡面都是線性迴歸模型中的引數,X是樣本矩陣,每一列為一個樣本(注意,這裡和sklearn中的每一行為一個樣本是不一樣的)。


    有了假設,後面就是代價函式。多變數線性迴歸模型中的代價函式和單變數的相似,都是樣本的誤差平方和:


只不過其中h_0_x_i中x_i的個數增多了。

    同樣,我們也可以使用梯度下降法來求解上述目標函式。其粗略的演算法步驟如下:



其中關鍵指出在於假設h對所有表示係數theta_i的求導。其實也簡單,因為h關於theta的表示式是線性的,那麼求導自然就很方便啦,這裡我們就直接貼出來吳恩達大叔的原稿:



這樣就得到了更新所有theta時候的下降方向,不過要注意:所有theta_i的更新一定是同時的!


2. 特徵縮放


    這個特徵縮放,我理解類似與特徵的歸一化normalization. 這是樣本多變數情況所特有的。因為樣本有多個特徵,而每個特徵的量綱不完全一樣,最大值最小值的取值範圍也不同,所以我們需要把它們統一到-1到1之間。

    具體而言,對於其中一個特徵,我們把所有樣本在該特徵維度上的值都提取出來,計算均值和標準差。然後利用下面公式歸一化:


其中mu_n是均值,S_n是標準差。這樣所有樣本在該特徵維度上的值均在-1到1之間了。


3. 學習率alpha


    這是梯度下降法中的學習率,它決定了在找到下降最快的方向之後,到底下降多少的程度。這是一個度的關係。可以說,梯度下降法這樣子萬能的求解最優化的選手收到影響的因素就兩個,除了初始點的設定之外,還有一個就是它了。

    梯度下降法的求解效果收到了學習率大小的影響,如果alpha過小,那麼收斂的速度會很慢,求解需要迭代的次數很多;如果alpha很大,那麼可能使得更新的時候越過了區域性最小值,導致無法收斂,求解失敗。(不過這樣子看來,還是設定小一些比較穩妥。。)


    畫出代價函式值關於迭代次數的變化曲線,可以看出alpha設定的是否合理:



而如果alpha設定的不合理,那麼代價函式的值可能會逐漸增大,或者在動盪:



    上面右圖看的比較明顯。那麼這個學習率到底怎麼設定呢?

     還是吳恩達大叔給出了建議:



   看出來了吧,先試一試小的alpha,0.001,如果感覺它太小了,那麼再試一試0.01,如果太大了,返回來試一試0.003,這樣子一次試下去。。。


4. 非線性迴歸——多項式迴歸


    開頭我們提到了不是所有的資料都滿足線性迴歸的,那麼非線性迴歸又如何呢?這裡我們學習一個簡單的非線性迴歸模型,多項式迴歸,而且它還是可以轉化成線性迴歸的。轉換的思路如下:



也就是說,我們可以把後面的高次項重新用一個新的變數來表示,新的變數只是一次的,這樣我們整個模型都是一次的。接下來我們繼續可以使用線性迴歸模型的方法求解。梯度下降法啊,代價函式啊,都是適用的。


5. 正規方程——解析解


    課程中說這個是正規方程,剛開始看還不是很理解,後面知道了,其實這裡就是解析解。因為我們前面的梯度下降法求得的都是區域性最優,不是全域性的。這個是解析解,全域性的。

    說是解析解,是因為迴歸模型中的代價函式都是可以求導,令導數為零,求得最優解的。那麼回到我們剛才說的代價函式形式,我們把假設h的向量乘矩陣的形式帶入代價函式中,再求導,即可得:



其中矩陣X是樣本特徵矩陣,這個是我們直接就有的,y也是直接有的。也就是說,我們可以把X和y帶入上式,就可以一下子求得最優的theta向量了。

    但是,我們要注意計算時間複雜度。因為這個求解公司中有矩陣的逆運算,它的時間複雜度是O(n^3),而且有的時候不是滿秩,不可以求逆運算。所以這兩個方法(解析解和梯度下降法)各有利弊,總結如下:



其實,遇到不可求逆的情況,分析原因可知:這個因為矩陣不滿秩,也就是說代表矩陣X行數的樣本特徵維數大於代表列數的樣本個數,這就是傳統的小樣本問題。這個時候,我們可以先用PCA降維,把樣本的特徵維數降低,小於樣本的個數,這樣就可以了。




已經寫到一半的博文突然就沒有了,CSDN上面也沒有自動儲存,暈。。。吐槽一下這個編輯器。。


參考:

http://blog.csdn.net/abcjennifer/article/details/7700772


《Coursera機器學習筆記》

相關文章