吴恩达机器学习笔记week1

目录:

1.机器学习是什么?
2.监督学习
3.无监督学习
4.线性回归
5.代价函数
5.1 代价函数的直观理解1
5.2 代价函数的直观理解2
6.梯度下降
7.梯度下降的线性回归
8.线性代数回顾
8.1 矩阵和向量
8.2 加法和标量乘法
8.3 矩阵向量乘法
8.4 矩阵乘法
8.5 矩阵乘法的性质
8.6 逆、转置

1.机器学习是什么?

来自卡内基梅隆大学的Tom Mitchell定义的机器学习是,一个程序被认为能从经验E中学习,解决任务T,达到性能度量值P,当且仅当,有了经验E后,经过P评判,程序在处理T时的性能有所提升。

2.监督学习

例如1:想预测房价。

前阵子,一个学生从波特兰俄勒冈州的研究所收集了一些房价的数据。你把这些数据画出来,看起来是这个样子:横轴表示房子的面积,单位是平方英尺,纵轴表示房价,单位是千美元。

那基于这组数据,假如你有一个朋友,他有一套750平方英尺房子,现在他希望把房子卖掉,他想知道这房子能卖多少钱。

机器学习算法:
吴恩达机器学习笔记week1

应用学习算法,可以在这组数据中画一条直线,或者换句话说,拟合一条直线,根据这条线我们可以推测出,这套房子可能卖$150,000,当然这不是唯一的算法。可能还有更好的,比如我们不用直线拟合这些数据,用二次方程去拟合可能效果会更好。根据二次方程的曲线,我们可以从这个点推测出,这套房子能卖接近$200,000。稍后我们将讨论如何选择学习算法,如何决定用直线还是二次方程来拟合。两个方案中有一个能让你朋友的房子出售得更合理。
这些都是学习算法里面很好的例子。

监督学习指的就是我们给学习算法一个数据集。这个数据集由“正确答案”组成。

我们给定数据集中每个样本的正确价格,即它们实际的售价然后运用学习算法,算出更多的正确答案。比如你朋友那个新房子的价格。用术语来讲,这叫做回归问题。我们试着推测出一个连续值的结果,即房子的价格。

例如2:推测乳腺癌良性与否。

吴恩达机器学习笔记week1

这个数据集中,横轴表示肿瘤的大小,纵轴上,我标出1和0表示是或者不是恶性肿瘤。我们之前见过的肿瘤,如果是恶性则记为1,不是恶性,或者说良性记为0。

我有5个良性肿瘤样本,在1的位置有5个恶性肿瘤样本。现在我们有一个朋友很不幸检查出乳腺肿瘤。假设说她的肿瘤大概这么大,那么机器学习的问题就在于,你能否估算出肿瘤是恶性的或是良性的概率。用术语来讲,这是一个分类问题

分类指的是,我们试着推测出离散的输出值:0或1良性或恶性,

在其它一些机器学习问题中,可能会遇到不止一种特征。举个例子,我们不仅知道肿瘤的尺寸,还知道对应患者的年龄。在其他机器学习问题中,我们通常有更多的特征,我朋友研究这个问题时,通常采用这些特征,比如肿块密度,肿瘤细胞尺寸的一致性和形状的一致性等等,还有一些其他的特征。这就是我们即将学到最有趣的学习算法之一。

我们以后会讲一个算法,叫支持向量机,里面有一个巧妙的数学技巧,能让计算机处理无限多个特征。

总结:

监督学习。其基本思想是,我们数据集中的每个样本都有相应的“正确答案”。再根据这些样本作出预测,就像房子和肿瘤的例子中做的那样。我们还介绍了回归问题,即通过回归来推出一个连续的输出,之后我们介绍了分类问题,其目标是推出一组离散的结果。

小测验:

假设你经营着一家公司,你想开发学习算法来处理这两个问题:

1.你有一大批同样的货物,想象一下,你有上千件一模一样的货物等待出售,这时你想预测接下来的三个月能卖多少件?
2.你有许多客户,这时你想写一个软件来检验每一个用户的账户。对于每一个账户,你要判断它们是否曾经被盗过?

