机器学习算法(分类算法)—Logistic回归

一、Logistic回归的概述

    Logistic回归是一种简单的分类算法,提到“回归”,很多人可能觉得与分类没什么关系,Logistic回归通过对数据分类边界的拟合来实现分类。而“回归”也就意味着最佳拟合。要进行最佳拟合,则需要寻找到最佳的拟合参数,一些最优化方法就可以用于最佳回归系数的确定。

二、最优化方法确定最佳回归系数

    最优化方法有基于梯度的梯度下降法、梯度上升法,改进的随机梯度下降法等等。基于梯度的优化方法在求解问题时,本身对要求解的问题有要求:即问题本身必须是可导的。其次,基于梯度的方法会使得待优化问题陷入局部最优。此时,一些启发式优化方法可以很好的解决这样的问题,但是启发式算法的求解速度较慢,占用内存较大。

    对于确定回归系数这样的问题


不存在多峰,也就是说不存在除最优值之外的局部最优值。其次,这样的问题是可求导的,所以基于梯度的方法是可以用来求解回归系数的问题的。优化算法见optimal algorithm类别。

三、Sigmoid函数

    当分类边界的函数被表示出来后,可以使用一种被称为海维塞德阶跃函数(Heaviside step function)来处理,简称为单位阶跃函数。其中Sigmoid函数是其中使用较多的一种阶跃函数。Sigmoid函数如下图:

Sigmoid函数的公式为:


当z为0时,函数值为0.5;

四、实验(MATLAB程序)

   1、梯度上升法

  1. %%gradient method  
  2. function weights = gradient(x, y)  
  3.     alpha = 0.001;%Step  
  4.     maxCycle = 500;  
  5.     [m,n] = size(x);  
  6.     weights = ones(n,1);  
  7.     for i = 1 : maxCycle  
  8.         h = sigmoid(x * weights);  
  9.         error = y - h;  
  10.         weights = weights + alpha * x' * error;%注意点1  
  11.     end  
  12. end  

    2、Sigmoid

  1. %% sigmoid function  
  2. function out = sigmoid(x)  
  3.     out = 1./(1+exp(-x));  
  4. end  

    3、主程序

  1. %----start-----  
  2. data = load('testSet.txt');%导入数据  
  3. [m,n] = size(data);%行和列  
  4. o = ones(m,1);  
  5. dataX = data(:,1:2);  
  6. X = [o,dataX];  
  7. Y = data(:,3);  
  8.   
  9. %--experiments--  
  10. weights = gradient(X,Y);  
  11.   
  12. %% plot the pic  
  13. Ypic = X * weights;  
  14. x_1 = X(:,2);  
  15. x_2 = X(:,3);  
  16. hold on  
  17. for i = 1 : 100  
  18.     if Y(i,:) == 0  
  19.         plot(x_1(i,:),x_2(i,:),'.g');  
  20.     else  
  21.         plot(x_1(i,:),x_2(i,:),'.r');  
  22.     end  
  23. end  
  24. x = -3.0:0.1:3;  
  25. y = (-weights(1)-weights(2)*x)/weights(3);%注意点2  
  26. plot(x,y);  

    4、测试的数据以及最终的分类



五、注意点

    在程序的实现过程中有两个注意点,分别用注释标出,第一处在梯度上升法中的求权重weights的公式;第二处是主程序中的注释标出。

    1、先说说第一处:

    令,则。可知,假设有m个样本,且样本之间相互独立。则似然函数为
取对数。对其中一个样本而言求偏导:。要求极大似然估计,故要使用梯度上升法求最大值:

   2、再说说第二处:

    要画出拟合直线,横坐标为x_1,纵坐标为x_2,直线的方程为,求出x_1和x_2的对应关系即可。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值