跳转至

机器学习

从任务 T 学习经验 E,提高性能度量 P,可以分为

  • 监督学习(supervised learning):给定数据集和正解,预测其他样本正确答案
  • 无监督学习(unsupervised learning):分析给定数据集的结构

给定训练集(training set)\((x,y)\),设共有\(n\)个特征,则输入值和参数可表示为如下向量

\[ \begin{gather} x=\begin{bmatrix} x_0 \\ x_1 \\ \cdots \\ x_n \end{bmatrix} \in \R^{n+1} \\ \theta=\begin{bmatrix} \theta_0 \\ \theta_1 \\ \cdots \\ \theta_n \end{bmatrix} \in \R^{n+1} \end{gather} \]

其中 \(x_0=1\),代表偏移的输入值。

回归问题

回归问题(regression problem)拥有连续的输出值,包括

  • 线性回归(linear regression)
  • 多项式回归(polynomial regression)

假设函数

多元线性回归的假设函数(hypothesis)可以如下表示,

\[ \begin{equation} y=h_{\theta}(x)=\theta^{T}x \end{equation} \]

代价函数

线性回归常使用平方误差作为代价函数(cost function),

\[ \begin{equation} J(\theta)=\frac{1}{2m}\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})^2 \end{equation} \]

对于线性回归,平方误差函数是以一个凸函数,方便进行梯度下降计算。

目标是找到使以上代价函数最小的\(\theta_0,\theta_1\),即

\[ \begin{equation} \underset{\theta}{\min}(J(\theta)) \end{equation} \]

梯度下降

梯度下降法(gradient descent)是一种常用的参数更新方法,

\[ \begin{gather} \theta_j := \theta_j - \alpha\frac{\partial J(\theta)}{\partial\theta_j} \\ \theta_j := \theta_j - \alpha\frac{1}{m}\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})x^{(i)}_j \end{gather} \]

其中\(\theta_0,\cdots,\theta_n\)需同步更新。

正规方程

上述梯度下降法是通过多次迭代(iteratively)计算最优解,还可以通过正规方程(normal equation)计算,即通过解析法(analytically)一次性地得到最优解。这通常只适用于特征较少的线性回归问题。

设有 \(m\) 个样本,\(n\) 个特征,则输入矩阵和输出向量为

\[ \begin{gather} X=\begin{bmatrix} x_0^{(1)} & \cdots & x_n^{(1)} \\ x_0^{(2)} & \cdots & x_n^{(2)} \\ & \cdots \\ x_0^{(m)} & \cdots & x_n^{(m)} \\ \end{bmatrix} \\ y=\begin{bmatrix} y^{(1)} \\ y^{(2)} \\ \cdots \\ y^{(m)} \end{bmatrix} \end{gather} \]

从而有最优的参数如下,

\[ \begin{equation} \theta=(X^T X)^{-1} X^T y \end{equation} \]

其中,逆矩阵的计算复杂度通常是维度的三次方。

分类问题

分类问题(classification problem)拥有离散的输出值,例如 \(y\in \{0,1\}\),包括

  • 逻辑回归(logistic regression)

假设函数

逻辑回归常使用 Sigmoid 函数作为假设函数

\[ \begin{gather} h_{\theta}(x)=g(\theta^T x) \\ g(z)=\frac{1}{1+e^{-z}} \end{gather} \]

在分类问题中,假设函数的输出值表示在给定参数下的数学期望。

代价函数

在逻辑回归中,常用的代价函数如下,

\[ \begin{gather} \text{Cost}(h_{\theta}(x),y)=-y\lg(h_{\theta}(x))-(1-y)\lg(1-h_{\theta}(x)) \\ J(\theta) =\frac{1}{m}\sum_{i=1}^{m}\text{Cost}(h_{\theta}(x^{(i)}),y^{(i)}) \end{gather} \]

梯度下降

\[ \begin{equation} \theta_j := \theta_j - \alpha\frac{1}{m}\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})x^{(i)}_j \end{equation} \]

虽然表示和线性回归中一样,但假设函数不同。

优化算法

  • 共轭梯度法(conjugate gradient)
  • BFGS
  • L-BFGS

多类别分类

对于多类别分类(multiclass classification),针对多个分类值 \(y\in \R^{K}\),分别进行二元逻辑回归计算概率,然后取其中概率最大的值作为预测值,

\[ \begin{gather} h_{\theta}^{(i)}(x)=P(y=i|x;\theta) \\ \underset{i}{\max}\ h_{\theta}^{(i)}(x) \end{gather} \]

优化

特征缩放

通过特征缩放(feature scaling)使得 \(-1 \le x_j \le 1\),梯度下降可以更快地收敛。

均值归一化(mean normalization)

学习率

如果\(\alpha\)太小,梯度下降很慢;如果\(\alpha\)太大,可能会导致无法收敛,甚至发散。代价函数通常是凸函数(convex function),因此不会陷入局部最优。

Batch:每一步梯度下降使用训练集所有的样本。

过拟合

过拟合(overfitting)指的是特征过多时,可以很好地拟合训练数据,但是对新数据样本的预测效果很差。解决过拟合问题,可以尝试通过手动或模型选择算减少选择的特征数。另一种方法是使用正则化(regularization)。

\[ \begin{equation} J(\theta)=\frac{1}{2m}\bigg[\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})^2+\lambda\sum_{j=1}^{n}\theta_j^2 \bigg] \end{equation} \]

线性回归

对于线性回归问题,采取正则化后的参数更新变成了,

\[ \begin{gather} \theta_0 := \theta_0 - \alpha\frac{1}{m}\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})x^{(i)}_0 \\ \theta_j := \theta_j (1-\alpha\frac{\lambda}{m}) - \alpha\frac{1}{m}\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})x^{(i)}_j \qquad j=1,\dots,n \end{gather} \]

逻辑回归

模型选择

数据划分

将数据样本按一定比例(常为 6:2:2)随机划分为训练集(training set)、交叉验证集(cross-validation set)和测试集(testing set),先使用训练集进行多个模型的参数学习,再通过验证集验证选择最小误差 \(J_{cv}(\theta)\) 的模型,最后通过测试集的误差 \(J_{test}(\theta)\),评估训练结果是否有较好的泛化能力。

欠拟合和过拟合

  • 欠拟合(underfit):\(J_{train}\)\(J_{cv}\) 都很大,属于高偏差(bias)问题;
  • 过拟合(overfit):\(J_{train}\) 较小,但 \(J_{cv}\) 较大,属于高方差(variance)问题。

参考