机器学习算法系列(三)-- 逻辑回归(对数几率回归)

2023-11-22 13:50

本文主要是介绍机器学习算法系列(三)-- 逻辑回归(对数几率回归),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

机器学习算法之–对数几率回归(逻辑斯蒂回归)算法

上个算法(算法系列二)介绍了如何使用线性模型进行回归学习,但若要做的是分类任务,则需要找一个单调可微函数将分类任务的真实标记y与线性回归模型的预测值联系起来。

虽然名字叫回归,但其实是分类学习方法

一、算法原理

对于给定的输入实例x,可求出P(Y=0|x)和P(Y=1|x)的条件概率值的大小比较,将实例x分到概率值较大的那一类。

1.1、预测函数

找出一个预测函数模型,输出值在[0,1]之间。接着,再选择一个基准值(例如0.5),若预测值》0.5,则预测为1;否则预测为0;【二分类问题】

我们可选择: g ( z ) = 1 1 + e − z g(z)=\frac{1}{1+e^{-z}} g(z)=1+ez1作为预测函数。
该函数称为Sigmoid函数,也可称作Logistic函数(名称由来),其图形如下

图中可以看出:

  • z=0:g(z) = 0.5
  • z>0:g(z) > 0.5,当z越来越大时,g(z)无限接近于1。
  • z<0:g(z) < 0.5,当z越来越小时,g(z)无限接近于0。

显然,这正符合我们想要的分类方式。

我们再结合线性回归的预测函数 h θ ( x ) = θ T x h_\theta(x)=\theta^Tx hθ(x)=θTx,则逻辑斯蒂回归算法的预测函数如下: r = h θ ( x ) = g ( z ) = g ( θ T x ) = 1 1 + e − θ T x r=h_\theta(x)=g(z)=g(\theta^Tx)=\frac{1}{1+e^{-\theta^Tx}} r=hθ(x)=g(z)=g(θTx)=1+eθTx1

此处求解的是在输入x,参数θ的前提下,y=1的概率,用概率论公式可表示为 h θ ( x ) = P ( y = 1 ∣ x , θ ) h_\theta(x)=P(y=1|x,\theta) hθ(x)=P(y=1∣x,θ)
且必有: P ( y = 1 ∣ x , θ ) + P ( y = 0 ∣ x , θ ) = 1 P(y=1|x,\theta)+P(y=0|x,\theta)=1 P(y=1∣x,θ)+P(y=0∣x,θ)=1

r为正例可能性,1-r是其反例可能性,二者比值 r 1 − r \frac{r}{1-r} 1rr称为“几率”,反映了x作为正例的相对可能性,进一步对几率取对数,则得到“对数几率” l n r 1 − r ln\frac{r}{1-r} ln1rr
在二分类中,这是一个非黑即白的世界

实际上,这是在用线性回归模型的预测结果去逼近真是标记的对数几率,因此成为对数几率回归

对于

算法优点:

  • 直接对分类可能性进行建模,无需事先假设数据分布
  • 可得到近似概率预测
  • 求解的目标函数是任意阶可导凸函数,数学性质very good

1.2、参数估计(如何计算θ)

在训练过程中,算法通过最大化似然函数求解θ。具体来说,似然函数表示的是P(Y|X)的条件概率。统计学家通常使用“最大似然估计”方法来进行参数估计。这种方法就是求解参数W,使得模型的似然函数在已知观测数据下最大。
l n P ( y = 1 ∣ x ) 1 − P ( y = 0 ∣ x ) = θ T x = w x ln\frac{P(y=1|x)}{1-P(y=0|x)} = \theta^Tx=wx ln1P(y=0∣x)P(y=1∣x)=θTx=wx

也就是说,在逻辑回归中,输出y=1的对数几率是输入x的线性函数
显然有, P ( y = 1 ∣ x ) = e θ T x 1 + e θ T x P ( y = 0 ∣ x ) = 1 1 + e θ T x P(y=1|x)=\frac{e^{\theta^Tx}}{1+e^{\theta^Tx}}\\P(y=0|x)=\frac{1}{1+e^{\theta^Tx}} P(y=1∣x)=1+eθTxeθTxP(y=0∣x)=1+eθTx1

