Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >机器学习 学习笔记(6) Logistic 回归

机器学习 学习笔记(6) Logistic 回归

作者头像
发布于 2018-09-03 10:15:24
发布于 2018-09-03 10:15:24
60800
代码可运行
举报
文章被收录于专栏:WD学习记录WD学习记录
运行总次数:0
代码可运行

线性模型可以进行回归学习,但是若要做分类任务该怎么办,只需要找一个单调可微函数将分类任务的真实标记y与线性回归的预测值联系起来。

对数几率函数(logistic function)(逻辑斯蒂回归):

对数几率函数是一种Sigmoid函数,将z值转化为一个接近0或者1的y值,并且其输出值在z=0附近变化很陡。

将y视为样本x作为正例的可能性,1-y则是反例的可能性,两者的比值为

称为几率。反应了x作为正例的可能性。

可以看出,

是用线性回归模型的预测结果去逼近真实标记的对数几率,因此,其对应模型称为对数几率回归。需要注意的是名字带有回归,实际上式分类方法。

这种方法的优点包括:直接对分类可能性进行建模,无需事先假设数据分布,避免假设分布不准确所带来的问题,不是仅仅预测出类别,而是可以得到近似概率预测,这对许多需要利用概率辅助决策的任务很有用,此外,对率函数是任意阶可导的凸函数,有很好的数学性质,现在的许多数值优化算法都可直接用于求取最优解。

如何确定其中的w和b。将y视为类后验概率

,则:

,有

,然后可以通过极大似然大来估计w和b。

给定数据集,对率回归模型最大化对数似然,

,即令每个样本术语其真实标记的概率越大越好。

,则

,将其带入上式,

,该式子是关于

的高阶可导连续函数,可以通过经典的数值优化算法梯度下降法、牛顿法等求得其最优解。

梯度下降法实现代码:

梯度下降w迭代公式为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 代码以及数据集源自于机器学习实战,见https://github.com/AnnDWang/MachineLearning/blob/master/thirdbook/ch5/logRegres.py
# logistic 回归梯度上升优化算法
def loadDataSet():
    dataMat=[]
    labelMat=[]
    fr=open('testSet.txt')
    for line in fr.readlines():
        lineArr=line.strip().split()
        dataMat.append([1.0,float(lineArr[0]),float(lineArr[1])])
        labelMat.append(int(lineArr[2]))
    return dataMat,labelMat

def sigmoid(inX):
    return 1.0/(1+exp(-inX))

def gradAscent(dataMatIn,classLabels):
    dataMatrix=mat(dataMatIn)
    labelMat=mat(classLabels).transpose()
    m,n=shape(dataMatrix)
    alpha=0.001
    maxCycles=500
    weights=ones((n,1))
    for k in range(maxCycles):
        h=sigmoid(dataMatrix*weights)
        error=(labelMat-h)
        weights=weights+alpha*dataMatrix.transpose()*error
    return weights

dataArr,labelMat=loadDataSet()
weights=gradAscent(dataArr,labelMat)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 随机梯度上升算法
def stocGradAscent0(dataMatrix,classLabels):
    m,n=shape(dataMatrix)
    alpha=0.01
    weights=ones(n)
    for i in range(m):
        h=sigmoid(sum(dataMatrix[i]*weights))
        error=classLabels[i]-h
        weights=weights+alpha*error*dataMatrix[i]
    return weights

# 改进的随机梯度上升算法
# alpha在每次迭代时候都会调整,这回缓解数据波动或者高频波动
# 虽然alpha会随着迭代次数不断减小,但永远不会减小到0
# 这是因为alpha更新公式中存在一个常数项,保证多次迭代之后新数据仍然有一定的影响
# 如果要处理的问题是动态变化的,那么可以适当加大常数项,来确保新的值获得更大的回归系数
# 在降低alpha函数中,每次减少1/(j+i),其中j是迭代次数,i是样本点的下标,
# 这样当j<<max(i)时,alpha就不是严格下降的
# 避免参数的严格下降也常见于模拟退火等其他优化算法
def stocGradAscent1(dataMatrix,classLabels,numIter=150):
    m,n=shape(dataMatrix)
    weights=ones(n)
    for j in range(numIter):
        dataIndex=list(range(m))
        for i in range(m):
            alpha=4/(1.0+j+i)+0.01 # alpha在每次迭代时候都会调整
            randIndex=int(random.uniform(0,len(dataIndex))) # 随机选取更新
            h=sigmoid(sum(dataMatrix[randIndex]*weights))
            error=classLabels[randIndex]-h
            weights=weights+alpha*error*dataMatrix[randIndex]
            del(dataIndex[randIndex])
    return weights

多项逻辑斯谛回归

