Supervised Machine Learning Regression and Classification - Week 1

发布时间 2023-06-08 18:57:20作者: 星宇SKY

1. 机器学习定义

Field of study that gives computers the ability to learn without being explicitly programmed. -- Arthur Samuel(1959)


如果只能进行少数训练,该模型将比同等情况下,进行大量训练的表现更差。

机器学习最常用的两种类型:

  • 监督学习(Supervised Learning)
    现实世界中应用最为广泛,涵盖于本课程第一、第二部分
  • 非监督学习(Unsupervised Learning)
    涵盖于本课程第三部分
  • 强化学习(Reinforcement Learning)
    本课程暂不多作介绍。

2. 监督学习

监督学习的关键特征是给予学习算法一些示例去学习,包括正确的和错误的示例。

2.1 回归(Regression)

根据图中所展示的相应数据点,简单粗暴给出一条拟合的直线也能给出预测。
但若是能够拟合一条曲线,相比于直线能更符合现有数据的表现,即预测的 label 会更加精确。
因此对于回归问题,我们需要决定是拟合直线、曲线、还是一些更复杂的其他函数。

  • 我们可以理解监督学习:
    learn to predict input, output or X to Y mapping.
  • 我们可以定义回归:
    Regression: Predict a number out of infinitely many possible outputs.

2.2 分类(Classification)


示例的肿瘤检测,是一个二分类问题,即只需要判断为 0/1,代表良性/恶性。

以此进行推广,我们可以判断一个多分类问题,在此处为判断 0/1/2。
上述例子只使用了一个特征,我们可以使用更多的输入值(two or more inputs)进行判断,如添加年龄属性。

现实生活中我们处理分类问题时,往往需要使用许多特征(inputs)进行判断。

  • 我们可以定义分类:
    Classification: predict categories which can be small finite number of possible outputs

2.3 小结

3. 非监督学习(Unsupervised Learning)


对于监督学习,相应的数据集中我们可以得到每条样例数据对应的标签(label);而在非监督学习中,不存在这样一个标签(label)。
这意味着我们可能需要使用算法去自行寻找一个标签,或者我们可以使用样例数据进行探索,自行发现规律。

3.1 聚类(Clustering)


聚类是获取没有标签的数据集,并尝试将它们自动分组到集群中。
如图所示,我们可能可以将顾客划分为三类群体。

3.2 另两种非监督学习方法

  • 聚类(Clustering)
    Group similar data points together.
  • 异常检测(Anomaly Detection)
    Find unusual data points.
  • 降维(Dimensionality reduction)
    Compress data using fewer numbers.

4. 线性回归(Linear Regression)

线性回归是回归的一个例子,它搭建一个线性模型,从而预测回归问题。

这里我们可以回顾一下概念

  • 回归模型(Regression model)predicts numbers
    Infinitely many possible outputs
  • 分类模型(Classification model)predicts categories
    Only small number of possible outputs

4.1 机器学习中常用术语(terminology)

术语 说明
Training Set 训练集,即 Data used to train the model
x 输入变量,即 input variable,或 feature
y 输出变量,即 output variable,或 target
m 训练集样本数量,即 number of training examples
(x, y) 单个训练样本,即 single training example
\((x^{(i)}, y^{(i)})\) 第 i 个训练样本,即 \(i^{(th)}\) training example
\(\widehat{y}\) 预测标签,即 estimated output
parameter 模型的参数,即 the variables you can adjust during training in order by improve the model

4.2 函数表达

总得来说,借用机器学习的技术,我们将训练集数据结合相应的学习算法,从而生成一个函数f,以此表达输入变量与输出变量间的关系。从而,对任意给定的输入变量,我们可以借助 f 输出一个预测的输出变量(estimated)。

此处我们假设 f 为一个线性函数,它包括两个参数,w 代表权重(weights),b 表示偏差(bias)。
完整的表述如下:

\[f_{w, b}(x) = wx + b \]

实际使用时常简述为:

\[f(x) = wx + b \]

如上这种只有一个变量 x 的线性回归,称作单变量线性回归(univariate linear regression),后续我们会接触具有更多变量的线性回归,称为多变量线性回归。

4.3 代价函数(Cost function)

w 和 b 的取值可以有任意个,那究竟什么样的取值更符合我们的数据集,或者说更符合我们希望搭建的模型,我们需要相应的评价指标,即从任意取值中选取最优的取值。
以此我们可以定义线性回归的代价函数,即我们希望搭建的模型最符合我们想要的结果,预测的输出值与给定的输出值差异最小。

\[Cost\ function:\ Squared\ error\ cost\ function \\\\ J_{(w, b}) = \frac{1}{2m}\sum_{i=1}^m(\widehat{y}^{(i)} - y^{(i)})^2 \\\\ J_{(w, b)} = \frac{1}{2m}\sum_{i=1}^m(f_{w, b}(x^{(i)}) - y^{(i)})^2 \]

