机器学习 - 第一讲
导论
什么是机器学习?
监督学习(Supervised Learning)
在监督学习中,我们给出数据组,并且已经知道正确的输出是什么样,明确输入和输出之间的关系 。
监督学习问题可以归类为 回归(regression) 和 分类(classification) 问题。
在 回归 问题上,我们尝试预测一个 连续(continuous) 的输出结果,也就是说我们尝试去map输入变量到一些连续的方程。
在 分类 问题上,我们尝试预测一个 离散(discrete) 的输出结果,也就是说我们尝试去map输入变量到离散的分类。
例如:
- 给定关于在房地产市场中房子占地大小的数据去预测他们的价格。价格作为关于房子占地大小的函数是一个连续的输出,所以这是一个回归问题。
- 回归问题:根据给定的一个男性/女性图片,预测他们的年龄
- 分类问题:给定一个男性/女性图片,预测他/她是否是高中生、大学生、研究生年龄。
- 回归问题:银行根据某人的信用历史决定是否给他贷款。
非监督学习(Unsupervised Learning)
在非监督学习中,可以解决事先不知道结果会怎么样的问题。我们不必知道数据是否有效就可以根据数据派生出结构。
我们可以通过集群(clustering)基于数据中变量之间关系的数据派生出这种结构。
非监督学习没有基于预测结果的反馈修正,就像没有老师纠正一样。
例如:
- Clustering:在商学院收集1000份论文,根据词频,句子长度,页码等等相似或者不同的变量将这些论文自动的划分为几个分组。
- Non-clustering:根据混乱的数据(例如语音识别音乐识别)找出结构。
单变量线性回归(Linear Regression with One Variable)
模型表示(Model Representation)
在回归问题中,我们使用输入变量去满足一个连续输出变量的期望结果函数。
单变量线性回归也叫做“univariate linear regression”。
当我们想从一个单输入值 x 预测一个单输出值 y 时使用单变量线性回归。这里我们使用监督学习,这意味着我们事先知道输入输出的关系和应该达到什么效果。
假设函数(The Hypothesis Function)
我们的假设函数通常为:
注意这个像等式一样的直线。我们根据 \(\theta_0\ 和\ \theta_1 给定\ h_{\theta}(x) \ \)的值,然后估计 \(\hat{y}\)。换句话说,我们尝试创建一个 \(h_\theta\) 的函数去map我们的输入数据(x的)到我们的输出数据(y的)。
例如:
假设输入的训练组数据为:
input output
x y
0 4
1 7
2 7
3 8
现在我们随机的做一个关于 \(h_{\theta}\) 的猜测:\(\theta_{0} = 2, \theta_{1} = 2 \)。则假设方程为 \(h_{\theta}(x) = 2 + 2x\)。
于是如果输入为 1 ,y 则为 4 。 与实际的 y 差 3 。注意我们将会尝试大量的 \(\theta_{0}\) 和 \(\theta_{1}\) ,找出最合适的值(y最贴近真实值)。图形上表示的是一条最有代表性的直线。(!补图)
成本函数(Cost Function)
我们可以使用成本函数获得精确的假设函数。成本函数取得一个关于输入x的假设的结果和真实的y的对比的均值(实际上是一个比较理想的均值)
分解来看,这个方程表示的是 \(\frac{1}{2}\bar{x}\), \(\bar{x}\) 是 \(h_{\theta}(x_{i})-y_{i}\) 的平方的均值,或者是预测值和真实值的不同。
这个方程又称“平方误差函数(Squared error function)”或者“均值平方误差(Mean squard error)”。 “均值”是一半(\(\frac{1}{2m}\)),这方便计算计算梯度下降(gradient descent),平方函数的导数将会抵消 \(\frac{1}{2}\) .
现在我们可以具体的(通过已知的正确结果)衡量我们预测的方程的精确度,从而预测我们没有的新结果。
如果考虑可视化,训练组的数据分散在 x-y 平面。我们尝试去画一条穿过分散的数据的直线(根据 \(h_{\theta}(x)\) 定义)。我们的目标是获得可能性最高的直线。可能性最高的直线应该是所有分布的点与这条垂直距离最短的直线。最理想的情况是这条线通过训练组数据所有的点,此时 \(J(\theta_{0}, \theta_{1})\) 值为0。(!补图)
梯度下降(Gradient Descent)
我们已经有了假设函数并且有衡量它与数据适配程度的方法。现在我们需要去估计假设函数中的参数,于是我们需要梯度下降。
想象一下我们根据 \(\theta_{0}\) 和 \(\theta_{1}\) 绘出我们的假设函数(事实上是通过成本函数的估计参数)。这有点混乱,我们将这个进行更高一级的抽象。我们没有绘x和y本身,而是绘假设函数和成本函数里参数的范围。
我们将 \(\theta_{0}\) 设为x轴, \(\theta_{1}\) 设为 y 轴,成本函数设为垂直 x-y 的 z 轴。图中的点是成本函数使用我们的假设值theta参数得出的结果。
我们可以通过查看我们的成本函数是否在图形最底部(最小值)判断是否成功。
使用的方法是用成本函数的导数(函数的切线)。切线的斜率是那一点的导数,将会给我们一个导数前进的方向。我们一步一步朝着导数最陡峭的方向下降,每次下降的幅度由参数 \(\alpha\) 决定,称作学习速率(learning rate)。
梯度下降算法如下:
repeat until convergence:
其中 \(j = 0 , 1\) 代表着参数的索引号
线性回归梯度下降(Gradient Descent for Linear Regression)
当应用到线性回归中的一个具体情况时,可以派生出一个新的梯度下降等式形式。我们可以将我们实际的成本函数和实际的假设函数和修改过的等式替换成以下式子:
repeat until convergence: {
}
其中 \(m\) 是训练组的大小, \(\theta_{0}\) 是和 \(\theta_{1}\) 同时变化的常数,\(x_{i}\) 和 \(y_{i}\) 是给定训练组的值。
注意将 \(\theta\) 分为两种情况计算,\(\theta_{j}\) 代表 \(\theta_{0}\) 和 \(\theta_{1}\) ,对于 \(\theta_{1}\) 需要在最后乘 \(x_{i}\) 。
重复以上方程我们得到的假设会越来越准确。