Matlab——逻辑回归(原理、代码)

这篇具有很好参考价值的文章主要介绍了Matlab——逻辑回归(原理、代码)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

对于一个机器学习方法,通常由模型、策略和算法3个要素构成。

  • 模型是假设空间的形式,如是线性函数还是条件概率;
  • 策略是判断模型好坏的数学表达式,将学习问题转化为优化问题,一般策略对应一个代价函数(Cost Function);
  • 算法是上述优化问题的求解方法,有多种方法,如梯度下降法、直接求导、遗传算法等。

目录

1 逻辑回归原理

2 Sigmoid函数 

3 逻辑回归理论公式推导 

4 逻辑回归算法的改进——正则化 

5 Matlab实践


1 逻辑回归原理

逻辑回归是一种广义的线性模型。虽然被称为回归,但在实际应用中常被用作分类,用于估计某个事件发生的概率。例如某用户购买商品的可能性,某病人患有某种疾病的可能性,某广告被用户点击的可能性等。

  • 首先基于线性模型。若为了解决分类问题,需要把线性模型的输出做一个变换,利用Sigmoid函数,将实数域的输出映射到(0,1)区间,为输出提供了很好的概率解释。
  • 其次策略方面,采用了交叉熵损失函数;
  • 第三算法方面,为了最小化损失函数,采用了梯度下降方法。

2 Sigmoid函数 

Matlab——逻辑回归(原理、代码)

3 逻辑回归理论公式推导 

——模型 

Matlab——逻辑回归(原理、代码)

其中p(y|x;w)是0-1分布(伯努利分布)。 

——策略(定义损失函数)

求解w,定义一个指标衡量w的表现,即代价函数,利用最大似然法。

Matlab——逻辑回归(原理、代码)

了衡量算法在全部训练样本上的表现如何,我们需要定义一个算法的代价函数,算法的代价函数是对𝑚个样本的损失函数求和然后除以𝑚(一般文献中)

——算法(梯度下降法)

Matlab——逻辑回归(原理、代码)

α为迭代步长,为假设集在第 i 个样本处的取值,为真实的标签值。

Matlab——逻辑回归(原理、代码)

Matlab——逻辑回归(原理、代码)

4 逻辑回归算法的改进——正则化 

正则化,减少模型复杂度的一个方法。一般通过在目标函数上增加一个惩罚项。 

Matlab——逻辑回归(原理、代码)

这里是岭回归(Ridge Regression),对范数求导,得到梯度变化为:

一般通过把系数消掉。

也将L2正则称为权重衰减。

5 Matlab实践

建模车辆里程数测试中出现问题的比例和车重量之间的关系。观测值包括车重、车的数量和损失的数量。

假设车辆损失数应该服从二项分布,最简单的想法是P(概率)和重量呈线性关系。

%% 原始数据
%一系列不同重量的车
weight = [2100 2300 2500 2700 2900 3100 3300 3500 3700 3900 4100 4300]';
%各个重量类型的车的数目
tested = [48 42 31 34 31 21 23 23 21 16 17 21]';
%每个重量的车辆在测试中fail掉的数目
failed = [1 2 0 3 8 8 14 17 19 15 17 21]';
%故障率
proportion = failed ./ tested;
figure(1)
plot(weight,proportion,'s')
xlabel('重量');ylabel('比例');
Matlab——逻辑回归(原理、代码)
散点数据
%% 线性拟合
%ployfit(x,y,n)执行多项式拟合,n代表多项式阶数,当n=1时,表示线性关系,返回多项式系数
linearCoef = polyfit(weight,proportion,1)
%value = ployval(p,x)返回多项式的值,p是多项式系数,降序排列
linearFit = polyval(linearCoef,weight);
figure(2)
line2 = plot(weight,proportion,'s',weight,linearFit,'r-',[2000 4500],[0 0],'k:',[2000 4500],[1,1],'k:');
xlabel('重量');ylabel('比例');
set(gcf,'Position',[100 100 350 280]);
set(gca,'FontSize',9);
set(line2,'LineWidth',1.5)
Matlab——逻辑回归(原理、代码)
线性拟合

使用上述模型线性拟合,存在两个问题:

  • 线性拟合会出现比例小于0或大于1的情况,而概率只能是[0,1]区间的数;
  • 比例值不是正态分布的,违背了线性回归模型的假设条件。

下面使用高阶多项式看是否解决这些问题。

%% 多项式拟合
%区别在于这里选用3阶多项式,返回的stats是一个结构体,作为polyval函数的输入
%可用于误差估计,ctr包含了均值和方差,可用于对输入x归一化
[cubicCoef,stats,ctr] = polyfit(weight,proportion,3)
cubicFit = polyval(cubicCoef,weight,[ ],ctr); %利用归一化的weight进行多项式拟合
figure(3)
line = plot(weight,proportion,'s',weight,cubicFit,'r-',[2000 4500],[0 0],'k:',[2000 4500],[1,1],'k:');
xlabel('重量');ylabel('比例');
set(gcf,'Position',[100 100 350 280]);
set(gca,'FontSize',9);
set(line,'LineWidth',1.5)
Matlab——逻辑回归(原理、代码)
多项式拟合

此模型仍存在问题。

  • 当车辆重量超过4000时,比例开始下降,当重量继续增加时,比例可能下降到0以下。
  • 正态分布的假设依然不合理。

利用glmfit拟合一个Logistic回归模型,其优于线性回归模型的两点:

  • Logistic回归中的Sigmoid函数将输出值限制在[0,1]之间,符合此例问题情况;
  • Logistic回归采用的拟合方法适用于二项分布。 
%% glmfit拟合
% 在glmfit中一般response是一个列向量,但是当分布是二项分布时,y可以是一个二值向量,
% 表示单次观测中成功还是失败,也可以是一个两列的矩阵,第一列表示成功的次数(目标出现的次数),
% 第二列表示总共的观测次数,因此这里y=[failed,tested]
% 另外指定distri='binomal',link='logit'
[logitCoef1,dev1] = glmfit(weight,[failed tested],'binomial','logit');
% glmval用于测试拟合的模型,计算出估计的y值
logitFit = glmval(logitCoef1,weight,'logit');
figure(4)
line3 = plot(weight,proportion,'bs',weight,logitFit,'r-');
xlabel('重量');ylabel('比例');
set(gcf,'Position',[100 100 350 280]);
set(gca,'FontSize',9);
set(line3,'LineWidth',1.5)
legend('数据','logistics回归')
Matlab——逻辑回归(原理、代码)
Logistics回归

上述主要利用广义线性模型实现Logistic回归。

当重量太小或太大时,故障率要么无限接近0,要么无限接近1,且曲线很好地刻画了数据点的分布,故而为一个合理的模型。

下面进行预测。 

%% 预测
[logitCoef,dev,stats] = glmfit(weight,[failed tested],'binomial','logit');
normplot(stats.residp);
weightPred = 2500:500:4000;
% dlo和dhi是置信区间的下限和上限
[failedPred,dlo,dhi] = glmval(logitCoef,weightPred,'logit',stats,0.95,100);
figure(5)
line = errorbar(weightPred,failedPred,dlo,dhi,'r:');
Matlab——逻辑回归(原理、代码)
预测误差图

当车的重量为3000时,测试中出现故障的车辆数约为30.2辆,

有95%的概率会有(30.2-7.3,30.2+8.4)辆车出现故障。


Python参考:

机器学习练习2-逻辑回归_YukinoPon的博客-CSDN博客

https://www.cnblogs.com/Qiao-Q/p/16837426.html

sklearn-逻辑回归_sklearn逻辑回归_CHEN的小喵的博客-CSDN博客文章来源地址https://www.toymoban.com/news/detail-425360.html

到了这里,关于Matlab——逻辑回归(原理、代码)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 逻辑回归(Logistic Regression)原理(理论篇)

    目录 一、逻辑回归简介及应用 二、逻辑回归的原理 (1)sigmoid函数 (2)输入和输出形式  (3)基于目标函数求解参数w 三、逻辑回归代码复现         logistic回归又称logistic回归分析,是一种广义的线性回归分析模型,常用于数据挖掘,疾病自动诊断,经济预测等领域。例

    2024年02月13日
    浏览(48)
  • 机器学习-逻辑回归:从技术原理到案例实战

    在本篇文章中,我们对逻辑回归这一经典的机器学习算法进行了全面而深入的探讨。从基础概念、数学原理,到使用Python和PyTorch进行的实战应用,本文旨在从多个角度展示逻辑回归的内在机制和实用性。 关注TechLead,分享AI全维度知识。作者拥有10+年互联网服务架构、AI产品

    2024年02月05日
    浏览(40)
  • 逻辑回归揭秘: 从分类原理到机器学习实践

    逻辑回归 (Logistic Regression) 尽管名字中带有 “回归” 两个字, 但主要是用来解决分类问题, 尤其是二分类问题. 逻辑回归的核心思想是: 通过将线性回归的输出传递给一个激活函数 (Activation Function) 比如 Sigmoid 函数) 将连续值转化为 0 到 1 之间的概率值, 在根据阈值 (Threshold) 对概

    2024年02月02日
    浏览(45)
  • 机器学习:逻辑回归模型算法原理(附案例实战)

    作者:i阿极 作者简介:Python领域新星作者、多项比赛获奖者:博主个人首页 😊😊😊如果觉得文章不错或能帮助到你学习,可以点赞👍收藏📁评论📒+关注哦!👍👍👍 📜📜📜如果有小伙伴需要数据集和学习交流,文章下方有交流学习区!一起学习进步!💪 订阅专栏案

    2024年01月20日
    浏览(46)
  • Logistic回归(逻辑回归)及python代码实现

    在模式识别问题中,所关心的量是分类,比如是否会患有某种疾病,这时就不能用简单的线性回归来完成这个问题了。为了解决次问题,我们引入了非线性激活函数 g : R D → ( 0 , 1 ) g:{mathbb R}^Dto(0,1) g : R D → ( 0 , 1 ) 来预测类别标签的后验概率 p ( y = 1 ∣ x ) p(y=1|bf x) p ( y =

    2024年02月07日
    浏览(41)
  • 【机器学习300问】16、逻辑回归模型实现分类的原理?

            在上一篇文章中,我初步介绍了什么是逻辑回归模型,从它能解决什么问题开始介绍,并讲到了它长什么样子的。如果有需要的小伙伴可以回顾一下,链接我放在下面啦:                              【机器学习300问】15、什么是逻辑回归模型?     

    2024年01月25日
    浏览(55)
  • 机器学习:基于梯度下降算法的逻辑回归实现和原理解析

    当涉及到二元分类问题时,逻辑回归是一种常用的机器学习算法。它不仅简单而且有效,通常是入门机器学习领域的第一步。本文将介绍逻辑回归的基本概念、原理、应用场景和代码示例。 逻辑回归是一种用于解决二元分类问题的统计学习方法。尽管其名称中包含\\\"回归\\\"一词

    2024年02月09日
    浏览(51)
  • 机械学习模型训练常用代码(随机森林、聚类、逻辑回归、svm、线性回归、lasso回归,岭回归)

    更多pandas操作请参考添加链接描述pandas对于文件数据基本操作 导入的包sklearn 字符串编码处理,LabelEncoder TfidfVectorizer结合TruncatedSVD 排除某一列,例如 如果需要用到回归则换成RandomForestRegressor 数据在dc_matrix里面 绘制距离 #加入到表里面 师范,保存文本模型,使用其转换,调

    2023年04月14日
    浏览(47)
  • 机器学习之线性回归与逻辑回归【完整房价预测和鸢尾花分类代码解释】

    目录 前言 一、什么是线性回归 二、什么是逻辑回归 三、基于Python 和 Scikit-learn 库实现线性回归 示例代码:  使用线性回归来预测房价: 四、基于Python 和 Scikit-learn 库实现逻辑回归 五、总结  线性回归的优缺点总结: 逻辑回归(Logistic Regression)是一种常用的分类算法,具有

    2024年04月13日
    浏览(43)
  • 【AI底层逻辑】——“数学华尔兹”之一元线性回归(代码实测)

    目录 一、一元线性回归代码实测 二、统计量分析 1、statsmodels库 2、计算各种统计量 3、F检验、t检验 4、置信区间、预测区间 5、残差正态检验 6、自相关检测 ①导入相关模块 首先导入必要的模块,这里主要使用了 Python的sklearn库里自带的丰富算法模块 !具体每个库的功能可

    2024年02月03日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包