標籤:

吳恩達機器學習第三周課後感

目錄

一、主要內容

二、個人感受

三、實際應用

正文

一、主要內容

這一周的內容主要涉及到了邏輯回歸、過擬合和正則化。通過邏輯回歸,讓分類問題可以利用到概率。也有通過正則化解決過擬合的問題。非常有趣。

1.Logistic Regression

《Classification and Representation》

Classification

Classification:分類,輸出不為continuous的模型,就屬於分類模型。

分類主要分為兩種,binary classification,即輸出兩個值,比如「正」和「負」;還有就是multiclass classification,即輸出多個值,但是離散的。在雙輸出的分類模型中,舉例為腫瘤判定,惡性腫瘤輸出為1,良性腫瘤輸出為0。如果簡單粗暴地用線性回歸來描述分類問題,表面上看起來通過一個門檻可以判定1和0,但是如果某個異常數據出現,會徹底打亂線性回歸的斜率,導致之前的門檻失效。反之使用也是不可取的。Logistic Regression(邏輯回歸)屬於分類模型。

Hypothesis Representation

Hypothesis Representation:假設表示,用假設的函數來表示邏輯回歸。

Sigmoid Function

Sigmoid Function:S型函數,與邏輯函數互為同義詞。

通過將普通的線性模型轉化成S型函數的方法,一個分類問題就可以被轉化成為continuous的概率問題。通過這種處理結論就會變得更加圓滑一些,不再是線性的簡單粗暴。

Decision Boundary

Decision Boundary:決策邊界,在假設函數中可以將回歸問題的兩個解正好分離開的函數。

在S型函數中,決定假設函數為1或為0的值為x軸上的z值。當我們有兩個除 x_0 以外的參數的時候,決策邊界可以將兩個不同的解分割在兩個區域,而此時假設函數的解正好為0.5。當然決策邊界不局限在線性函數,假設函數中可以存在2次冪的參數,在取得適當係數之後,決策邊界可以是一個圓形。

《Logistic Regression Model》

Cost Function

J(	heta)=frac{1}{m}sum^{m}_{i=1}	ext{Cost}(h_	heta(x^{(i)}),y^{(i)})

Cost(h_	heta (x), y)= egin{cases} -log(h_	heta(x)) & 	ext{if y = 1} \ -log(1-h_	heta(x)) & 	ext{if y = 0} end{cases}

如果使用線性回歸的損失函數,該函數會顯示出非凸性。

Non-Convex

相對於凸函數只有一個全局最小值,非凸函數有很多個local最小值。當y=1時,如果假設函數為0,演算法求解的時間將會是無限大。當y=0,如果假設函數為1,則時間為無限大。

Simplified Cost Function and Gradient Descent

	ext{Cost}(h_	heta(x),y)=-ylog(h_	heta(x))-(1-y)log(1-h_	heta(x))

由於兩個項的係數分別為-y和-(1-y),所以y為1或0的時候,都會將其中一個項減為0。梯度下降依舊是不斷更新每一個係數,而且使用的梯度下降函數與線性回歸所使用的相同。

Advanced Optimization

優化的目的就是為了找到可以獲得最小值的損失函數。梯度下降最常用的演算法之一,不過還有其他其中演算法也可以嘗試:BFGS, L-BFGS, Conjugate Gradient。這些演算法不需要手工設置alpha值,它們自己有一個叫做line switch algorithm的演算法,可以循環後獲得正確的alpha值。通常這些演算法都比梯度下降快。吳恩達自己也用了這些演算法有十多年了。缺點就是比梯度下降複雜,除非是數值分析的高手,否則不建議自己製作。當然很多庫都已經有了集成的指令。

《Multiclass Classification》

Multiclass Classification: One-vs-all

Multiclass Classification:多分類問題,相對於二分類只分為兩個答案,多分類會分為三類答案或更多。

y值輸出的答案不同於二分類的1和0,多分類中y的輸出可能是1,2,3甚至更多。獲得分類器的方法會更加麻煩,課程中的舉除了3輸出的例子。有3個輸出則需要分三步走,首先將第一類單獨提出,另外兩類組成一個非一類,將第一類分離出來。分離出第二類,第三類的方法是相同的,從而獲得三個分類器。當我們有輸入x的時候,需要分別跑這三個分類器,匯總答案,最大值為最終輸出。

