什麼是迴歸?迴歸問題中涉及到哪些概念?
迴歸:是研究一組隨機變量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)。
·本文參考了 周志華·機器學習、李航·統計學習方法