美文网首页我爱编程
关于回归的机器学习算法

关于回归的机器学习算法

作者: 天国的邮递员_ | 来源:发表于2018-03-17 16:49 被阅读0次

因为最近要组队参加华为的精英赛(实际上就是当炮灰),在建造模型的时候需要先用Logistic回归构造一个模型,所以先学习一下相关算法。主要参考的是图灵系列丛书的《机器学习实战》这本书。

Logistic回归

优点在于易实现,代价小,缺点在于容易欠拟合,分类精度不高。基于比赛题目的初步推荐,先试用一下。

一般来说,我们需要获得一个Sigmoid函数z,z = w0x0 + w1x1 +w2x2 + ... + wnxn,其中x0,x1,..,xn是分类器的输入数据,一般就是我们的提取特征。而我们需要训练处最佳的参数wi,以使得分类器尽可能准确。

梯度上升or梯度下降

实际上,这两者的区别仅在于一个求最大值,一个求最小值。

使用Logistic回归梯度算法,首先得明白损失函数,实际上就是一次迭代结果和真实值的差距,一般普遍采用最小二乘法。这一点,吴恩达教授的cs229有比较详细的推导。

具体代码如下:

第一个模块loaddata主要是数据处理,将数据分割为特征以及标记集。(这里增加了一个新的特征,这是对于回归曲线常数项的假设)

第二个模块sigmoid是sigmoid函数

第三个模块gradAscent就是梯度上升算法的模块,主要在于矩阵的运算规则遵守,实际上就是根据算法原理编写。

最后经过设定的500次训练,得到我们需要的系数矩阵。

梯度上升法拟合曲线图

应用python的matplotlib库,我们讲预测的曲线和样本进行对比,只有三个样本分类错误,效果还是比较满意。

ps:我们之前生成的weights是一个matrix,将其中的数作为曲线系数的时候,我们采用了.tolist()功能。

随机梯度上升

之前使用的梯度上升算法在每次更新的时候都会遍历整个数据集,在数据量比较大的时候算法的计算复杂度比较高。因此改进的方法就是仅用一个样本点来更新回归系数,这就是随机梯度上升算法。因为对于新样本的到来可以对分类器进行增量式更新,所以它是一个在线学习算法,对应的一次处理所有数据我们称为“批处理”。

随机梯度上升法,简称为sgd算法,相比于梯度上升法,它每次计算回归系数只用样本中的一个样本,因此相比于上代码的矩阵转换,这里用的都是numpy数组。

ps:这里使用的numpy数组和之前的矩阵运算略有不同,要理解的numpy的两种数据结构

代码如下:

经过训练,随机梯度算法的最佳拟合曲线如图:

随机梯度算法的拟合曲线图

可以看出,分类效果不如梯度上升法,但是梯度上升法确是迭代了500次的结果。

接下来对随机梯度算法进行改进:

主要在于两步:

第一步,对于alpha的改变,使其不再固定,而是随着迭代次数的增加而减小,这里我们设置alpha = 4/(1+j+i)+0.01

第二步,选取样本随机,这样可以避免对于迭代中出现的固定周期的波动,每次随机选择样本后,在该次全样本集中删除该样本

代码如下:

最终拟合曲线:

改进的随机梯度上升算法的拟合曲线图

至此,理论的Logistic回归算法基本结束。

相关文章

  • 机器学习算法的优缺点

    机器学习算法的优缺点 机器学习算法的优缺点 线性回归 Linear Regression 逻辑回归 Logisti...

  • 《机器学习(周志华)》学习笔记(三)

    Q:机器学习中最简单的学习算法是什么? A:最简单的机器学习算法莫过于线性回归算法了。线性回归算法的基本形式如下:...

  • 2019-10-29

    Day2 简单线性回归模型 机器学习入门--简单线性回归机器学习算法之线性回归算法 导入库matplotlib 绘...

  • 回归算法学习

    回归算法是机器学习中的经典算法之一,本文是对学习线性回归和逻辑回归算法进行的总结,线性回归与逻辑回归算法解决的分别...

  • Python编写线性回归算法

    Python编写线性回归算法 前言 线性回归(Linear Regression)是机器学习的基础,作为机器学习算...

  • 关于回归的机器学习算法

    因为最近要组队参加华为的精英赛(实际上就是当炮灰),在建造模型的时候需要先用Logistic回归构造一个模型,所以...

  • 线性回归

    线性回归是机器学习中最基础最简单的回归算法了,现在关于线性回归的原理做一个总结。 关于线性的概念,其实在高中就有了...

  • 机器学习预测乳腺癌良恶性(1)(逻辑回归)

    逻辑回归算法思想:逻辑回归(LogisticRegression)是当前机器学习算法比较常用的方法,可以用来回归分...

  • 传统机器学习算法(一)

    本章节主要介绍机器学习传统算法的监督学习部分。监督学习算法主要解决回归和分类两大问题。只能做回归的算法是线性回归,...

  • 10分钟快速入门PyTorch (3)

    前面两节讲了最基本的机器学习算法,线性回归和logistic回归,这一节将介绍传统机器学习里面最后一个算法-神经网...

网友评论

    本文标题:关于回归的机器学习算法

    本文链接:https://www.haomeiwen.com/subject/guwrqftx.html