日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

逻辑回归python正则化 选择参数_吴恩达机器学习笔记(三)——正则化(Regularization)...

發布時間:2024/7/23 python 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 逻辑回归python正则化 选择参数_吴恩达机器学习笔记(三)——正则化(Regularization)... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.過擬合的問題(Over-fitting)

如果我們有非常多的特征,我們通過學習得到的假設可能能夠非常好地適應訓練集(代價函數可能幾乎為0),但是可能會不能推廣到新的數據。

(1)下圖是一個回歸問題的例子:第一個模型是一個線性模型,欠擬合,不能很好地適應我們的訓練集

第三個模型是一個四次方的模型,過于強調擬合原始數據,而丟失了算法的本質:預測新數據。

我們可以看出,若給出一個新的值使之預測,它將表現的很差,這叫作過擬合。雖然能非常好地適應我們的訓練集,但是新輸入變量進行預測時,效果會表現的不好。

(2)分類問題中也存在這樣的問題:

我們可以用多項式來理解,x的次數越高,擬合的越好,但相應的預測能力就可能變差。

解決過擬合的方式:減少特征值的數量人為的保留一些重要的特征值

用特征選擇算法進行特征的選擇(PCA、層次分析法)

2.正則化保留所有的特征,但是減少參數

的大小。

2.代價函數(Cost Function)

上面的回歸問題中如果我們的模型是:

我們可以從之前的例子中看出來,正是由于高次項導致的過擬合的發生,所以如果我們能夠讓那些高次項的系數接近于0的話,我們就能夠很好的擬合數據集。

所以我們要做的就是在一定程度上減小這些參數 的值,這就是正則化的基本方法。我們決定要減少

的大小,我們要做的便是修改代價函數,在其中

設置一點懲罰。這樣做的話,我們在嘗試最小化代價時也需要將這個懲罰納入考慮中,并最終導致選擇較小一些的

修改后的代價函數:

通過這樣的代價函數選擇出的 3和 4 對預測結果的影響就比之前要小許多。

假如我們有非常多的特征,我們并不知道其中哪些特征我們要懲罰,我們將對所有的特征進行懲罰,并且讓代價函數最優化的軟件來選擇這些懲罰的程度。這樣的結果是得到了一個較為簡單的能防止過擬合問題的假設:

其中

又被稱為正則化參數(Regularization Parameter)。注:按照慣例我們對

不進行懲罰。經過正則化處理的模型與原模型的可能對比如下圖所示:

那為什么增加的一項

可以使 的值減小呢?

: 可以控制兩個不同目標之間的取舍。

目標①:去更好地擬合數據集(訓練集)

目標②:使參數大小變小,從而使假設函數變得更“簡單”。

兩者相互平衡,從而達到一種相互制約的關系,最終找到一個平衡點,從而更好地擬合訓練集并且具有良好的泛化能力。

因為如果我們令

的值很大的話,為了使Cost Function 盡可能的小,所有的 的值(不包括

)都會在一定程度上減小。如果

取值非常大,那么除了

之外的所有參數都趨近于0,模型成為一條直線。

3.正則化線性回歸

正則化線性回歸的代價函數為:

{

}

對上面的算法中 = 1,2,..., 時的更新式子進行調整可得:

可以看出,正則化線性回歸的梯度下降算法的變化在于,每次都在原有算法更新規則的

基礎上令 值減少了一個額外的值。

4.正則化的邏輯回歸模型

自己計算導數同樣對于邏輯回歸,我們也給代價函數增加一個正則化的表達式,得到代

價函數:

Python代碼實現:

import numpy as np

def costReg(theta, X, y, learningRate):

theta = np.matrix(theta)

X = np.matrix(X)

y = np.matrix(y)

first = np.multiply(-y, np.log(sigmoid(X*theta.T)))

second = np.multiply((1 - y), np.log(1 - sigmoid(X*theta.T)))

reg = (learningRate / (2 * len(X)) * np.sum(np.power(theta[:,1:theta.shape[1]],2)))

return np.sum(first - second) / (len(X)) + reg

注:這里的learningRate 是指正則化參數。

要最小化該代價函數,通過求導,得出梯度下降算法為:

5.關鍵函數Python代碼實現

1.正則化的邏輯回歸模型梯度下降法的代碼實現:

def gradientReg(theta, X, y, learningRate):

theta = np.matrix(theta)

X = np.matrix(X)

y = np.matrix(y)

parameters = int(theta.ravel().shape[1])

grad = np.zeros(parameters)

error = sigmoid(X * theta.T) - y

for i in range(parameters):

term = np.multiply(error, X[:,i])

if (i == 0):

grad[i] = np.sum(term) / len(X)

else:

grad[i] = (np.sum(term) / len(X)) + ((learningRate / len(X)) * theta[:,i])

return grad

5.如何更好地擬合數據去收集更多的數據

嘗試更少的特征值

嘗試更多的特征值

增加多項式

增大\減小正則化參數

總結

以上是生活随笔為你收集整理的逻辑回归python正则化 选择参数_吴恩达机器学习笔记(三)——正则化(Regularization)...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。