Mahout学习算法训练模型
mahout提供了许多分类算法,但许多被设计来处理非常大的数据集,因此可能会有点麻烦。另一方面,有些很容易上手,因为,虽然依然可扩展性,它们具有低开销小的数据集。这样一个低开销的方法是随机梯度下降(SGD)算法,Logistic回归。该算法是一个连续的(非平行)的算法,但它的速度快,因为在概念图中图13.9所示。最重要的处理大型数据,SGD算法采用恒定的内存量不管输入的大小。
 
这里的输出包含特别感兴趣的两个值。首先,AUC值(一种广泛使用的模型的质量度量)曲线下面积的缩写有一个值0.57。 AUC的范围可以从一个完全不正当的模型总是完全0错误的一个模型,1.0这是一个完美的模型,该模型比随机更好。这里的值0.57表示了一个模型,几乎没有比随机更好。
 
要明白为什么这个模型如此糟糕的表现,你可以看一下一片混乱矩阵线索。混淆矩阵是一个比较实际的结果与表期望的结果。所有的例子在默认得分阈值0.5被列为被填补。这允许分类器是正确的三分之二的时间(27/40),但它只能管理是正确的标记一切填补。这模型多的时间得到正确的答案,但唯一的方式,停止的时钟是正确的,一天两次。注意与其它测量工具,混淆矩阵在第15章中更详细地描述。
 
发展在上一节的例子,你已经投入使用,你学到了什么本章中对前两个阶段的分类:如何培养模型,以及如何对其进行评估和调整性能。如果这是一个真正的系统,模型现在分类为第三阶段:准备部署到生产在现实世界中的设置。现在将分类的基本术语熟悉你,你应该有一个坚实的理解什么是分类它是如何工作的。
请记住,一个重要的关键是建立一个成功的分类要仔细构成具体和简单的术语,因此,它可以由一个有限的回答你的问题预定的类别的列表中的目标变量。请注意,并非所有的功能输入的数据也同样有用,你必须选择的功能被用来作为预测指标变量仔细,你可能需要尝试多种组合,以发现哪些是有用的分类表现良好。记住,务实是非常重要的。有了这些想法,回想起到品酒的例子的目标你的机器的分类应该是帮助你到晚餐时间,不是为了帮助你做微妙的审美判断生活中的美好事物。
 

参考:http://en.wikipedia.org/wiki/Stochastic_gradient_descent

1 线性回归

了解逻辑回归之前先了解下线性回归:因变量和自变量之间存在线性关系。一般模型如下:

从一般模型可以看出Y和X(X1,X2,X3...)之间存在线性关系。线性回归的目的就是为了确定因变量和自变量的关系程度,换言之,就是求回归模型的参数。

2 逻辑回归

(1) why need it?

要说逻辑回归的优点,自然要先说下线性回归的缺点,主要有难以处理以下两个问题

a. 因变量Y如果不是数值型

b. 因变量与自变量不存在线性关系

(2) 逻辑回归的一般形式

P是概率,是某个事件发生的概率,处理类别属性,例如是否是男性,是否是色狼?

而且进行了logit变换。也就是说logit(P)与自变量之间存在线性关系,而p显然和X不存在线性关系。

那为什么是logit变换,不是XXX其他的变换,这里有一个前提假设:概率与自变量的关系往往是 S 型的曲线

(3)参数估计

模型有了,需要利用已知的样本来进行参数估计,最大似然估计用的比较多。mahout中用的是随机梯度下降法(SGD)。此处介绍下随机梯度下降法。

a. 梯度下降法

搜索寻优的一个过程,假定一个初始状态,然后不断更新,知道达到目标函数的极小值。其中 称为学习率,他决定梯度下降搜索的步长。算法流程如下:

其中W表示权重。

b. 随机梯度下降

sgd解决了梯度下降的两个问题: 收敛速度慢和陷入局部最优。修正部分是权值更新的方法有些许不同。

3 基于梯度下降的学习

对于一个简单的机器学习算法,每一个样例包含了一个(x,y)对,其中一个输入x和一个数值输出y。我们考虑损失函数,它描述了预测值和实际值y之间的损失。预测值是我们选择从一函数族F中选择一个以w为参数的函数的到的预测结果。

我们的目标是寻找这样的函数,能够在训练集中最小化平均损失函数



由于我们不知道数据的真实分布,所以我们通常使用



来代替



经验风险用来衡量训练集合的效果。期望风险E(f)描述了泛化(generation)的效果,预测未知样例的能力。

如果函数族F进行足够的限制(sufficiently restrictive),统计机器学习理论使用经验风险来代替期望风险。

3.1 梯度下降

我们经常使用梯度下降(GD)的方式来最小化期望风险,每一次迭代,基于更新权重w:

,为学习率,如果选择恰当,初始值选择合适,这个算法能够满足线性的收敛。也就是:,其中表示残余误差(residual error)。

基于二阶梯度的比较出名的算法是牛顿法,牛顿法可以达到二次函数的收敛。如果代价函数是二次的,矩阵是确定的,那么这个算法可以一次迭代达到最优值。如果足够平滑的话,。但是计算需要计算偏导hession矩阵,对于高维,时间和空间消耗都是非常大的,所以通常采用近似的算法,来避免直接计算hession矩阵,比如BFGS,L-BFGS。

3.2 随机梯度下降

SGD是一个重要的简化,每一次迭代中,梯度的估计并不是精确的计算,而是基于随机选取的一个样例:

随机过程
依赖于每次迭代时随机选择的样例,尽管这个简化的过程引入了一些噪音,但是我们希望他的表现能够和GD的方式一样。

