Machine Learning - Andrew Ng 笔记

机器学习的类型

1.监督学习
你需要给机器一个有明确答案的训练样本,让机器根据已经有的经验去对未知的情况进行预测,比如给定的训练样本是房间面积-房价的关系,对每一个训练样本中的面积,机器明确知道对应的房价.
2.无监督学习
对输出结果没有明确的界定,比如对基因分类,在结果出来之前谁也不知道会分为几类,类比监督学习的例子(面积-售价,明确知道输出是金额;判断肿瘤良性还是恶性,也是明确知道结果会被分成两类)
其中一种被称为聚类算法,比如将新闻分类(被分类在一块的新闻都描述同一件事),又或者在一段音频中把不同音源的声音区分开来.
3.Others:Reinforcement learning......

监督学习

1.解决连续值问题(回归问题)
预测连续值输出, 比如房子面积-房价关系走势

2.离散值问题(分类问题)
预测离散值输出,比如判断肿瘤是良性还是恶性

离散值和连续值的区别在于连续值属于区间,比如数字区间[20,30]不可穷举,离散值则可以穷举,比如硬币正反面.其实这么说也有点微妙,比如在房间面积-房价这个例子中,房价是钱,一般精确到分,理论上房价也是可以穷举的,但是还是考虑成连续值而非离散值.

第一个监督学习算法 -- 线性回归

房屋面积-房价.png

上图中x轴是房屋面积,y轴是房价,图中的点就是训练样本,我们的目的是预测房间面积对应的房价.
对于线性回归算法来说,就是要找一个线性方程,通过该方程和输入可以求出目标值,对于上图线性方程将会是:

h(x) = θ0 + θ1 * x
其中h表示hypothesis,h(x)是房价,x是房屋面积.

我们不希望h(x)看起来太过夸张,换而言之就是线性方程和训练样本拟合度越高越好,直觉上来说就是线性方程需要"均匀的穿过训练样本".但是靠直觉选取线性方程肯定不行,我们需要找到一个可量化的值来表示线性方程的拟合程度,这里引出一个新的概念--代价函数(Cost Function).

Cost Function

我们的目标是选取合适的θ0,θ1使得代价函数最小,这样h(x)和数据集的拟合度就最高.
Cost Function有很多种,在这里我们从平方差的角度来量化.上图中m表示训练数据集规模.

简化问题

我们先把问题简化然后看个实际的例子:

假设θ0 := 0
则h(x) = θ1 * x
则代价函数可以简化成J(\theta_1) = \frac{1}{2m}\sum_{i=1}^m(\theta_1x^{(i)} - y^{(i)})^2

假设训练样本如下图,包含(1,1),(2,2),(3,3).此外还包含3个线性方程,按照斜率从大到小分别是
1.h(x) = 2x,即θ1 := 2
2.h(x) = 1
x,即θ1 := 1
3.h(x) = 0.5*x,即θ1 := 0.5

训练样本和线性方程

之后求J(2),J(1),J(0.5)的值,得出对应的J(θ1)函数图如下:
J(θ1)

从J(θ1)图可以看到,当θ1取1的时候,代价函数最小(0,与之对应的就是数据集和线性方程中斜率为1的线性方程),所以对于这个特定的训练样本,要想拟合度最高,θ1应该取1.

回到最初的问题

通过简化问题我们已经知道对于θ0:=0的情况,J(θ1)类似于一个一元二次函数,如果把θ0也考虑进去的话,图形将会是这样,因为对于每一组θ0, θ1都有一个J(θ0, θ1)与之对应.

J(θ0, θ1)

Gradient Descent(梯度下降算法)

为了找到min(J(θ0, θ1)),我们引入Gradient Descent算法,通常该算法适用于已知J(θ0, θ1.....θN-1, θN),要求min(J(θ0, θ1.....θN-1, θN))的情况.
梯度下降算法根据初始值的不同可能会得到不同的最优解(局部最优解),但是对于J(θ0, θ1)来说(如上图)局部最优解正是全局最优解

Gradient Descent数学定义

