1. 程式人生 > >[斯坦福大學2014機器學習教程筆記]第六章-分類迴歸

[斯坦福大學2014機器學習教程筆記]第六章-分類迴歸

    在這節以及接下來幾節中,我們要開始討論分類問題。這節將告訴我們為什麼對於分類問題來說,使用線性迴歸並不是一個好主意。

    在分類問題中,你要預測的變數y是一個離散的值,我們將學習一種叫做邏輯迴歸(Logistic Regression)的演算法,這是當今最流行、使用最廣泛的學習演算法之一。

    分類問題的例子有:垃圾郵件分類(判斷一封電子郵件是否是垃圾郵件)、分類網上交易(判斷某一個交易是否是欺詐,例如是否用盜取的信用卡等等)、腫瘤分類(判斷一個腫瘤是惡性的還是良性的)。在這些問題中,我們嘗試預測的變數y是可以有兩個取值的變數(0或1)。我們用0表示的那一類還可以叫做負類(Negative Class),用1表示的那一類可以叫做正類(Positive Class)。一般來說,負類表示沒有某樣東西,比如說:沒有惡性腫瘤。正類表示具有我們要尋找的東西。但是,什麼是正類什麼是負類是沒有明確規定的。

    現在我們要開始討論只包含0和1兩類的分類問題(即二元的分類問題)。那麼,我們要如何開發一個分類演算法呢?

    這個例子的訓練集是對腫瘤進行惡性或良性分類。注意到惡性與否只有兩個值,0或者1。所以,我們可以做的就是對於這個給定的訓練集,把我們學過的線性迴歸演算法應用到這個資料集,用直線對資料進行擬合。如果你用直線去擬合這個訓練集,你有可能得到如下圖的假設直線。

    如果你想做出預測,你可以將分類器輸出的閥值設為0.5(即縱座標值為0.5),如果假設輸出一個大於等於0.5,可以預測y=1,如果小於0.5則預測y=0。在這個特定的例子中,似乎線性迴歸做的事情很合理。但是,嘗試改變一下問題,將橫軸延長一點。假如我們有另外一個訓練樣本位於右邊遠處。

    注意這個額外的訓練樣本,顯然它並不會改變什麼,假設依然很好。但是,當我們再增加一個額外的例子,如果我們這時執行線性迴歸,我們會得到另一條直線(如下圖)去擬合數據。此時,如果將閥值設為0.5,根據分析,這顯然不是一個好的線性迴歸。

    所以,將線性迴歸運用到分類問題中通常不是一個好主意。在增加額外的樣本之前,之前的線性迴歸看起來很好。但是,對資料集進行線性迴歸,有時會很好,但這不意味著這就是一個很好的方法。因為我們可能會遇到像增加了一個額外樣本之後的問題,這時,效果就比較糟糕了。儘管我們知道標籤y應該取值0或者1,但是如果演算法得到的值遠大於1或者遠小於0的話,還是會感覺很奇怪。

    所以我們在接下來的要研究的演算法就叫做邏輯迴歸演算法,這個演算法的特點是:它的輸出值永遠在0到1之間。順便說一下,我們通常將邏輯迴歸演算法視為一種分類演算法。有時候可能因為這個演算法的名字中出現了“迴歸”讓人會感到困惑,但邏輯迴歸演算法實際上是一種分類演算法,它適用於標籤y為離散值0或1的情