Machine Learning(1): Introduction

(此乃我在coursera上面,学习Andrew Ng(吴恩达)的课程Machine Learning的笔记)

机器学习问题分为:监督学习(supervised learning)无监督学习(unsupervised learning)

监督学习

在监督学习中,对于数据集中的每个数据,都有相应的正确答案,算法就是基于这些来做出预测。
回归问题:连续值输出,如预测某天的温度
分类问题:离散值输出,如预测是否是肿瘤

无监督学习

无监督学习的训练数据没有给出“正确答案”(标签),它只有一个数据集,需要算法自动找出这个数据集的某种结构或者分类,如果通过聚类算法,找出不同类型的人,不同的市场等等,这些事先都没有给出正确的答案。

工具

Octave和matlab,Andrew推荐使用Octave,因为他们都是用这个来演示的-_–。

线性回归linear Regression

训练输出的模型函数叫hypothesis(假设),用$h$来表示。

$$h_\theta(x)=\theta_0+\theta_1x$$
称为单变量线性模型。
线性回归则是指通过数据训练出一个线性模型的过程。

代价(损失)函数Cost Function

$$J(\theta_0,\theta_1)=\frac{1}{2m}\sum_{i=1}^{m}(h_\theta(x_i)-y_i)^2$$
代价函数用于评估模型的精度。其中,$x_i$为预测输入,$y_i$为实际输出,即实际值,而$h_\theta(x_i)-y_i$项表示预测值和实际值的误差。平方是为了防止误差累加后会正负抵消,另外也可以用绝对值或者对数似然损失函数(见《统计学习方法》李航1.3节)。
另外需要解析的是$2m$的意义,除以$m$显然是为了求平均值,而“2”的加入其实是为了方便以后的计算。Andrew在此没有细说,但是后面学习剃度下降的时候就应该知道,需要求导,平方的导数会多出一个2,我猜这里就是为了约去它。
还有需要注意的是,$h$的自变量是$x$,而$J$的自变量是$\theta$。

剃度下降Gradient Descent

剃度下降算法就是给出初始值$\theta_i$,然后通过一点点改变$\theta_i$,使得$J(\theta)$变小,直到它到达最小值或局部最小值。
其过程就是不断重复以下步骤,直到收敛:
$$\theta_j:=\theta_j-\alpha\frac{\partial}{\partial\theta_j}J(\theta_0,\theta_1)$$
其中符号“:=”表示赋值,$j$表示特征的索引,这里$j=0,1$。需要注意的是,这里的迭代必须是两个特征同时迭代,即:ML_3
由于$\frac{\partial}{\partial\theta_j}J$就是$J$的斜率,在越接近最低点时越小,即越陡峭下降越快,越平缓下降越慢。所以,不用改变$\alpha$也可以收敛。如图所示:ML_1
另外,对于称为学习速率的$\alpha$,取值太小,则收敛太慢;取值太大,则可能造成无法收敛。ML_2