第一部分講是線性迴歸,其大致目的是根據訓練數據得到模型,再輸入新的數據後得到預測的值,該值爲一個連續值。而邏輯迴歸於線性迴歸其實並沒有太大的區別,只不過邏輯迴歸是用於分類問題,二元分類居多,它對應訓練數據中的結果值往往爲 0或1。
1假說表示(Hypothesis Representation)
在分類問題中,我們要預測的是離散的值,預測的結果是屬於哪個類(例如正確或錯誤)。如判斷一個腫瘤是良性還是惡性的。二元分類是最簡單的分類問題,我們將類別分爲兩類,可以用0和1來描述。當我們用線性迴歸來進行分類時,由於輸出的值往往大於1或者小於0,所以爲了分類,我們要將假設函數的輸出值設定在0到1之間。線性迴歸只能輸出連續的值,因此我麼可以這樣預測
當 時預測
當 時預測
上面 爲假設函數, 爲預測的結果值。我們使用0.5作爲分類的閥值,那麼我們的假設函數的值必須爲 。
在此引入邏輯迴歸的假設函數 其中 爲特徵向量,爲之前講述的關於 的向量 代表邏輯函數(logistic function)是一個常用的邏輯函數爲S形函數(Sigmoid function),公式爲: 該函數圖像爲
上圖可以看出sigmoid函數的值在0到1之間,那麼合起來即爲邏輯迴歸的假設函數即 。的作用是,對於給定的輸入變量,根據選擇的參數計算輸出變量=1的可能性(estimated probablity)如果對於給定的,通過已經確定的參數計算得出 ,則表示有70%的機率爲正向類,相應地爲負向類的機率爲1-0.7=0.3。
2 判定邊界(decision boundary)
這個概念可以幫助我們更好的理解邏輯迴歸,邏輯迴歸如下所示
現在假設我們有一個模型:
並且假設參數 是向量[-3 1 1]。 則當 ,即 時模型將預測 . 我們可以繪製直線,這條線便是我們模型的分界線,將預測爲1的區域和預測爲 0的區域分隔開。如下圖所示
3代價函數(Cost Function)
線性迴歸的代價函數爲
邏輯迴歸中我們沿用這個定義,但是將 帶入到上述的代價函數中時,我們得到的是一個非凸函數(non-convexfunction)
如圖所示,現在代價函數有許多的局部最小值,那麼梯度下降算法就很難尋找到全局最小值,我們從新定義邏輯迴歸的代價函數爲
其中
因此邏輯迴歸的代價函數綜述輸如下所示
可以合成爲 帶入上述的 得到簡化的邏輯迴歸代價函數爲
接下來要做的就是使用梯度下降算法求得使 的 。還有一點注意的是我們使用邏輯迴歸對新的數據進行預測,預測出的結果,就是一個概率值: ,即關於以爲參數,的概率,我們可以認爲我們的假設就是估計的概率,那麼
4梯度下降(Gradient Descent)
最小化代價函數,即我們之前學習的梯度下降算法,我們常用的梯度下降的模板爲
所以說假設你有個特徵,也就是說 ,爲 維的向量,那麼就需要上述的式子更新所有的的值。這與之前線性迴歸的公式是一樣的,但其實由於邏輯迴歸的假設函數和線性迴歸的假設函數不同,雖然梯度下降的規則是一樣的,但是邏輯迴歸和線性迴歸的梯度下降是不一樣的。一般這樣的同時更新所有參數,採用的是向量化的方法,這種思維很重要,也非常的便捷。
我們之前在談線性迴歸時講到的特徵縮放,我們看到了特徵縮放是如何提高梯度下降的收斂速度的,這個特徵縮放的方法,也適用於邏輯迴歸。如果你的特徵範圍差距很大的話,那麼應用特徵縮放的方法,同樣也可以讓邏輯迴歸中,梯度下降收斂更快。
5高級優化(Advanced Optimization)
這個優化是針對梯度下降來講,使用一些更復雜的算法來進行計算,使邏輯迴歸的效率大大提升,這也將使算法更加的合適解決大型的機器學習問題,比如,我們有數目龐大的特徵量。 現在我們換個角度來看什麼是梯度下降,我們有個代價函數,而我們想要使其最小化,那麼我們需要做的是編寫代碼,當輸入參數 時,它們會計算出兩樣東西: 以及 等於 0、1直到時的偏導數項。如下圖所示
假設我們已經完成了可以實現這兩件事的代碼,那麼梯度下降所做的就是反覆執行這些更新。共軛梯度法 BFGS (變尺度法) 和L-BFGS (限制變尺度法) 就是其中一些更高級的優化算法,它們需要有一種方法來計算 ,以及需要一種方法計算導數項,然後使用比梯度下降更復雜的算法來最小化代價函數。這些算法很複雜,如果需要研究透那麼會花費大量的時間,我們可以直接調用一些庫來使用。這些算法有許多優點,比如效率高,並且通常不需要選擇學習率
6多類別分類:一對多( Multiclass Classification_ One-vs-all)
前面所講的都是使用邏輯迴歸進行二分類問題,結果的輸出往往爲 或者 。邏輯迴歸也可用於多分類問題,那麼輸出的結果就不只兩種,例如下面的例子。將學習算法應用與自動的將郵件進行分類,或者說是加上標籤,那麼這些郵件就可以分爲來自工作的郵件,來自朋友的郵件,來自家人的郵件或者是有關興趣愛好的郵件。那麼就有這樣一個分類問題:其中類別有四個,分別用 來代表。
然而對於二分類和多分類問題來講,它們之間的數據集不一樣,如下圖所示
利用不同的符號來表示不同的類別。上訴邏輯迴歸是解決二分類問題,可以將數據集一分爲二爲正類和負類,用一對多的思想將其用於多分類問題上。上圖中我們有三個類別用三角形表示 ,方框表示 ,叉叉表示 。先從用三角形代表的類別1開始。實際上可以創建新的訓練集,類型2和類型3定爲負類,類型1設定爲正類,創建一個新的訓練集,如下圖所示,擬合處一個合適的分類器
三角形爲正樣本,圓形代表負樣本,設三角形的值爲1,圓形的爲0,訓練出一個標準的邏輯迴歸分類器,這樣就得到一個正邊界,然後依次這樣執行三次。爲了能實現這樣的轉變,我們將多個類中的一個類標記爲正向類,然後將其他分類都標記爲父分類,這個模型記作 接着,其他爲和,最後我們得到一系列的模型簡記爲: 其中 最後,在我們需要做預測時,我們將所有的分類機都運行一遍,然後對每一個輸入變量,都選擇最高可能性的輸出變量。
7正則化(Regularization)
7.1過擬合問題The Problem of Overfitting
過擬合問題是機器學習中常見的問題,與之對應的就是欠擬合問題。過擬合就是在機器學習算法根據數據集訓練出模型,該模型對訓練集數據有非常好的效果(代價函數可能幾乎爲0),那麼這樣對新輸入的數據就不會有很好的結果,也就是輸入新的數據,預測的結果不好。如下面迴歸問題的例子所示
第一個模型是欠擬合,假設函數不能很好的適應我們的訓練集,第二個模型是非常好的效果,第三個模型是一個四次方的模型,過於強調擬合原始數據,而丟失了算法的本質:預測新數據。分類問題也存在這樣的情況:
如果發現過擬合問題,我們可以採用下面的方法進行處理:
1 丟棄一些不能幫助我們正確預測的特徵,也就是丟棄一些多餘的特徵。
2 正則化。保留所有的特徵,但是減少參數的大小(magnitude)
7.2代價函數(Cost Function)
上面的例子中那個過擬合的情況出現時我們的模型是: 正是這些高次項導致了過擬合的產生,如果可以是這些高次項的係數(也就是上面式子中的 和 )接近爲0的話,那麼就可以很好的擬合了。所以我們所做的就是在一定程度上減小這些參數的值,這就是正則化的基本思想。要減小這些高次項係數的值,那麼就要修改代價函數,給 和 設置懲罰。例如修改後的代價函數如下所示:
通過這樣選擇的 和 對預測結果的影響就非常的小,如果我們有非常多的特徵,我們並不知道其中哪些特徵我們需要懲罰,那麼就可以對所有的特徵進行懲罰,這樣得到的是一個較爲簡單的防止過擬合問題的假設
其中又稱爲正則化參數(Regularization Parameter),經過正則化處理的模型與原模型的對比如下圖所示
如果選擇的正則化參數 過大,則會把所有的參數最小化,導致模型變成 即圖中紅色直線所示的情況,造成欠擬合。所以對於正則化,我們要取一個合適的的值,這樣才能更好的應用正則化。