斯坦福大学《Machine Learning》第1周学习笔记

Introduction  简介 

What is Machine Learning(什么是机器学习)

学习 - 一个程序被认为能从经验E中学习,解决任务T,达到性能度量值P,当且仅当,有了经验E后,经过P评判,程序在处理T时的性能有所提升。

西洋棋例子中,经验E就是程序上万次的自我练习的经验;任务T就是下棋;性能度量值P就是它与一些新对手比赛时,赢得比赛的概率。

Supervised Learning(监督学习)

回归问题

举例:现有数据集是一些房价信息,x为房屋面积,y为房价,那么现在有一套新房子,面积为a,预测它的房价是多少?这就是监督学习的例子。

监督学习意指给出一个算法, 需要部分数据集已经有正确答案。比如给定房价数据集, 对于里面每个数据,算法都知道对应的正确房价, 即这房子实际卖出的价格。算法的结果就是 算出更多的正确价格,比如那个面积为a的新房子。

用更术语的方式来定义, 监督学习又叫回归问题,(应该是回归属于监督中的一种) 意指要预测一个连续值的输出,比如房价。 虽然从技术上,一般把房价记到美分单位。 所以实际还是个离散值,但通常把它看作实际数字, 是一个标量值,一个连续值的数,而术语回归, 意味着要预测这类连续值属性的种类。

分类问题

举例:使用一个特征属性,即肿瘤块大小, 来预测肿瘤是恶性良性,一般的学习算法中,特征值不止一个,比如患者年龄,肿瘤的厚度等,预测值也可能存在多个,比如无癌,A癌,B癌,C癌等

回归问题: 即通过回归来预测一个连续值输出分类问题 目标是预测离散值输出

监督学习: 其基本思想是,监督学习中,对于数据集中的每个数据, 都有相应的正确答案,(训练集) 算法就是基于这些来做出预测。(就我理解,就是需要先输入正确的数据进行练习(模型拟合),然后输入新的数据进行预测。)

Unsupervised Learning(无监督学习)

