52ML系列--邏輯迴歸
現在前面
希望對這段時間的機器學習做一個溫故與總結,於是有了寫52ML系列部落格的想法
邏輯迴歸解決什麼問題
邏輯迴歸是一個分類模型,輸出樣本屬於某個類別的概率,但個人認為它也是一個迴歸問題,因為這個概率需要一個基於迴歸產生的分數。
什麼意思呢?比如現在要做一個模型:根據毛髮、耳朵長短、抓不抓老鼠,可不可愛等資訊判斷一個動物是不是貓,這看上去是一個二分類問題,要麼是要麼不是,輸出為:1 or -1。但是我們換一個問法,判斷這個動物是貓的概率?那麼輸出應該是一個[0,1]之間的值。 這就跟我們一般的二分類問題有些不一樣了,學術上稱作軟二分類問題('soft' binary classification),這種問題交給邏輯迴歸來處理就對了 。
邏輯迴歸模型思路
那麼邏輯迴歸是如何解決這種問題呢?思路是我們可以利用毛髮、耳朵長短、抓不抓老鼠,可不可愛等特徵算出某種類似得分的東西,得分越高越有可能是貓對不對?那麼接下來,再將得分按某種操作轉化為百分比,就得到了概率。
那麼問題就變成了兩部分:算得分,求概率。
算得分,最直接的想法就是利用線性迴歸模型
是待求的模型引數,我們先放在那裡,下面考慮第二部分。
如何將得分轉化為概率?注意到得分的取值可能是 ,而結果是
之間的概率值,這是一種對映關係,那麼怎麼找到這種對映關係呢?不用找了,前輩們告訴你 sigmoid 函式天然的完成了這種對映,函式長這樣:
函式圖形長圖1這樣:

圖1
sigmoid 函式很好的將 限制對映在
之間,得分越高,概率越高;相反得分越低,概率越低。
ok,現在我們有了邏輯迴歸的基本模型思路了,下面開始訓練模型。
模型訓練
考慮用平方誤差做代價函式
但是這個函式並不是凸函式,無法用梯度下降找到最優解。
最大似然
換一種考慮方式:
提供一種概率分佈能夠產生這個資料集:
那麼這個資料集的產生概率可以表示為:
稱作 似然函式 (likelihood) 。
如何找到函式 呢?
,那麼
其中
就可以了。
用數學的方法表示就是這樣:
tips:
根據
sigmoid函式的特殊性:帶入:
變換將連乘改成連加,並新增負號轉化為求最小值問題,再引入一個求平均的操作:
帶入 sigmoid 函式:
ok, 這是一個凸函式,稱作 交叉熵誤差函式 。
下面的操作不說也知道,梯度下降擼起吧。。。
PS
這個ps挺大的。。。因為內容還有點多
上面的模型用的標籤是這種情況呢?
只需將概率模型修改下:
合併後得到:
依然用極大似然:
依然取對數將連乘轉連加,並新增符號轉化為求最小值,再引入平均:
帶入 sigmoid 函式之後依舊梯度下降開擼吧。。。
參考引用:
- 臺灣大學林軒田《機器學習基石》課程
- 《統計學習方法》——李航