逻辑回归

matlab 逻辑回归实现,逻辑回归原理介绍及Matlab实现 一、逻辑回归基本概念1. 什么是逻辑回归逻辑回归就是这样的一个过程:面对一个回归或者分类问题,建立代价函数,然后通过优化方法迭代求解出最优的模型参数,然后测试验证我们这个求解的模型的好坏。Logistic回归虽然名字里带“回归”,但是它实际上是一种分类方法,主要用于两分类问题(即输出只有两种,分别代表两个类别)回归模型中,y是一个定性变量,比如y=0或1,logistic方法主要应用于研究某些事件... 阅读详情

一、逻辑回归的认识

逻辑回归是一个用来解决二分类的简便方法。先来看看逻辑回归解决二分类的基本思想。

之前写了线性回归,现在写逻辑回归~都叫回归,有什么不同呢?

首先,从机器学习的角度说一下。机器学习中,有两个问题是比较相似的,即预测和分类。通常将模型的输出是有限的离散值的问题称为分类问题,而将模型的输出是连续值的问题称为预测。不同的两个问题自然有不同的解决方法,对于预测问题,通常采用回归分析的方法,比如之前线性回归对于输入样本 x

,模型的输出为 y=hθ(x)=θTx ,这里 y

的取值是连续性的。

那么回归分析一般是用来做预测的,可不可以用来做分类呢?试想一下,我们用线性回归来解决二分类问题,如果其输出 y

的取值拿一个阈值 τ 卡一下,对于输出 y<τ 的样本分为一类,对于输出 y≥τ 的样本分为另一类,这不就好了么?问题是对于线性回归的输出的取值范围是没有大小边界的,那么这个阈值 τ

怎么取就没法弄了。

与线性回归不同,逻辑回归输出的取值范围是0到1之间,这样的话,选一个阈值 τ

似乎比较可行了,为了说明怎么选,先看看逻辑函数(也叫sigmod函数)长啥样吧~逻辑函数的定义是这样的 g(z)=11+e−z , z∈R1  , g(z)∈(0,1)

。它的图形长这样:

现在可以看出我们选的阈值应当是0.5,因为从图形上看,函数值取0.5时对应的自变量取值为0,而整个曲线是关于(0,0.5)中心对称的,这意味这选这个点对两类样本而言是比较公平的(可以这么理解吧~)。也就是说,逻辑函数可以将输入分为两类,第一类 z>0

, g(z)>0.5 ,而第二类 z<0 , g(z)<0.5

。

一般情况下,我们的输入 x

是多维的啊,而逻辑函数的输入是个标量,所以用逻辑函数对我们的多维样本分类首先要对样本进行一个变换 z=θTx (注意对样本加入常数项截距,即 z=θ1(x1=1)+θ2x2+...+θn−1xn−1+θnxn ,对原来n-1为输入增加取值为1的一维,只是为了方便写成向量形式),变换后的逻辑函数可以写出:
hθ(x)=g(θTx)=11+e−θTx

 

那么现在要对样本分成两类了: θTx>0,hθ(x)>0.5

的一类和 θTx<0,hθ(x)<0.5 的一类,而逻辑回归的任务就是根据已有的带类别的样本找到这个 θ

。(后面第三部分结合似然函数再来分析这个结果)。

二、逻辑回归求解

逻辑回归的基本模型已经有了 hθ(x)=g(θTx)=11+e−θTx

,那么怎么求解呢?好像没说解什么呢^_^,当然是解参数 θ 了,我们要找个 θ

使得我们的模型是最优的嘛,参数估计问题~所以,先写出对数似然函数吧!

ℓ(θ)=log∏i=1mp(y(i)|x(i);θ)

