Coursera 机器学习笔记(八)

主要为第十周内容:大规模机器学习、案例、总结

(一)随机梯度下降法

如果有一个大规模的训练集,普通的批量梯度下降法需要计算整个训练集的误差的平方和,如果学习方法需要迭代20次,这已经是非常大的计算代价。

首先,需要确定大规模的训练集是否有必要。当我们确实需要一个大规模的训练集,可以尝试用随机梯度下降法来替代批量梯度下降法。

在随机梯度下降法中,定义代价函数一个单一训练实例的代价:

随机梯度下降算法如下:

随机梯度下降算法在每一次计算之后便更新参数Θ,而不需要首先将所有的训练集求和,在梯度下降算法还没有完成一次迭代时,随机梯度下降算法便已经走出了很远。但是这样的算法存在的问题是,不是每一步都是朝着"正确"的方向迈出的。因此算法虽然会逐渐走向全局最小值的位置,但是可能无法站到那个最小值的那一点,而是在最小值点附近徘徊。

微型批量梯度下降算法是介于批量梯度下降算法和随机梯度下降算法之间的算法,每计算常数b次训练实例,变更新一次Θ。

在批量梯度下降中,我们可以令代价函数 J 为迭代次数的函数,绘制图表,根据图表来判断梯度下降是否收敛。
但是,在大规模的训练集的情况下,这是不现实的,因为计算代价太大了。在随机梯度下降中,我们在每一次更新Θ之前都计算一次代价,然后每 X 次迭代后,求出这 X次对训练实例计算代价的平均值,然后绘制这些平均值与 X 次迭代的次数之间的函数图表。

当我们绘制这样的图表时,可能会得到一个颠簸不平但是不会明显减少的函数图像(如上面左下图中蓝线所示)。我们可以增加 X 来使得函数更加平缓,也许便能看出下降的趋势了(如上面左下图中红线所示);或者可能函数图表仍然是颠簸不平且不下降的(如洋红色线所示),那么我们的模型本身可能存在一些错误。如果我们得到的曲线如上面右下方所示,不断地上升,那么我们可能会需要选择一个较小的学习率 α。

也可以令学习率随着迭代次数的增加而减小,如

但是通常我们不需要这样做便能有非常好的效果了,对α进行调整所耗费的计算通常不值得。

(二)在线学习

在线学习算法指的是对数据流而非离线的静态数据集的学习。许多在线网站都有持续不断的用户流,对于每一个用户,网站希望能在不将数据存储到数据库中便顺利地进行算法学习。

一旦对该数据完成学习算法,我们便丢弃该数据,不再存储它。

在线学习算法的好处在于,我们的算法可以很好的适应用户的倾向性,算法可以针对用户的当前行为不断地更新模型以适应该用户。

Map Reduce和数据并行

批量梯度下降算法来求解大规模数据集的最优解=需要对整个训练集进行循环,计算其偏导数和代价,再求和,计算代价非常大。将整个数据集计算的工作分配到几台计算机中,让每一台计算机处理数据集的一部分,然后将计算结果汇总求和。这就是Map Reduce。

详细的Map Reduce 可以继续学习 Hadoop和Spark

(三)上限分析

在机器学习应用中,通常血药几个步骤才能进行最终的预测,哪个步骤最值得花时间和精力去改善呢?这就是上限分析的用武之地。

在一个文字识别应用中,分为以下步骤:

在上限分析中,对于该步骤和应用之前部分,手工提供100%的输出结果,看应用 最终效果提升了多少。

由上图可见,文字侦测(Character Segmentation)步骤值得投入时间和精力。

时间: 2024-10-08 14:30:57

Coursera 机器学习笔记(八)的相关文章

Coursera 机器学习笔记(七)

主要为第九周内容:异常检测.推荐系统 (一)异常检测(DENSITY ESTIMATION) 核密度估计(kernel density estimation)是在概率论中用来估计未知的密度函数,属于非参数检验方法之一.密度估计是指给定数据集 x(1),x(2),..,x(m),我们假使数据集是正常的,我们希望知道新的数据 x(test)是不是异常的,即这个测试数据不属于该组数据的几率如何.我们所构建的模型应该能根据该测试数据的位置告诉我们其属于一组数据的可能性 p(x). 通过密度估计之后,选择