上述介绍的是二项分类模型,用于二类分类,可以将其推广为多项逻辑斯蒂回归模型,用于多类分类,假设离散型随机变量Y的取值集合是{1,2,...,K},那么多项逻辑斯蒂回归模型是:

参考:

  1. 机器学习
  2. 《统计学习方法》
  3. 《机器学习实战》
  4. 逻辑回归(logistic regression)的本质——极大似然估计
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018年08月12日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
《机器学习实战》 - Logistic回归
Sigmoid 函数是一种阶跃函数(step function)。 在数学中,如果实数域上的某个函数可以用半开区间上的指示函数的有限次线性组合来表示,那么这个函数就是阶跃函数。而数学中指示函数(indicator function)是定义在某集合X上的函数,表示其中有哪些元素属于某一子集A。 两种坐标尺度下的Sigmoid函数图 如下:
yiyun
2022/04/01
7580
《机器学习实战》 - Logistic回归
【机器学习实战】第5章 Logistic回归
本文介绍了如何使用机器学习算法对马匹进行疾病预测。首先介绍了数据集构建和预处理,然后详细阐述了基于逻辑回归的疾病预测模型。最后,通过实验证明了该模型在预测马匹疾病方面的可行性。
片刻
2018/01/05
1.3K0
【机器学习实战】第5章 Logistic回归
逻辑斯谛回归及其物理含义
先来看看书上逻辑斯谛回归模型的公式吧,再了解公式的情况下,我们再来谈谈它实际的物理含义。吼吼,它貌似蛮有内涵的,也是从生物学上挖过来的一条曲线吧。
用户1147447
2019/05/26
1K0
Python3《机器学习实战》学习笔记(七):Logistic回归实战篇之预测病马死亡率
版权声明:本文为博主原创文章,未经博主允许不得转载。个人网站:http://cuijiahua.com。 https://blog.csdn.net/c406495762/article/details/77851973
Jack_Cui
2019/05/25
9120
Logistic回归实战篇之预测病马死亡率(一)
作 者:崔家华 编 辑:李文臣 Python版本: Python3.x 运行平台 : Windows IDE : Sublime text3 一、前言 本系列文章对梯度上升算法和改进的随机梯度上升算法进行了对比,总结了各自的优缺点,并对sklearn.linear_model.LogisticRegression进行了详细介绍。 二、改进的随机梯度上升算法 梯度上升算法在每次更新回归系数(最优参数)时,都需要遍历整个数据集。可以看一下我们之前写的梯度上升算法: def gra
机器学习算法工程师
2018/03/06
1.1K0
Logistic回归实战篇之预测病马死亡率(一)
理解Logistic回归算法原理与Python实现
本文介绍了逻辑回归算法的基本原理和实现,并通过实例演示了如何使用逻辑回归算法进行二元分类。同时,还介绍了如何利用Python中的sklearn库来实现逻辑回归算法,以及使用该算法对鸢尾花数据集进行分类。
chaibubble
2018/01/02
1.6K0
理解Logistic回归算法原理与Python实现
机器学习(六)— logistic回归
  最近一直在看机器学习相关的算法,今天学习logistic回归,在对算法进行了简单分析编程实现之后,通过实例进行验证。