,其中m是样本数目,i是样本编号。感觉怪怪的,突然冒出一个 y(i) 来,而且 p(y(i)|xi,θ) 也不知道啊。。。 y(i) 是啥呢,当然是样本类别了,我们不是要分类吗,每个样本本身当然有个类别了,这里是二分类就取0或者1吧。接着来看 p(y(i)|xi,θ) ,没法求吧,因为我们还没对 y(i)|xi,θ 建模啊,模型都没有,概率当然求不了。 y(i) 的取值只有0和1两个,所以它应当是一个伯努利分布,我们需要确定分别取这两个值的概率。回顾一下上面的 hθ(x) ,其取值范围为(0,1),这不正好嘛, y(i) 取值的概率本身就是0和1之间的么!好了,干脆直接让 p(y=1|x,θ)=hθ(x) , p(y=0|x,θ)=1−hθ(x) 得了,这正好符合概率的定义的。那这样做有什么意义呢?回顾上面的内容,当 hθ(x) 小于0.5时,我们将样本分类为类别0,否则分类为类别1,这样的话取值范围为(0,1)的 hθ(x) 是不是可以衡量样本属于类别1的概率呢?结合逻辑回归函数的曲线看, z=θTx 比0大的越多, hθ(x) 取值越是偏离阈值0.5而离1越近,这意味这这个样本的分类越不模糊,很明确的属于其中一个类,相反 hθ(x) 取值越是偏离阈值0.5而离0越近,样本越是很明确的属于另一个类别。这样的话,样本归为类别1的概率就是 hθ(x) ,归类为类别0的概率就是 1−hθ(x) 。好了, y(i)|xi,θ

的模型好了,即:

p(y(i)=1|x(i),θ)=hθ(x(i))

, p(y(i)=0|x(i),θ)=1−hθ(x(i))

将他俩写出一个式子

p(y(i)|x(i),θ)=(hθ(x(i)))y(i)(1−hθ(x(i)))1−y(i)

 

现在,可以接着写似然函数了

ℓ(θ)=log∏i=1mp(y(i)|x(i);θ)=∑i=1mlog((hθ(x(i)))y(i)(1−hθ(x(i)))1−y(i))=∑i=1m(y(i)log(hθ(x(i)))+(1−y(i))log((1−hθ(x(i)))))(1)(2)(3)

         

之前提到有人认为可以简单理解为逻辑回归是对线性回归的结果做了一个逻辑函数的转换,然后用来做二分类,现在有了似然函数就可以理解这种说法不准确了,因为两者求解的目标是不一样的,在逻辑回归的似然函数中,不存在线性回归中优化最小二乘的目标。

现在优化这个似然函数使其取最大值就可以了。

对 θ

的第 l 个分量 θl 求偏导(注意 hθ(x(i))=g(θTx(i)) 且利用逻辑函数求导结果 g(z)′=g(z)(1−g(z))

)