Coursera 机器学习笔记(四)

主要为第六周内容机器学习应用建议以及系统设计. 下一步做什么 当训练好一个模型,预测未知数据发现,不如人意,该如何提高呢? 获得更多的训练实例 尝试减少特征的数量 尝试获得更多的特征 尝试增加二项式特征 尝试减少归一化程度λ 尝试增加归一化程度λ 先不要急着尝试这些方法,而是通过一些机器学习诊断方法来判断现在算法是什么情况,哪些方法是可以提高算法的有效性,如何选择更有意义的方法. ? 如何评估模型 诊断方法 一.偏差和方差 二.归一化 三.学习曲线 回头看 数据多就是好? 误差分析 Precis

Coursera 机器学习笔记(五)

主要第七周的内容:支持向量机 优化目标 判定边界 核函数 总结

Coursera 机器学习笔记(三)

主要为第四周.第五周课程内容:神经网络 神经网络模型引入 ? 模型表示 多分类 代价函数 反向传播算法 留意

Coursera机器学习-第八周-Unsupervised Learning(K-Means)

Clustering K-means算法是硬聚类算法,是典型的基于原型的目标函数聚类方法的代表,它是数据点到原型的某种距离作为优化的目标函数,利用函数求极值的方法得到迭代运算的调整规则.K-means算法以欧式距离作为相似度测度,它是求对应某一初始聚类中心向量V最优分类,使得评价指标J最小.算法采用误差平方和准则函数作为聚类准则函数. Unsuperivised Learning:Intruduction 典型的Supervised Learning 有一组附标记(y(i))的训练数据集, 我们

coursera机器学习

上周出差回来,开始找了一篇论文看<ScSPM>,这里有源代码,自己希望能认真看懂:毕竟这篇文章包含了dense sift特征提取+Spare coding+linear svm知识很全面,希望能看懂代码.这个过程却发现自己缺少了很多东西,他自己的sift提取方法,Sc,svm都是自己实现的:感觉看懂好难.然后周六开始实验室有“学术交流”,师兄师姐交流他们整个小论文的过程,针对梯度下降这些基本的方法,我们都没有认真的理解.发现图像和机器学习自己都没有认真的系统的学习:自己在博客上零零散散的看了很

(转载)[机器学习] Coursera ML笔记 - 监督学习(Supervised Learning) - Representation

[机器学习] Coursera ML笔记 - 监督学习(Supervised Learning) - Representation http://blog.csdn.net/walilk/article/details/50922854

猪猪的机器学习笔记(八)聚类

聚类 作者:樱花猪   摘要: 本文为七月算法(julyedu.com)12月机器学习第八次次课在线笔记.聚类算法是一种常见的无监督的学习方法,概念简单在图像.机器学习中都有应用.目前有许多聚类方法,本次课程将一一探讨各种各样的聚类算法. 引言: 聚类算法在很早就接触过,简单的说就是通过对于某些相关性的测量来将样本分成不同的类别,聚类算法除了在机器学习中有所应用在图像分割时也是一种非常好的思路.本次课程从我们熟悉的K-means聚类开始讲起,介绍了层次聚类.密度聚类.谱聚类等方法.文章的最后还介

Coursera机器学习-第三周-逻辑回归Logistic Regression

Classification and Representation 1. Classification Linear Regression (线性回归)考虑的是连续值([0,1]之间的数)的问题,而Logistic Regression(逻辑回归)考虑的是离散值(例如只能取0或1而不能取0到1之间的数)的问题.举个例子,你需要根据以往季度的电力数据,预测下一季度的电力数据,这个时候需要使用的是线性回归,因为这个值是连续的,而不是离散的.而当你需要判断这个人抽烟还是不抽烟的问题时,就需要使用逻辑回