机器学习(二)逻辑回归

来源:互联网 发布:网站域名如何注销备案 编辑:程序博客网 时间:2024/04/29 18:45

逻辑回归

原文地址http://blog.csdn.net/hjimce/article/details/45418933

作者:hjimce

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

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

(2)线性回归模型:


逻辑回归模型:


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


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

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


逻辑回归代价函数为:


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


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


因此:


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

(4)梯度下降法求解。

代价函数简化:


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

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


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

close all;clear;clc;%生成测试数据mu = [2 3];%测试数据1SIGMA = [1 0; 0 2];r1 = mvnrnd(mu,SIGMA,100);plot(r1(:,1),r1(:,2),'.');hold on;mu = [10 10];%测试数据2SIGMA = [ 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');    endend%绘制决策边界直线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                  原创文章,转载请保留这两行作者信息*************


0 0
原创粉丝点击