设: P ( y = 1 ∣ x ) = π ( x ) , P ( y = 0 ∣ x ) = 1 − π ( x ) P(y=1|x)=\pi(x), P(y=0|x)=1-\pi(x) P(y=1∣x)=π(x),P(y=0∣x)=1π(x)
于是可以通过极大似然估计来估计模型参数,似然函数为
∏ i = 1 n [ π ( x i ) ] y i [ 1 − π ( x ) ] 1 − y i \prod_{i=1}^n[\pi(x_i)]^{y^i}[1-\pi(x)]^{1-y^i} i=1n[π(xi)]yi[1π(x)]1yi
对数似然函数为 L ( w ) = ∑ i = 1 n [ y i l o g π ( x i ) + ( 1 − y i ) l o g ( 1 − π ( x ) ) ] L(w)=\sum_{i=1}^n[y_ilog\pi(x_i)+(1-y_i)log(1-\pi(x))] L(w)=i=1n[yilogπ(xi)+(1yi)log(1π(x))]

  • 成本函数(所有样本的成本平均值):- 1 n L ( w ) \frac{1}{n}L(w) n1L(w)

L ( w ) 求极值,便可得到 w 的估计值,问题也就变成了第一对数似然函数为目标的最优化问题 L(w)求极值,便可得到w的估计值,问题也就变成了第一对数似然函数为目标的最优化问题 L(w)求极值,便可得到w的估计值,问题也就变成了第一对数似然函数为目标的最优化问题

二、模型优化

2.1、梯度下降算法、

根据梯度下降算法定义,可以得到
θ j = θ j − α ∂ J ( θ ) ∂ θ j \theta_j=\theta_j-\alpha\frac{\partial J(\theta)}{\partial \theta_j} θj=θjαθjJ(θ)
此处关键是求成本函数的偏导数,最终得到梯度下降算法公式
θ j = θ j − α 1 m ∑ i = 1 m ( ( h ( x i ) − y i ) x j i ) \theta_j= \theta_j-\alpha\frac{1}{m}\sum_{i=1}^m ((h(x^i)-y^i)x_j^i) θj=θjαm1i=1m((h(xi)yi)xji)

注意此处的形式和线性回归算法的参数迭代公式是一样的,但数值计算方法完全不同
逻辑: h θ ( x ) = 1 1 + e − θ T x h_\theta(x)=\frac{1}{1+e^{-\theta^Tx}} hθ(x)=1+eθTx1
线性: h θ ( x ) = θ T x h_\theta(x)=\theta^Tx hθ(x)=θTx

*除了梯度下降算法之外,还有拟牛顿法等都可以求得其最优解

三、多元分类

逻辑回归可以解决二分类问题,那如果需要分类的超过了两个类别呢?显然也是也以应对的。

假设总共有n+1个类别,y={0,1,2,3,…,n},思路是转化为二元分类

  • 类别一:0,类别二:1~n,分别计算概率;
  • 类别一:1,类别二:0,2~n,再分别计算概率;
  • 类别一:n,类别二:0~n-1,再分别计算概率。

由此可见,总共需要n+1个预测函数,分别计算P(y=0|x,θ),…,P(y=n|x,θ)

  • 最后预测值: p r e d i c t i o n = m a x i ( h θ ( i ) ( x ) ) prediction=max_i(h_\theta^{(i)}(x)) prediction=maxi(hθ(i)(x))

预测出概率最高的哪个类别,就是样本所属类别

四、正则化

  • 采用正则化可以用来解决模型过拟合问题
  • 保留所有的特征,减少特征的权重 θ j \theta_j θj的值,确保所有的特征对预测值都有少量的贡献。
    当每个特征Xi对预测值Y都有少量的贡献时,这样的模型可以良好的工作,这就是正则化的目的。

五、算法实战

Logistic回归算法实战可参考该博客:《机器学习实战》第五章 Python3代码-(亲自修改测试可成功运行)

以上就是关于逻辑回归的分享,若有不妥之处,欢迎各路大佬不吝赐教~

喜欢的伙伴记得点个赞关注一下吧~

这篇关于机器学习算法系列(三)-- 逻辑回归(对数几率回归)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/410599

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

康拓展开(hash算法中会用到)

康拓展开是一个全排列到一个自然数的双射(也就是某个全排列与某个自然数一一对应) 公式: X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[1]*0! 其中,a[i]为整数,并且0<=a[i]<i,1<=i<=n。(a[i]在不同应用中的含义不同); 典型应用: 计算当前排列在所有由小到大全排列中的顺序,也就是说求当前排列是第

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

【数据结构】——原来排序算法搞懂这些就行,轻松拿捏

前言:快速排序的实现最重要的是找基准值,下面让我们来了解如何实现找基准值 基准值的注释:在快排的过程中,每一次我们要取一个元素作为枢纽值,以这个数字来将序列划分为两部分。 在此我们采用三数取中法,也就是取左端、中间、右端三个数,然后进行排序,将中间数作为枢纽值。 快速排序实现主框架: //快速排序 void QuickSort(int* arr, int left, int rig