问题一是一个回归问题,因为你知道,如果我有数千件货物,我会把它看成一个实数,一个连续的值。因此卖出的物品数,也是一个连续的值。

问题二是一个分类问题,因为我会把预测的值,用 0 来表示账户未被盗,用 1 表示账户曾经被盗过。所以我们根据账号是否被盗过,把它们定为0 或 1,然后用算法推测一个账号是 0 还是 1,因为只有少数的离散值,所以我把它归为分类问题。

3.无监督学习

无监督学习中没有任何的标签或者是有相同的标签或者就是没标签。所以我们已知数据集,却不知如何处理,也未告知每个数据点是什么。

无监督学习算法可能会把这些数据分成两个不同的簇。所以叫做聚类算法

例如1:谷歌新闻。

它再将这些新闻分组,组成有关联的新闻。所以谷歌新闻做的就是搜索非常多的新闻事件,自动地把它们聚类到一起。所以,这些新闻事件全是同一主题的,所以显示到一起。

例如2:鸡尾酒宴问题。

你可以想像下,有个宴会房间里满是人,全部坐着,都在聊天,这么多人同时在聊天,声音彼此重叠,因为每个人都在说话,同一时间都在说话,你几乎听不到你面前那人的声音。所以,可能在一个这样的鸡尾酒宴中的两个人,他俩同时都在说话,假设现在是在个有些小的鸡尾酒宴中。我们放两个麦克风在房间中,因为这些麦克风在两个地方,离说话人的距离不同每个麦克风记录下不同的声音,虽然是同样的两个说话人。听起来像是两份录音被叠加到一起,或是被归结到一起,产生了我们现在的这些录音。另外,这个算法还会区分出两个音频资源,这两个可以合成或合并成之前的录音。

总结:

无监督学习,它是学习策略,交给算法大量的数据,并让算法为我们从数据中找出某种结构。

4.线性回归

在监督学习中我们有一个数据集,这个数据集被称训练集。用小写的m来表示训练样本的数目。

例如1:房屋交易。

假使我们回归问题的训练集(Training Set)如下表所示:

吴恩达机器学习笔记week1
我们将要用来描述这个回归问题的标记如下:

m代表训练集中实例的数量

x代表特征/输入变量

y代表目标变量/输出变量

(x,y)代表训练集中的实例

(x^i, y^i) 代表第i个观察实例

h代表学习算法的解决方案或函数也称为假设(hypothesis)

吴恩达机器学习笔记week1

h代表hypothesis(假设),h表示一个函数,输入是房屋尺寸大小,就像你朋友想出售的房屋,因此h 根据输入的 x值来得出 y值, y值对应房子的价格 因此, h是一个从x 到y 的函数映射。

一种可能的表达方式为:
吴恩达机器学习笔记week1
,因为只含有一个特征/输入变量,因此这样的问题叫作单变量线性回归问题

5.代价函数

代价函数也被称作平方误差函数,有时也被称为平方误差代价函数。

我们将定义代价函数的概念,这有助于我们弄清楚如何把最有可能的直线与我们的数据相拟合。如图:

吴恩达机器学习笔记week1
我们现在要做的便是为我们的模型选择合适的参数(parameters) θ0和θ1 ,在房价问题这个例子中便是直线的斜率和在y 轴上的截距。

我们选择的参数决定了我们得到的直线相对于我们的训练集的准确程度,模型所预测的值与训练集中实际值之间的差距(下图中蓝线所指)就是建模误差(modeling error)

吴恩达机器学习笔记week1

我们的目标便是选择出可以使得建模误差的平方和能够最小的模型参数。 即使得代价函数
吴恩达机器学习笔记week1
最小。

我们绘制一个等高线图,三个坐标分别为θ0和θ1 和J(θ0,θ1):

吴恩达机器学习笔记week1
则可以看出在三维空间中存在一个使得J(θ0,θ1)最小的点。

5.1 代价函数的直观理解1

吴恩达机器学习笔记week1

吴恩达机器学习笔记week1