注意更新的方式应该如下
temp0 := θ0 - LearningRate * Derivate
temp1 := θ1 - LearningRate * Derivate
θ0 := temp0
θ1 := temp1
而不是
θ0 := θ0 - LearningRate * Derivate
θ1 := θ1 - LearningRate * Derivate

关于α(学习速率,learning rate),和导数项的理解,首先先简化问题,假设θ0:=0

J(θ1)及导数项

导数项就是函数在某一点切线的斜率,当斜率为负数时,梯度下降算法在不断递归中θ1在不断增加,从图上看就是当θ1<0时,θ1增加,直到J(θ1)=0,函数值收敛了.如果当斜率为正数时,梯度下降算法在不断递归中θ1在不断减少,从图上看就是当θ1>0时,θ1减少,直到J(θ1)=0,函数值也收敛了,符合直觉.这样一来学习速率也好理解了,学习速率越大,θ1的变化也就越大,反之亦然.
需要注意的一点是,在梯度下降算法不断递归中,如果学习速率设置的过大可能导致错过最优解(如上图想象θ1在一次计算中直接从负数->正数,并且递归后所在点的斜率比递归前的大),这样会导致函数无法收敛,不过如果一切运行正常,越接近最优解导数项越来越小(趋近于0),you won't miss it.
理解了梯度下降算法在J(θ1)上的工作原理之后,至少可以在直觉上理解该算法在J(θ0, θ1)图形上的工作原理.

多元线性回归

不同于之前提到的房屋的价格只和面积(x1)有关,实际情况中hθ(x)会更复杂,如下表格所示,房屋的价格可能与很多因素有关

面积 卧室数量 楼层高度 房屋年龄 价格
100 3 3 20 200w
200 6 3 20 450w
140 3 19 5 360w

上面表格中,面积(x1)/卧室数量x(2)/楼层高度(x3)/房屋年龄(x4)被称为特征量.
一般使用n表示特征量的个数,这个例子中n=4
x(i)表示第i个训练样本的特征值组,
x^{(1)}=\left[ \begin{matrix} 100 \\ 3 \\ 3 \\ 20 \end{matrix} \right]
xj(i)表示第i个训练样本的第j个特征值,x1(1) = 100
对于这种有多个特征值的情况,hθ(x)和单特征值是不一样的
单元:hθ(x) = θ0 + θ1x1
多元:hθ(x) = θ0 + θ1
x1 + θ2x2 + ... + θnxn

对于多元hθ(x),我们可以用矩阵来简化表示,在上面的例子中首先稍微修改下方程得到hθ(x)=θ0x0 + θ1x1 + θ2x2 + θ3x3 + θ4*x4,并且令X0=1
那么我们可以得到特征值矩阵
F=\left[ \begin{matrix} x0 \\ x1 \\ x2 \\ x3 \\ x4 \end{matrix} \right]
参数矩阵
P=\left[ \begin{matrix} theta0 \\ theta1 \\ theta2 \\ theta3 \\ theta4 \end{matrix} \right]
那么hθ(x)=PT * F

多元梯度下降算法

之前介绍的对于代价函数J(θ0, θ1)的梯度下降算法可以表示为
repeat until convergence{
(for j in 0,1)
\theta_j := \theta_j - \alpha\frac{\partial}{\partial\theta_j}J(\theta_0,\theta1)
}
那么对于多元代价函数J(θ0, θ1...θn)我们将θ0, θ1...θn看成一个一维向量θ则算法将变成
repeat until convergence{
(for j in 0....n)
\theta_j := \theta_j - \alpha\frac{\partial}{\partial\theta_j}J(\theta)
}
上面公式翻译过来就是对每一个特征量(j in 0...n)分别求该特征量θj在函数J(θ)的偏导数(切线的斜率),并使用该斜率*学习速率作为变化量去更新θj,直到θj收敛.
接下来我们在将这个偏导数展开,并带入代价函数可以得到:
repeat until convergence{
(for j in 0....n)
\theta_j := \theta_j - \alpha\frac{1}{m}\sum_{i=1}^m(h_\theta(x^{(i)}) - y^{(i)})x_j^{(i)}
}

特征缩放

