第一章 引言
1.1什么是机器学习
Tom Mitchell提出一个程序被认为能从经验E中学习,解决任务T,达到性能度量值P,当且仅当,有了经验E后,经过P评判,程序在处理T时的性能有所提升。在下棋的例子中,经验E 就是程序上万次的自我练习的经验而任务T 就是下棋。性能度量值P呢,就是它在与一些新的对手比赛时,赢得比赛的概率。
1.2监督学习
1.2.1Supervised learning 给一个算法集,其中包括了正确答案。用专业的术语定义,也被成为回归问题(Regression problem)设法预测连续值(continuous value)的属性。
1.2.2 分类问题
多个属性、多个特征,预测离散的值(Discrete valued)。例如预测三种类型的肿瘤
当有无穷多个特征时,可以使用支持向量机算法。
1.2.3 无监督学习
无监督学习中没有标签。在给定的数据集中可以把数据分成不同的簇(culster),被称为聚类算法(a culstering algorithm),应用广泛例如谷歌新闻将相同的新闻组合成一个新闻专题、社交网络分析给你的好友自动分组。
聚类算法是无监督学习的一种。
看一下鸡尾酒宴会问题算法(Cocktail party problem algorithm)
[W,s,v] = svd((repmat(sum(x.*x,1),size(x,1),1).*x)*x');
SVD即singular value decomposition奇异值分解的缩写。
第二章 单变量线性回归(Linear Regression with One Variable)
2.1模型表示
Model representation
在监督学习中我们有一个数据集,这个数据集被称训练集。
我们将要用来描述这个回归问题的标记如下:
一种可能的表达方式为: hg (x)= θo + θ1x,因为只含有一个特征/输入变量, 因此这样的问题叫作单变量线性回归问题。
2.2代价函数
假设函数中的参数选择决定了我们的预测值与实际值的误差即建模误差(modeling error)
我们的目标便是选择出可以使得建模误差的平方和能够最小的模型参数。 即使得代价函数最小。
代价函数也被称作平方误差函数,有时也被称为平方误差代价函数。还有其他的代价函数也能很好地发挥作用,但是平方误差代价函数可能是解决回归问题最常用的手段了。
θ=1时,j(θ)有最小值,假设函数和数据得到最好的拟合。
2.3梯度下降
Gradient descent
梯度下降是用来求函数最小值的算法。
梯度下降背后的思想是:开始时我们随机选择一个参数的组合(θ1,θ2…,θn),计算代价函数,然后我们寻找下一个能让代价函数值下降最多的参数组合。我们持续这么做直到到一个局部最小值(local minimum),因为我们并没有尝试完所有的参数组合,所以不能确定我们得到的局部最小值是否便是全局最小值(global minimum),选择不同的初始参数组合,可能会找到不同的局部最小值。
批量梯度下降(batch gradient descent)算法的公式为:
其中α是学习率(learning rate),它决定了我们沿着能让代价函数下降程度最大的方向向下迈出的步子有多大,在批量梯度下降中,我们每一次都同时让所有的参数减去学习速率乘以代价函数的导数。
在梯度下降中,要同时更新θ0和θ1,当J=0和J=1时,更新J(θ0)和J(θ1)。
2.4 直观理解梯度下降
梯度下降算法如下:
如果α太小了,即学习速率太小,结果就是只能一点点地挪动,去努力接近最低点,这样就需要很多步才能到达最低点,所以如果太小的话,可能会很慢,因为它会一点点挪动,它会需要很多步才能到达全局最低点。
如果α太大,那么梯度下降法可能会越过最低点,甚至可能无法收敛,下一次迭代又移动了一大步,越过一次,又越过一次,一次次越过最低点,直到你发现实际上离最低点越来越远,所以,如果太大,它会导致无法收敛,甚至发散。
假设你将初始化在局部最低点,在这儿,它已经在一个局部的最优处或局部最低点。结果是局部最优点的导数将等于零,因为它是那条切线的斜率。这意味着你已经在局部最优点,它使得不再改变,也就是新的等于原来的,因此,如果你的参数已经处于局部最低点,那么梯度下降法更新其实什么都没做,它不会改变参数的值。这也解释了为什么即使学习速率保持不变时,梯度下降也可以收敛到局部最低点。
梯度下降法中,当我们接近局部最低点时,梯度下降法会自动采取更小的幅度,这是因为当我们接近局部最低点时,很显然在局部最低时导数等于零,所以当我们接近局部最低时,导数值会自动变得越来越小,所以梯度下降将自动采取较小的幅度,这就是梯度下降的做法。所以实际上没有必要α再另外减小。