1. 程式人生 > >機器學習筆記(三):線性迴歸大解剖(原理部分)

機器學習筆記(三):線性迴歸大解剖(原理部分)

進入機器學習,線性迴歸自然就是一道開胃菜。雖說簡單,但對於入門來說還是有些難度的。程式碼部分見下一篇,程式碼對於程式設計師還是能能夠幫助理解那些公式的。

(本文用的一些課件來自唐宇迪的機器學習,大家可以取網易雲課堂看他的視訊,很棒) 1.線性迴歸的一些要點 先說我理解的線性迴歸是什麼意思吧,機器學習往小了說就是找規律,而線性迴歸就是找線性規律。舉個例子, 給你一組數(x,y),(1,2) (2,4) (3, 6)小學生都能找到其中的規律就是y = 2x , 這就是線性迴歸的目的 一開始就假設 y = θ x,通過對資料進行分析,建模,最終得到θ = 2。

再說說幾個重要名詞 先定義一個前提,現在要求我們從 【身高,長相】 預測 一個人【是否有女朋友】

1.資料  ,  顧名思義  就是已經有的資料 ,如【身高,長相】兩個特徵
2.目標 ,  預測 【是否有女朋友】 (標籤)
3.引數    這個就是我們要求的了,因為我們需要的是一個線性公式:
 θ1身高  + θ2長相 + θ0(誤差) =  是否有女朋友
其中  θ0 θ1 θ2 就是我們要求的引數

線性迴歸,就是在一堆資料點當中,找到一個平面能夠擬合(就是包含)這些資料點 紅色的就是資料點,面就是我們想要擬合出來的影象

偏置項就可以理解為 誤差 也就是中學函式中 y = kx + b 的那個 b

還有一個概念要知道,那就是

誤差

所謂 獨立 就是說 ε 誤差集合中的 {ε1,ε2,ε3,ε4} 相互之間不會有影響 同分布是說,他們雖然不會碰到,但是他們是在一條路上走的可以理解為平行時空,你在這,我也在這,但是我們隔了100年1個世紀。

高斯分佈:{ε1,ε2,ε3,ε4} 中的值可能打可能小,但是絕大多數情況下,這個浮動不會太大,極小情況下浮動會比較大,符合正常情況 在這裡插入圖片描述

線性迴歸引數

最開始講到了 θ1身高 + θ2長相 + θ0(誤差) = 是否有女朋友 其中,身高長相的資料是有的,我們需要因此推匯出這個人是不是有女朋友。要讓我們的這個公式能夠起作用,首先需要解決的就是這幾個引數θ2,θ1,θ0的求解,有了這幾個引數,往公式裡一代,就so easy了。 關鍵是怎麼求呢。請你跟我這樣做。

首先把 身高, 長相,等等的這些特徵 寫作 集合x = {長相,身高},然後把引數寫成集合θ。 就可以寫作 公式(1) ,始終記住,我們的任務是求 θ 目前已知的只有 誤差遵循 高斯分佈,高斯分佈的公式我們是能寫出來的,誤差我們也能用資料和引數表示,所以就能得到下面的推導過程:

在這裡插入圖片描述

當我們得到上式後,怎麼求θ呢,首先你要知道什麼是似然函式,什麼是最大似然估計

這倆貨我都是真的不好解釋,首先說似然函式吧,首先他不是個值,他是個函式,就拿最簡單的丟硬幣來說,假如你現在不知道丟硬幣的概率,然後你扔了2次,2次都是正面,這時候你就可以畫一個關於正面的概率 的似然函數了 正面概率為 0.5的概率是1/4 正面概率為1的概率為 1 。。。 把正面的概率(0.5,1)做x , y為(1/4,1)這玩意就是似然函式

而最大似然估計就是說,當x取值為多少時,能夠讓這個似然函式的y取最大值,很明顯概率不可能大於1,所以如上面說的丟硬幣 正面的概率的最大似然估計就是1.

我只是粗講,有需要的可以點進連線自己看看,這兩篇我覺得講的都不錯。 有一句話很重要:一個似然函式乘以一個正的常數之後仍然是似然函式

然後我們就可以列出似然函數了:再強調一下,我們的任務是求 θ , 而且是要求最能滿足 公式的θ, 也就是 最大似然估計 的 θ 在這裡插入圖片描述

如何得到最大似然估計呢:一般是下面幾步

1) 寫出似然函式;2) 對似然函式取對數,並整理 3) 求導數 ;4) 解似然方程

現在有了似然函式,下一步就是對似然函式兩邊加對數 在這裡插入圖片描述

整理一下得到:

log ( L(θ) ) =

在這裡插入圖片描述

然後對它求導,讓他 =0,再解方程就OK

在計算之前,我們要知道我們求的最大似然估計其實就是找一個 能夠讓似然函式最大的 θ 值,在看上面那個整理後的式子,左邊明顯是個常數,所以只要右邊越小似然函式就會越大 ,把左邊單獨拎出來,就是 在這裡插入圖片描述 這個函式J(θ ) 是超級重要的,因為讓似然函式最大,就是讓J(θ )最小,所以J(θ )可以作為整個優化過程的目標函式,即損失函式,這個後面會說。

接下來就是求導了。

在這裡插入圖片描述

這一步,我一直有些恍惚,第一個等號右邊是很好理解的,就是用hθ(x(i)) 表示Xθ 第二個等號就玄乎了,聽到一種說法是矩陣的平方等於矩陣的轉置乘自身,不過我一直沒看到這種官方說法,希望看到這裡,也有答案的官人,給我說一下。

