第三周筆記:邏輯回歸及正則化
在這個演算法里,我們的假設函數長這樣:
簡化一下,把叫做Z,那麼原函數就變成了
圖示如下:
是不是感覺長得很像累計分布函數啊……(第二個圖是累計分布函數的)
嗯。反正差不多,所以高數的知識可以直接拿過來用了。
邏輯回歸演算法,計算目的是為了分類。按照圖中所示,當的時候,大於0.5,那麼假如你要分類,1為在某類,0為不在某類,那四捨五入就是1個1……。同理,z<0時,g(z)<0.5,四捨五入到0……(當然實際不是這麼做的,實際做法是用數學方法使z的絕對值超過一個界限,使得和1或者0很近。)
我們可以把g(z)=0.5,也就是z=0的時候,稱為決策邊界。假設y為結果,y的值是1或者0。
那麼,z=0,也就是=0的時候為邊界。時y=1。時y=0。分類就靠這個……
然後繼續,機器學習嘛,根據前兩周的經驗,肯定有那個J,代價函數。邏輯回歸演算法的代價函數如下:
(m是y總數,嫌麻煩的話,和第二周一樣,如果你把那個加和符號去掉,那麼這裡x和y就變成向量了也就是:。)
然後因為y只有0和1兩個取值,這裡就可以分兩種情況討論,讓y從函數中去掉:
y=0:
y=1:
然而我們發現,這樣拿出來的函數,因為y一會兒是1,一會兒是0,得到的圖像如下(左邊的)然而左邊的凹凸不平(非凸),不方便梯度下降,我們想要的是右邊那種滑溜溜(凸)的圖像。:
所以我們假設有個函數cost,原函數J變成了
反正我們要的是符合決策邊界的條件就可以了,反正都把結果四捨五入成1或者0了,也沒必要非得是某個函數對吧?
所以它是什麼函數無所謂。只要(它的函數處理了x以後,得到的y)符合決策邊界的條件即可。而現在我們希望得到一個滑溜溜的凸函數。那麼我們就假設(注意,這是假設出來的,符合條件的函數之一,沒說非得這樣。然而這是已有的函數中最好的。):
y=1的時候,
y=0的時候,
它們的圖像如下:
符合條件。那麼這時候還有一個問題,大家都很懶對吧,懶得分情況討論,那麼如何做呢?
你看,由於y只有1和0兩個值,所以我們就直接把兩種情況的cost函數相加,然後分別乘以y和y-1即可:
看,是不是很方便呢?
於是原來的那個代價函數J就變成了:
然後照舊,我們目的是拿x和y訓練樣本得到嘛!所以對這玩意求導,然後取個α,然後不斷重複梯度下降……以得到,就是下面這個玩意:
(repeat:)
這坨玩意里,我們需要計算,直接照搬之前筆記里的,即可。只不過這裡的
於是我們最終得到的
(repeat:)
邏輯回歸函數就是這樣了。
然後是擬合問題,下面是3種情況:
第一種是欠擬合,通常是因為特徵量選少了。第二種是我們想要的,第三個是過擬合,通常是因為特徵量選多了。
欠擬合的解決方法是增加特徵量。
過擬合的解決方法是減少特徵量或者正則化。
比如我們的邏輯回歸函數,不選個自定義的函數,就用我們那個類似泰勒展開式的函數來做的畫,這貨長得凹凸不平的
,一點都不光滑。那麼,按照這貨擬合回來的函數,十有八九也是過擬合了。於是我們就會得到一個類似這樣的決策邊界(藍色線)顯然,這條決策邊界很……不實用。我們想要的,是一根滑溜溜的凸函數,但是我們又不能確定哪些特徵量該去掉,所以我們就選擇正則化的方式解決過擬合。
正則化的方法,就是給代價函數後面加個「懲罰項」……來降低它對數據的擬合能力。
於是我們的
就變成了:(這裡n表示特徵量的總數,意思就是讓所有的n個正義的為了解決過擬合問題,大喊一聲「合體!」然後一起來懲罰那個過度擬合了的函數……是正規化參數,決定了你懲罰得有多狠。你要懲罰狠點,你就把提高一點,過高會變得欠擬合,過小無法解決過擬合。)
那麼我們的就順利變成了:
~→
。
注意,當的時候,由於=1,所以這一項不會欠擬合也不會過擬合,所以不懲罰它。
然後,如果你用的不是線性回歸,而是正規方程的話,同理,給
加個懲罰項就好了。這裡加的懲罰項為,是一個n+1階的單位矩陣把第一項變成0(因為第一項不懲罰),我們把寫作varsigma,代碼差不多就是下面這個:varsigma =ones(n+1,n+1); #沒有ones方法的自己寫個循環給列表賦值,非常簡單。nvarsigma [0,0]=0 #python,c,php等編程的話,等這裡是0,0nvarsigma [1,1]=0 #matlab等這裡是1,1,因為一個從0開始計數,一個從1開始計數。真是……就不能統一一下么,老因為這個引起一群嘴強王者的唇戰。n寫出來差不多就是這樣一個矩陣:n[n0,0,0,0,0,0,0,0,...,0,0n0,1,0,0,0,0,0,0,...,0,0n0,0,1,0,0,0,0,0,...,0,0n0,0,0,1,0,0,0,0,...,0,0n0,0,0,0,1,0,0,0,...,0,0n0,0,0,0,0,1,0,0,...,0,0n0,0,0,0,0,0,1,0,...,0,0n0,0,0,0,0,0,0,1,...,0,0n. .n. .n. .n0,0,0,0,0,0,0,0,...,0,1n]n
得到的正規化後的公式為
第三周筆記結束。
推薦閱讀:
※如果用因果解構世界,是否無所謂選擇了?
※這是我第一次主持
※專訪創勢資本 · 湯旭東:投了10年大數據,我的邏輯還是看人
※學了辯證法 馬哲毛概 現在看什麼都雙重思想 求怎麼跳出這個坑?
※直覺主義邏輯