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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

吴恩达机器学习(第六章)——正则化

發布時間:2025/3/21 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 吴恩达机器学习(第六章)——正则化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

第六章-正則化

文章目錄

  • 第六章-正則化
      • 過擬合問題
      • 代價函數
      • 線性回歸的正則化
      • Logistic回歸的正則化

過擬合問題

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

下圖是一個回歸問題的例子:

第一個模型是一個線性模型,不能很好地適應我們的訓練集。這是欠擬合(underfitting),算法具有高偏差(high bias)
第二個模型是一個二次方模型,這個擬合效果很好。
第三個模型是一個四次方模型,過于強調擬合原始數據,若給出一個新的值使之預測,它將表現的很差。這就是過擬合(overfitting),算法具有高方差(high variance)

概括的說,過度擬合問題將會在變量過多的時候出現,這時訓練出的假設能很好地擬合訓練集,但它不能很好地泛化在新的樣本中。泛化(generalize) 是指一個假設模型應用到新樣本的能力。

類似的說法同樣可以應用到邏輯回歸中:

第一個模型欠擬合,第二個模型很適合,第三個模型過擬合。就以多項式理解,xxx 的次數越高,擬合的越好,但相應的預測的能力就可能變差。

如果我們有過多的變量,而只有非常少的訓練數據,就會出現過度擬合的問題。有兩個方法來解決問題。

  • 減少選取變量的數量
    可以通過人工檢查變量清單選擇應該保留的變量,也可以使用模型選擇算法自動的選擇應該保留的變量
  • 正則化
    保留所有的特征變量,但是需要減少量級或參數 θj\theta_{ j }θj? 的大小。
    正則化方法非常有效,當我們有很多特征變量時,其中每一個變量都能對預測的 yyy 值產生一點影響。
  • 代價函數

    上面的回歸問題中我們的模型是:hθ(x)=θ0+θ1x1+θ2x22+θ3x33+θ4x44{h_\theta}\left( x \right)={\theta_{0}}+{\theta_{1}}{x_{1}}+{\theta_{2}}{x_{2}^2}+{\theta_{3}}{x_{3}^3}+{\theta_{4}}{x_{4}^4}hθ?(x)=θ0?+θ1?x1?+θ2?x22?+θ3?x33?+θ4?x44?

    因為我們用階數過高的多項式去擬合數據會得到比較扭曲的線,雖然更好的擬合了數據,但出現了過擬合問題。正是那些高次項導致了過擬合的產生,如果我們能讓這些高次項的系數接近于0的話,數據就能很好的擬合了。所以我們要做的就是在一定程度上減小這些參數 θ\thetaθ 的值,這就是正則化的基本方法。

    針對模型,我們決定要減少θ3{\theta_{3}}θ3?θ4{\theta_{4}}θ4?的大小,我們要做的便是修改代價函數,在其中θ3{\theta_{3}}θ3?θ4{\theta_{4}}θ4? 設置一點懲罰。這樣做的話,我們在嘗試最小化代價時也需要將這個懲罰納入考慮中,并最終導致選擇較小一些的θ3{\theta_{3}}θ3?θ4{\theta_{4}}θ4?

    修改后的代價函數如下:min?θ 12m[∑i=1m(hθ(x(i))?y(i))2+1000θ32+10000θ42]\underset{\theta }{\mathop{\min }}\,\frac{1}{2m}[\sum\limits_{i=1}^{m}{{{\left( {{h}_{\theta }}\left( {{x}^{(i)}} \right)-{{y}^{(i)}} \right)}^{2}}+1000\theta _{3}^{2}+10000\theta _{4}^{2}]}θmin?2m1?[i=1m?(hθ?(x(i))?y(i))2+1000θ32?+10000θ42?]

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

    假如我們有非常多的特征,我們并不知道其中哪些特征我們要懲罰,我們將對所有的特征進行懲罰,并且讓代價函數最優化的軟件來選擇這些懲罰的程度。這樣的結果是得到了一個較為簡單的能防止過擬合問題的假設:J(θ)=12m[∑i=1m(hθ(x(i))?y(i))2+λ∑j=1nθj2]J\left( \theta \right)=\frac{1}{2m}[\sum\limits_{i=1}^{m}{{{({h_\theta}({{x}^{(i)}})-{{y}^{(i)}})}^{2}}+\lambda \sum\limits_{j=1}^{n}{\theta_{j}^{2}}]}J(θ)=2m1?[i=1m?(hθ?(x(i))?y(i))2+λj=1n?θj2?]

    其中 λ\lambdaλ 又稱為正則化參數(Regularization Parameter)。 根據慣例,我們不對θ0{\theta_{0}}θ0? 進行懲罰。

    引入一項λ∑j=1nθj2\lambda \sum\limits_{j=1}^{n}{\theta_j^{2}}λj=1n?θj2? 后,為了讓代價函數 J(θ)J\left( \theta \right)J(θ) 變小,那么 θj\theta_{j}θj? 的值也要減小才行。

    經過正則化處理的模型與原模型的可能對比如下圖所示:

    如果選擇的正則化參數 λ\lambdaλ 過大,則會把所有的參數都最小化了,導致模型變成 hθ(x)=θ0{h_\theta}\left( x \right)={\theta_{0}}hθ?(x)=θ0?,也就是上圖中紅色直線所示的情況,造成欠擬合。

    如果選擇的正則化參數 λ\lambdaλ 過小,則不能使得參數 θj\theta_{j}θj? 大幅變小,代價函數變小的程度太弱,不能有效解決過擬合的問題。

    所以對于正則化,我們要取一個合理的 λ\lambdaλ 的值,這樣才能更好的應用正則化。

    回顧一下代價函數,為了使用正則化,讓我們把這些概念應用到到線性回歸和邏輯回歸中去,那么我們就可以讓他們避免過度擬合了。

    線性回歸的正則化

    對于線性回歸的求解,我們之前推導了兩種學習算法:一種基于梯度下降,一種基于正規方程。

    正則化線性回歸的代價函數為:J(θ)=12m∑i=1m[((hθ(x(i))?y(i))2+λ∑j=1nθj2)]J\left( \theta \right)=\frac{1}{2m}\sum\limits_{i=1}^{m}{[({{({h_\theta}({{x}^{(i)}})-{{y}^{(i)}})}^{2}}+\lambda \sum\limits_{j=1}^{n}{\theta _{j}^{2}})]}J(θ)=2m1?i=1m?[((hθ?(x(i))?y(i))2+λj=1n?θj2?)]

    如果我們要使用梯度下降法令這個代價函數最小化,因為我們未對 θ0\theta_0θ0? 進行正則化,所以梯度下降算法將分兩種情形:

    RepeatRepeatRepeat untiluntiluntil convergenceconvergenceconvergence{

    ? θ0:=θ0?a1m∑i=1m((hθ(x(i))?y(i))x0(i)){\theta_0}:={\theta_0}-a\frac{1}{m}\sum\limits_{i=1}^{m}{(({h_\theta}({{x}^{(i)}})-{{y}^{(i)}})x_{0}^{(i)}})θ0?:=θ0??am1?i=1m?((hθ?(x(i))?y(i))x0(i)?)

    ? θj:=θj?a[1m∑i=1m((hθ(x(i))?y(i))xj(i)+λmθj]{\theta_j}:={\theta_j}-a[\frac{1}{m}\sum\limits_{i=1}^{m}{(({h_\theta}({{x}^{(i)}})-{{y}^{(i)}})x_{j}^{\left( i \right)}}+\frac{\lambda }{m}{\theta_j}]θj?:=θj??a[m1?i=1m?((hθ?(x(i))?y(i))xj(i)?+mλ?θj?]

    ? forforfor j=1,2,...nj=1,2,...nj=1,2,...n

    ? }

    對上面的算法中 j=1,2,...,nj=1,2,...,nj=1,2,...,n 時的更新式子進行調整可得:θj:=θj(1?aλm)?a1m∑i=1m(hθ(x(i))?y(i))xj(i){\theta_j}:={\theta_j}(1-a\frac{\lambda }{m})-a\frac{1}{m}\sum\limits_{i=1}^{m}{({h_\theta}({{x}^{(i)}})-{{y}^{(i)}})x_{j}^{\left( i \right)}}θj?:=θj?(1?amλ?)?am1?i=1m?(hθ?(x(i))?y(i))xj(i)?
    可以看出,正則化線性回歸的梯度下降算法的變化在于,每次都在原有算法更新規則的基礎上令 θ\thetaθ 值減少了一個額外的值。

    我們同樣也可以利用正規方程來求解正則化線性回歸模型

    修改之后的正規方程法:

    增加的矩陣是個 (n+1)×(n+1)(n+1)×(n+1)(n+1)×(n+1) 維的矩陣,對角線上除了第一個元素為0其他都為1。


    如果現在樣本總數 mmm 小于等于特征數量 nnn,那么 (XTX)?1{{\left( {{X}^{T}}X \right)}^{-1}}(XTX)?1 矩陣是個奇異矩陣,是不可逆的。

    而在正則化中已經考慮到了這個問題。具體來說,只要正則化參數 λ\lambdaλ 是嚴格大于 0 的,我們就可以確信“X的轉置乘以X 加上λ\lambdaλ 乘以這個增加的矩陣”是可逆的。

    Logistic回歸的正則化


    我們給代價函數增加一個正則化的表達式,得到正則化的代價函數:
    J(θ)=1m∑i=1m[?y(i)log?(hθ(x(i)))?(1?y(i))log?(1?hθ(x(i)))]+λ2m∑j=1nθj2J\left( \theta \right)=\frac{1}{m}\sum\limits_{i=1}^{m}{[-{{y}^{(i)}}\log \left( {h_\theta}\left( {{x}^{(i)}} \right) \right)-\left( 1-{{y}^{(i)}} \right)\log \left( 1-{h_\theta}\left( {{x}^{(i)}} \right) \right)]}+\frac{\lambda }{2m}\sum\limits_{j=1}^{n}{\theta _{j}^{2}}J(θ)=m1?i=1m?[?y(i)log(hθ?(x(i)))?(1?y(i))log(1?hθ?(x(i)))]+2mλ?j=1n?θj2?

    產生的效果是,即使你擬合階數很高,且參數很多,只要添加了這個正則化項,保持參數較小,你依然可以得到一條合理劃分正負樣本的邊界。即使你有很多特征,正則化也能幫你避免過擬合的現象。

    Python代碼:

    import numpy as npdef 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

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

    RepeatRepeatRepeat untiluntiluntil convergenceconvergenceconvergence{

    ? θ0:=θ0?a1m∑i=1m((hθ(x(i))?y(i))x0(i)){\theta_0}:={\theta_0}-a\frac{1}{m}\sum\limits_{i=1}^{m}{(({h_\theta}({{x}^{(i)}})-{{y}^{(i)}})x_{0}^{(i)}})θ0?:=θ0??am1?i=1m?((hθ?(x(i))?y(i))x0(i)?)

    ? θj:=θj?a[1m∑i=1m(hθ(x(i))?y(i))xj(i)+λmθj]{\theta_j}:={\theta_j}-a[\frac{1}{m}\sum\limits_{i=1}^{m}{({h_\theta}({{x}^{(i)}})-{{y}^{(i)}})x_{j}^{\left( i \right)}}+\frac{\lambda }{m}{\theta_j}]θj?:=θj??a[m1?i=1m?(hθ?(x(i))?y(i))xj(i)?+mλ?θj?]

    ? forforfor j=1,2,...nj=1,2,...nj=1,2,...n

    ? }

    這就是正則化邏輯回歸的梯度下降算法,看上去同線性回歸一樣,但是記住它的假設模型 hθ(x)=g(θTX){h_\theta}\left( x \right)=g\left( {\theta^T}X \right)hθ?(x)=g(θTX),所以與線性回歸是不同的。

    接下來的課程中,我們將學習一個非常強大的非線性分類器。無論是線性回歸問題,還是邏輯回歸問題,我們都可以構造多項式來解決。實際上,我們還有更強大的非線性分類器,可以用來解決多項式回歸的問題。我們接下來將學習更多更為強大的算法,來解決各種不同的問題。

    總結

    以上是生活随笔為你收集整理的吴恩达机器学习(第六章)——正则化的全部內容,希望文章能夠幫你解決所遇到的問題。

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