回想起监督学习中的数据集 每个样本 都已经被标明为 正样本或者负样本 即良性或恶性肿瘤 因此 对于监督学习中的每一个样本 我们已经被清楚地告知了 什么是所谓的正确答案(数据已经被标记 即它们是良性还是恶性 

无监督学习中 没有属性或标签这一概念 也就是说所有的数据 都是一样的 没有区别 所以在无监督学习中 我们只有一个数据集 没人告诉我们该怎么做 我们也不知道 每个数据点究竟是什么意思 相反 它只告诉我们 现在有一个数据集 你能在其中找到某种结构吗?

聚类算法:对于给定的数据集 无监督学习算法可能判定 该数据集包含两个不同的聚类 第一个聚类 然后第二个聚类 无监督学习算法 会把这些数据分成两个不同的聚类 所以这就是所谓的聚类算法

举例:谷歌新闻每天会去收集成千上万的网络上的新闻,然后将他们分组成一个个新闻专题,比如有关BP油井事故的报道,点进去以后,列表全是和BP油井事故相关的报道,所以 谷歌新闻所做的就是 去搜索成千上万条新闻 然后自动的将他们聚合在一起 因此 有关同一主题的 新闻被显示在一起 ,这就是无监督学习,我们没有提前告知这个算法 这些是有关BP油井事故的,这些是有关...等等,相反我们只是告诉算法,你看,这儿有一堆数据,我不知道这个数据是什么东东,我不知道里面都有些什么类型,叫什么名字,我甚至不知道都有哪些类型,但是,请问你可以自动的找到这些数据中的类型吗? 然后自动的,按得到的类型把这些个体分类,虽然事先我并不知道哪些类型 因为对于这些数据样本来说,我们没有给算法一个正确答案,所以,这就是无监督学习。你能做的就是 运行一个聚类算法 把不同的新闻归入不同的专题不同的类。

无监督学习 它是一种学习机制 你给算法大量的数据 要求它找出数据中蕴含的类型结构

Linear Regression with One Variable单变量线性回归

Model Representation模型表示

例子:预测住房价格

斯坦福大学《Machine Learning》第1周学习笔记_第1张图片

图中是已知数据集 你有一个朋友正想出售自己的房子 如果你朋友的房子是1250平方尺大小 你要告诉他们 这房子能卖多少钱 那么 你可以做的一件事就是 构建一个模型 也许是条直线 从这个数据模型上来看 也许你可以告诉你的朋友 他能以大约220000(美元)左右的价格 卖掉这个房子 

那么这就是监督学习算法的一个例子 它被称作监督学习是因为对于每个数据来说 我们给出了 “正确的答案” 即告诉我们 根据我们的数据来说 房子实际的价格是多少 

而且 更具体来说 这是一个回归问题 回归一词指的是我们根据之前的数据预测出一个准确的输出值 对于这个例子就是价格 

同时 还有另一种最常见的监督学习方式 叫做分类问题 当我们想要预测离散的输出值 例如 如果我们正在寻找 癌症肿瘤并想要确定 肿瘤是良性的还是恶性的 这就是0/1离散输出的问题

更进一步来说 在监督学习中我们有一个数据集 这个数据集被称训练集 因此对于房价的例子 我们有一个训练集 包含不同的房屋价格 我们的任务就是从这个数据中学习预测房屋价格

斯坦福大学《Machine Learning》第1周学习笔记_第2张图片

m #训练集样本的数目,在这个数据集中 如果表中有47行 那么我们就有47组训练样本 m就等于47
x #表示输入变量 往往也被称为特征量
y #输出变量或目标变量,也就是我的预测结果 那么这就是第二列

(x, y) #一个训练样本,在这个表格中的单独的一行对应于一个训​​练样本 

为了表示某个训练样本 我将使用x上标(i)与y上标(i)来表示  并且用这个表示第i个训练样本

斯坦福大学《Machine Learning》第1周学习笔记_第3张图片

我们将训练集(房屋价格) 喂给我们的学习算法 学习算法会输出一个函数 通常表示为小写h h代表hypothesis(假设)  h 根据输入的 x 值(房屋尺寸)来得出 y 值 (房子的价格) 因此 h是一个从x到y的函数映射

当设计学习算法的时候 我们接下来需要去思考的是 怎样得到这个假设h 首先我们将会这么写 hθ(x)=θ0+θ1*x  所有这一切意味着我们要预测一个关于x的 线性函数 y 对吧? 所以这就是数据集和函数的作用 用来预测 这里是y关于x的线性函数 hθ(x)=θ0+θ1*x 那么为什么是一个线性函数呢? 有时候 我们会有更复杂的函数 也许是非线性函数 但是 由于线性方程是简单的形式 我们将先从线性方程的例子入手

这个模型被称为线性回归(linear regression)模型 另外 这实际上是关于单个变量的线性回归 这个变量就是x 根据x来预测所有的价格函数 同时 对于这种模型有另外一个名称 称作单变量线性回归 单变量是对一个变量的一种 特别的表述方式

Cost Function代价函数

这些θi我把它们称为模型参数,接下来介绍如何选择模型参数

斯坦福大学《Machine Learning》第1周学习笔记_第4张图片

在线性回归中 我们有一个训练集 可能就像我在这里绘制的 我们要做的就是 得出θ0 θ1这两个参数的值 来让假设函数表示的直线 尽量地与这些数据点很好的拟合 也许就像这里的这条线一样

那么我们如何得出θ0 θ1的值 来使它很好地拟合数据的呢?很明显,我们要选择 能使h(x) 也就是 输入x时我们预测的值 最接近该样本对应的y值的参数θ0 θ1 ,这里我们就要通过代价函数来解决这个问题,也就是使我们的代价函数最小的θ0 θ1的值。

代价函数也被称作平方误差函数 有时也被称为 平方误差代价函数 事实上 我们之所以要求出 误差的平方和 是因为误差平方代价函数 对于大多数问题 特别是回归问题 都是一个合理的选择 还有其他的代价函数也能很好地发挥作用 但是平方误差代价函数可能是解决回归问题最常用的手段

这里是线性回归的代价函数,后面还会介绍逻辑回归问题的代价函数,

思考:这些代价函数的工作原理,它们在计算什么,它们的目的是什么。

Cost Function - Intuition I

可跳过

Cost Function - Intuition II

下面继续介绍代价函数在做什么,以下列出的假设函数和代价函数

斯坦福大学《Machine Learning》第1周学习笔记_第5张图片

我们很容易得到代价函数随自变量θ0 θ1变化的三维图,如下,这是一个弓形的曲面,这里要知道,线性回归的代价函数是一个凸函数,只有一个全局的最优点。后面会介绍一些一般的非凸的代价函数。

斯坦福大学《Machine Learning》第1周学习笔记_第6张图片

用轮廓图表示如下:

斯坦福大学《Machine Learning》第1周学习笔记_第7张图片

左图是当θ0=a θ1=b时的假设函数的直线,右图中的小红叉就是θ0=a θ1=b时J的取值,很明显,拟合得不好,J的值很大,很明显,椭圆环中心点才是拟合最好的点,那么我们的问题就是,如何取到这个点,因此,我们真正需要的是一种有效的算法  能够自动地找出这些使代价函数J取最小值的参数θ0和θ1 我们也不希望编个程序 把这些点画出来 然后人工的方法来读出这些点的数值 这是因为当遇到更复杂、更高维度、更多参数的情况时是很难画出图的,无法将其可视化(维数高于3就无法可视化)这里我们可视化出来是方便理解 因此我们真正需要的 是编写程序来找出这些最小化代价函数的θ0和θ1的值

Parameter Learning参数学习

Gradient Descent梯度下降法

前面的疑问,如何编写程序来找出这些最小化代价函数的θ0和θ1的值,梯度下降法就是一个好的解决方案,它可应用于多种多样的函数求解,可以是一个线性回归的代价函数 也可以是一些其他函数,甚至是很多自变量如 J(θ0, θ1, θ2, ...,θn )  这里为了方便理解,我们只设两个参数θ0和θ1

斯坦福大学《Machine Learning》第1周学习笔记_第8张图片

很明显这里不是线性回归的代价函数,因为从图形看出它不是一个凸函数

我们从 θ0和θ1的某个值出发 对θ0和θ1赋以某个初值 也就是对应于从这个函数表面上的某个起始点出发 这个图像想象为一座山 想像类似这样的景色 公园中有两座山 想象一下你正站立在山的这一点上 站立在你想象的公园这座红色山上 在梯度下降算法中 我们要做的就是旋转360度 看看我们的周围 并问自己 我要在某个方向上 用小碎步尽快下山 如果我想要下山 如果我想尽快走下山 这些小碎步需要朝什么方向? 如果我们站在山坡上的某一点 你看一下周围 ​​你会发现最佳的下山方向 大约是那个方向 好的 现在你在山上的新起点上 你再看看周围 然后再一次想想 我应该从什么方向迈着小碎步下山? 然后你按照自己的判断又迈出一步 往那个方向走了一步 然后重复上面的步骤 从这个新的点 你环顾四周 并决定从什么方向将会最快下山 然后又迈进了一小步 又是一小步 并依此类推 直到你接近这里 直到局部最低点的位置

从这图中看出,当起始点的位置略有不同时 你会得到一个不同的局部最优解 这就是梯度下降算法的一个特点

斯坦福大学《Machine Learning》第1周学习笔记_第9张图片

这是梯度下降算法的定义 我们将会反复做这些 直到收敛 我们要更新参数 θj 方法是 用 θj 减去 α乘以偏导那部分

这里的α 是一个数字 被称为学习速率 它控制了 我们下山时会迈出多大的步子

注意:更新这个等式 你需要同时更新 θ0和θ1

Gradient Descent Intuition

斯坦福大学《Machine Learning》第1周学习笔记_第10张图片

我们看这个迭代公式,学习速率α是一个正数,我们可以自己作图,无论怎样,新的θ1都一定是朝着使J变小的方向移动,这就是这个迭代公式的意义。

继续研究学习速率α,当α很大的时候,那么梯度下降法可能会越过最低点 甚至可能无法收敛,甚至发散

当α很小的时候,它会需要 很多步才能到达全局最低点

如果你的参数已经处于 局部最低点,因为最低点的导数是0,那么梯度下降法更新其实什么都没做 它不会改变参数的值,无论迭代多少次,它始终停留在最低点

在梯度下降法中 当我们接近局部最低点时 梯度下降法会自动采取 更小的幅度 这是因为当我们接近局部最低点时 很显然在局部最低时导数等于零 所以当我们 接近局部最低时 导数值会自动变得越来越小 所以梯度下降将自动采取较小的幅度 所以实际上没有必要再另外减小α 这就是梯度下降算法 你可以用它来最小化 最小化任何代价函数J 不只是线性回归中的代价函数J

Gradient Descent For Linear Regression 线性回归的梯度下降

斯坦福大学《Machine Learning》第1周学习笔记_第11张图片

斯坦福大学《Machine Learning》第1周学习笔记_第12张图片

以上的公式贴出来后面课程会用到,其实自己可以推。

用于线性回归的 代价函数 总是这样一个 弓形的样子 这个函数的专业术语是 这是一个凸函数  因此 这个函数 没有任何局部最优解 只有一个全局最优解 并且无论什么时候 你对这种代价函数 使用线性回归 梯度下降法得到的结果 总是收敛到全局最优值 因为没有全局最优以外的其他局部最优点

 

参考资料:

 

https://www.coursera.org/learn/machine-learning/

 

你可能感兴趣的:(斯坦福大学《Machine,Learning》学习笔记)