随机算法不需要记录哪些样例已经在前面的迭代过程中被访问过,有时候随机梯度下降能够直接优化期望风险,因为样例可能是随机从真正的分布中选取的。

随机梯度算法的收敛性要满足:

并且

二阶随机梯度下降:



这种方法并没有减少噪音,也不会对计算有太大改进。

3.3 随机梯度的一些例子
下面列了一些比较经典的机器学习算法的随机梯度:

逻辑回归:使用SGD(Stochastic Gradient Descent)进行大规模机器学习的更多相关文章

  1. 使用SGD(Stochastic Gradient Descent)进行大规模机器学习

    原贴地址:http://fuliang.iteye.com/blog/1482002  其它参考资料:http://en.wikipedia.org/wiki/Stochastic_gradient_ ...

  2. 机器学习-随机梯度下降(Stochastic gradient descent)

    sklearn实战-乳腺癌细胞数据挖掘(博主亲自录制视频) https://study.163.com/course/introduction.htm?courseId=1005269003& ...

  3. FITTING A MODEL VIA CLOSED-FORM EQUATIONS VS. GRADIENT DESCENT VS STOCHASTIC GRADIENT DESCENT VS MINI-BATCH LEARNING. WHAT IS THE DIFFERENCE?

    FITTING A MODEL VIA CLOSED-FORM EQUATIONS VS. GRADIENT DESCENT VS STOCHASTIC GRADIENT DESCENT VS MIN ...

  4. Stochastic Gradient Descent

    一.从Multinomial Logistic模型说起 1.Multinomial Logistic 令为维输入向量; 为输出label;(一共k类); 为模型参数向量: Multinomial Lo ...

  5. 几种梯度下降方法对比(Batch gradient descent、Mini-batch gradient descent 和 stochastic gradient descent)

    https://blog.csdn.net/u012328159/article/details/80252012 我们在训练神经网络模型时,最常用的就是梯度下降,这篇博客主要介绍下几种梯度下降的变种 ...

  6. 基于baseline和stochastic gradient descent的个性化推荐系统

    文章主要介绍的是koren 08年发的论文[1],  2.1 部分内容(其余部分会陆续补充上来). koren论文中用到netflix 数据集, 过于大, 在普通的pc机上运行时间很长很长.考虑到写文 ...

  7. Stochastic Gradient Descent 随机梯度下降法-R实现

    随机梯度下降法  [转载时请注明来源]:http://www.cnblogs.com/runner-ljt/ Ljt 作为一个初学者,水平有限,欢迎交流指正. 批量梯度下降法在权值更新前对所有样本汇总 ...

  8. Stochastic Gradient Descent收敛判断及收敛速度的控制

    要判断Stochastic Gradient Descent是否收敛,可以像Batch Gradient Descent一样打印出iteration的次数和Cost的函数关系图,然后判断曲线是否呈现下 ...

  9. 基于baseline、svd和stochastic gradient descent的个性化推荐系统

    文章主要介绍的是koren 08年发的论文[1],  2.3部分内容(其余部分会陆续补充上来).koren论文中用到netflix 数据集, 过于大, 在普通的pc机上运行时间很长很长.考虑到写文章目 ...

随机推荐

  1. 如何扩展大规模Web网站的性能?

    Reduce Data广告服务网站如何扩展到每天300K QPS请求?分享经验如下: 1. 为大规模设计,广告服务平台从一开始增长就很惊人,因此,系统开始就为大规模设计,系统为水平和垂直伸缩扩展. 2 ...

  2. Java基础(二十三)GUI图形界面编程(Java基础完)

    这里有我之前上课总结的一些知识点以及代码大部分是老师讲的笔记 个人认为是非常好的,,也是比较经典的内容,真诚的希望这些对于那些想学习的人有所帮助! 由于代码是分模块的上传非常的不便.也比较多,讲的也是 ...

  3. 2013 ACM区域赛长沙 A Alice’s Print Service HDU 4791

    题意:就是一个打印分段收费政策,印的越多,单张价格越低,输入需要印刷的数量,求最小印刷费用一个细节就是,比当前还小的状态可能是最后几个. #include<stdio.h> #includ ...

  4. Bzoj 2120: 数颜色 && 2453: 维护队列 莫队,分块,bitset

    2120: 数颜色 Time Limit: 6 Sec  Memory Limit: 259 MBSubmit: 2645  Solved: 1039[Submit][Status][Discuss] ...

  5. C语言调用汇编实现字符串对换

    1. 前面配置arm交叉编译环境. 2. 配置好qemu-arm C语言代码string-switch.c: #include <stdio.h> #include <stdlib. ...

  6. “互联网+”引发IT人才招工荒-新华网安徽频道

    "互联网+"引发IT人才招工荒-新华网安徽频道 "互联网+"引发IT人才招工荒

  7. JAVA虚拟机简介

    Java虚拟机定义 Java虚拟机有多层含义 一套规范:Java虚拟机规范.定义概念上Java虚拟机的行为表现 一种实现:例如HotSpot,J9,JRockit.需要实现JVM规范,但具体实现方式不 ...

  8. hdoj 1002 A + B Problem II【大数加法】

    A + B Problem II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  9. C程序设计语言--宏定义

    C语言中的宏定义 C语言中的宏定义也叫做预处理命令,预处理命令是C语言本身的组成部分,不能直接对它们进行编译. 1.基本概念: 1>预处理不是C语句,是在编译前进行的 2>预处理功能主要用 ...

  10. 我的ubuntu配置

    每次装系统都是非常蛋疼的过程,新装的系统还是要配置一下的 首先安装google拼音 sudo apt-get install fcitx fcitx-googlepinyin 然后按装numix主题 ...