发布于 

机器学习I - 综述与线性回归(Linear Regression)

机器学习是一门开发算法和统计模型的科学,计算机系统使用这些算法和模型,在没有明确指令的情况下,依靠既有模式和推理来执行任务。 计算机系统使用机器学习算法来处理大量历史数据,并识别数据模式。 这可让计算机系统根据给出的输入数据集更准确地预测结果。

1. 入门与一元线性回归

1.1 简介

机器学习模型主要有以下几种分类:

  • Supervised Machine Learning(监督学习)
  • Unsupervised Machine Learning(无监督学习)
  • Semi-supervised Machine Learning(半监督学习)
  • Reinforcement(强化学习)

主要先介绍监督学习与无监督学习

Supervised Machine Learning(监督学习)

在监督学习中,数据的训练集(输入数据)包括了标签,该标签可能是离散的或者连续的。例如分类模型,数据的训练集中都标注了该图片是狗或者是非狗,或者是某种狗的类型。
二元分类模型:狗
多元分类模型:狗
在回归模型中,需要预测的值为一个连续值,所以需要通过一些评判标准来进行预测。例如线性回归,是将每个点到预测线的误差值得集合最小化,来获得预测线。
线性回归模型:冰激凌价格vs温度

Unsupervised Machine Learning(无监督学习)

在现实生活中,带有标签的数据获得成本实际很高,所以催生了无监督学习的发展。与监督学习相对应的为无监督学习,即训练集中无现有标签。
常见的为Culstering Example(聚类模型),根据准则(例如K-means和KNN)来将模型分类n类。
聚类模型

1.2 模型与代价函数 (Model and Cost Function)

1.2.1 模型

$x^{(i)}$ 输入变量 (input variables)

$y^{(i)}$ 输出变量 (output variables)

$(x^{(i)}, y^{(i)})$ 训练样本 (training example)

$(x^{(i)}, y^{(i)}); i = 1, …, m$ 训练集 (traing set)

$X, Y$ 输入特征和输出特征的空间(space),例如$X \in \mathbb{R}, y \in \mathbb{R}$

一个有监督模型的过程,正式来讲,是根据训练集去学习一个假设(hypothesis)$h:X \to Y$,这样$h(x^{(i)})$便可以用来预测实际的$y^{(i)}$。例如下图:

1
2
3
4
5
6
7
graph TD
A(训练集 - Training Set):::box
--> B(算法 - Learning Algorithm):::box
--> C(h):::box
--> y:::box
x:::box --> C
classDef box fill:#ebf2ff, stroke:#000000

假设可以简单理解为是一种我们推测出的一种,事物间的关系。从数据的角度,关系即为一个函数。

衡量函数$h$的性能,我们一般使用代价函数(Cost Function)。

1.2.2 代价函数 (Cost Function)

以线性回归为例,$h_\theta(x) = \theta_0 + \theta_1x$, 则线性回归的代价函数$J$则为平均预测值$h(x)$和实际值$y$之间的差,如:

其中: $\theta$ 函数的参数,$m$ 训练集样本量

线性回归的代价函数一般也称之为MSE(均方误差 Mean Sqaure Error),或者方差损失函数(Squared Error Function)。

乘以$\frac{1}{2}$是为了在使用梯度下降时计算的便利性,并无实际意义

1.3 梯度下降 (Gradient Descent)

目前我们拥有了假设函数$h_\theta$,以及测量假设函数的准确性的方法$J(\theta_0,\theta_1)$,我们便需要一个方法可以将代价函数最小化,从而最大限度的提升假设函数的准确性,这个方法便是梯度下降。

想象我们绘制一个三维曲面图,将假设函数$h_\theta$的参数$\theta_0,\theta_1$作为图的$x, y$轴,将$J(\theta_0,\theta_1)$作为$z$轴,梯度下降的概念是,我们随机选择一个点,然后环顾一周选择下降最快的一个方向,往下走一步,之后在不断重复,直到在最低点。

梯度下降的详细步骤如下:

$:=$ 表示复制;$\alpha$代表学习率(Learning Rate),也就是每次梯度下降的步长

