您的位置:首页 > 其它

机器学习(二)逻辑回归

2015-05-01 13:30 225 查看
逻辑回归

原文地址/article/7649357.html

作者:hjimce

逻辑回归于线性回归的区别:

(1)线性回归的函数拟合,用于数值预测,逻辑回归是二分类算法,用于分类

(2)线性回归模型:



逻辑回归模型:



也就是说逻辑回归其实是在线性回归的基础上,加了一个激励函数映射。因为逻辑回归是二分类算法,因此对于训练数据,其只有两种取值1、0,代表两个分类,用于预测分类的时候,输入值大于0.5的,则把它归为1类,否者归为0类。因此对于训练数据需要满足一下概率公式:



我们的训练过程,就是要训练参数θ,使得以上的两个概率尽量为1

(3)线性回归常用代价函数定义为:



逻辑回归代价函数为:



其实上式可以分开来写,对于类1,总代价函数为::



对于类0,总代价函数为:



因此:



我们的目的便是要使得代价函数J(θ)的数值最小,使之尽量的趋近于0。

(4)梯度下降法求解。

代价函数简化:



OK,公式化简完毕之后,接着就要对其求偏导数了:



求导完毕,接着就是直接使用梯度下降法的公式:



接着就写一写matlab代码,训练一下,只有自己写过了代码,才能真正熟悉这个算法:

close all;
clear;
clc;
%生成测试数据
mu = [2 3];%测试数据1
SIGMA = [1 0; 0 2];
r1 = mvnrnd(mu,SIGMA,100);
plot(r1(:,1),r1(:,2),'.');
hold on;
mu = [10 10];%测试数据2
SIGMA = [ 1 0; 0 2];
r2 = mvnrnd(mu,SIGMA,100);
plot(r2(:,1),r2(:,2),'.');
data(:,2:3)=[r1;r2];
data(:,1)=1;

%训练数据标号
flag=[ones(100,1);zeros(100,1)];
[m,n]=size(data);
w=zeros(n,1);
%梯度下降法
sigma=0.05;
i=1;
while i<10000
for j=1:n
%先计算激励函数值
pp=data*w;
pp=exp(-data*w);
gx=1./(1+exp(-data*w));
%计算偏导数值
r=-1/m*sum((flag-gx).*data(:,j));
w(j)=w(j)-sigma*r;
end
i=i+1;
end
%绘制分类结果
figure(2);
hold on;
for i=1:m
if gx(i)>0.5
plot(data(i,2),data(i,3),'.b');
else
plot(data(i,2),data(i,3),'.y');
end
end
%绘制决策边界直线
w(2)=w(2)/sqrt(w(2)*w(2)+w(3)*w(3));
w(3)=w(3)/sqrt(w(2)*w(2)+w(3)*w(3));
line([4,9],[(4*w(2)+w(1))/(-w(3)),(9*w(2)+w(1))/(-w(3))]);






原图 分类结果

************************作者:hjimce 联系qq:1393852684更多资源请关注我的博客:http://blog.csdn.net/hjimce
原创文章,转载请保留这两行作者信息*************

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: