Python机器学习之Logistic回归梯度下降算法实例(批量/随机)


321
321 2023-02-17 10:22:52 52346
分类专栏: 资讯

前言

Logistic回归是解决分类问题的模型,同线性回归形似但从根本上来说还是有很大区别的。在Logistic回归求最小值的时候我们使用的方法是梯度下降算法,上一篇理论性的文章中我们没有给出具体的代码,下面我们就Logistic回归利用两种梯度下降算法(随机梯度下降BGD,批量梯度下降)。

数据集介绍

首先,我们介绍一下本文中用到的数据集。该数据集是一个二分类数据集,其lable就是1和0,该数据集的特征值有两列,下面是该数据集的部分截图:

Python机器学习之Logistic回归梯度下降算法实例(批量/随机)

该数据集的特征值是线性的,标记lable是分类别的,满足了非线性回归的基本要求,可以直接建立Logistic回归模型。

数据集下载:[Downlink href='/wp-content/uploads/file/20170824/1503555357371702.txt']点击下载[/Downlink]

读取数据

 

上面的代码中,我们从test.txt中读取了我们的数据集,这里需要注意的是我们的数据第1列是我们自己定义的浮点数1.0,这个代表x的0次项,为什么设置为1呢?我们回想一下我们的Logistic回归方程,如下:

观察方程发现,方程中没有常数项哎,哦,这就明白了吧,我们设置的1正好可以将该方程的第一项设置为常数项,妙啊。

批量梯度下降算法(BGD)

梯度下降算法的理论我们在上一篇文章中已经说过了,这里直接上代码了,看不懂的可以结合前面的理论知识看。

 

批量梯度下降算法的批量的意思我们在上篇文章中提过了,批量的意思在这里是指扫描完全部的数据后再更新参数,这里主要体现在倒数第二行更新参数那,我们可以看到,我们将dataMatrix中的数据全部都点乘了error,最后更新theta参数。而随机梯度下降算法稍有不同,我们每次计算都是使用一个实例,每一个实例更新一次参数。下面给出随机梯度下降算法的程序实现。

随机梯度下降算法(SGD)

 

随机梯度下降算法中,关键在于随机二字,每次循环都产生一个随机的索引,这一点可以减小训练过程中噪点对参数的影响致使参数上下波动。

训练Logistic回归模型

下面我们将使用前面数据来训练Logistic回归方程的参数,下面的代码紧接着上面的代码,代码如下:

 

上面的预测函数我为了同时适应SGD和BGD所以就简单的写了,传入的theta是个二维数组,是m*1的形状。 因为预测出来的数据都是小数,所以我们这里使用了np.round()函数将所有的数据进行了四舍五入的运算。在最打印了一下预测报告,报告如下:

上面的建模中我们使用的学习率是0.001,训练迭代次数是1000次,这两个参数是我随便取的,没有经过调优,不过准确率已经是挺高的了。

全部代码

 

补充(梯度上升算法)

梯度下降算法在线性回归和非线性回归中的计算公式是不一样到的,这里我们所有程序都是适用于Logistic非线性回归的,线性回归的梯度下降算法我们并没有给出。这一点需要注意,切不可将二者混用。

梯度下降从功能上是有两种的,一种是梯度下降算法,另一种是梯度上升算法,前者用来计算最小值,后者用来计算最大值,不过有时候求最大值的问题可以转化为求最小值的问题,一个负号的问题而已,但是在编程的时候也是需要注意的。其实二者的公式根本上就是一个,只要将梯度下降算法中最后更新参数的公式中的减变换成加号就可以了,当然,不要忘记括号里的参数要交换位置。下面给出随机梯度上升的更新参数公式,批量梯度上升公式可以根据这个自己推算。

结束语

回归问题中最重要的就是确定合适的参数,如何确定合适的参数有多种方式,而寻找一种合适的算法则是最重要的。上文中的代码均参考《Python机器学习实战》这本书,书上讲的还是比较清楚的,强烈建议看一下这本书。另外,本文中的代码均未优化和严格测试,若发现问题还请指正。

网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。

本文链接:https://www.xckfsq.com/news/show.html?id=19876
赞同 0
评论 0 条
321L0
粉丝 0 发表 9 + 关注 私信
上周热门
如何使用 StarRocks 管理和优化数据湖中的数据?  2959
【软件正版化】软件正版化工作要点  2878
统信UOS试玩黑神话:悟空  2843
信刻光盘安全隔离与信息交换系统  2737
镜舟科技与中启乘数科技达成战略合作,共筑数据服务新生态  1270
grub引导程序无法找到指定设备和分区  1235
华为全联接大会2024丨软通动力分论坛精彩议程抢先看!  165
点击报名 | 京东2025校招进校行程预告  164
2024海洋能源产业融合发展论坛暨博览会同期活动-海洋能源与数字化智能化论坛成功举办  163
华为纯血鸿蒙正式版9月底见!但Mate 70的内情还得接着挖...  159
本周热议
我的信创开放社区兼职赚钱历程 40
今天你签到了吗? 27
信创开放社区邀请他人注册的具体步骤如下 15
如何玩转信创开放社区—从小白进阶到专家 15
方德桌面操作系统 14
我有15积分有什么用? 13
用抖音玩法闯信创开放社区——用平台宣传企业产品服务 13
如何让你先人一步获得悬赏问题信息?(创作者必看) 12
2024中国信创产业发展大会暨中国信息科技创新与应用博览会 9
中央国家机关政府采购中心:应当将CPU、操作系统符合安全可靠测评要求纳入采购需求 8

加入交流群

请使用微信扫一扫!