∂ℓ(θ)∂θl=∂∑i=1m(y(i)log(hθ(x(i)))+(1−y(i))log((1−hθ(x(i)))))∂θl=∑i=1m(y(i)1hθ(x(i))+(1−y(i))11−hθ(x(i)))∂hθ(x(i))∂θl=∑i=1m(y(i)1hθ(x(i))−(1−y(i))11−hθ(x(i)))∂g(θTx(i))∂θl=∑i=1m(y(i)1hθ(x(i))−(1−y(i))11−hθ(x(i)))g(θTx(i))(1−g(θTx(i)))∂θTx(i)∂θl=∑i=1m(y(i)(1−g(θTx(i))−(1−y(i))g(θTx(i)))x(i)l=∑i=1m(y(i)−g(θTx(i)))x(i)l(4)(5)(6)(7)(8)(9)

要得到解析解,可以令偏导为0,解一下 θl

,不过解一下就会发现上面的式子不好解。所以为了求解参数 θ

,用最优化的方法吧~牛顿法,梯度法之类的。

另外一个问题,这个似然函数能不能求最大值呢?也就是说它万一是个凸函数,就可能有最小值而没最大值了,所以我们需要证明个个函数是个凹函数,这样利用优化方法找到一个局部极大值就是全局最大值了,好了,来证其Hessien矩阵半负定吧~

利用上面对 θl

的求导结果,Hessian矩阵第 k 行第 l

列的元素

Hkl=∂2ℓ(θ)∂k∂l=∂∑i=1m(y(i)−g(θTx(i)))x(i)l∂θk=∑i=1m−g(θTx(i))(1−g(θTx(i)))x(i)kx(i)l(10)(11)(12)

那么 H=∑i=1m−g(θTx(i))(1−g(θTx(i)))x(i)x(i)T

对于任意非零向量 p

有

pTHp=∑i=1m−g(θTx(i))(1−g(θTx(i)))pTx(i)x(i)Tp=−∑i=1mg(θTx(i))(1−g(θTx(i)))(pTx(i))2(13)(14)

由于 0<g(θTx(i))<1

,所以 pTHp≤0

,所以似然函数的Hessien矩阵半负定,它是一个凹函数,这样,利用最优化方法求一个局部极大值就可以了。

三、逻辑回归干了干啥

上面推导了逻辑回归的求解的过程,乱乱的,简单总结一下逻辑回归干了个啥吧~

回顾似然函数 ℓ(θ)=log∏i=1mp(y(i)|xi,θ)

,我们的目标要最大化这个东西,也就是要最大化连乘符号里面的每一项 p(y(i)|x(i),θ)=(hθ(x(i)))y(i)(1−hθ(x(i)))1−y(i) ,它怎么才能大呢?考虑单个样本 x 如果它对应类别 y=1 ,那么 p(y|x,θ)=hθ(x) ,所以 hθ(x) 要比较大才好,而 hθ(x)=g(θTx)=11+e−θTx ,所以 θTx 要大于0比较好(结合逻辑函数曲线看看);相反如果 y=0 ,最大化似然函数则要求 θTx

尽可能小于零。

所以最大化似然函数的解就是找到一个 θ

,是得对于类别为1的样本,尽可能满足 θTx>0 ,而对于类别为0的样本,尽可能满足 θTx<0 。换句话说,我们找到的超平面 θTx=0

用来对样本分类。可以看出,现在从似然函数分析的结果和我们之前第一部分末尾提出的逻辑回归的目标是一致的。

四、简单实现

#l逻辑函数
logistic<-function(x){
  return(1/(1+exp(-x[1])));
}

#似然函数
ll<-function(theta,x,y){
  n=ncol(x);
  m=nrow(x);
  l<-0;
  for(i in seq(1,m)){
    xi<-matrix(x[i,],ncol=1);
    hxi<-logistic(t(xi)%*%theta);
    l<-l+y[i]*log(hxi)+(1-y[i])*log((1-hxi))
  }
  return(-l) #取负值为了使用下面的nlm()函数
}

#读入数据,数据来自Andrew Ng机器学习资料
x<-read.table("q1x.txt");
x<-as.matrix(x);
x<-cbind(rep(1,99),x);
y<-scan("q1y.txt");
y<-matrix(y,ncol=1);
n=ncol(x);
m=nrow(x);

theta<-rep(0,n);
theta<-matrix(theta,ncol=1);
result<-nlm(ll,theta,x,y);#nlm()为R运用牛顿法求解函数极小值的函数

est<-result$estimate;

plot(x[1:50,2:3],type="p",col="red",xlim=c(0,8), ylim=c(-4,3));
points(x[51:99,2:3],type="p",col="blue");
abline(-est[1]/est[3],-est[2]/est[3]);

预测概率的逻辑回归算法 原创: wk  Refinitiv创新实验室ARGO  10月1日 "本篇文章包含部分数学公式,阅读时间约10分钟" 曾有报道说,性感女神安吉丽娜朱莉因确认携带致癌基因,患乳腺癌概率为87%,所以她选择主动切除乳腺。当时这篇报道给我的震惊在于女神的果断,因为我们常人怀有侥幸心理,不到万不得已绝舍不得给自己来一刀。 不过,如今我们学习机器学习,那视角就得小小切换一下:女神这 87%的患病概率... 阅读详情

相关推荐

逻辑回归算法

分类问题及其表现形式为什么需要逻辑回归算法比如要对一个图片进行分类,判断图片里是否包含汽车。包含汽车的预测值为 1 。不包含汽车的预测值为 0 。这种分类问题的值是离散的,如果用 linear regresstion 来作为分类问题的预测函数是不合理的。因为预测出来的数值可能远小于 0 或远大于 1。我们需要找出一个预测函数模型,使其值的输出在 [0, 1] 之间。然后我们选择一个基准值,比如 0.

kamidox的专栏 3523

逻辑回归原理详解-附案例及源码(二)

逻辑回归损失函数凹凸性证明及梯度下降实例讲解

qq_42928743的博客 1180

sklearn——线性逻辑回归和非线性逻辑回归

线性逻辑回归 本文用代码实现怎么利用sklearn来进行线性逻辑回归的计算,下面先来看看用到的数据。 这是有两行特征的数据,然后第三行是数据的标签。 python代码 首先导入包和载入数据 写一个画图的函数,把这些数据表示出来: 然后我们调用这个函数得到下面的图像: 接下来开始创建模型并拟合,然后调用sklearn里面的逻辑回归方法,里面的函数可以自动帮算出权值和偏置值,非常简单,接着画出图像。 最后我们可以来看看评估值: 可以看到,正确率、召回率、F1值都达到了95%。 非线性逻辑回归 非

iownlucky的博客 1564

机器学习算法系列(二):逻辑回归

从概率分布的角度推导逻辑回归的损失函数 逻辑回归是一种分类算法。 y=wTx+by=\mathbf{w^{T} x}+by=wTx+b 采用非线性映射:z=11+e−yz=\frac{1}{1+e^{-y}}z=1+e−y1​ 逻辑回归一定选取sigmoid函数,其实就是把y的值从(−∞,+∞)(-\infty,+\infty)(−∞,+∞)压缩到(0,1)(0,1)(0,1) 其实,逻辑回...

拙能胜巧 423

逻辑回归三部曲——逻辑回归(logistics regression)原理-让你彻底读懂逻辑回归

逻辑回归原理详解

阿黎逸阳的博客 1万+

逻辑回归三部曲——逻辑回归和sigmod函数的由来

逻辑回归函数的由来

阿黎逸阳的博客 2798

机器学习之逻辑回归(手推公式版)

本篇博文主要介绍了机器学习里面的逻辑回归,并给出了相关的计算过程,最后使用主流的机器学习库sklearn来实现逻辑回归。机器学习(手推公式版)系列持续更新中...

夏小悠的博客 2041

安卓ai自动化脚本 Yyds.Auto实现 示例 纯ai图像识别自动点击脚本

纯ai识别实现自动化脚本

专注安卓前沿科技 4780

机器学习要点理解(二、逻辑回归)

逻辑回归是做分类任务的,是在线性回归的基础上加上例如sigmoid函数,是的取值从[-∞, +∞]变为[0,1]。并按照区间进行分类。 sigmoid函数S(t)=11+e−t S(t)=\frac{1}{1+e^{-t}} S(t)=1+e−t1​ 逻辑回归的函数:对数似然函数,同样是按照梯度下降法,最小化损失函数得到模型参数。S(t)=−y∗log⁡(p)−(1−y)∗log⁡(1...

anuory的博客 328

从SN65HVD230芯片手册出发,手把手教你搞定3.3V CAN收发器电路(附典型应用图)

本文详细解析TI SN65HVD230芯片手册,指导完成3.3V CAN收发器电路设计。从关键参数解读到基础电路搭建,再到高级功能实现与EMC优化,提供完整的接口电路设计方案,并附典型应用图和故障排查指南,助力开发者提升CAN总线通信质量。

weixin_29997523的博客 506

kaggle项目:纽约出租车行程时间NYC Taxi Trip Duration

纽约出租车形成时间预测(NYC Taxi Trip Duration)是Kaggle中的一个Playground竞赛。比赛数据集基于2016年纽约市黄色出租车行程记录数据,需要建立一个模型,根据单个行程属性,预测测试集中每次行程的持续时间。Kaggle项目模型XGBoost,评价指标RMSLE。

weixin_42113929的博客 2790

逻辑回归和多项逻辑回归

逻辑回归,多项逻辑回归,梯度下降,多标签问题,为什么不用平方误差(MSE)作为Logistic回归的损失函数?

weixin_51221144的博客 3558

做蛋白组学数据分析,竟然还不会使用DIA-NN软件,走过路过不要错过,进来免费学习!!!

蛋白组学分析工具DIA-NN使用

wcy1995427的博客 9865

逻辑回归模型-逻辑回归算法原理-逻辑回归代码与实现-笔记整合

逻辑回归模型(Logistic Regression)包含了二元逻辑回归和多元逻辑回归,二元逻辑回归用来解决二分类问题,多元逻辑回归用来解决多分类问题。多元逻辑回归属于二元逻辑回归的拓展,但二元逻辑回归用得最多,学习应先从二元逻辑回归开始。多元逻辑回归在需要时可以选择性学习。一般所说的逻辑回归都是指二元逻辑回归,本文的逻辑回归也是指二元逻辑回归。

botf201802的博客 2641

背靠背VSC直流母线电压控制与同步发电机并网发散问题:原理、分析与解决方案

背靠背VSC直流母线电压控制与同步发电机并网发散问题分析 摘要: 本文研究了背靠背VSC系统在整流侧由理想三相电源切换为同步发电机时出现的直流母线电压振荡和发散问题。通过理论分析发现,锁相环同步失稳、等效阻抗失配和直流母线电容参数失配是导致系统失稳的关键因素。当整流侧接入同步发电机后,系统形成正反馈振荡回路,同时等效电感增大导致电流环响应速度降低,直流侧电容容量不足无法吸收发电机功率波动。文章提出了从跟网型控制到构网型VSG控制的完整升级方案,包含详细的MATLAB/Simulink建模和控制算法实现,并通

huanghm88的专栏 122

PDD psnl_verification anti_content 生成顺序与环境校验说明

K不是明文 URL,而是从当前href再派生出来的一小段摘要值。页面 URL 变,K会跟着变但K不是直接肉眼可读的 URL 字串可以把它理解成“URL 的短摘要字段”。这一步是最容易被误解的地方。它吃进去的是压缩后的中间串不是直接吃环境字段它内部还带有长度预算 / 字符映射 / 位置处理逻辑所以最终看到的环境字段 bytes协议头deflate 压缩自定义编码多层叠加后的结果。先把字段总包做再把压缩结果转成raw再拼fTail最后走做字符级输出因此,当前看到的协议字段流。

码王吴彦祖的博客 69

利用sklearn实现逻辑回归

1. sklearn介绍 在利用sklearn实现逻辑回归前,可能会有人疑惑sklearn究竟是什么,那在这之前,我们先来看一下sklearn是一个什么东西吧。 先字面解释一下:Sklearn (全称 Scikit-Learn) 是基于 Python 语言的机器学习工具。它建立在 NumPy, SciPy, Pandas 和 Matplotlib 之上,里面的 API 的设计非常好,所有对象的接口简单,很适合新手上路。(简单粗暴地说就是:sklearn里面已经集成好了很多机器学习算法,并且需要的相关依赖也解

qq_45435247的博客 1万+

基于Linux的PCIe设备驱动开发入门到精通-- 11.2 锁机制与并发控制 (自旋锁、互斥锁) 11.3 性能瓶颈分析与优化建议

本文探讨Linux驱动开发中的性能优化方法论,重点聚焦并发控制与性能瓶颈分析。从锁机制选择(自旋锁、互斥锁等)到工具使用(ftrace、perf),详细介绍了定位锁竞争和CPU热点的实战步骤,包括ftrace事件跟踪和perf火焰图分析。针对常见性能瓶颈(CPU/内存/I/O/锁竞争),提出了锁粒度优化、无锁结构替换、中断处理优化等解决方案。强调性能优化需要理论结合实践,通过"假设-测量-验证"的循环持续迭代。为开发者提供了一套从问题定位到解决的完整方法论,助力开发高性能工业级驱动。

MHD0815的博客 127

【机器学习之逻辑回归】sklearn+python逻辑回归详解

逻辑回归也称作logistic回归分析,是一种广义的线性回归分析模型,属于机器学习中的监督学习。其推导过程与计算方式类似于回归的过程,但实际上主要是用来解决二分类问题(也可以解决多分类问题)。通过给定的n组数据(训练集)来训练模型,并在训练结束后对给定的一组或多组数据(测试集)进行分类。逻辑回归,是一种“回归”的线性分类器,其本质是由线性回归变化而来的,一种广泛应用于分类问题中的回归算法。我们都知道线性回归是预测连续性标签值,计算方法如下: 通过函数y,线性回归使用输入的特征矩阵x来输出一组连续的标签值y

qq_43018832的博客 6760

从零开始讲DDR(8)——AXI 接口MIG 使用(1)

我们简单拆解了MIG AXI接口中测试文件的整体框架,首先在sim_tb_top.sv文件中例化了DDR模型和example_top。在example_top中,又例化了MIG IP和一个流量产生器ddr4_v2_2_8_axi_tg_top。在ddr4_v2_2_8_axi_tg_top中的主要功能是分别例化了boot_mode_gen,prbs_mode_gen,custom_mode_gen和axi_opcode_gen。

apple_53311083的博客 1587

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

逻辑回归、逻辑回归的损失和优化

日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) 3.1 逻辑回归介绍 逻辑回归(Logistic Regression)是机器学习中的一种分类模型,逻辑回归是一种分类算法,虽然名字中带有回归。由于算法的简单和高效,在实际中应用非常广泛。 1 逻辑回归的应用场景 广告点击率 是否为垃圾邮件 ...

あずにゃん梓喵的博客 4045

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

【机器学习算法】逻辑回归为什么叫逻辑回归

文章目录逻辑回归以及为什么叫逻辑回归从sigmoid函数引出逻辑回归的统计学模型:伯努利分布线性回归模型的通式:广义线性模型指数族分布 逻辑回归以及为什么叫逻辑回归 逻辑回归虽然名字里有回归(logistic regression),实则它是个二分类算法。 从sigmoid函数引出 同多元线性回归一样,逻辑回归也具有它的函数表达式: hθ(x)=g(θTx)=11+e−θTx h_{\theta}(x)=g\left(\theta^{T} x\right)=\frac{1}{1+e^{-\theta^{T}

Yann的博客 2869

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

逻辑回归分析

什么是逻辑回归 简单来说, 逻辑回归(Logistic Regression)是一种用于解决分类问题的机器学习方法,用于估计某种事物的可能性。由于逻辑回归的原理是用逻辑函数把线性回归的结果yyy映射到(0,1),故先介绍线性回归函数。 1.线性回归函数 线性回归函数的数学表达式: 其中xix_ixi​是自变量,yyy是因变量,yyy的值域为(-∞,+∞),θ0\theta_0θ0​是常数项,θiθ_iθi​(i=1,2,...,n)是待求系数,不同的权重θiθ_iθi​反映了自变量对因变量不同的贡献程度。

weixin_44192389的博客 3044

逻辑回归算法深入浅出

逻辑回归是一个有监督机器学习算法用于分类任务其中目标是预测实例是否属于给定类的概率。逻辑回归是一种分析两个数据因素之间关系的统计算法。

绎岚科技的博客 1719
上一篇: 线性回归与特征归一化(feature scaling)
下一篇: 随机森林
magicchu
博客等级 码龄15年 424粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值