天天看點

邏輯回歸算法原理MATLAB,邏輯回歸算法(MATLAB)

根據李航博士總結的統計學習三要素方法=模型+政策+算法,對應于邏輯回歸

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

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

算法=随機梯度上升法

邏輯回歸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)
邏輯回歸算法原理MATLAB,邏輯回歸算法(MATLAB)
邏輯回歸算法原理MATLAB,邏輯回歸算法(MATLAB)

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

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

歡迎繼續關注。

原文:http://blog.csdn.net/zhangzhengyi03539/article/details/46574803