1.3.1 学习率

  • 如果学习率过小,梯度下降会很慢
  • 如果学习率过大,梯度下降会略过收敛点,导致结果无法收敛

1.3.2 局部最优与全局最优

梯度下降会到局部最优,如果损失函数是凹函数,则不会有问题。

1.3.3 偏微分项

偏微分项$\frac{\partial}{\partial\theta_j} J(\theta_0,\theta_1)$是为了让每次的步长,越下降越小,以防止略过收敛点。

1.4 线性回归梯度下降 (Gradient Descent)

线性回归的梯度下降过程如下:

其中:

线性回归的代价函数为凹函数,所以local minimum即为overall minimum。

2. 多元线性回归(Multivariate Linear Regression)

多元线性回归是在一元线性回归的基础上,有多个$x$

$x_j^{(i)}$ 输入特征$j$中,第$i$个的值

$m$ 训练样本量

$n$ 特征量

假设函数如下:

或矩阵形式:

2.1 多元线性回归的梯度下降

与一元线性回归类似

2.1.1 特征缩放(Feature Scaling)与标准化(Normalization)

不同的特征数值范围是不同的,比如$x_1$是从0-10,$x_2$是从0-1000,这样进行梯度下降时会过于慢,如下图:

调整方法有以下两种

  • 特征缩放:每个特征值,除以该特征的取值范围(Range),例如$x_1/10$ ,$x_2/1000$

  • 标准化:$(x_i - \mu_i)/ s_i

2.1.2 多项式回归(Polynomial Regression)

在某些特定的输入特征,我们需要对其加工,例如合并多个特征变为一个,比如新增$x_2 = x_1 * x_1$,这样我们的假设函数就会变为

经过乘方之后,$x$的取值范围会大大扩大,所以特征缩放就会变得极其重要

2.2 多元线性回归的正规方程(Normal Equation)

正规方程为另外一种最小化代价函数的方法。与梯度下降不同的是,正规方程不是使用多次迭代,不断寻找最小值的方法,而是可以直接计算出代价函数最小时,各$\theta$的值。推导过程如下:

多元线性回归的假设函数为

矩阵形式则为

多元线性回归的代价函数为

带入矩阵形式

因为我们需要取代价函数的最小值,则对$J(\theta)$取偏导

最小化$J(\theta)$时,其的导数等于0

假设$X^TX$是可逆的,则

$X^TX$有时会是不可逆的,通常原因为:

  1. 有些特征是冗余的,或者说一些特征相互线性相关(Linearly Dependent)
  2. 样本量少于特征数量,也就是$ m<n $,这样我们需要对特征进行正则(Regularization),来删除特征,后续会介绍这部分。

2.3 对比梯度下降与正规方程

梯度下降:

  • 需要选择学习率$\alpha$
  • 需要$k$次迭代
  • 时间复杂度$O(kn^2)$
  • 在特征数量$n$较大时,仍然适用

正规方程:

  • 不需要选择学习率,不需要迭代
  • 时间复杂度$O(n^3)$
  • 在特征数量比较大时,速度较慢

3. 分类模型(Classification)与逻辑回归(Logistic Regression)

逻辑回归的假设函数为

其中

$g(z)$函数将实数域映射到$[0,1]$,之间从而满足分类的要求。例如,$g(z) = 0.7 $则代表分类为1的概率为70%。

3. 优化目标

3.1 代价函数

回想线性回归的代价函数为

套用到逻辑回归中,其中

这样我们的代价函数将不会是一个凹函数,梯度下降时,会陷入局部最小值,从而无法应用梯度下降。所以我们使用以下代价函数:

其中

因为$y = 0 \ or \ 1$,所以可以简写为

3.2 梯度下降

进行梯度下降,我们需要$min_\theta J(\theta)$

其中,

有更复杂的优化方法,例如”Conjugate gradient”, “BFGS”, 和”L-BFGS”,可以在包中供我们使用

3.3 多分类问题(Multiclass Classification)

我们可以建立多个假设函数,每个假设函数将多个分类拆分为其中一个分类与全部其他分类,例如:

reference
机器学习 by 周志华