吳恩達機器學習複習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是屬於類的成員的哪一個
①選一類,然後把所有其他的放進單獨的第二類
②重複這樣做,在每個類運用二分邏輯回歸
③使用假設返回最高價值的預測
過擬合的問題
為了擬合訓練集而訓練過渡,所以難以泛化、擬合新的例子,也不能很好地預測新例子的價格
左一【欠擬合】 中間【最優】 最右【過擬合】
過擬合——數據很明顯的展示結構沒有被模型捕捉
過擬合或高偏差,是當假設的形式不能很好反映數據的趨勢時產生的,常常是由於函數過於簡單或使用了太多的特徵
其他極端的、過擬合或高方差的情況,是由於很好擬合現有數據的假設函數,並沒有很好的泛化特性能預測數據。這經常是由 會產生許多與數據無關的不必要的曲線和角度的、複雜的函數 產生的。
{如何處理過擬合現象?}
方法是同時運用線性和邏輯回歸
①減少特徵數目
-手動挑選需要保留的特徵
-模型選擇演算法
②正則化
-保持所有數據,但減少theta的參數值或magnitude(重要性)
-有很多參數時工作得很好,這對預測y有很好的作用
損失函數
我們有的假設函數過擬合現象時,可以減少我們函數里某些項的權重,用來減小消耗
比如我們希望讓相應的函數傾向於二次函數,那麼我們就要削減的影響
如果沒有實際擺脫這些特徵或改變我們假設的形式,我們可以修改我們的損失函數
我們已經添加了兩個額外的項在式子末尾,以抬高的消耗
現在為了讓損失函數更接近於0,我們將減少的值,讓它們接近於0
這將大大減少在我們損失函數里的值
現在有新的假設(由粉色線描繪的)看起來就像一個二次函數,
但它由於額外的小項能更好地擬合數據。
正則化所有的theta參數以一種統一的方式如下
λ是正則化參數,決定我們theta參數膨脹的代價有多少
使我們假設的輸出函數平滑可以減小過擬合!
如果λ選擇太大,將會使函數平滑太厲害然後造成欠擬合。
而如果λ太小,他就可能造成過擬合。
!!!正則化的線性回歸
梯度下降
給兩邊的線性回歸和邏輯斯蒂回歸添加正則化項
{線性回歸}
給你一個問題來判斷大小~
為啥呢?因為學習率比較小嗎,第一項不能太大了!
【正規方程式】
處理正則化使用的對於非迭代正規方程的替代方法。
添加正則化項,等式和原來一樣,處理我們在圓括弧里加了另一個項
我們應該有維度(n+1)*(n-1)
直覺上,這是相同的矩陣(儘管我們不包含X0),並用單獨一個實數λ乘上去。
所以這樣的正則化居然讓矩陣可逆了呢
{正則化邏輯回歸}
用我們擬合線性回歸類似的方法對邏輯回歸進行正則化→避免過擬合
↑最後的損失函數
↑最後的梯度下降
使用正則化的邏輯回歸
高等最優化