邏輯迴歸和線性迴歸聯繫與區別
線性迴歸解決的是連續變量問題,那麼在分類任務中可以用線性迴歸嗎?例如判斷是良性腫瘤還是惡性腫瘤,判斷是垃圾郵件還是正常郵件,等等……
答案是也可以,但是效果不好,見下圖:
圖顯示了是否購買玩具和年齡之間的關係,可以用線性迴歸擬合成一條直線,將購買標註爲1,不購買標註爲0,擬合後取當0.5值爲閾值來劃分類別。
可以看到,在途中,年齡的區分點約爲19歲。
但當數據點不平衡時,很容易影響到閾值,見以下圖:
可以看到,0值樣本的年齡段往高年齡端偏移後,真實的閾值依然是19歲左右,但擬合出來的曲線的閾值往後邊偏移了。可以想想,負樣本越多,年齡大的人越多,偏移越嚴重。
邏輯斯諦分佈
介紹邏輯迴歸模型之前,首先看一個並不不常見的概率分佈,即邏輯斯諦分佈。
設X是連續隨機變量, X服從邏輯斯諦分佈是指X具有下列的分佈函數和密度函數:
曲線在中心附近增長較快,在兩端增長速度較慢。形狀參數γ的值越小,曲線在中心附近增長得越快。
邏輯迴歸原理
理想的替代函數應當預測分類爲0或1的概率,當爲1的概率大於0.5時,判斷爲1,當爲1的概率小於0.5時,判斷爲0。因概率的值域爲 [0,1] ,這樣的設定比線性迴歸合理很多。
常用的替代函數爲Sigmoid函數,即:
h(z)=1+e−z1
其中,z=θTx
我們可以看到,當z大於0時,函數大於0.5;當函數等於0時,函數等於0.5;函數小於0時,函數小於0.5。如果用函數表示目標分到某一類的概率,我們可以採用以下“單位階躍函數”來判斷數據的類別:
h(z)=⎩⎪⎨⎪⎧0,0.5,1,z<0z=0z>0
邏輯迴歸損失函數
P(y=1∣x;θ)=hθ(x)P(y=0∣x;θ)=1−hθ(x)
可以寫作一般公式,
P(y∣x;θ)=h(x)y(1−h(x))(1−y)
極大似然函數爲,L(θ)=i=1∏mhθ(x(i))y(i)(1−hθ(x(i))(1−y(i))
對數極大似然函數爲,l(θ)=logL(θ)=i=1∑my(i)loghθ(x(i))+(1−y(i))log(1−hθ(x(i)))
損失函數爲,
J(θ)=−m1l(θ)=−m1i=1∑my(i)hθ(x(i))+(1−y(i))(1−hθ(x(i)))損失函數表示了預測值和真實值之間的差異程度,預測值和真實值越接近,則損失函數越小。
爲什麼不直接用和線性迴歸一樣的平方損失函數?
回答:如果和線性迴歸一樣的平方損失函數,則損失函數的形式爲∑i=1m(y(i)−1+e−θTx1)2,此爲非凸函數,求解複雜,而且很容易求得局部最優解爲非全局最優解。
梯度下降
我們用梯度下降法求解
θ:=θ−αΔθJ(θ)=θ+mαΔθl(θ)
當g(z)=1+e−z1
g′(z)=g(z)(1−g(z))
證明:
因此: