《机器学习实战》中Logistic回归几个算法的解析

《机器学习实战》第五章《Logistic回归》中讲到了梯度上升法,随机梯度上升法和改进的随机梯度上升法,下面把这几个算法思想总结一下。

首先,梯度上升法比较简单,根据梯度上升的迭代公式计算出了回归系数。

书中并没有采取最小二乘法之类的规则来作为迭代终止的条件,而是直接指定maxCycles最大循环次数来作为迭代终止条件。

  1. 假设回归系数初始值为全1,与数据矩阵做乘法并带入sigmoid函数得到介于0~1之间的估计值,这个估计值并不是一个数值,而是一个列向量
  2. 估计值与实际值相减求误差
  3. 将误差带入回归系数迭代公式更新回归系数
  4. 用新的回归系数重复第1步的操作直至达到预设迭代次数

这个算法存在两个待改进的地方:一是前面提到的终止条件;二是每次回归系数与数据矩阵做乘法计算量比较大,不适用于大数据量场景

针对第二个不足,书中又给出了随机梯度上升算法,与梯度上升法思想类似,只是每次不再做回归系数与数据矩阵的乘法,而是顺序提取数据矩阵中的一行与回归系数做向量乘法得到一个数值,而不是矩阵来更新回归系数,从而减小了计算量。

那么问题来了,这样做在整个数据集上迭代次数少了,拟合效果不好。自然想到要增加迭代次数,通过观察效果发现存在两个问题,一是回归系数需要更多的次数才能趋于稳定值,二是遇到非线性可分的数据集会存在迭代系数来回波动的现象。

针对这些问题,书中又提出了改进的随机梯度上升算法,从仿真结果来看收敛速度确实得到了改善,但缺乏严格的数学证明。改进主要在2个地方,一是改变了每次迭代的步长;二是随机而非顺序抽取数据矩阵的一行来迭代回归系统,这样就保障了小计算量,又避免了非线性数据样本点引起的振荡。

时间: 2024-10-24 17:52:11

《机器学习实战》中Logistic回归几个算法的解析的相关文章

《机器学习实战》Logistic回归算法(1)

===================================================================== <机器学习实战>系列博客是博主阅读<机器学习实战>这本书的笔记也包含一些其他python实现的机器学习算法 算法实现均采用python github 源码同步:https://github.com/Thinkgamer/Machine-Learning-With-Python ==================================

机器学习实战精读--------logistic回归

Logistic回归的主要目的:寻找一个非线性函数sigmod最佳的拟合参数 拟合.插值和逼近是数值分析的三大工具 回归:对一直公式的位置参数进行估计 拟合:把平面上的一些系列点,用一条光滑曲线连接起来 logistic主要思想:根据现有数据对分类边界线建立回归公式.以此进行分类 sigmoid函数:在神经网络中它是所谓的激励函数.当输入大于0时,输出趋向于1,输入小于0时,输出趋向0,输入为0时,输出为0.5 梯度上升:要找到某个函数的最大值,最好的方法是沿着该函数的梯度方向探寻 收敛:随着迭

机器学习实战之Logistic回归

Logistic回归一.概述 1. Logistic Regression 1.1 线性回归 1.2 Sigmoid函数 1.3 逻辑回归 1.4 LR 与线性回归的区别 2. LR的损失函数 3. LR 正则化 3.1 L1 正则化 3.2 L2 正则化 3.3 L1正则化和L2正则化的区别 4. RL 损失函数求解 4.1 基于对数似然损失函数 4.2 基于极大似然估计 二. 梯度下降法 1. 梯度 2. 梯度下降的直观解释 3. 梯度下降的详细算法 3.1 梯度下降法的代数方式描述 3.2

机器学习实战:Logistic回归

第一眼看到逻辑回归(Logistic Regression)这个词时,脑海中没有任何概念,读了几页后,发现这非常类似于神经网络中单个神经元的分类方法. 书中逻辑回归的思想是用一个超平面将数据集分为两部分,这两部分分别位于超平面的两边,且属于两个不同类别(和SVM的想法有些相似),如下图: 因此,一般的逻辑回归只能处理两分类问题,同时两个类别必须是线性可分的.对于线性不可分问题,在SVM中,可以使用核函数升维的方式解决,不过那都是后话了.还是先看看逻辑回归吧. 一.Sigmoid函数 了解神经网络

机器学习实战 logistic回归

logistic回归 梯度上升法 import numpy as np """ function: 加载数据 parameter: 无 returns: dataMat - 数据集 labelMat - 标签集 """ def loadDataSet(): dataMat = []#数据集 labelMat = []#标签集 fr = open('testSet.txt') for line in fr.readlines(): lineArr

机器学习(4)之Logistic回归

机器学习(4)之Logistic回归 1. 算法推导 与之前学过的梯度下降等不同,Logistic回归是一类分类问题,而前者是回归问题.回归问题中,尝试预测的变量y是连续的变量,而在分类问题中,y是一组离散的,比如y只能取{0,1}. 假设一组样本为这样如图所示,如果需要用线性回归来拟合这些样本,匹配效果会很不好.对于这种y值只有{0,1}这种情况的,可以使用分类方法进行. 假设,且使得 其中定义Logistic函数(又名sigmoid函数): 下图是Logistic函数g(z)的分布曲线,当z

《机器学习实战》之K-均值聚类算法的python实现

<机器学习实战>之K-均值聚类算法的python实现 最近的项目是关于"基于数据挖掘的电路故障分析",项目基本上都是师兄们在做,我只是在研究关于项目中用到的如下几种算法:二分均值聚类.最近邻分类.基于规则的分类器以及支持向量机.基于项目的保密性(其实也没有什么保密的,但是怕以后老板看到我写的这篇博文,所以,你懂的),这里就不介绍"基于数据挖掘的电路故障分析"的思路了. 废话不多说了,开始正题哈. 基本K-均值聚类算法 基本K均值算法的基本思路为:首先选择

机器学习与数据挖掘-logistic回归及手写识别实例的实现

本文主要介绍logistic回归相关知识点和一个手写识别的例子实现 一.logistic回归介绍: logistic回归算法很简单,这里简单介绍一下: 1.和线性回归做一个简单的对比 下图就是一个简单的线性回归实例,简单一点就是一个线性方程表示 (就是用来描述自变量和因变量已经偏差的方程) 2.logistic回归 可以看到下图,很难找到一条线性方程能将他们很好的分开.这里也需要用到logistic回归来处理了. logistic回归本质上是线性回归,只是在特征到结果的映射中加入了一层函数映射,

【机器学习基础】Logistic回归基础

soft binary classification Logistics回归模型要解决的是分类问题,在之前的二元分类问题中,我们将数据分成正例和负例,但是像PLA算法一样,用单位阶跃函数来处理的这种瞬间跳跃的过程有时很难处理.于是,我们希望能得到正例的概率值是多少. logistic regression的假设 我们在PLA和线性回归算法中都用数据的加权来计算一个分数s,在logistic回归中,我们用sigmoid函数来将这个分数s转化成0到1的概率值. 所以,用下面的h(x)来表示一个假设,