机器学习笔记—Logistic回归
本文申明:本系列笔记全部为原创内容,如有转载请申明原地址出处。谢谢
序言:what is logistic regression? Logistics 一词表示adj.逻辑的;[军]后勤学的n.[逻]数理逻辑;符号逻辑;[军]后勤学, “回归”是由英国著名生物学家兼统计学家高尔顿在研究人类遗传问题时提出来的。为了研究父代与子代身高的关系,高尔顿搜集了1078对父亲及其儿子的身高数据。他发现这些数据的散点图大致呈直线状态,也就是说,总的趋势是父亲的身高增加时,儿子的身高也倾向于增加。但是,高尔顿对试验数据进行了深入的分析,发现了一个很有趣的现象—回归效应。因为当父亲高于平均身高时,他们的儿子身高比他更高的概率要小于比他更矮的概率;父亲矮于平均身高时,他们的儿子身高比他更矮的概率要小于比他更高的概率。它反映了一个规律,即这两种身高父亲的儿子的身高,有向他们父辈的平均身高回归的趋势。对于这个一般结论的解释是:大自然具有一种约束力,使人类身高的分布相对稳定而不产生两极分化,这就是所谓的回归效应。这种方法就被称为回归。
那么logistic回归是不是就是用逻辑进行回归分析,然后做出分类?且听下文慢慢道来。
为了简化分析,我们首先把它定义为一个二分问题,例如:
if x>0.5
print 1
else
print 0
对于现实问题,0.5这个地方一定是一个大的跳跃,那我们该如何定义这个函数呢。
那我们就得从我们伟大的前辈那取经了,我们找到一个叫做Sigmoid的东西,这个函数图像如下:
大家看这个函数6不6.
现在我们为了实现logistic回归分类器,我们把数据的特征都乘以一个回归系数(这个回归系数是通过数据学习到的),把这些值加起来,带进我们的sigmoid函数:
,进而得到一个范围在0~1之间的数值,任何大于0.5的数据被分入1类,小于0.5的都被分到0类。所以,logistic回归也可是说是一种概率估计。
既然模型已经建立了,那我们接下来要干嘛呢?那是不是变成了确定那个回归系数,那么我们的分类模型是不是就建立了,但是这个最佳模型系数(回归系数)怎么确定呢?
下面我给出是两种方法,大家看看哪种方法比较好:
方法一:梯度上升算法
梯度上升算法的思想是:函数J(A)在某点AK的梯度G[J(AK)]是一个向量,它的方向与过点AK 的等量面J(AK)=C的法线方向重合,指向J(AK)增加的一方,是这个函数变化率最大的方向。相反,负方向就是减少的最快方向,所以求这个函数的最大值或者最小值时,分别沿着正梯度和负梯度方向搜索有可能最快地找到最小值。
梯度算法实现:以梯度上升算法为例,先任意选择一个初始的权向量A1(一般为0)然后计算A1上的梯度G[J(A1)],从A1出发在最陡的方向上移动一个距离d(自己设置)到达A2.那么可以采用下面公式从AK推到AK+1.
AK+1=AK-d G[J(AK)]
我们来补充一下什么叫准则函数 (criterion function):
用具体函数评价系统所采取策略优劣的准则时,称为准则函数。根据实际问题的类型和...准则函数的取值取决于决策者所采取的策略。如果采取某种策略能使准则函数达到最优值时,称这种策略为这种准则的最优策略。
logistic准则函数的定义是:

为什么是这个呢,就是假如我本来属于男性,你非要让我成为女性,是不是分类错误?那么就是负数,我如果是女性你给我分类成男性,是不是也不妥?我们把这些错误的相加,·值越小越好。这样不就可以判别我们的分类器正确率了吗
因为J(AK)的第j个梯度分量是
。。根据准则函数可以看出:

把这个式子带入到AK+1=AK-d G[J(AK)]可得:

梯度上升算法示意图:

