天天看點

邏輯回歸算法原理MATLAB,機器學習—邏輯回歸算法(MATLAB)

華電北風吹

天津大學認知計算與應用重點實驗室

最後修改日期:2015/8/23

統計學習三要素方法=模型+政策+算法,對應于邏輯回歸

模型=基于單極型函數(邏輯函數)的條件機率模型

政策=經驗損失對應的訓練樣本先驗機率最大化

算法=随機梯度上升法

邏輯回歸MATLAB代碼比較簡單,如下所示,循環對所有的樣本,進行梯度上升算法

function [w]=LogisticRegression(x,y,learningRate,maxEpoch)

% Logistic Regression

% x,y 一行為一個樣本,y取值{0,1}

% 随機梯度法

[m,n]=size(x);

x=[ones(m,1) x];

w=zeros(1,n+1);

for epoch=1:maxEpoch

for samlendex=1:m

w=w+learningRate*(y(samlendex)-1/(1+exp(-x(samlendex,:)*w')))*x(samlendex,:);

end

end

把兩個函數放在一個檔案夾下使用下面的測試代碼

clear;clc;

x=[3,3;4,3;1,1;];

y=[1,1,-1];

Pindex=find(y>0);

tIndex=1:length(y);

Nindex=setdiff(tIndex,Pindex);

plot(x(Pindex,1),x(Pindex,2),'*');

hold on;

plot(x(Nindex,1),x(Nindex,2),'p');

[w]=perceptionLearn(x,y,1,20);

xline=linspace(-2,5,20);

yline=-w(2)/w(3).*xline-w(1)/w(3);

plot(xline,yline,'r');

y=[1,1,0];

[w]=LogisticRegression(x,y,0.1,2000);

xline=linspace(-2,5,20);

yline=-w(2)/w(3).*xline-w(1)/w(3);

plot(xline,yline,'g');

legend('正樣本','負樣本','感覺機','邏輯回歸')

即可得到結果

邏輯回歸算法原理MATLAB,機器學習—邏輯回歸算法(MATLAB)

一般情況下,邏輯回歸結果要比感覺機結果好,因為這個在政策比較中就可以看出來。感覺機是政策是讓分錯的樣本與分類超平面距離越來越近,如果全部分類正确即停止。而邏輯回歸政策是對于訓練樣本在基于二項分布的假設下取樣機率最大。

對于邏輯回歸,我覺得可以這樣對比感覺機形象化的了解。感覺機是對于每一個分錯的樣本,根據距離損失函數,讓這個損失越來越小(不考慮w範數的情況下,把wx+b當作誤分類點到分類超片面的距離)。邏輯回歸是對所有的樣本點,但是一次隻考慮一個(随機梯度下降法),對正樣本和負樣本根據不同的機率函數(單極性函數和1-單極性函數),用随機梯度上升法優化w,讓這個機率更大。

對于分類超平面的位置與先驗機率的關系:換句話說就是分類超平面在哪兒的時候,機率最大。以二維平面為例,在不考慮w範數的情況下,我們也可以把wx+b當作誤分類點到分類超片面的距離,就會發現當分類正确的那些點都與分類超平面越遠,分類錯誤的點都與分類超平面越近的時候,先驗機率越大。

至于為什麼采用單極型函數,将會在後續的一篇關于廣義線性模型的博文推導。這個函數是推導出來的,而不是函數形狀符合要求就采用的

歡迎繼續關注。