吳恩達機器學習複習3:分類、假設的表示方法、決策邊界、損失函數、簡化的損失函數和梯度下降、梯度下降、高等優化、多級分類

  • 2022 年 10 月 10 日
  • 筆記

【分類】

 

 

 ①兩類或二分類問題:輸出值為0或1

②多分類問題:比如y可能有4個值,0、1、2、3

 

 有關腫瘤的分類問題

 

 如果使用線性回歸處理分類問題?

 

 

 

 為了嘗試分類,方法是使用線性回歸併且把大於0.5的映射為1,小於0.5的映射為0

然而這種方法並不能正常工作,因為分類不是一個線性函數

【假設的表示方法】

 Sigmoid函數又叫Logistic函數

為了解決這個問題,我們將改變假設的形式以滿足

 

 從而實現把放進邏輯斯蒂函數

 

 

 

 對假設輸出的解釋

 

 概率上P(y=0|x;θ)+P(y=1|x;θ)=1

 

【決策邊界】

邏輯回歸

 

 決策邊界

 

 

 非線性決策邊界

 

 總結

 

 【損失函數】

 

 

 邏輯回歸中,最小化損失函數這樣子是有用的。但結果是,如果使用這個特殊的損失函數,將會有一個非凸優化函數的參數數據。

它正式的術語是非凸優化函數。

你應該能分辨,如果你在這種函數上使用梯度下降,將不能保證這會擬合到全局最小值。

然而相比之下,我們應該做的是有一個凸的損失函數的θ值,看起來像下面這樣

 

 

所以如果θ可以得到保證,它就會收斂到全局最優解。

畫一個J和h的對比圖

 

 注意到以這種方式寫函數功能可以保證J對於邏輯回歸是凸的

【簡化的損失函數和梯度下降】

 邏輯回歸的代價函數如下

 

 梯度下降

 

把我們的損失函數的兩種情況壓縮至一種情況

 

 我們可以像下面一樣寫整個損失函數

 

 向量化的執行像下面這樣

 

 【梯度下降】

 記住梯度下降的一般形式如下

 

 用微積分計算出導數部分得到

 

 這演算法和我們在前面的線性回歸里用到的是一樣的,我們仍然必須同時更新theta里的所有值

執行向量化就像下面這個樣子

 

 【高等優化】

優化演算法

 

 

 例子

 

 共軛梯度法(Conjugate Gradient)(介於最速下降法與牛頓法之間的一個方法),BFGS法(BFGS method)(一種擬牛頓法,用BFGS矩陣作為擬牛頓法中的對稱正定迭代矩陣的方法),和L-BFGS(由牛頓法發展而來,為了提高計算效率而提出的近似計算方法)是用於最小化theta的更複雜、更快的方法。

建議你自己不要寫更複雜的演算法(除非你是數值計算方面的專家!),而是使用現有的庫,因為它們已經被測試和優化得很好了。

function [jVal, gradient] = costFunction(theta)
  jVal = [...code to compute J(theta)...];
  gradient = [...code to compute derivative of J(theta)...];
end
options = optimset('GradObj', 'on', 'MaxIter', 100);
initialTheta = zeros(2,1);
   [optTheta, functionVal, exitFlag] = fminunc(@costFunction, initialTheta, options);

把我們的損失函數放進fminunc(),我們最初的向量和theta值以及選擇我們之前創建的目標

【多級分類】

 

 

 

 y的定義不僅僅在{0,1},我們將其定義延伸到{0,1……n}

我們將把我們的問題分成n+1(因為索引從0開始)的二分零問題

我們預測的概率是 y是屬於類的成員的哪一個

①選一類,然後把所有其他的放進單獨的第二類

②重複這樣做,在每個類運用二分邏輯回歸

③使用假設返回最高價值的預測

 

過擬合的問題

 

 為了擬合訓練集而訓練過渡,所以難以泛化、擬合新的例子,也不能很好地預測新例子的價格

 

 左一【欠擬合】     中間【最優】      最右【過擬合】

What is Underfitting? | IBM Overfitting and underfitting

 

過擬合——數據很明顯的展示結構沒有被模型捕捉

過擬合或高偏差,是當假設的形式不能很好反映數據的趨勢時產生的,常常是由於函數過於簡單或使用了太多的特徵

其他極端的、過擬合或高方差的情況,是由於很好擬合現有數據的假設函數,並沒有很好的泛化特性能預測數據。這經常是由  會產生許多與數據無關的不必要的曲線和角度的、複雜的函數  產生的。

{如何處理過擬合現象?}

方法是同時運用線性和邏輯回歸

 

 ①減少特徵數目

-手動挑選需要保留的特徵

-模型選擇演算法

②正則化

-保持所有數據,但減少theta的參數值或magnitude(重要性)

-有很多參數時工作得很好,這對預測y有很好的作用

損失函數

我們有的假設函數過擬合現象時,可以減少我們函數里某些項的權重,用來減小消耗

比如我們希望讓相應的函數傾向於二次函數,那麼我們就要削減的影響

如果沒有實際擺脫這些特徵或改變我們假設的形式,我們可以修改我們的損失函數

 

 我們已經添加了兩個額外的項在式子末尾,以抬高的消耗

 

現在為了讓損失函數更接近於0,我們將減少的值,讓它們接近於0

這將大大減少在我們損失函數里的值

現在有新的假設(由粉色線描繪的)看起來就像一個二次函數,

 

 

但它由於額外的小項能更好地擬合數據。

正則化所有的theta參數以一種統一的方式如下

 

 λ是正則化參數,決定我們theta參數膨脹的代價有多少

使我們假設的輸出函數平滑可以減小過擬合!

如果λ選擇太大,將會使函數平滑太厲害然後造成欠擬合。

而如果λ太小,他就可能造成過擬合。

 

 !!!正則化的線性回歸

 

 梯度下降

 

 給兩邊的線性回歸和邏輯斯蒂回歸添加正則化項

{線性回歸}

 

 給你一個問題來判斷大小~

 

 為啥呢?因為學習率比較小嗎,第一項不能太大了!

【正規方程式】

處理正則化使用的對於非迭代正規方程的替代方法。

添加正則化項,等式和原來一樣,處理我們在圓括弧里加了另一個項

 

 我們應該有維度(n+1)*(n-1)

直覺上,這是相同的矩陣(儘管我們不包含X0),並用單獨一個實數λ乘上去。

 

 

 

 所以這樣的正則化居然讓矩陣可逆了呢

{正則化邏輯回歸}

 

 用我們擬合線性回歸類似的方法對邏輯回歸進行正則化→避免過擬合

 

 ↑最後的損失函數

 

 ↑最後的梯度下降

 

 使用正則化的邏輯回歸

 

 

 高等最優化