oYabea
2020/09/07
4260
python机器学习实战(四)
http://www.cnblogs.com/fydeblog/p/7364317.html
努力努力再努力F
2018/09/11
7140
python机器学习实战(四)
基于逻辑回归的趋势预测 | LR | 机器智能
回归就是发现变量之间的关系,也就是求回归系数,是分类和预测算法中的一种。通过历史数据的表现对未来结果发生的概率进行预测。经常用回归来预测目标值。回归和 分类同属于监督学习,所不同的是回归的目标变量必须是连续数值型。 logistic 回归的主要思想是根据现有的数据对分类边界线建立回归公式,以此进行分类。
用户7623498
2020/08/04
8420
基于逻辑回归的趋势预测 | LR | 机器智能
python实现逻辑logistic回归:预测病马的死亡率
假设现在有一些数据点,我们用一条直线对这些点进行拟合(该线称为最佳拟合直线),这个拟合过程就称为回归。训练分类器就是为了寻找最佳拟合参数,使用的是最优化算法。 这就是简单的线性回归问题,可以通过最小二乘法求解其参数,最小二乘法和最大似然估计。 但是当有一类情况如判断邮件是否为垃圾邮件或者判断患者癌细胞为恶性的还是良性的,这就属于分类问题了,是线性回归所无法解决的。这里以线性回归为基础,讲解logistic回归用于解决此类分类问题。 python代码的实现 (1) 使用梯度上升找到最佳参数 from num
机器学习AI算法工程
2018/03/14
1.6K0
python实现逻辑logistic回归:预测病马的死亡率
梯度上升算法与随机梯度上升算法的实现
上一篇日志中,我们最终推导出了计算最优系数的公式。 Logistic 回归数学公式推导
用户3147702
2022/06/27
7540
梯度上升算法与随机梯度上升算法的实现
《机器学习实战(Scala实现)》(五)——Logistic回归
z=w0x0+w1x1+...+wnxn\large z = w_0x_0 + w_1x_1 + ... + w_nx_n
小爷毛毛_卓寿杰
2019/02/13
1.2K1
机器学习系列(四)Logistc 回归
一切数据都可以分为两种,即定性数据和定量数据。 定性数据: 没有数值特征,不能进行数学运算,分为分类数据和顺序数据两类, (1)分类数据如反映“性别”、“职业”等现象的属性特点的数据,只能用来区分事物,而不能用来表明实物之间的大小、优劣关系。 (2)顺序数据,是只能归于某一有序类别的非数字型数据。顺序数据虽然也是类别, 但这些类别是有序的。比如将产品分为一等品、二等品、三等品、次品等 ,相应的观察结果就是顺序数据,顺序数据的数据之间虽然可以比较大小,却无法计算相互之间的大小、高低或优劣的距离。 定量数据: 反应“考分”、“收入”等可以用数值表示的变量,具有明确的数值含义,不仅可以分类还可以具体计算大小和差异。 之所以介绍两种数据类型,是因为还有一个概念是线性回归,线性回归分析的是定量数据,而逻辑回归分析的是分类数据,属于定性数据。
Minerva
2020/05/25
4160
机器学习——Python实现逻辑回归(实例:预测病马死亡率)
假设现在有一些数据点,用一条直线对这些点进行拟合(该线称为最佳拟合直线),这个拟合过程就称为回归。 利用逻辑回归进行分类的主要思想是:根据现有数据对分类边界线建立回归公式,以此进行分类。
Ai学习的老章
2019/04/10
2.4K1
机器学习——Python实现逻辑回归(实例:预测病马死亡率)
Logistic回归实战篇之预测病马死亡率(二)
作 者:崔家华 编 辑:李文臣 三、从疝气病症状预测病马的死亡率 1、实战背景 本次实战内容,将使用Logistic回归来预测患疝气病的马的存活问题。原始数据集下载地址:http://archive.ics.uci.edu/ml/datasets/Horse+Colic 这里的数据包含了368个样本和28个特征。这种病不一定源自马的肠胃问题,其他问题也可能引发马疝病。该数据集中包含了医院检测马疝病的一些指标,有的指标比较主观,有的指标难以测量,例如马的疼痛级别。另外需要说明的是,除了部分指标主观和难以测量外
机器学习算法工程师
2018/03/06
2.3K0
Logistic回归实战篇之预测病马死亡率(二)
Python3《机器学习实战》学习笔记(六):Logistic回归基础篇之梯度上升算法
版权声明:本文为博主原创文章,未经博主允许不得转载。个人网站:http://cuijiahua.com。 https://blog.csdn.net/c406495762/article/details/77723333
Jack_Cui
2019/05/25
7590
Logistic回归算法及Python实现
本文将介绍机器学习算法中的Logistic回归分类算法并使用Python进行实现。会接触到**最优化算法**的相关学习。
YingJoy_
2018/03/07
2.8K0
Logistic回归算法及Python实现
基于Logistic回归和Sigmoid函数的分类(一)
假设现有一些二维数据点,我们用一条线(直线或者曲线)对这些点进行拟合,这个拟合的过程就称作回归。如果用直线拟合,就是线性回归。
用户6021899
2019/08/14
2.5K0
机器学习十大算法系列(一)——逻辑回归
本文介绍了机器学习中的逻辑回归算法,包括线性回归、逻辑回归、决策树、支持向量机、朴素贝叶斯、K邻近算法、K-均值算法、随机森林、降低维度算法、梯度提升和Adaboost算法。逻辑回归是一种分类算法,通过拟合逻辑函数来预测事件发生的概率。梯度上升法是逻辑回归中的优化方法。
码科智能
2018/01/03
1K0
机器学习实战之Logistic回归
写在前面 Logistic回归涉及到高等数学,线性代数,概率论,优化问题。本文尽量以最简单易懂的叙述方式,以少讲公式原理,多讲形象化案例为原则,给读者讲懂Logistic回归。如对数学公式过敏,引发不适,后果自负。 Logistic回归原理与推导 Logistic回归中虽然有回归的字样,但该算法是一个分类算法,如图所示,有两类数据(红点和绿点)分布如下,如果需要对两类数据进行分类,我们可以通过一条直线进行划分(w0 * x0 + w1 * x1+w2 * x2)。当新的样本(x1,x2)需要预测时,带入直线
罗罗攀
2018/07/03
2930
推荐阅读
相关推荐
《机器学习实战》 - Logistic回归
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验