(手机的颜色,大小,用户体验来加权统计总体的值)极大似然估计MLE

1.Logistic回归

Logistic regression (逻辑回归),是一种分类方法,用于二分类问题(即输出只有两种)。如用于广告预测,也就是根据某广告被用户点击的可能性,把最可能被用户点击的广告摆在用户能看到的地方,结果是用户要么点击要么不点击。

通常两类使用类别标号0和1表示,0表示不发生,1表示发生。

问题引入

例如:有100个手机,其中有30个是你喜欢的,70个是不喜欢的。现预测你对第101个手机的喜好。这是一个两类问题,喜欢与不喜欢。

显然这是一个二分类问题,我们对第101个手机进行预测分类,分为喜欢和不喜欢两个类别。

我们需要对手机取特征(属性),比如价格,外观,用户体验。简单处理,只考虑3个方面(即3个特征)。综合考虑这些因素,并且把这些值进行数字化的表示。数字越大说明越喜欢,越小越不喜欢。

怎么数字化表示这些量呢?

对每部手机对应价格,外观,用户体验都可以给出一个具体的数值。

我们回忆一下贝叶斯分类:

2. Sigmoid 函数

 

3.Sigmoid函数性质

分类性质

回顾我们的后验概率如何分类的,每个可以观测的样本都有属于某类的概率。分类时候选取后验概率大的值进行分类。这里是两分类问题每个样本均可带入P(y=1|x)和P(y=0|x)谁的概率值大,我们就将样本归入某类。

现在分类模型为下边公式,但含有未知量 ,只要求出 就可以对样本,就可以带入样本就行计算,对样本进行分类。

如何求未知参数 ?我们有m个样本,思路是建立一个目标函数,求目标函数极值。极值处的 值,就是我们最优未知参数值。

参数估计

假设分类的概率

上面的概率可以写到一起 (类似二项分布)

m个样本的似然函数为

对数似然函数

使得似然函数值最大?梯度下降(上升)法。

似然函数求导

常规方法时效。故用梯度下降法

Logistic回归中是未知参数 ,目标是求出 。通过构建似然函数,目标使似然函数最大。

回顾我们梯度下降法。

  (J是上边的L函数,手误)问题解决

4.梯度上升法

目标使似然函数最大,我们可以使用梯度上升法进行迭代。

梯度下降法根据样本使用的不同,一次使用所有样本更新参数为批处理梯度下降法。一次只随机使用一个样本来更新参数随机梯度下降法。

同样我们的Logistic回归可以使用批处理梯度上升法和随机梯度上升法。梯度上升法和梯度下降法都是寻找函数的极值,只是搜索方向的不同而已。根据具体函数的性质,进行选择,两者没有本质的不同。

我们容易通过把函数转换成,把极大化问题转换成极小化问题。函数加负号即可。

5.批处理梯度下降法

6.随机梯度下降法

7.代码实现

准备数据,样例数据如下,前两列分别为x1和x2值,第3列为数据的类别,这样的数据有100条。

批处理梯度下降(上升)算法计算最佳回归系数

矩阵为什么要转置?

运行测试

if __name__ == "__main__":

dataMat,classLabels=loadDataSet()

weights=gradAscent(dataMat, classLabels)

plotBestFit(weights.getA())

8.随机梯度下降(上升)法SGD (stochastic gradient descent)

运行测试

if __name__ == "__main__":

dataAttr, labelMat = loadDataSet()

weights = stocGradAscent0(array(dataAttr), labelMat)

plotBestFit(weights)

9.改进的随机梯度下降

运行测试

if __name__ == "__main__":

dataAttr, labelMat = loadDataSet()

weights = stocGradAscent1(array(dataAttr), labelMat)

plotBestFit(weights)

运行结果对比

比较原始的随机梯度下降和改进后的梯度下降,可以看到两点不同:

1)系数不再出现周期性波动。

2)系数可以很快的稳定下来,也就是快速收敛。这里只迭代了20次就收敛了。而上面的随机梯度下降需要迭代200次才能稳定。

(a)梯度下降算法迭代500次。

(b)随机梯度下降算法迭代200次。

(c)改进的随机梯度下降算法迭代20次。

(d)改进的随机梯度下降算法迭代200次。

10.示例:从疝气病症预测病马是否存活

一、处理数据中的缺失值

二、用Logistic回归进行分类

运行测试

if __name__ == "__main__":

multiTest()

11.总结

