邏輯回歸 正則化 感知機

2022-08-31 18:00:15 字數 3325 閱讀 6351

為避免過擬合,增強模型的泛化能力,可以使用正則化的方法。

lasso回歸--l1正則化

\[j(\theta)=\frac(\mathtt x\theta-y)^t(\mathtt x\theta-y)+\alpha\lvert \theta\rvert_1

\]\(\alpha\)為常數係數,需要進行調優,\(\lvert\theta\rvert_1為\)

\(l_1\)範數。

ridge回歸--l2正則化

\[j(\theta)=\frac(\mathtt x\theta-y)^t(\mathtt x\theta-y)+\frac\alpha\lvert \theta\rvert_2^2

\]\(\alpha\)為常數係數,需要進行調優,\(\lvert\theta\rvert_2^2\)為\(l_2\)範數。

ridge = ridge(alpha=1)

ridge.fit(x_train,y_train)

print(ridge.coef_) #列印模型引數

print(ridge.intercept_)

alphas = np.logspace(-10,-2,200) #生成200個alpha在10的-10次方到-2次方之間

clf = linear_model.ridge(fit_intercept=false)

coefs =

for a in alphas:

clf.set_params(alpha=a)

clf.fit(x,y)

\(\alpha\)越大,那麼正則項懲罰越厲害,得到的回歸係數\(\theta\)就越小,最終趨近於0;

\(\alpha\)越小,那麼正則項懲罰越小,得到的回歸係數\(\theta\)就越接近普通的線性回歸係數。

邏輯回歸是乙個分類的演算法。

對於離散型的資料,如何進行分類,對於輸入向量x,構建函式\(g(\mathtt x)\)使得其值落於某個區間內的話就分為a類,否則分為b類,這就是最基本的用邏輯回歸做二分類的思想。這個函式g我們經常使用sigmoid函式,具有較好的性質。

\[g(z)=\frac}\\

h_\theta(x)=\frac}\\

h_\theta(\mathtt x)=\frac}

\]邏輯回歸的損失函式

邏輯回歸的損失函式經常使用極大似然函式表示,並對其取對數。

\[l(\theta)=\prod_^(h_\theta(x^))^}(1-h_\theta(x^))^}\\

j(\theta)=-lnl(\theta)=-\sum_^(y^\log(h_\theta(x^))+(1-y^)\log(1-h_\theta(x^)))\\

j(\theta)=-\mathtt y^t\log h_\theta(\mathtt x)-(\mathtt e-\mathtt y)^t\log(\mathtt e-h_\theta(\mathtt x))

\]邏輯回歸優化方法

\[\theta=\theta-\alpha x^t(h_\theta(x)-y)

\]推廣到多元邏輯回歸

某種型別為正值,其他為0,這種方法被稱為one-vs-rest,簡稱ovr;

選擇兩部分的樣本分別做邏輯回歸,稱為many-vs-many,簡稱mvm;

二元邏輯回歸的概率表示如下:

\[p(y=1|x,\theta)=h_\theta(x)=\frac}=\frac}}\\

p(y=0|x,\theta)=1-h_\theta(x)=\frac}\\

\]其中,y只能取0和1,推廣到多分類問題,使用softmax函式

\[p(y=k|x,\theta)=\frac}^e^}\quad k=1,2,...,k-1\\

p(y=k|x,\theta)=\frac^e^}\\

\]常用的類

logisticregression

logisticregressioncv:使用了交叉驗證來選擇正則化引數c

logistic_regression_path:主要是為了選擇模型時使用,確定回歸係數和正則化引數。

正則化引數penalty

penalty的值可以是l1或者l2,分別對應l1和l2正則化,預設是l2。一般選擇l2就夠了,如果還是過擬合,即**效果差的情況,可以選擇l1。如果模型特徵非常多,希望一些不重要的引數係數歸零,從而使模型係數稱稀疏化,也可使用l1正則化。

penalty會影響損失函式的優化演算法,即solver選擇,如果l2則solver可以選擇以下四種:newtow-cg、lbfgs、linear、sag,如果是l1,只能選擇linear,因為l1正則化loss函式不是連續可導的。

優化演算法引數solver

newtow-cg、lbfgs、linear、sag

分類方法選擇引數multi_class

ovr和multinomial

型別權重引數class_weight

用於標示分類模型各種型別的權重,解決「誤分類代價很高」和「樣本高度失衡」的問題。

樣本權重引數sample_weight

解決樣本失衡問題。

from sklearn.model_selection import gridsearchcv

from sklearn.linear_model import logisticregression

from sklearn.learning_curve import learning_curve

param_lr =

gsearch_lr = gridsearchcv(estimator=logisticregression(penalty='l1',solver='liblinear'),

param_grid=param_lr, cv=3)

模型概念

感知機模型是存在乙個超平面\(\sum_^m\theta_ix_i=0\),能夠將資料完全分開,定義為:\(y=sign(\theta\cdot x)\)其中:

\[sing(x)=

\begin

-1\quad x\lt0\\

1\quad x\ge0

\end

\]損失函式

期望所有的樣本到超平面的距離之和最小,點到超平面的距離為\(\frac\theta\cdot x^}\),其中\(\lvert\theta\rvert_2\)為l2範數。所有點到超平面的距離之和為\(\fracy^\theta\cdot x^}\),可以簡化為

\[j(\theta)=-\sum_y^\theta\cdot x^

\]損失函式的優化方法

一般採用梯度下降法進行優化

感知機模型是支援向量機、神經網路等演算法的鼻祖

邏輯回歸 感知器演算法

andrew ng 機器學習筆記 這一系列文章文章是我再 andrew ng的stanford公開課之後自己整理的一些筆記,除了整理出課件中的主要知識點,另外還有一些自己對課件內容的理解。同時也參考了很多優秀博文,希望大家共同討論,共同進步。邏輯回歸 在之前的學習中,我們一直使用的是線性回歸,因為我...

深度學習(正則化的線性回歸和邏輯回歸)

clear clc 載入資料 x load ex5linx.dat y load ex5liny.dat 顯示原始資料 plot x,y,o markeredgecolor b marke cecolor r markersize 10 將特徵值變成訓練樣本矩陣 x ones length x 1 ...

SVM簡介 SVM與感知機 邏輯回歸LR的區別

硬間隔svm 軟間隔svm 核函式 svm分類超平面的解是唯一的,要滿足間隔最大化 感知機的解不唯一,沒有間隔最大化的約束條件,滿足分開資料點的分介面都是可以的 相同點 第一,lr和svm都是分類演算法。第二,如果不考慮核函式,lr和svm都是線性分類演算法,也就是說他們的分類決策面都是線性的 第三...