这里的 $ \widehat{y}^{(i)} - y^{(i)} $ 即为第 i 条样例数据对应的预测的输出值与给定的输出值的差异(error)。
为了避免代价函数取值过大,我们将每个样例数据的差异取平均处理。
这里对误差项取 $ \frac{1}{2} $ 的目的是为了方便求导,去除 $ \frac{1}{2} $ 也不影响代价函数的表达。

4.3.1 代价函数的直观理解


代价函数的目的是为模型找到一组合适的参数,从而使得拟合结果最符合数据表现,拟合得到的差异(error)最小。
即对于模型 $ f_{w,b}(x) = wx+b $,找到相应的参数 w、b,目标是最小化代价函数 $ J(w,b) $。

这一部分主要是详细示范了,在 b=0 的情况下,不同参数 w 的选择给代价函数带来的影响。

4.3.2 代价函数的可视化


对于线性回归,代价函数是一个碗状的凸函数,这意味着存在全局最小值。

4.4 梯度下降(Gradient Descent)

梯度下降是极为常见的优化方法。
对于线性回归的代价函数 $ J(w,b) $,我们想要使得 $ J(w,b) $ 最小化。
实际上梯度下降可以推广至任意函数的优化问题上,如 $ \min_{w_1,...,w_n,b}J(w_1, w_2,..., w_n, b) $。
算法大致步骤如下:

  1. 初始化w,b(如设置为 0,0)
  2. 改变 w,b的取值,以使得 $ J(w,b) $ 减少
  3. 在 $ J(w,b) $ 达到或接近最小值时停止


如图,可以理解成为站在山顶,每一次都朝着下山最快的方向走一小步,直至达到当前路径下的最低点。
需要注意的是,梯度下降不能保证可以达到全局最小值,有可能会陷入局部最优(local minima)。这需要依照损失函数的具体情况进行考虑。

4.4.1 梯度下降算法(Algorithm)

So far in this course, you have developed a linear model that predicts \(f_{w,b}(x^{(i)})\):

\[f_{w,b}(x^{(i)}) = wx^{(i)} + b \tag{1} \]

In linear regression, you utilize input training data to fit the parameters \(w\),\(b\) by minimizing a measure of the error between our predictions \(f_{w,b}(x^{(i)})\) and the actual data \(y^{(i)}\). The measure is called the \(cost\), \(J(w,b)\). In training you measure the cost over all of our training samples \(x^{(i)},y^{(i)}\)

\[J(w,b) = \frac{1}{2m} \sum\limits_{i = 0}^{m-1} (f_{w,b}(x^{(i)}) - y^{(i)})^2\tag{2} \]

In lecture, gradient descent was described as:

\[\begin{align*} \text{repeat}&\text{ until convergence:} \; \lbrace \newline \; w &= w - \alpha \frac{\partial J(w,b)}{\partial w} \tag{3} \; \newline b &= b - \alpha \frac{\partial J(w,b)}{\partial b} \newline \rbrace \end{align*}\]

where, parameters \(w\), \(b\) are updated simultaneously.
The gradient is defined as:

\[\begin{align} \frac{\partial J(w,b)}{\partial w} &= \frac{1}{m} \sum\limits_{i = 0}^{m-1} (f_{w,b}(x^{(i)}) - y^{(i)})x^{(i)} \tag{4}\\ \frac{\partial J(w,b)}{\partial b} &= \frac{1}{m} \sum\limits_{i = 0}^{m-1} (f_{w,b}(x^{(i)}) - y^{(i)}) \tag{5}\\ \end{align} \]

Here simultaniously means that you calculate the partial derivatives for all the parameters before updating any of the parameters.
因为代价函数存在两个参数 w 与 b,因此在每一次朝着梯度最大方向移动时,这两个参数需要保持同时更新,即在进行下一次移动前更新 w 和 b。

4.4.2 学习率(learning rate)

这里引入新的概念:

  • 学习率(Learning Rate)
    用 $ \alpha $ 表示,可以理解成为朝着梯度最大的方向,移动时每梯度的单位距离。
    $ \frac{\partial J(w,b)}{\partial w} $ 为当前梯度大小
    $ \alpha \frac{\partial J(w,b)}{\partial w} $ 二者相乘,即为每次移动的实际步长。

  • 如果学习率太小,每次移动的步长会很小,从而代价函数收敛太慢
  • 如果学习率太大,每次移动的步长太大,可能会在最小值周围反复横跳,无法收敛到最小值

当处于代价函数的局部极小值(local minimum)时,该点对应偏导数为0,从而参数 w 将不再更新。
但这也使得代价函数无法优化至全局最小值(global minimum)。

4.4.3 用于线性回归的梯度下降


这一步主要介绍对应公式的推导过程。
接下来补充了一个新的概念:

  • 批梯度下降(batch Gradient Descent)
    每次更新参数时,都需要使用全部的训练数据,即为 m 条训练数据都需要参与代价函数的计算,这会使得计算量大大增加。
    each step of gradient descent, uses all the training examples.

5. Optional Lab


课后代码中展示了一个样例,在梯度下降过程中 w 与 b 的变化趋势。
这很符合我们的直观理解,即随着参数的更新,代价函数逐渐降低至极小值。