廣義線性模型:使用單調可微的聯系函數g(.),令hΘ(x) = g(ΘTx)
logistic regression用來干什么?
完成分類任務。
為什么要用logistic regression?
如果使用線性回歸處理分類任務會存在以下兩個問題:
(1)預測值y取值為0或者1,但是hΘ(x)的值可能遠大於1或者遠小於0。因此根據hΘ(x)的值判斷類別的話存在困難(閾值不好取,增刪數據之后參數改變閾值也必須改變)。
(2)實際中很多問題,預測值與特征值並不是直線關系。
為了更好地進行分類,我們需要把輸出值控制在0-1之間。在這里我們引入logistic/sigmoid function
令g(z) = 1 / (1 + e-z); g' = g *(1 - g); 0 < g < 1;
hΘ(x) = 1 / (1 + e-ΘTx); 0 < h < 1
有了h,我們就能根據h的值判斷x的類別。比如我們可以預測:
相當於:
從上面的轉化中我們可以看出,把目標函數的輸出值從一個很大的范圍縮到了(0,1)
得到的ΘTx即為邊界:
使用這個算法,我們可以用非常復雜的模型來適應非常復雜形狀的判定邊界。
例如有這樣的分布:
假設目標函數:
參數是[-1 0 0 1 1],則我們得到的判定邊界恰好是圓點在原點且半徑為1 的圓形。
怎么用logistic regression?
選擇合適的cost function:
采用此代價函數,hΘ(x)與y就同步了。而且是凸函數。
下面采用梯度下降法來更新參數Θ:
注:經過推導可以發現邏輯回歸的參數更新公式和線性回歸的參數更新公式一致。但是注意,hΘ(x)不一樣。
另外,這里在運行梯度下降算法之前進行特征縮放仍然是非常必要的。