2.Regularization

《Solving the Problem of Overfitting》

The Problem of Overfitting

Underfitting:欠擬合,假設函數與實際數據相差很大。

Bias:偏差,統計學概念,模型與實際值之間的差距。

Overfitting:過擬合,雖然假設函數與大量實際數據吻合,但模型無法做到預測。

Variance:方差,統計學概念,模型與期望值之間的距離。

當損失函數為0的時候,有可能會算出一個模型,但該模型可能只能吻合已知函數,算出的新的值不符合預期,這就是過擬合。當我們有非常多的特徵,但很小的數據集的時候,過擬合最容易發生。解決方法,要麼減少特徵,保留最重要的一些特徵,或者選擇其他的模型,然而所有特徵都重要的時候就很難辦了;要麼正則化,這種方法可以保留所有的特徵。

Cost Function

很好的一種防止過擬合的方法就是讓高次冪的特徵趨近於零。在房價的案例中,由於我們不知道哪些值有高次冪,所以我們首先要減少所有的參數,讓所有的特徵都變小。

Regularization

J(	heta)=frac{1}{2m}left[sum^{m}_{i=1}	ext{Cost}(h_	heta(x^{(i)}),y^{(i)})^2+lambdasum^{n}_{j=1}	heta^2_j
ight]

其中 lambdasum^{n}_{j=1}	heta^2_j 就是正則化函數, lambda 是正則參數,這個參數負責平衡前半部分的模型輸出正確的值,並且保證後半部分的參數會很小。當lambda值過大的時候,方程又會變得欠擬合;取值過小的時候會依舊過擬合。

Regularized Linear Regression

J(	heta)=frac{1}{2m}left[sum^{m}_{i=1}(h_	heta(x^{(i)}),y^{(i)})^2+lambdasum^{n}_{j=1}	heta^2_j
ight]

在梯度下降的時候,我們也需要添加一個項 frac{lambda}{m}	heta_j ,使參數達到正則化。不僅梯度下降可以求解,Normal Equation也可以用於求解,在全矩陣形式的算式里,類似本徵值的矩陣可用於正則化得數。當數據數量小於特徵數量的時候,演算法中的輸入矩陣部分不可逆。當lambda大於0,或者說算式被正則化之後,該部分則可逆。

Regularized Logistic Regression

與線性回歸類似,也是需要加上還有lambda的算式。由於假設函數與線性回歸不同,所以梯度下降會有不同。後半部分則是通過octave進行實際運算,在python的scikit-learn庫裡面,這些內容也都可以被實現,所以我應該會用python來玩一下。

二、個人感受

吳恩達在視頻里說:「如果你知道線性回歸、邏輯回歸、優化、以及正則化的話,你已經比矽谷很多的機器學習工程師都懂機器學習了,儘管他們通過機器學習掙到了很多錢,現在很成功。」我更傾向於認為他是在搞笑,並不是認真的。然而,他的後半句,我們可以通過前三周的知識應用到現實問題中,深深地擊中了我。有一句話,我非常喜歡,「腳踩西瓜皮,滑倒哪裡是哪裡」,如果可以將演算法快速投入到生產中,然後迭代,那應該是我最嚮往的工作狀態。

三、實際應用

2017年11月12日

邏輯回歸應該是在現實生活中最常用的演算法之一。在銀行、醫療領域,這個演算法簡單粗暴,人們應用的非常廣泛。比如在課程中對於癌症的判斷就是很好的例子。還有周志華西瓜書開頭對於好西瓜和差西瓜也是可以通過分類來進行挑選。利用機器學習挑西瓜,比用手拍的玄學,科學太多倍了。


推薦閱讀:

Patterns for Research in ML
基於不平衡樣本的推薦演算法研究
菜鳥學tensorflow.2
機器學習:用正規方程法求解線性回歸
【機器學習Machine Learning】資料大全

TAG:機器學習 |