【機器學習】線性迴歸 Logistic迴歸 原理詳解 數學推導

什麼是迴歸?迴歸問題中涉及到哪些概念?

迴歸:是研究一組隨機變量y(因變量)和另一組隨機變量x(自變量)之間關係的統計分析方法。

迴歸誤差:y真實 = y預測 + ε誤差    
誤差的高斯分佈:未說明情況下,一般認爲案例所給的有限樣本中,對於每個樣本的 真實標記值y 與 其根據迴歸函數所得的預測值 之間的誤差: e(i) 是服從均值0,方差δ^2的高斯分佈(正態分佈)

似然函數 & 對數似然法
似然函數:樣本標記y,樣本數據x,未知的迴歸參數w。構造函數 L(w) ,要求對於整個樣本集的每個數據x,使得標記集y 出現的概率最大,可以令 L(w) =【所有x可能的取值爲條件時,對應得標記y出現的概率】的連乘, 求當L函數取得最大值時w爲何值
對數似然法: 即似然函數等式左右取自然對數,由於ln()不會改變原函數的單調性,而對於以求極值爲條件的問題,可以將原函數轉化爲原函數的對數函數,以簡化運算

最小二乘法:通過最小化“誤差的平方和”來尋找數據的最佳擬合函數。(在給定迴歸函數的情況下,使得x觀測值集的對應的y預測值集與y真實值集直接誤差的平方和最小)

正則化: 當求參數w時可以求得多組解的情況下,可通過算法的歸納偏好決定取哪組解,此時可引入正則化項。
廣義線性模型:
            原迴歸模型爲 y = wx + b,若單獨對因變量 y 添加一個【聯繫函數】的映射關係g(.)【單調可微函數】,也可進行模型學習。例如構建 【對數線性迴歸】模型 lny = wx + b 

梯度下降 & 梯度上升: 
            在學習算法過程中,往往通過構建xx似然函數J(θ)或其轉化函數JT(θ),求其最值的問題,一般的,
            求最大值時,用梯度上升法
            求最小值時,用梯度下降法
參數更新:
            (1)找到當前最合適的方向 =》偏導數值
            (2)朝着這個方向走一小步 =》學習率控制步長
            (3)按照方向和步長更新參數
凸優化理論:
            在凸優化中局部最優值必定是全局最優值
            求凹函數f最大值的問題  等同於  求凹函數-f最小值的問題

【梯度下降法、牛頓法、擬牛頓法、共軛梯度法】爲常見優化方法簡介:    
            梯度下降法:當目標函數是凸函數時(凹凸函數 =》凸函數),局部最值解 即是 全局最值解。

                        梯度下降幾種策略:
                                    ·批量梯度下降    容易得到最優解,每次考慮所有樣本,速度慢
                                    ·隨機梯度下降    速度快,但不一定每次都朝着收斂方向
                                    ·小批量梯度下降    最實用,每次更新選擇一小部分數據計算
            牛頓法:一種在實數域和複數域上近似求解方程的方法,使用函數f(x)的泰勒級數的前面幾項來尋找方程f(y)=0的根。優:收斂速度快
            擬牛頓法:由於牛頓法每次需求解Hessian矩陣的逆矩陣,它使用正定矩陣來近似Hessian矩陣的逆,簡化了運算的複雜度。
            共軛梯度法:利用一階導數信息,克服了梯度下降法收斂慢的缺點,避免了牛頓法需要存儲和計算Hesse矩陣並求逆的缺點

Linear Regression 線性迴歸:

        對自變量和因變量之間建立 線性關係,基本數學模型:

                y = w1x + w2x + ... + wix + b      【=》y預測 = Σθx(i)】    【1.1】

        由迴歸誤差 =》 ε誤差 = y真實 - y預測 =》

                ε(i) = y(i) - Σθx(i)    【1.2】

        有誤差的高斯分佈ε(i)~N(0,δ^2):

                p(ε(i)) = (√(2π)*δ)^(-1)exp(-(2δ^2)^-2)*ε(i)^2)    【1.3】

        【1.2】代入【1.3】有:

                p(ε(i)) = p[y(i) - Σθx(i)] =  

                        (√(2π)*δ)^(-1)exp(-(2δ^2)^-2)*ε[y(i) - Σθx(i)]^2)    【1.4】

        【1.4】中的 p[y(i) - Σθx(i)] 可寫爲條件概率形式:p(y(i)|x(i);θ)
        於是由 似然函數 有

                L(θ) = ∏[p(ε(i))] = ∏[p(y(i)|x(i);θ)] = ... 
        由對數似然法有

                ln(L(θ)) = ... = n*ln(√(2π)*δ)^(-1)) -  δ^(-2)*(1/2)*Σ[y(i) - θx(i)]^2        【1.5】


        【1.5】中,令 J(θ) = (1/2)*Σ[y(i) - θx(i)]^2 【1.6】,於是原需求改爲求當J取得最大值時θ的值
        所以有:

                J(θ) = (1/2)*Σ[θx(i) - y(i)]^2 = (1/2)*[(Xθ - y)^T]*(Xθ - y)    【1.7】 

           【1.7】經過矩陣運算 & 矩陣求導得:

                (əJ/əθ) = (1/2)*(2XtXθ - Xty - Xty)     【1.8】

        令【1.8】=0 得,θ = (XtX)^(-1)Xty
        於是學得的線性迴歸模型爲:    

                y預測 = Xt · (XtX)^(-1)Xty

 