5.2 代价函数的直观理解2

通过以上等高线图,则可以看出在三维空间中存在一个使得J(θ0,θ1)最小的点。

我们真正需要的是编写程序能够自动地找出能使代价函数J最小化的参数θ0和θ1的值。

6.梯度下降

梯度下降是一个用来求函数最小值的算法,我们将使用梯度下降算法来求出代价函数J(θ0,θ1) 的最小值

梯度下降背后的思想是:开始时我们随机选择一个参数的组合(θ0,θ1,…,θn),计算代价函数,然后我们寻找下一个能让代价函数值下降最多的参数组合。我们持续这么做直到到到一个局部最小值(local minimum),因为我们并没有尝试完所有的参数组合,所以不能确定我们得到的局部最小值是否便是全局最小值(global minimum),选择不同的初始参数组合,可能会找到不同的局部最小值。

吴恩达机器学习笔记week1
想象一下你正站立在山的这一点上,站立在你想象的公园这座红色山上,在梯度下降算法中,我们要做的就是旋转360度,看看我们的周围,并问自己要在某个方向上,用小碎步尽快下山。这些小碎步需要朝什么方向?如果我们站在山坡上的这一点,你看一下周围,你会发现最佳的下山方向,你再看看周围,然后再一次想想,我应该从什么方向迈着小碎步下山?然后你按照自己的判断又迈出一步,重复上面的步骤,从这个新的点,你环顾四周,并决定从什么方向将会最快下山,然后又迈进了一小步,并依此类推,直到你接近局部最低点的位置。

**批量梯度下降(batch gradient descent)**算法的公式为:

吴恩达机器学习笔记week1
其中α是学习率(learning rate),它决定了我们沿着能让代价函数下降程度最大的方向向下迈出的步子有多大。在批量梯度下降中,我们每一次都同时让所有的参数减去学习速率乘以代价函数的导数。对θ赋值,使得按梯度下降最快方向进行,一直迭代下去,最终得到局部最小值。

如果α太小的话,可能会很慢,因为它会一点点挪动,它会需要很多步才能到达全局最低点。

如果α太大,它会导致无法收敛,甚至发散。

吴恩达机器学习笔记week1
在梯度下降算法中,还有一个更微妙的问题,梯度下降中,我们要更新θ0和θ1 ,当 j=0和j=1时,会产生更新,所以你将更新J(θ0)和J(θ1)。实现梯度下降算法的微妙之处是,在这个表达式中,如果你要更新这个等式,你需要同时更新θ0和θ1,我的意思是在这个等式中,我们要这样更新:
θ0 := θ0,θ1 := θ1。

实现方法是:你应该计算公式右边的部分,通过那一部分计算出和的值,然后同时更新和。

7.梯度下降的线性回归

我们要将梯度下降和代价函数结合。我们将用到此算法,并将其应用于具体的拟合直线的线性回归算法里。

梯度下降算法和线性回归算法比较如图:

吴恩达机器学习笔记week1

对我们之前的线性回归问题运用梯度下降法,关键在于求出代价函数的导数,即:

吴恩达机器学习笔记week1

则算法改写成:

吴恩达机器学习笔记week1

我们刚刚使用的算法,有时也称为批量梯度下降。指的是在梯度下降的每一步中,我们都用到了所有的训练样本,在梯度下降中,在计算微分求导项时,我们需要进行求和运算,所以,在每一个单独的梯度下降中,我们最终都要计算这样一个东西,这个项需要对所有个训练样本求和。因此,批量梯度下降法这个名字说明了我们需要考虑所有这一"批"训练样本,而事实上,有时也有其他类型的梯度下降法,不是这种"批量"型的,不考虑整个的训练集,而是每次只关注训练集中的一些小的子集。在后面的课程中,我们也将介绍这些方法。

8.线性代数回顾

ps:这一部分太基础,都是一些线性代数基础,可以网上找下资料。

8.1 矩阵和向量
8.2 加法和标量乘法
8.3 矩阵向量乘法
8.4 矩阵乘法
8.5 矩阵乘法的性质
8.6 逆、转置