當前位置:
首頁 > 最新 > 機器學習——logistic回歸實踐

機器學習——logistic回歸實踐

機器學習(十五)

——logistic回歸實踐

(原創內容,轉載請註明來源,謝謝)

一、概述

logistic回歸的核心是sigmoid函數,以及分類方式。當sigmoid值大於0.5時,判斷結果為1,小於0.5時判斷結果為。公式為g(z)=1/(1+e-z)。其中,z=w0x0+w1x1…+wnxn,w為x的權重,其中x0=1。

決策邊界是用於區分分類結果的一條線,線的兩邊代表分類的兩種結果。

之前提到logistic,是使用梯度下降演算法,用於獲取代價函數J最小值時的參數。現在使用梯度上升演算法,直接進行訓練,不計算代價函數。

logistic的本質,就是計算出sigmoid的最佳參數。

二、梯度上升與決策邊界

下面是一個用梯度上升演算法進行分類的例子。

1、獲取數據源

數據是存在txt文件中,需要讀取出來。其中每一行的前面的列都是特徵值,最後一列是分類結果。

需要注意的是,由於x0默認是1,在獲取的內容中沒有記錄,因此需要手動把其加上。

2、定義sigmoid

3、梯度上升演算法

和梯度下降,區別在於梯度下降的時候,weights是要減去α乘以偏導數,而梯度上升是採用加的方式。

這裡訓練500次,每次都是矩陣直接相乘的計算。

4、梯度上升的簡化—隨機梯度上升

梯度上升演算法,每次都要進行矩陣的計算,當數據量很大時,這個矩陣的計算量非常大,因此可以改成隨機梯度上升。

這裡和梯度上升的區別,就是在於把矩陣運算改成了數值運算,按照順序遍歷樣本,每次僅取一個樣本進行梯度上升計算。

5、隨機梯度上升優化

隨機梯度上升,還有優化的空間。主要在於兩點:

1)α

α表示的是每次改動的單位步長。由於隨機梯度上升演算法,在高頻的地方會出現波動非常大的情況,這裡讓α在訓練次數多的情況下略微遞減,但又加上一個0.01,保證其不會減到。這樣可以改善高頻抖動劇烈的現象。

2)隨機樣本

樣本每次隨機取一個,這樣避免上下相關的數據出現問題,導致結果周期性波動。

隨機梯度上升,是一種在線學習演算法,其可以根據每次的輸入,實時進行學習,而不用一次性讀取全部的內容。相比之下,一次性讀取全部內容的演算法,稱為批處理演算法。

6、繪製結果

這個用到matplotlib,對裡面的語法沒有太多的研究。

7、繪製結果

下面三行weights分別是三種梯度上升,其在500次訓練的情況下,基本上結果是一樣的,因此圖沒有一一放出來。隨機梯度的有點就是在於速度快,當特徵值非常多或者樣本非常大的時候,用隨機梯度上升可以顯著加快運算速度。

根據繪製出來的決策邊界,可以看出只有兩個紅點和一個綠點存在誤差,整體來說效果還是很好的。

三、實戰-給定數據集進行預測

1、需求

下面進行一個實戰。根據給定的數據量大的樣本,進行分類。其是通過馬的各種身體特徵,預測馬的身體情況。

2、分類函數

logistic回歸,其分類就是根據sigmoid函數的計算結果,大於0.5時判斷為1,否則是。

3、讀取數據並訓練

整個過程和上面類似,不贅述。

4、測試訓練結果

用訓練出來的weights,配合測試數據進行測試,並比對實際結果,計算誤差率。

5、執行測試

四、樣本數據缺失情況下的處理

當採樣存在問題,導致部分數據的特徵值沒有採集完全,或者分類結果沒有採集到時,往往並不能重新採集,因為代價太大,因此可以用下面的方式來處理。

1、總體方式

用特徵均值彌補、用特殊值如-1來彌補、忽略有缺失值的樣本、使用相似樣本的均值來彌補、用其他的機器學習演算法預測缺失值等。

2、對於logistic回歸

1)特徵值缺失

特徵值缺失的情況下,對於logistic,可以直接將缺失的特徵值設置成,這是因為在計算weights時,特徵值為的不會影響到最終的結果;另外結果是的在sigmoid中也是正中間,沒有趨向性。

2)分類結果缺失

分類結果缺失的,在logistic中,通常會拋棄,因為結果缺失的不太好知道實際的結果。

五、總結

logistic回歸演算法,總體來說還算好理解,理解好sigmoid和梯度下降/梯度上升演算法,基本上就可以用logistic來解決問題了。

——written by linhxx 2018.01.16

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 機器學習 的精彩文章:

從香農熵到手推KL散度:一文帶你縱覽機器學習中的資訊理論

TAG:機器學習 |