作業 「西瓜書」邏輯回歸

2021-08-28 08:38:23 字數 2957 閱讀 4779

名稱:描述對數機率回歸演算法的過程。

提交形式:簡潔的文字描述演算法的通用形式,文字打卡提交。

邏輯回歸((logistic  regression),也稱為對數機率回歸。雖然名字上是回歸,但實際是處理分類問題的演算法(回歸問題的輸出是連續值,分類問題的輸出是離散值)。

1.引入

(多元)線性回歸——

廣義線性回歸——

對數線性回歸——

但是,想要分類——0、1。參考單位階躍函式,但是單位階躍函式不連續,不能直接用作g(·)的逆函式,因此找到了對數機率函式(logistic function) 來代替單位階躍函式。

(來自西瓜書)

如上圖所示,將對數機率函式帶入廣義線性模型後,求一次ln,左邊就是包含y的表示式,右邊就是包含x的表示式,可以發現,等式左邊的內容,「若將 y 視為樣本 z 作為正例的可能性,則 1-y 是其反例可能性,兩者的比值稱為『機率』,反映了x作為正例的相對可能性」(ps:之所以y視作x作為正例的可能性,我理解是因為等式中y與x呈正向相關,1-y作為分子與x呈反向相關)。對這個機率取對數,就得到了「對數機率」,簡稱「對率」。因此,本模型實際上是用線性回歸模型的**結果去逼近真實標記的對數機率。

2、求解——如何求解模型中的w和b呢?

然後可以通過「極大似然法」來估計w和b。

3.對數機率回歸演算法在python庫中的引數。

api引數

意義備註

logisticregression的parameters

penalty 

懲罰項 

str型別,可選引數為l1和l2,預設為l2。用於指定懲罰項中使用的規範。newton-cg、sag和lbfgs求解演算法只支援l2規範。l1g規範假設的是模型的引數滿足拉普拉斯分布,l2假設的模型引數滿足高斯分布,所謂的正規化就是加上對引數的約束,使得模型更不會過擬合(overfit),但是如果要說是不是加了約束就會好,這個沒有人能回答,只能說,加約束的情況下,理論上應該可以獲得泛化能力更強的結果。 

dual

對偶或原始方法 

bool型別,預設為false。對偶方法只用在求解線性多核(liblinear)的l2懲罰項上。當樣本數量》樣本特徵的時候,dual通常設定為false。

tol停止求解的標準 

float型別,預設為1e-4。就是求解到多少的時候,停止,認為已經求出最優解。 

c正則化係數λ的倒數 

float型別,預設為1.0。必須是正浮點型數。像svm一樣,越小的數值表示越強的正則化。 

fit_intercept 

是否存在截距或偏差 

bool型別,預設為true。 

intercept_scaling 

僅在正則化項為」liblinear」,且fit_intercept設定為true時有用。float型別,預設為1。

class_weight 

用於標示分類模型中各種型別的權重,可以是乙個字典或者』balanced』字串,預設為不輸入,也就是不考慮權重,即為none。 

如果選擇輸入的話,可以選擇balanced讓類庫自己計算型別權重,或者自己輸入各個型別的權重。舉個例子,比如對於0,1的二元模型,我們可以定義class_weight=,這樣型別0的權重為90%,而型別1的權重為10%。如果class_weight選擇balanced,那麼類庫會根據訓練樣本量來計算權重。某種型別樣本量越多,則權重越低,樣本量越少,則權重越高。當class_weight為balanced時,類權重計算方法如下:n_samples / (n_classes * np.bincount(y))。n_samples為樣本數,n_classes為類別數量,np.bincount(y)會輸出每個類的樣本數,例如y=[1,0,0,1,1],則np.bincount(y)=[2,3]。

random_state 

隨機數種子 

int型別,可選引數,預設為無,僅在正則化優化演算法為sag,liblinear時有用。 

solver 

優化演算法選擇引數 

只有五個可選引數,即newton-cg,lbfgs,liblinear,sag,saga。預設為liblinear。solver引數決定了我們對邏輯回歸損失函式的優化方法,有四種演算法可以選擇,分別是: liblinear:使用了開源的liblinear庫實現,內部使用了座標軸下降法來迭代優化損失函式。 lbfgs:擬牛頓法的一種,利用損失函式二階導數矩陣即海森矩陣來迭代優化損失函式。 newton-cg:也是牛頓法家族的一種,利用損失函式二階導數矩陣即海森矩陣來迭代優化損失函式。 sag:即隨機平均梯度下降,是梯度下降法的變種,和普通梯度下降法的區別是每次迭代僅僅用一部分的樣本來計算梯度,適合於樣本資料多的時候。 saga:線性收斂的隨機優化演算法的的變重。

max_iter 

演算法收斂最大迭代次數 

int型別,預設為10。僅在正則化優化演算法為newton-cg, sag和lbfgs才有用,演算法收斂的最大迭代次數。 

multi_class

分類方式選擇引數

str型別,可選引數為ovr和multinomial,預設為ovr。ovr即前面提到的one-vs-rest(ovr),而multinomial即前面提到的many-vs-many(mvm)。如果是二元邏輯回歸,ovr和multinomial並沒有任何區別,區別主要在多元邏輯回歸上。 

verbose 

日誌冗長度y

int型別。預設為0。就是不輸出訓練過程,1的時候偶爾輸出結果,大於1,對於每個子模型都輸出。

warm_start 

熱啟動引數

n_jobs

並行數 

int型別,預設為1。1的時候,用cpu的乙個核心執行程式,2的時候,用cpu的2個核心執行程式。為-1的時候,用所有cpu的核心執行程式。

參考:周志華《機器學習》

西瓜書3 3對率回歸

這是西瓜書第一道實踐題,感覺書裡對於原理講解過於生硬,有點難以理解,所以我更多採用從andrew ng的深度學習中學到的logistic regression來描述 資料如下 編號密度 糖分好瓜 00.697 0.46011 0.774 0.37612 0.634 0.26413 0.608 0.3...

深度之眼西瓜書課程1 機器學習 邏輯回歸

2020.3.27 報了深度之眼的西瓜書推導課程,在此記錄一下自己的學習過程。課程介紹收穫 1 別想一次性看懂所有知識點 2 課程之前得先自己推導下課程,找出自己的問題,課程上尋找答案 from sklearn.datasets import fetch openml from sklearn.li...

線性回歸詳細推導 基於西瓜書

3.1基本定義 線性模型 linear model 試圖學得乙個通過屬性得線性組合來進行 得函式,即 f x w 1x 1 w 2x 2 dots w dx d b quad 3.1 一般用向量的形式寫成 f x w tx b quad 3.2 其中,w w 1 w 2 dots w d w 和 b...