Logistic Regression 邏輯迴歸

        LR 也稱 對數機率迴歸:  (對數log 機率odds =》logit)
        提出問題:如何使用迴歸學習的線性模型,來做分類任務?
        根據廣義線性模型的思想,找到一種聯繫函數【單調可微】,將線性迴歸模型的預測值 聯繫爲 分類任務下的真實標記y
        例如對一個二分類任務,令輸出標記y∈{0,1},若有原迴歸模型 z = wx + b,要將實值z轉換爲非0即1類型的值,首先想到“單位躍階函數”(即分段函數)
        使當實值z > 0時判爲1(正例),<0時判爲0(負例),但由於該函數的不連續性,不能作爲 聯繫函數,此時考慮找到一種近似(形似)該函數的替代函數=》Sigmoid函數
        其中,Sigmoid函數的重要代表 對數機率函數(logistic function,簡稱 對率函數)爲:   y = (1+eap(-x))^(-1)    
        將z=wx+b代入對率函數後,將wx+b提到等式一邊可得:

                ln(y/(1-y)) = wx + b        【2.1】

        ---》【以下是 周志華·機器學習 的推導, 對於【2.5】的推出存疑,】

        博主沒有推出來 - -! 於是放棄了這個推導思路,但是在此也貼一下推導過程,以供博友參考指正
        思考,若將y的值(非0即1)視爲樣本x 是否爲正例的概率(即 y = p(x->正例),若x是正例,則p(x->正例) = 1 = y;x是反例,則p(x->正例) = 0 = y) 

        =>  y = p(x->正例)  => y = p(y=1|x),而有 p(y=1|x) + p(y=0|x) = 1 (由於樣本x的類別非正即負,概率和爲1)
        => p(y=1|x) = e^z / (1+e^z),其中z=wx+b。p(y=0|x) = 1 / (1+e^z)    【2.2】
        此時通過  極大似然法·對數似然  來估計參數w、b (簡便起見,將w,b統一寫作θ),有 ln(L(θ)) = ln∏(p(y|x;θ) = Σ[ln(p(y|x;θ))]        【2.3】
        令  p(y=1|x;θ) = p1,則  p(y=0|x;Θ) = p0 = 1 - p1 
        p(y|x;θ) = y*p1 + (1-y)*p0 (若y=1,p = p1;若y=0,p = p0,條件概率的推導)     【2.4】
        【2.4】代入【2.3】有:ln(θ) = Σ[ln(y*p1 + (1-y)*p0)]    
        在代入【2.2】得到:

                ln(θ) = Σ(-yθtX + ln(1 + eap(θtX)))    【2.5】

        ---》【以下是 機器學習經典算法 的推導】        博主是按照這個思路推導出來的
        設目標預測函數爲:

                h(x) = g(θtX) = 1 / (1+exp(-θtX))        【2.6】


        在分類任務中,令 p1 = p(y=1|x;θ) = h(x) 【將h(x)函數值視爲樣本x是否爲正例的概率】
        同理, p0 = p(y=0|x;θ) = 1 - h(x)  【由於樣本非正即負,概率和爲1】
        整合p0、p1有:p(y|x;θ) = [h(x)^y] * {[1-h(x)]^(1-y)} 【對於這個條件概率,y=1時,p = p1;y=0時,p=p0】        【2.7】
        此時通過  極大似然法·對數似然 有:ln(L(θ)) = ln∏(p(y|x;θ))    【2.8】
        【2.7】代入【2.8】有:

                ln(L(θ)) = ln∏(p(y|x;θ))=  

                        ln∏([h(x)^y] * {[1-h(x)]^(1-y)}) =  Σ[y*lnh(x) + (1-y)ln(1-h(x))]        【2.9】

        因爲此時的需求爲 求當ln(L(θ))取得最大值時θ的值,應用 梯度上升求最大值
        令 J(θ) = (-1/n) * ln(L(θ)),於是原需求改爲求當J取得最小值時θ的值,應用 梯度下降法。
        【注意,梯度上升 & 梯度下降 方法在Logistic迴歸中它們的思想是相同的,可以任意使用其中之一】
                J(θ) = (-1/n) * Σ[y*lnh(x) + (1-y)ln(1-h(x))], 其中 h(x) = 1 / (1+exp(-θtX)) = g(θtX)
        由於求導目標爲θ,改寫爲:

                J(θ) = (-1/n) * Σ[y*lng(θtX) + (1-y)ln(1-g(θtX))]

        所以有 (對於θ向量中的某個參數θj求偏導) :

                (əJ/əθj) = ... = (-1/n) * Σ[(g(θtX) - y)*xj]        【2.10】

        由梯度下降思想&偏導數(數值)的定義可知:
        對於參數θj的更新: θj := 原參數值θj - 更新步長(學習率) * 梯度方向(偏導數值)

                =>  θj := θj - α * (əJ/əθj) = θj - α * (-1/n) * Σ[(g(θtX) - y)*xj]        【2.11】

        ---》二分類的 Logistic 迴歸 拓展到 多分類的 Softmax 時:(詳見 神經網絡算法·Softmax分類器)
        相對於Logistic 迴歸,只需根據 y 的多種取值,構建使得 p(y|x;θ) = 各個分類概率之和 = 1 的h(x)。

 

·本文參考了 周志華·機器學習、李航·統計學習方法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章