Logistic 回归(sigmoid函数,手机的评价,梯度上升,批处理梯度,随机梯度,从疝气病症预测病马的死亡率的更多相关文章

  1. 吴裕雄--天生自然python机器学习:使用Logistic回归从疝气病症预测病马的死亡率

    ,除了部分指标主观和难以测量外,该数据还存在一个问题,数据集中有 30%的值是缺失的.下面将首先介绍如何处理数据集中的数据缺失问题,然 后 再 利 用 Logistic回 归 和随机梯度上升算法来预测 ...

  2. Logistic回归Cost函数和J(θ)的推导(二)----梯度下降算法求解最小值

    前言 在上一篇随笔里,我们讲了Logistic回归cost函数的推导过程.接下来的算法求解使用如下的cost函数形式: 简单回顾一下几个变量的含义: 表1 cost函数解释 x(i) 每个样本数据点在 ...

  3. 【Machine Learning in Action --5】逻辑回归(LogisticRegression)从疝气病预测病马的死亡率

    背景:使用Logistic回归来预测患有疝气病的马的存活问题,这里的数据包括368个样本和28个特征,疝气病是描述马胃肠痛的术语,然而,这种病并不一定源自马的胃肠问题,其他问题也可能引发疝气病,该数据 ...

  4. Logistic回归Cost函数和J(θ)的推导----Andrew Ng【machine learning】公开课

    最近翻Peter Harrington的<机器学习实战>,看到Logistic回归那一章有点小的疑问. 作者在简单介绍Logistic回归的原理后,立即给出了梯度上升算法的code:从算法 ...

  5. 批量梯度下降(BGD)、随机梯度下降(SGD)以及小批量梯度下降(MBGD)的理解

      梯度下降法作为机器学习中较常使用的优化算法,其有着三种不同的形式:批量梯度下降(Batch Gradient Descent).随机梯度下降(Stochastic Gradient Descent ...

  6. 1. 批量梯度下降法BGD 2. 随机梯度下降法SGD 3. 小批量梯度下降法MBGD

    排版也是醉了见原文:http://www.cnblogs.com/maybe2030/p/5089753.html 在应用机器学习算法时,我们通常采用梯度下降法来对采用的算法进行训练.其实,常用的梯度 ...

  7. 优化-最小化损失函数的三种主要方法:梯度下降(BGD)、随机梯度下降(SGD)、mini-batch SGD

    优化函数 损失函数 BGD 我们平时说的梯度现将也叫做最速梯度下降,也叫做批量梯度下降(Batch Gradient Descent). 对目标(损失)函数求导 沿导数相反方向移动参数 在梯度下降中, ...

  8. 梯度下降GD,随机梯度下降SGD,小批量梯度下降MBGD

    阅读过程中的其他解释: Batch和miniBatch:(广义)离线和在线的不同

  9. 【机器学习实战】第5章 Logistic回归

    第5章 Logistic回归 Logistic 回归 概述 Logistic 回归虽然名字叫回归,但是它是用来做分类的.其主要思想是: 根据现有数据对分类边界线建立回归公式,以此进行分类. 须知概念 ...

随机推荐

  1. python面向对象基础

    面向对象基础 1. 简述 编程方式: 面向过程: 根据代码在脚本的堆叠顺序,从上到下依次执行 函数式编程:将相同功能的代码封装到函数中,直接调用即可,减少代码重复性 面向对象:对函数进行分类和封装,将 ...

  2. AngularJs $sce 和 $sceDelegate 上下文转义

    $sce $sce 服务是AngularJs提供的一种严格上下文转义服务. 严格的上下文转义服务 严格的上下文转义(SCE)是一种需要在一定的语境中导致AngularJS绑定值被标记为安全使用语境的模 ...

  3. Code笔记 之:防盗链(图片)

    图片防盗链   参考:http://bbs.csdn.net/topics/330080045    应该是”10种图片防盗的方法“,而不是”10种图片防盗链的方法“,不过看搜索防盗链的人要多一点,所 ...

  4. 【Beta版本】冲刺-Day7

    队伍:606notconnected 会议时间:12月15日 目录 一.行与思 二.站立式会议图片 三.燃尽图 四.代码Check-in 一.行与思 张斯巍(433) 今日进展:修改界面,应用图标 明 ...

  5. CSS3的transition动画功能

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  6. 深入JVM-有关String的内存泄漏

    什么是内存泄漏?所谓内存泄漏,就是由于疏忽或错误造成程序未能释放已经不再使用的内存的情况,他并不是说物理内存消失了,而是指由于不再使用的对象占据了内存不被释放,而导致可用内存不断减小,最终有可能导致内 ...

  7. js007-函数表达式

    js007-函数表达式 本章内容 1.函数表达式的特征 2.使用函数实现递归 3.使用闭包定义私有量 定义函数的方式有两种:一:函数声明,二:函数表达式 函数声明: function function ...

  8. 自然语言21_Wordnet

    QQ:231469242 欢迎喜欢nltk朋友交流   http://baike.baidu.com/link?url=YFVbJFMkZO9A5CAvtCoKbI609HxXXSFd8flFG_Lg ...

  9. 《CSS3实战》读书笔记 第2章 层叠样式表(CSS)

    ## 层叠样式表 本章将阐述CSS的基本规则. ### 解构CSS 所谓CSS,由选择器(selector)和声明块(declaration block)组成.再进一步细分,每个声明包括了属性和值. ...

  10. pickle模块简单使用

    import pickle with open("school_info","wb") as school: user_input = str(input(&q ...