特征缩放可以加速梯度下降函数的收敛.特征缩放是尽可能的让所有特征值处在近似的区间内,但是又不丢失这些特征量的数据特征.常用的特征缩放方法有以下两种:
1.Rescaling
x_i := \frac{x_i - min(x)}{max(x) - min(x)}
Rescaling可以使特征值落在[0,1],[-1,1]这个区间内
2.Mean Normalization
x_i := \frac{x_i - avg(x)}{max(x) - min(x)}
3.Feature scaling
x_i := \frac{x_i}{max(x)}

根据Andrew Ng的说法,特征值落在[-1,1]和[-1/3,1/3]之间都ok,超过这个值的话就不太妙了.
特征缩放为什么可以使梯度下降算法收敛的更快

如何判断梯度下降算法是否正常工作

描绘一个以梯度下降算法迭代执行次数为X轴,代价函数的值为Y轴的函数图,如果随着迭代执行次数的增加,代价函数的值在不断减少,则说明梯度下降算法在正常工作.


正常工作

学习速率设置的过大

学习速率α

1.如果α太小,则梯度下降算法收敛的慢
2.如果α过大则并不会随着每次迭代代价函数的值越小,也因此可能导致代价函数无法收敛(如上图所示).

创造新的特征值

假设h_\theta(x) = \theta_0 + \theta_1x_1 + \theta_2x_2为计算房屋价格的函数,x1为房屋纵深(depth),x2为房屋宽度(frontage),那么创造一个新的特征值:
area(房屋面积) = depth * frontage,则原函数可以转换为:
h_\theta(x) = \theta_0 + \theta_1area
有时候这样会得到更好的模型.

构造hθ(x)去更好的拟合数据(Polynomial Regression)

h_\theta(x)并不一定非要是线性函数,也可以是二次函数,三次函数或者平方根函数等等.
要视不同的数据样本选择不同形式的函数,比如计算房价的例子,就不能够使用二次函数去拟合,因为大多数情况下房价不会像二次函数一样有下坠趋势,此时我们可以选择使用三次函数或者平方根函数的形式去更好的拟合数据
原函数:h_\theta(x) = \theta_0 + \theta_1x_1
二次函数:h_\theta(x) = \theta_0 + \theta_1x_1 + \theta_2x_1^2
三次函数:h_\theta(x) = \theta_0 + \theta_1x_1 + \theta_2x_1^2 + \theta_3x_1^3
平方根函数:h_\theta(x) = \theta_0 + \theta_1x_1 + \theta_2\sqrt{x_1}

Normal Equation

之前求J(\theta)最小时对应的\theta值,我们使用的是Gradient Descent算法,Normal Equation则是另一种求\theta值的办法.公式如下:
\theta := (X^TX)^{-1}X^Ty
其中X被称为designer matrix, y则是训练样本,具体如下:

Normal Equation

上述公式从直觉上来讲就是使的偏导数=0推导出来的.
对比Normal Equation 和 Gradient Descent算法的优劣如下
Normal Equation VS Gradient Descent

根据Andrew Ng的说法,当特征值种类<=10000时,使用Normal Equation是可以接受的,当特征值种类>10000时,最好使用Gradient Descent.

Non-Invertibility

\theta := (X^TX)^{-1}X^Ty
假如X^TX不可逆该怎么办?事实上这种情况发生的概率很小, 但并不代表不会发生.导致这种情况出现的原因有两个:
1.特征值之间存在依赖关系
比如x_1表示房屋面积(平方米),x_2表示房屋面积(平方英尺),因为1m=3.28feet,所以始终存在x_1 = (3.28)^2x_2,像这种(线性依赖关系)很容易导致X^TX不可逆.这种情况需要将特征值之间的依赖处理掉.
2.特征值太多
比如当m<=n的情况.对于这种情况要么想办法减少特征值的种类,要么使用regularization.
如果使用octave的话使用pinv(pesudo invert)而不是inv方法来求你矩阵,这样即使X^TX不可逆,依然可以求出\theta的值.

To Be Continued.. Stay tuned

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,992评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,212评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,535评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,197评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,310评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,383评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,409评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,191评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,621评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,910评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,084评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,763评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,403评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,083评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,318评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,946评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,967评论 2 351