Logistic回归

这是我所介绍的第一个最优化算法,所谓最优化问题就好比:如何在最短的时间内从一个地方到另一个地方,如果选择汽车的改装部件使汽车达到最佳的性能等,可见最优化问题在生活中非常常见,并且更适合用精确的计算法来判断采用何种方式。


什么是回归?

假设现在有一些数据点,我们用一条直线对这些点进行拟合(该线成为最佳拟合直线),这个拟合的过程就成为回归。


Logistic回归思想?

根据现有的数据对分类边界建立回归公式,以此进行分类。这是一种二值型输出分类器,也是一种线性分类器。


基于Logistic回归和Sigmoid函数的分类

优点:计算代价不高,易于理解和实现

缺点:容易欠拟合,分类精度可能不高

我们想要的结果是,能接受所有的输入然后预测出类型,比如在两个类的情况下,我们输出0和1,这种函数叫做“单位跃阶函数”,然而跃阶函数的问题在于该函数在跳跃点上从0瞬间跳跃到1,这种情况很难处理。幸好有一款叫“Sigmoid”的函数可以处理这类问题。因此为了实现Logistic回归分类器,我们可以在每个特征上都乘以一个回归系数,然后把所有的结果值相加,将这个总和代入Sigmoid函数中,进而得到一个0~1之间的数值,任何大于0.5的分到1类,小于0.5的分到0类。所以Logistic回归也可以看成是一种概率估计。下面一个新的问题出现了,如何确定最佳回归系数?


基于优化方法的最佳回归系数确定

Sigmoid函数的输入记为z,由下面的公式得出:z = w0x0 + w1x1+ w1x2+ ... + wnxn,它表示将两个元素相乘然后全部相加起来得到的z值。其中向量 x 是分类器的输入数据,向量w是我们要找的最佳拟合参数,从而使得分类器尽可能的精确。下面我们会使用梯度上升最优化方法。


梯度上升方法

梯度上升方法基于的思想是:要找到某函数的最大值,最好的方法是沿着该函数的梯度方向探寻。这个在Andrew Ng的讲座中我有过记载这里就不再过多介绍了(好像是在笔记二里)。


训练算法:使用梯度上升寻找到最佳参数

在一个二维坐标轴的图中有100个样本点,每个点包含两个数值型特征x1和x2(即x轴和y轴对应的),我们将使用梯度上升算法找到最佳的回归系数,伪代码如下:

<span style="font-size:12px;">每个回归系数初始化为1
重复R次:
      计算整个数据集的梯度
      使用alpha*gradient更新回归系数向量
      返回回归系数
</span>

训练算法:随机梯度上升

梯度上升算法在每次更新回归系数时都需要遍历整个数据集,该方法遍历100个数据集还行,但是遍历亿级的数据时间复杂度就太大了,我们采用一种“随机梯度上升算法”,一次仅用一个样本点来更新回归系数。伪代码如下:

<span style="font-size:12px;">所有回归系数初始化为1
对数据集中的每个样本
      计算该样本的梯度
      使用alpha*gradient更新回归系数值
返回回归系数值</span>

总结:

Logistic回归的目的是寻找一个非线性函数Sigmoid的最佳拟合参数,求结过程可以由最优化算法来完成。在最优化算法中,最常用的就是梯度上升算法,而梯度上升算法又可以简化为随机梯度上升算法。随机梯度上升算法与梯度上升算法效果相当,但迭代的次数更少,并且是个在线算法,可以可以在新来的数据到来时就完成参数更新,而不需要读取整个数据集来进行批处理运算。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值