浅谈Logisitic Regression
来源:互联网 发布:sql建立学生关系语句 编辑:程序博客网 时间:2024/06/05 14:56
浅谈Logisitic Regression
引言
这一篇呢主要是谈谈我自己对于Logisitic Regression的一些理解。这里呢,Regression虽然中文是回归的意思,但是Logisitic Regression可不是预测连续值的那个回归哦。它是主要用来分类的一种方法。(敲黑板) 这里的分类不仅仅可以进行二分类,多分类当然也是可以哒!只不过咱们进行一丢丢小的改进就ok啦!这个关于多分类的问题嘛,咱们后面再说哈,这里先以最简单的二分类为模型细细掰扯掰扯。
小tips:在学习Logisitic Regression回归之前,希望大家都已经对Linear Regression有所了解哦。
正文
Now, let’s begin!
首先,我们来看一张图:
这是一个二维的数据集,每个样本拥有两个特征(x1,x2),下面我们的任务就是用Logisitic Regression将这两类样本点用类似这一条红线分类开来:
在Linear Regression中,我们预测一个连续值的方法是先提取样本的特征,如x=(x0,x1,x2……xn),n属于正整数。然后训练每个特征的权重θ,使θT.x=y,y即为预测的连续值结果。然而,这个连续的结果并不能直接用于分类,而我们的分类也必须用到数据集的各个特征,使之能够表征到分类模型中,那么怎么办呢?我们现在引入一个函数名为sigmoid函数:
这个函数来源于一种分布名为逻辑斯谛分布(logisitic distribution)。关于这方面的知识,请参阅李航老师的《统计学习方法》,这里就不再深入讨论了。
该函数为单调递增函数,定义域为整个实数集,值域为(0,1) 横轴越大,越趋近于1,相反,越趋近于0。
看到这儿的时候有没有猛然想起《信号与系统》里的单位跃迁函数呀?(恩,你很机智^-^)
sigmoid函数中的z,其实就是我们用类似于Linear Regression中的
不难看出,输出的结果
下面一个比较关键的问题就是如何让这个model的分类效果最好呢?
这个问题里包含了两个方面:1.如何选取各个特征
其实这两个问题是可以统一到一起的,我们先定义目标函数,然后利用最优化算法求解其权重参数θ。
在一般模型中,会采用MSE(最小误差平方和的准则函数)来作为目标函数,若我们在Logisitic Regression中采用如下目标函数
Stanford的Andrew Ng老师说,这是一个关于θ的非凸函数,我们可能会得到如下图像:
所以,MSE就明显不适用于Logisitic Regression了。那我们怎么办呢?我们需要求得权重θ,那么也就是说我们需要估计θ,使θ最接近于实际值对吧?既然我们现在已经有了样本集了,那么……对!这不就是可以利用极大似然估计吗!下面的式子我们就信手拈来啦!
在这里假设类别标签为{0,1},那么
这个分段函数我们可以整合成一个式子:
Obviously,对于一个样本集,可以得到其似然函数
将其转化为对数形式:
接下来我们求得这个对数似然函数的偏导,就可以为后面的最优化算法做铺垫啦!
有了这些条件之后,梯度上升算法已经饥渴难耐啦!(梯度上升算法可以求得
我们下面利用梯度上升算法开始训练权重参数θ:
Repeat until convergence{
θj:θj+α∑i=1m(y(i)−hθ(x(i)))x(i)j
}
这样,Logisitic Regression中的参数θ就训练出来啦!
但是注意!如果数据量很大的情况下,这种梯度算法就出问题了。因为每次更新都要遍历数据集,计算复杂度很高。所以每次用一个样本点更新权重的“随机梯度上升法”就更适用于数据量大的场景下。
随机梯度上升算法伪代码:
所有回归系数初始化为1
对数据集中每个样本
计算该样本的梯度
使用alpha×gradient 更新回归系数值
返回回归系数值
但是再注意!等迭代次数多了以后会发现,回归系数会在一个稳定的数值上下震荡。这不难理解,产生这种现象的原因是存在一些不能正确分类的样本点(数据集并非线性可分),在每次迭代时会引发系数的剧烈改变。于是,我们再一次改进,使步长alpha随着迭代次数的增多变得越来越小,这样有利于回归系数值收敛,使收敛速度加快。
关于Logisitic Regression就先简单讲到这里啦,等后面其他的模型与之有联系的话,会再补充。如有错误和不正之处,恳请指正!
- 浅谈Logisitic Regression
- 机器学习:Logisitic回归
- 机器学习-3 logisitic 回归
- regression
- Regression
- Regression
- 机器学习-----线性回归浅谈(Linear Regression)
- logisitic 回归 +极大似然法 + 梯度下降法 (迭代优化)
- 统计学习方法(三) logisitic回归与最大熵模型
- Linear Regression Logistic Regression
- Linear regression
- Regression Tests
- linear regression
- ssolite regression
- ssolite regression
- Testbench::Regression
- logistic regression
- ld regression
- 数据科学学习笔记5 --- 数据可视化
- Node、PHP、Java 和 Go 服务端 I/O 性能PK
- 实现两个矩阵的相加功能
- kvm内存优化--内存气球
- c++中栈的基本实现stack
- 浅谈Logisitic Regression
- executeQuery()是干什么用的?实现什么功能啊?
- 学习笔记——JAVA JVM的核心机制
- LA3029
- iOS UItableview的两种重用cell的方法的区别
- spring事务管理
- 广电总局退回中国移动IPTV牌照申请
- 工作反思170608
- Mini版本开机时间长