计算机视觉
图像处理

机器学习(二)逻辑回归

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

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

(2)线性回归模型:

逻辑回归模型:

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

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

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

逻辑回归代价函数为:

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

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

因此:

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

(4)梯度下降法求解。

代价函数简化:

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

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

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

  1. close all;
  2. clear;
  3. clc;
  4. %生成测试数据
  5. mu = [2 3];%测试数据1
  6. SIGMA = [1 0; 0 2];
  7. r1 = mvnrnd(mu,SIGMA,100);
  8. plot(r1(:,1),r1(:,2),’.’);
  9. hold on;
  10. mu = [10 10];%测试数据2
  11. SIGMA = [ 1 0; 0 2];
  12. r2 = mvnrnd(mu,SIGMA,100);
  13. plot(r2(:,1),r2(:,2),’.’);
  14. data(:,2:3)=[r1;r2];
  15. data(:,1)=1;
  16. %训练数据标号
  17. flag=[ones(100,1);zeros(100,1)];
  18. [m,n]=size(data);
  19. w=zeros(n,1);
  20. %梯度下降法
  21. sigma=0.05;
  22. i=1;
  23. while i<10000
  24.    for j=1:n
  25.     %先计算激励函数值
  26.     pp=data*w;
  27.     pp=exp(-data*w);
  28.     gx=1./(1+exp(-data*w));
  29.     %计算偏导数值
  30.      r=-1/m*sum((flag-gx).*data(:,j));
  31.      w(j)=w(j)-sigma*r;
  32.    end
  33.    i=i+1;
  34. end
  35. %绘制分类结果
  36. figure(2);
  37. hold on;
  38. for i=1:m
  39.     if gx(i)>0.5
  40.         plot(data(i,2),data(i,3),’.b’);
  41.     else
  42.         plot(data(i,2),data(i,3),’.y’);
  43.     end
  44. end
  45. %绘制决策边界直线
  46. w(2)=w(2)/sqrt(w(2)*w(2)+w(3)*w(3));
  47. w(3)=w(3)/sqrt(w(2)*w(2)+w(3)*w(3));
  48. line([4,9],[(4*w(2)+w(1))/(-w(3)),(9*w(2)+w(1))/(-w(3))]);

 

  

原图                                                                          分类结果

转载注明来源:CV视觉网 » 机器学习(二)逻辑回归

分享到:更多 ()
扫描二维码,给作者 打赏
pay_weixinpay_weixin

请选择你看完该文章的感受:

0不错 0超赞 0无聊 0扯淡 0不解 0路过

评论 4

评论前必须登录!