你看那个p一步一个脚印似魔鬼的步伐。这样迭代下去就会趋于稳定。
方法二:固定增量算法
梯度算法缺点:
靠近极值时收敛速度减慢。
直线搜索时可能会产生一些问题。
可能会“之字形”地变化。
那么我们提出固定增量算法:
1全部的样本看成一个序列,每当前一步迭代的权向量把某个样本错误分类是,就对这个权向量作一次修正,而不是等当前向量对全部样本计算后在找出错分类的样本集进行修改。
2每次迭代d保持不变。
设现在有两个分类C和B,我们现在要用一个固定算法决定一个超平面ATY=0,是它能够正确的划分开C和B。开始我们可以任意假定A和B属于决策界面的哪一边。然后依次把A和B中的曾广模式Y取出,计算A与Y的内积ATY。根据内积,权向量A用以下规则调整;
(1) 如果Y∈C,而ATY≤0,则用A+Y代替A;
(2) 如果Y∈B,而ATY≥0,则用A-Y代替A;
(3) 如果Y∈C,而ATY>0,则A保持不变。
(4) 如果Y∈B,而ATY<0,则A保持不变。
迭代终止条件:
如果在一次迭代中权向量A已经保持不变,则权向量A即解权向量A^,所以在程序收敛之后就不需要也没必要进行进一步的迭代了。
机器学习笔记—Logistic回归的更多相关文章
- 机器学习笔记—Logistic 回归
前面我们介绍了线性回归,为捕获训练集中隐藏的线性模型,提高预测准确率,我们寻找最佳参数 θ,使得预测值与真实值误差尽量小,也就是使均方误差最小.而经过验证,最小均方误差是符合最大似然估计理论的. 在 ...
- [机器学习实战-Logistic回归]使用Logistic回归预测各种实例
目录 本实验代码已经传到gitee上,请点击查收! 一.实验目的 二.实验内容与设计思想 实验内容 设计思想 三.实验使用环境 四.实验步骤和调试过程 4.1 基于Logistic回归和Sigmoid ...
- 机器学习5—logistic回归学习笔记
机器学习实战之logistic回归 test5.py #-*- coding:utf-8 import sys sys.path.append("logRegres.py") fr ...
- <机器学习实战>读书笔记--logistic回归
1. 利用logistic回归进行分类的主要思想是:根据现有数据对分类边界线建立回归公式,以此进行分类. 2.sigmoid函数的分类 Sigmoid函数公式定义 3.梯度上升法 基本思想:要找 ...
- 机器学习之Logistic 回归算法
1 Logistic 回归算法的原理 1.1 需要的数学基础 我在看机器学习实战时对其中的代码非常费解,说好的利用偏导数求最值怎么代码中没有体现啊,就一个简单的式子:θ= θ - α Σ [( hθ( ...
- 机器学习之logistic回归算法与代码实现原理
Logistic回归算法原理与代码实现 本文系作者原创,转载请注明出处:https://www.cnblogs.com/further-further-further/p/10033567.html ...
- Python机器学习笔记 Logistic Regression
Logistic回归公式推导和代码实现 1,引言 logistic回归是机器学习中最常用最经典的分类方法之一,有人称之为逻辑回归或者逻辑斯蒂回归.虽然他称为回归模型,但是却处理的是分类问题,这主要是因 ...
- 机器学习基础-Logistic回归1
利用Logistic回归进行分类的主要思想是:根据现有数据对分类边界线建立回归公式,以此进行分类. 训练分类器时的做法就是寻找最佳拟合参数,使用的时最优化算法. 优点:计算代价不高,利于理解和实现. ...
- 吴裕雄--天生自然python机器学习:Logistic回归
假设现在有一些数据点,我们用 一条直线对这些点进行拟合(该线称为最佳拟合直线),这个拟合过程就称作回归.利用Logistic回归进行分类的主要思想是:根据现有数据对分类边界线建立回归公式,以此进行分类 ...
随机推荐
- IIS W3SVC 无法启动1068错误的解决
苦苦寻找解决方法多天之后,终于看到了最简单的处理方法. 故障: 试遍网上各种方法,司马当活马,CMD下输入如下命令,然后重启: fsutil resource setautoreset true C: ...
- PowerShell Script to Deploy Multiple VM on Azure in Parallel #azure #powershell
Since I need to deploy, start, stop and remove many virtual machines created from a common image I c ...
- SQLite剖析之体系结构
1.通过官方的SQLite架构文档,理清大体的系统层次:Architecture of SQLite 2.阅读SQLite Documentation中Technical/Design Documen ...
- MATLAB中取整函数(fix, floor, ceil, round)的使用
MATLAB取整函数 1)fix(x) : 截尾取整. >> fix( [3.12 -3.12]) ans = 3 -3(2)floor(x):不超过x 的最大整数.(高斯取整) & ...
- vijos-1447 开关灯泡-大整数开方算法
描述 一个房间里有n盏灯泡,一开始都是熄着的,有1到n个时刻,每个时刻i,我们会将i的倍数的灯泡改变状态(即原本开着的现将它熄灭,原本熄灭的现将它点亮),问最后有多少盏灯泡是亮着的. 提示 范围:40 ...
- VirtualBox 扩展C盘
1. 关闭虚拟机,找到ovi文件 2.执行命令: C:\Program Files\Oracle\VirtualBox>VBoxManage.exe modifyhd "C:\User ...
- iOS开发中的错误整理,再一次整理通过通知中心来处理键盘,一定记得最后关闭通知中心
一.打开通知中心,监听键盘的显示与隐藏 二.最后记得将监听通知的对象移除
- 【收藏】Java多线程/并发编程大合集
(一).[Java并发编程]并发编程大合集-兰亭风雨 [Java并发编程]实现多线程的两种方法 [Java并发编程]线程的中断 [Java并发编程]正确挂起.恢复.终止线程 [ ...
- asp.net(C#)时间相减 得到天数、小时、分钟、秒差
asp.net(C#)时间相减 得到天数.小时.分钟.秒差 DateTime dtone = Convert.ToDateTime("2007-1-1 05:00:00"); Da ...
- C语言之贪吃蛇
利用链表的贪吃蛇,感觉自己写的时候还是有很多东西不熟悉, 1.预编译 2.很多关于系统的头文件也不是很熟悉 3.关于内存 第一个是.h头文件 #ifndef _SNAKE_H_H_H #define ...