机器学习:logistic回归

逻辑回归是一个形式是Y=1/(1+E(-X))的函数,它的特点是:

1, 当X>0,随着X增大,Y很快的接近1;

2,当x<0,随着X的减小,Y很快的接近0;

3,当X=0时,Y=1/2。

由于逻辑回归的这种特性(在0-1之间连续),它被用来判断一个学习算法是否正确。

除了正确和不正确的结果之外,使用逻辑回归的好处在于,它还能告诉你,你离正确的结果还差多少,从而引导你向正确的方向前进。因此它常常和梯度上升的算法结合起来。下面的代码体现了这样的例子:


输入参数1是100行,2列的矩阵;

输入参数2是100行,1列的矩阵,取值都是0或1;

def gradAscent(dataMatIn, classLabels):
   # ?(以下两行)转换为NumPy矩阵数据类型
    dataMatrix = mat(dataMatIn)
    labelMat = mat(classLabels).transpose()
    m,n = shape(dataMatrix)
    alpha = 0.001
    maxCycles = 500
    weights = ones((n,1)) 初始化成(1,1)
    for k in range(maxCycles):
        #?(以下三行)矩阵相乘
        h = sigmoid(dataMatrix*weights)矩阵相乘,得到100行,1列的矩阵,利用逻辑回归把它变成100行1列的矩阵,每个值介于0到1之间,h是对label的一个估计
        error = (labelMat - h)估计与实际值之间差距为error,error也是一个100行1列的矩阵;
        weights = weights + alpha * dataMatrix.transpose()* error后面3项乘的结果是1行2列的矩阵,代表了估算的结果与实际结果是超了还是低了,从而修改weights。
    return weights

由于每次迭代都会导致weights朝labelMat的方向靠近,因此经过500次的循环,最终能得到较好的结果,能很好的确定weights的两个参数。

当然上述代码存在一个问题,它每次循环都要扫描dataMatrix中所有的行,这对大型的数据是不可容忍的,因此,有了另外一种随机梯度上升的算法。它每次只看一行数据,看它的估算与结果的距离,根据距离调整weights。

这个算法仍然存在问题,因为它受每个训练数据影响是一样的,所以可以通过设置,让后面的实例对数据的影响逐渐变小,从而确保学习的快速收连。

如何处理缺失数据是机器学习中的重要课题,它也严重影响逻辑回归的准确性。

----

总之,如果只是要判断一个学习算法是否准确,有无数种方法,为什么一定要选择逻辑回归这个奇怪的函数。我的理解是,逻辑回归函数它能反映出一种方向,能够把“是否正确”转变成“有多么正确或者多么错误”,正因为这个转变,可以让机器不断的向正确的方向前进,最终实现准确的预测。

时间: 2025-01-02 15:21:14

机器学习:logistic回归的相关文章

机器学习&mdash;&mdash;Logistic回归

参考<机器学习实战> 利用Logistic回归进行分类的主要思想: 根据现有数据对分类边界线建立回归公式,以此进行分类. 分类借助的Sigmoid函数: Sigmoid函数图: Sigmoid函数的作用: 将所有特征都乘上一个回归系数,然后将所有结果值相加,将这个总和代入Sigmoid函数中,进而得到一个0-1之间的数值.任何大于0.5的数据被分1类,小于0.5分入0类. 综上,Sigmoid的输入可以记为z: 所以向量w即是我们要通过最优化方法找的系数. w向量的求解: 1).梯度上升法(思

机器学习-logistic回归

logistic回归的主要思想: 已知样本数目为m,特征(feature)数目为n. 给出假设h(X)=g(X*theta) g(z)是sigmiod函数:g(z)=1/(1+exp(-z)) 考虑分类器问题:Y取值为0或1,同样地,h(X)取值为0或1. 则P(y|x;theta)=h(x)^y*(1-h(x))^(1-y) 对其取log得到: 对J求导得到: 利用最大似然函数求解,得到theta和J 注:基于MATLAB,通过设置options=optimset('GradObj','on'

机器学习--Logistic回归算法案例

案例:从疝气病症预测病马的死亡率 准备数据时,数据中的缺失值是个非常棘手的问题.因为有时候数据相当昂贵,扔掉和重新获取都是不可取的,所以必须采用一些方法来解决这个问题. 在预处理阶段需要做两件事:第一,所有的缺失值必须用一个实数值来替换,因为我们使用的NumPy数据类型不允许包含缺失值.这里选择实数0来替换所有缺失值,恰好能适用于Logistic回归.第二,如果在测试数据集中发现了一条数据的类别标签已经缺失,那么我们可以将该条数据丢弃.因为类别标签与特征不同,很难确定采用某个合适的值来替换. 1

机器学习(4)之Logistic回归

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

机器学习(六)— logistic回归

最近一直在看机器学习相关的算法,今天学习logistic回归,在对算法进行了简单分析编程实现之后,通过实例进行验证. 一 logistic概述 个人理解的回归就是发现变量之间的关系,也就是求回归系数,经常用回归来预测目标值.回归和分类同属于监督学习,所不同的是回归的目标变量必须是连续数值型. 今天要学习的logistic回归的主要思想是根据现有的数据对分类边界线建立回归公式,以此进行分类.主要在流行病学中应用较多,比较常用的情形是探索某疾病的危险因素,根据危险因素预测某疾病发生的概率等等.log

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

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

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

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

机器学习 —— 基础整理(五):线性回归;二项Logistic回归;Softmax回归;广义线性模型

本文简单整理了以下内容: (一)线性回归 (二)二分类:二项Logistic回归 (三)多分类:Softmax回归 (四)广义线性模型 二项Logistic回归是我去年入门机器学习时学的第一个模型,我觉得这个模型很适合用来入门(但是必须注意这个模型有很多很多很多很多可以展开的地方).比较有意思的是那时候还不会矩阵微积分,推导梯度时还是把矩阵全都展开求的(牛顿法要用的二阶梯度也是)... 下面的文字中,"Logistic回归"都表示用于二分类的二项Logistic回归. 首先约定一下记号

《机器学习实战》学习笔记:Logistic回归&amp;预测疝气病证的死亡率

前言: 生活中,人们经常会遇到各种最优化问题,比如如何在最短时间从一个地点到另外一个地点?如何在投入最少的资金而却能得到最高的受益?如何设计一款芯片使其功耗最低而性能最好?这一节就要学习一种最优化算法--Logistic回归,设计最优化算法的目的依然是用于分类.在这里,Logistic回归的主要思想是根据现有的数据对分类边界线建立回归公式,达到分类的目的.假设我们有一堆数据,需要划一条线(最佳直线)对其分类,这就是Logistic回归的目的. 而"Logistic回归"中的"

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

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