什么是逻辑回归
逻辑回归是最简单的分类算法之一,简单但是好用。
基础知识
Sigmoid 函数
对于二分类问题来说,sigmoid 函数可以较为平滑地处理 01 瞬时阶跃问题。其计算公式为:
图像为:
当然我们也可以利用这个工具来可视化地了解 sigmoid 函数。总所周知,分类的时候会处理多个特征,那我们可以对于每一个特征 $x_i$ 乘以一个回归系数 $w_i$ ,得到 $z=w_0x_0+w_1x_0+…+w_nx_n$ ,即
可以很明显地看到,sigmoid 函数的值域是 $(0,1)$ ,且 $z$ 的值越大,则样本 $x_i$ 表示正例的概率越大,反之同理。$z$ 是一个线性函数,后面会经常用到。
定义条件概率
在 $x_i$ 出现的情况下,原本为正的条件概率为:
在 $x_i$ 出现的情况下,原本为负的条件概率为:
那么条件概率既是:
几率相关
事件发生的几率等于该事件发生的概率除以不发生的概率
那么对数几率则是:
对于 LR 而言,则输出 $Y=1$ 的对数几率则是:
即输出 $Y=1$ 的对数几率是由输入 $x$ 表示的线性模型。
导函数形式
梯度
梯度的本意是一个向量(矢量),表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大(为该梯度的模)
回顾一下梯度的计算公式:
其中 i, j, k 为标准的单位向量,分别指向 x, y 跟 z 坐标的方向。
梯度下降法
参考维基百科梯度下降法)
局部最优现象
梯度下降的最终点不一定是全局最优点,所以初始点的点选择对最终结果有很大程度影响。
LR 原理
LR 的工作原理
初始化每一个回归系数为1
重复计算R次:
计算整个数据集的梯度
使用 步长 x 梯度,更新回归系数
更新回归系数
LR 算法特点
优点:简单好用
缺点:容易欠拟合,分类精度可能不高
LR 实现
sigmoid函数
1 | import math |
梯度上升
1 | def gradasend(): |
核心代码
1 | def lr(): |