因為這裡的函式不是一元的,是多元的,就不是求導數了,這裡叫偏導,殊途同歸 在這裡插入圖片描述

然後要讓偏導等於0,這樣就找到了最低點了 在這裡插入圖片描述 當然明眼人一眼就看出來了,X矩陣只有滿秩的情況下才有逆,什麼時候滿秩呢,就是有效樣本數一定要大於等於特徵數(不知這樣理解有沒有錯)。所以這也就決定了這種方法不是萬能的,也可以說除了線性迴歸這種特例基本不使用。那怎麼辦呢,這個時候就需要超級經典的一個方法來代替了。

梯度下降

推薦一篇我覺得很好的梯度下降文章: 點我

首先我們拿到我們的似然函式,然後讓它平均一下(除以引數個數)至於為什麼這麼做,我也不是很清楚。然後拿到我們的目標函式 在這裡插入圖片描述 接下來我們的任務就是,找到這個目標函式的最小值。 仔細看這個函式你會發現 這是個 θ集合做變數的函式,如何找到一個 θ 使J(θ)最小呢,現在自然不能像線性迴歸一樣直接偏倒等於0 就行了,而是對θ集合中的每一元素 θi 進行求梯度,然後使 θ 往梯度的下降方向不斷的接近,知道到達最低點。

而梯度下降這裡有三種方式: 在這裡插入圖片描述

在這裡插入圖片描述

上圖有個學習率還未提起,其實也就是個步長,真的推薦去推薦的梯度下降文章中好好看看。 在這裡插入圖片描述

邏輯迴歸

有了梯度下降,就可以說說邏輯迴歸了。 首先要明確:邏輯迴歸是經典的二分類演算法,是個分類演算法。 邏輯迴歸主要做的是找到一條分界線,線的那頭都是你的人,這頭都是我的人。這條分界線可以是非線性的。

然後說一下 logistic regression,周志華的機器學習diss了這個名字,認為取這麼個名字就是瞎搞,所以他堅持叫它對數機率迴歸。

邏輯迴歸的第一步需要先將 預測值和真實值聯絡起來,真實值的取值範圍如果是0-1, 那麼你設定的模型必定也只能是0-1的,這時候你就需要一個單調可微的函式使得 g (y) = WX

邏輯迴歸中就有一個非常適合做g() 的函式: 對數機率函式,它任意階可導。 在這裡插入圖片描述

他的影象為 在這裡插入圖片描述

因為形狀很S,所以這一類長的像S的圖形也叫做Sigmoid函式。Sigmoid函式包括對數機率函式。 它將一個任意大的輸入值Z轉化成一個為0-1之間的數。我們線上性迴歸中可以得到一個預測值,再將該值對映到Sigmoid 函式中這樣就完成了由值到概率的轉換,也就是分類任務。 同時如果你的值是3-4 該怎麼辦呢,完全是不影響的,因為你要把他當成對映成概率而不是值,0.5以下是小的那個數,以上是other,這就OK

一般 0 ,1並不是代表一個值,代表的是一個類別,比如 身高= 180 屌長=180 有女朋友 =1 這時候你找到引數使 k1180 + k2180 = 1 幾乎不可能,找到了也是不科學的,因為1其實就是個類別名稱,叫10000也行,叫1完全是計算方便。

sigmoid( k1180 + k2180 ) = 1 就科學的多,因為這樣不會因為類別的取值過分影響引數大小。

有了預測函式,我們就要用我們的資料作為輸入了,資料就是 引數 * 資料 在這裡插入圖片描述

預測函式並不進入優化的過程,但是卻可以作為一個判斷優化是否完美的依據。

下面開始邏輯迴歸:

我們可以假設:當y=1時,在引數為theta的情況下概率P = hθ (x)

為了保證概率相加=1,y=0時的概率就=1- hθ (x)在這裡插入圖片描述

稍微動一下小腦袋瓜整合以下: 在這裡插入圖片描述 還有一種方法是 y*hθ (x) + (1-y)*hθ (x) 異曲同工

在這裡插入圖片描述

得到了 P ,就可以寫出似然函數了,前兩步和線性迴歸一樣的。

在這裡插入圖片描述

因為似然函式需要L(theta)越大越好,即它是凸函式,是讓我們找最大值,不適合用梯度下降,這裡我們機制的對它取負,這樣就變成凹函數了,即讓我們求最小值。

在這裡插入圖片描述

接下來我們應該要做的是,先取一個隨機的 θ,然後對這個θ求梯度,然後更新,然後再求梯度,反反覆覆。每次都求梯度太過麻煩,我們先求出梯度的通用表示式:

在這裡插入圖片描述

這樣我們更新後,只要把引數和資料代入就能輕輕鬆鬆得到梯度了。

得到梯度後就是更新了 在這裡插入圖片描述 不要問我為什麼,你把梯度當成導數,把theta當成x,然後在紙上畫個 y = x^2 函式,接著隨便找個x點(如x=4,x=-4),對這一點求倒數,一個是8,一個是-8,你用x - 步長*導數,把步長設定成0.1 你試一下看看,x 是不是越來越接近最低點的橫座標。

這就是知識點!

如果是多分類,也是能用邏輯迴歸的,日後再說,簡單給張圖 在這裡插入圖片描述