简述机器学习中的入门数学原理
本篇文章将介绍机器学习中的入门数学原理,学习这个将对之后学习机器学习理论有很大帮助
文章将基于《白话机器学习的数学》(立石贤吾著)进行讲解
(如果文章中的公式不能正常显示,请刷新该页面。如果还不能解决,请邮箱联系我,谢谢...)
原书写得非常通俗易懂,建议结合原书进行了解: 原书连接
概述
机器学习算法有:
- 回归(regression):处理连续数据(时间序列数据)
- 分类(classification):有标签的分类
- 聚类(clustering):无标签的“分类”
使用数据进行学习时:
- 有标签的数据:(有)监督学习(supervised learning)
- 无标签的数据:无监督学习(unsupervised learning)
而上述算法中,回归和分类属于监督学习,聚类为无监督学习,具体为什么,除了使用的数据不同之外,其他的不做深入解释
原文中除了概述外,一共有五章:
- 第一章:学习回归
- 第二章:学习分类
- 第三章:评估
- 第四章:python实现(matplotlib,numpy,pandas)
- 第五章(附录):数学复习(基本都是高中数学、高数和线性代数的内容)
学习这本数需要有基本的数学基础,例如:偏导数、复合函数、向量等知识。如果已经学习过高等数学或者数学分析的课程,学习起来并不难
而在原书中,只介绍了监督学习的数学,但是对于之后学习机器学习基础来说已经足够了
在本文章中只讲解前三章的内容,至于python实现,在学习了数据分析库之后,实现起来并不难
学习回归
回归
回归问题,在高中其实就已经接触过了:使用最小二乘法拟合直线,其实在机器学习中也差不多

观察这个 广告费-点击量图,我们发现直线不能完整的通过所有的点,即数据含有噪声
我们定义一个函数表达式: \[ y = θ_0 + θ_1 x \] Q:为什么不用 a 和 b 表示斜率和截距呢,像高中那样?
A:当未知数增加的时候,容易产生大量字母,而且字母有用完的风险
最小二乘法
由于不能肉眼看出 \(θ_0\) 和 \(θ_1\) 的值,故有此算法
为了方便表示,修改表达式为: \[ f_θ(x) = θ_0 + θ_1 x \] 修改为这个的好处是:看到 \(f_θ(x)\) 就知道是含有 \(θ\) 和与变量 \(x\) 有关的函数,使用 \(y\) 则看不出
带入训练数据,将得到的数据与原数据进行比较:
| 广告费 \(x\) | 点击量 \(y\) | \(θ_0=1、θ_1=2 时的 f_θ(x)\) |
|---|---|---|
| 58 | 374 | 117 |
| 70 | 385 | 141 |
| 81 | 375 | 163 |
| 84 | 401 | 169 |
我们发现 \(f_θ(x)\) 与 \(y\) 几乎完全不同,则说明 \(θ\) 参数仍然需要改进
我们需要的理想情况是: \[ \begin{gather} y=f_θ(x) \\ \qquad\qquad\qquad\qquad\qquad\qquad \Leftrightarrow y-f_θ(x)=0 \qquad 使得误差为0或者尽可能小 \end{gather} \]
目标函数

对于有 n 个训练数据,则误差可以这样表示: \[ \begin{gather} E(θ)=\frac{1}{2}\sum_{i=1}^{n}(y^{(i)}-f_θ(x^{(i)}))^2\\ x^{(i)},y^{(i)}指的是第i个训练数据,例如图中:x^{(1)}=58,y^{(1)}=374 ;x^{(2)}=70,y^{(2)}=385 \end{gather} \] 有些地方 \(y^{(i)}\) 和 \(f_θ(x^{(i)})\) 的位置是相反的,由于外面是平方,这两种写法都可以
最优化问题:为了使 \(E(θ)\) 值最小时,\(θ\) 值为多少的问题
Q&A:
Q:为什么取平方?
A:考虑误差为负数的情况,防止正负误差相互抵消
Q:为什么不用绝对值?
A:绝对值在后面的求微分时不方便
Q:为什么系数是 \(\frac{1}{2}\) ?
A:平方微分后产生的 2 和 \(\frac{1}{2}\) 相互抵消,使得式子更加简洁
Q:乘 \(\frac{1}{2}\) 不回影响结果吗?
A:常数系数不会对最值产生影响
修改 \(θ\) 使得 \(E(θ)\) 变小:最小二乘法
梯度下降法(最速下降法)
微分:计算变化快慢的程度

对 \(g(x)=(x-1)^2\) 使用微分:\(\frac{d}{dx}g(x)=2x-2\)
画出求微分后的图像为:

| \(x的范围\) | \(\frac{d}{dx}g(x)的符号\) | \(g(x)的增减\) |
|---|---|---|
| \(x<1\) | \(-\) | \(↘\) |
| \(x=1\) | 0 | |
| \(x>1\) | \(+\) | \(↗\) |
\(取\;x=3,\frac{d}{dx}g(x)>0,为了达到最小值,需要减小\;x,向左移\)
\(取\;x=-1,\frac{d}{dx}g(x)<0,为了达到最小值,需要增大\;x,向右移\)
得到结论:
不断的向着导数符号相反的方向移动,就会使得 \(g(x)\) 向最小值移动:这就是梯度(最速)下降法: \[ \begin{gather} x = x-η\frac{d}{dx}g(x)\\ η:学习率,有时也作:α\;或\;lr \end{gather} \] 原书中,左右两式并不是 \(=\) 连接的,而是 \(:=\) 符号,这个符号为定义,即右侧式子定义左侧式子。但是实际的梯度下降算法,是使用 \(=\) 连接的,而原书后面使用时也是使用 \(=\) 符号进行计算
这个式子并不是严格的数学表达式,而是计算机表达式,即先计算右侧的数值,再将结果赋值给左侧的 \(x\)
通过不断的 \(η\) 和 \(x\) 带入,最终会向着最小值逼近
- 对于上述式子,若 \(η=1\) ,从 \(x=3\) 开始,对于 \(g(x)'=2x-2\) 则有:
\[ \begin{gather} x=3-1\times(2\times3-2)=-1 \\ x=-1-1\times(2\times(-1)-2)=3 \\ x=3-1\times(2\times3-2)=-1 \\ ... \end{gather} \]

发现 \(x\) 的值一直在 \(-1\) 和 \(3\) 上往复跳跃:取 \(x=3\) 时,由于在 \(min\) 右侧,会向左跳跃,但是 \(η=1\) 太大了,使得 \(x\) 跳得太过了,而 \(x=-1\) 时向右跳,又跳得太过了,导致其左右摇摆
- 若 \(η=0.1\) ,从 \(x=3\) 时:
\[ \begin{gather} x=3-0.1\times(2\times3-2)=2.6 \\ x=2.6-0.1\times(2\times2.6-2)=2.3 \\ x=2.3-0.1\times(2\times2.3-2)=2.1 \\ x=2.1-0.1\times(2\times2.1-2)=1.9 \\ ... \end{gather} \]

当 \(η\) 适当时,会一步一步向 \(min\) 下降。但 \(η\) 也不能太小,不然下降的速度过于缓慢了,徒增计算量
回头看 \(E(θ)\) : \[ E(θ)=\frac{1}{2}\sum_{i=1}^{n}(y^{(i)}-f_θ(x^{(i)}))^2 \] 以上同样适用于 \(E(θ)\) ,只不过 \(f_θ(x)\) 可能有多个参数,要求偏导
以 \(f_θ(x)=θ_0+θ_1x\) 为例,写出梯度下降表达式: \[ \begin{cases} θ_0=θ_0-η\frac{\partial E}{\partial θ_0} \\ θ_1=θ_1-η\frac{\partial E}{\partial θ_1} \end{cases} \]
但是在 \(E\) 中不含 \(θ_0、θ_1\) 只含有 \(f_θ(x)\) ,而 \(f_θ(x)\) 中含有 \(θ_0、θ_1\) \(\quad\Rightarrow\) 使用复合函数微分
令:\(u=E(θ)\quad v=f_θ(x)\)
即:\(\frac{\partial E}{\partial θ_0} \Leftrightarrow \frac{\partial u}{\partial v}\cdot \frac{\partial v}{\partial θ_0}\quad\quadθ_1\;同理\)
计算 \(\frac{\partial u}{\partial v}\) : \[ \begin{gather} \frac{\partial u}{\partial v}=\frac{\partial}{\partial v}(\frac{1}{2}\sum_{i=1}^{n}(y^{(i)}-v)^2)\\ =\frac{1}{2}\sum_{i=1}^{n}(\frac{\partial }{\partial v}(y^{(i)}-v)^2))\\ =\sum_{i=1}^{n}(v-y^{(i)})\\ =\sum_{i=1}^{n}(f_\theta(x^{(i)})-y^{(i)}) \end{gather} \] 计算 \(\frac{\partial v}{\partial θ_0}\) : \[ \frac{\partial v}{\partial θ_0}=\frac{\partial}{\partial θ_0}(θ_0+θ_1x)=1 \] \(\frac{\partial u}{\partial v}\cdot \frac{\partial v}{\partial θ_0}\) : \[ \begin{gather} \frac{\partial E}{\partial θ_0}=\frac{\partial u}{\partial v}\cdot \frac{\partial v}{\partial θ_0}=\sum_{i=1}^{n}(v-y^{(i)})\cdot1\\ =\sum_{i=1}^{n}(f_\theta(x^{(i)})-y^{(i)}) \end{gather} \] 同理 \(θ_1\): \[ \frac{\partial E}{\partial θ_1}=\frac{\partial u}{\partial v}\cdot \frac{\partial v}{\partial θ_1}=\sum_{i=1}^{n}(f_\theta(x^{(i)})-y^{(i)})\cdot x^{(i)} \] 最终梯度下降表达式: \[ \begin{cases} \theta_0=\theta_0-\eta\sum_{i=1}^{n}(f_\theta(x^{(i)})-y^{(i)})\\ \theta_1=\theta_1-\eta\sum_{i=1}^{n}(f_\theta(x^{(i)})-y^{(i)})\cdot x^{(i)} \end{cases} \] 通过更新 \(\theta_0、\theta_1\) 就能找到最小值!
多项式回归
一次函数可能适合某个图形,但有可能存在一个多次函数,更加适合那个图形
虽然任何曲线都可以用多项式表示,但也容易出现过拟合


对于 \(f_\theta(x)=\theta_0+\theta_1x+\theta_2x^2+\theta_3x^3+...+\theta_nx^n\) 该怎么办:
使用通式: \[ \theta_n=\theta_n-\eta\sum_{i=1}^n(f_\theta(x^{(i)})-y^{(i)})\cdot x^{(i)^n}↖此为第n次 \]
多重回归
多项式回归仅仅是幂次改变,而多重回归则是多个变量,形如:\(f_\theta(x_1,x_2,x_3)=\theta_0+\theta_1x_1+\theta_2x_2+\theta_3x_3\)
使用向量表示为: \[ \theta= \begin{bmatrix} \theta_0\\ \theta_1\\ \theta_2\\ .\\ .\\ .\\ \theta_n\\ \end{bmatrix} \qquad\qquad x= \begin{bmatrix} 1\;or\;(x_0)\\ x_1\\ x_2\\ .\\ .\\ .\\ x_n\\ \end{bmatrix} \] 根据向量乘法: \[ \begin{gather} \theta^Tx=\theta_0+\theta_1x_1+\theta_2x_2+\theta_3x_3+...+\theta_nx_n\quad (x_0=1)\\ \Rightarrow\;f_\theta(x)=\theta^Tx \end{gather} \] 梯度下降表达式: \[ \begin{gather} \because\;\frac{\partial u}{\partial \theta_j}=\frac{\partial u}{\partial v}\cdot \frac{\partial v}{\partial θ_j}\\ \frac{\partial u}{\partial v}\;与之前一致,为:\frac{\partial u}{\partial v}=\sum_{i=1}^{n}(f_\theta(x^{(i)})-y^{(i)})\\ \frac{\partial v}{\partial θ_j}=\frac{\partial}{\partial \theta_j}(\theta^Tx)=\frac{\partial}{\partial\theta_j}(\theta_0+\theta_1x_1+\theta_2x_2+\theta_3x_3+...+\theta_jx_j)=x_j\\ \therefore\;\theta_j=\theta_j-\eta\sum_{i=1}^n(f_\theta(x^{(i)})-y^{(i)})x_j^{(i)} \end{gather} \] 梯度下降的缺点:
- 计算量大,计算时间长
- 容易陷入局部最优解
随机梯度下降
为什么梯度下降容易陷入局部最优解?

若 \(x\) 没有取到 \(min\) 附近,则 \(x\) 会向其最近的小值跳跃
随机梯度下降:(随机选择一个)
表达式: \[ \begin{gather} \theta_j=\theta-\eta(f_\theta(x^{(k)})-y^{(k)})x_j^{(k)}\\ k:被随机选中的数据索引 \end{gather} \] 没有 \(\sum\) :梯度下降法更新一次参数的时间,随机梯度下降法可以更新 \(n\) 次。此外,随机梯度下降法在选择训练数据时是随机的,更新参数时使用的又是选择数据时的梯度,所以不太容易陷入局部最优解
小批量梯度下降法:
\(K\) 集合:若有100个集合,\(m=10\) 时,则创建一个索引集合 \(K=\{k_0,k_1,...,k_{10}\}\) \[ \theta_j=\theta-\eta\sum_{k∈K}(f_\theta(x^{(k)})-y^{(k)})x_j^{(k)} \]
学习分类
原书中介绍了简单的二分类问题,而分类还有多分类问题,这里不做过多介绍。
二分类
图书分为横版和竖版(二分类)
| 宽 | 高 | 形状 |
|---|---|---|
| 80 | 150 | 纵向 |
| 60 | 110 | 纵向 |
| 35 | 130 | 纵向 |
| 160 | 50 | 横向 |
| 160 | 20 | 横向 |
| 125 | 30 | 横向 |

分类的目的:找到图中的那条线
内积
\[ \begin{gather} \vec{a}\cdot\vec{b}=|\vec{a}|\cdot|\vec{b}|\cdot\cos\theta\\ \vec{a}=(a,b)\qquad \vec{b}=(c,d)\qquad \vec{a}\cdot\vec{b}=ac+bd \end{gather} \]

对直线 \(\vec{x}\) 找出其法线,作为权重向量 \(\vec{w}\) ,有: \[ \begin{gather} \vec{w}\cdot\vec{x}=0\\ \vec{w}\cdot\vec{x}=\sum_{i=1}^nw_ix_i=0\\ \qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad=w_1x_1+w_2x_2=0\qquad此问题为二分类,n=2,维度为2 \end{gather} \] 通过各点与 \(\vec{w}\) 相乘的正负判断点的方向
其中 \(\vec{w}\) 也是要初始化的,例如:\(\vec{w}=(1,1)\),带入表达式中得到:\(\vec{w}\cdot\vec{x}=x_1+x_2=0\)

感知机
和回归一样,\(\vec{w}\) 作为参数,创建更新列表来更新参数

可以接受多个输入后将每个值与各自的权重相乘,最后输出总模型
训练数据准备
宽为:\(x_1\)
高为:\(x_2\)
横向:\(y=1\)
纵向:\(y=-1\)
| 图像大小 | 形状 | \(x_1\) | \(x_2\) | \(y\) |
|---|---|---|---|---|
| 80 × 150 | 纵向 | 80 | 150 | -1 |
| 60 × 110 | 纵向 | 60 | 110 | -1 |
| 35 × 130 | 纵向 | 35 | 130 | -1 |
| 160 × 50 | 横向 | 160 | 50 | 1 |
| 160 × 20 | 横向 | 160 | 20 | 1 |
| 125 × 30 | 横向 | 125 | 30 | 1 |
判别函数: \[
f_w(x)=
\begin{cases}
1\quad(\vec{w}\cdot\vec{x}\geq0)\\
-1\quad(\vec{w}\cdot\vec{x}<0)
\end{cases}
\] 
权重向量的更新表达式
\[ \vec{w}= \begin{cases} \vec{w}+y^{(i)}\vec{x}^{(i)}\quad(f_w(x^{(i)})\neq y^{(i)})\\ \vec{w}\qquad\qquad\quad(f_w(x^{(i)})= y^{(i)}) \end{cases} \]
表达式说明:
该表达式通过判断数据映射的点的所属区域是否与标签一致
一致:保留 \(\vec{w}\) (有初始值)
不一致:更新 \(\vec{w}\) (通过不断更新,使得 \(\vec{w}\) 的法线区分两类点
例如:设 \(\vec{w}\) 初始为 \((1,2)\) ,对于 \(x^{(1)}=(125,30)\)

显然: \[
\begin{gather}
\vec{w}\cdot x^{(1)}<0\quad \Rightarrow \quad f_w(x^{(1)})=-1\quad 而
\;y^{(1)}=1\\
\therefore \; f_w(x^{(i)})\neq y^{(i)}\\
\therefore \;\vec{w}=\vec{w}+y^{(i)}\vec{x}^{(i)}=\vec{w}+\vec{x}^{(i)}
\end{gather}
\]


我们看到,参数更新公式在对于 \(f_w(x^{(i)})\neq y^{(i)}\) 情况时,采用向量加法来使得 \(\vec{w}\) 旋转,同时带动边界旋转,通过不断旋转 \(\vec{w}\) 来做到最佳
线性可分
感知机的缺点:只能解决线性可分问题
上述也叫做单层感知机(简单感知机)而多层感知机 \(\Rightarrow\) 神经网络

上图这样的问题被称为:线性不可分(不能用一条直线就将两类点分开)
而对于这样的问题,我们只需要增加变量的幂次,即增加二次项,也可以增加多次项,但是可能会引起过拟合
逻辑回归
把分类作为概率来考虑,而对于上述问题,我们改变标签为:横:\(y=1\) 纵:\(y=0\)
其实标签怎么设置都行,目的是为了之后方便简化
激活函数
这里我们使用sigmoid函数,即:\(f_\theta(x)=\frac{1}{1+e^{-x}}\)

上一章回归提到:\(f_\theta(x)=\theta^Tx \quad \Rightarrow \quad 多个变量的简化表示\)
综上,有表达式: \[ \begin{gather} f_\theta(x)=\frac{1}{1+e^{-\theta^Tx}}\\ f_\theta(x)∈(0,1)\quad 且\quad f_\theta(x)=0.5\quad时\quad\theta^Tx=0 \end{gather} \]
#### 决策边界
将数据 \(x\) 作为横版图书 的概率作为 \(f_\theta(x)\) 则有: \[ P(y=1|x)=f_\theta(x) \] 含义:给出 \(x\) 时,\(y=1\) (横版)的概率
若:
- \(P(y=1|x^{(1)})=0.8 \quad \Rightarrow \quad\) 可以认为 \(x^{(1)}\) 代表横向
- \(P(y=1|x^{(1)})=0.2 \quad \Rightarrow \quad\) 可以认为 \(x^{(1)}\) 代表纵向
做出上述判断的依据是:我们将 0.5 作为分界,而这和sigmoid函数的图像一致

从上图中我们也可以得出: \[ \begin{gather} y= \left\{ \begin{array}{l} 1\quad(\theta^Tx\geq0)\\ 0\quad(\theta^Tx<0) \end{array} \right.\\ 0,1\;仅代表横竖,并无数学含义\\ \theta\;的值自定义,x\;根据问题设置 \end{gather} \] 假设: \[ \theta= \begin{bmatrix} \theta_0\\ \theta_1\\ \theta_2 \end{bmatrix} =\begin{bmatrix} -100\\ 2\\ 1 \end{bmatrix} \qquad x= \begin{bmatrix} 1\\ x_1\\ x_2 \end{bmatrix} \] 则有: \[ \begin{gather} \theta^Tx=-100+2x_1+x_2\geq0\\ \therefore\;x_2\geq-2x_1+100 \end{gather} \] 画出图形为:

\(\therefore\;把\;\theta^Tx=0\;的线作为\,决策边界\)
求出 \(\theta\) 定义的目标函数后进行微分,并更新表达式:逻辑回归
似然函数
数据标签:对于概率来说0,1或许不合适,应为 \(P(y=0/1|x)\;最大\) (P完全为0/1不可能)
| 图像大小 | 形状 | y | 概率 |
|---|---|---|---|
| 80 × 150 | 纵向 | 0 | 期待 \(P(y=0|x)\) 最大 |
| 60 × 110 | 纵向 | 0 | 期待 \(P(y=0|x)\) 最大 |
| 35 × 130 | 纵向 | 0 | 期待 \(P(y=0|x)\) 最大 |
| 160 × 50 | 横向 | 1 | 期待 \(P(y=1|x)\) 最大 |
| 160 × 20 | 横向 | 1 | 期待 \(P(y=1|x)\) 最大 |
| 125 × 30 | 横向 | 1 | 期待 \(P(y=1|x)\) 最大 |
所有数据相互独立,则: \[ L(\theta)=P(y^{(1)}=0|x^{(1)})P(y^{(2)}=0|x^{(2)})...P(y^{(6)}=0|x^{(6)}) \] 即所有概率相乘
因此,有似然函数(Likelihood): \[ L(\theta)=\prod_{i=1}^nk(x)\qquad其中:\quad k(x)= \begin{cases} P(y^{(i)}=1|x^{(i)})\quad y^{(i)}=1\\ P(y^{(i)}=0|x^{(i)})\quad y^{(i)}=0 \end{cases} \] 而在二分类问题中,由于 \(n=2\) ,而分段函数 \(k(x)\) 可以使用指数形式的 \(y^{(i)}\;和\;(1-y^{(i)})\) 表示,则可以将似然函数简化为: \[ L(\theta)=\prod_{i=1}^nP(y^{(i)}=1|x^{(i)})^{y^{(i)}}\cdot P(y^{(i)}=0|x^{(i)})^{1-y^{(i)}} \] 若模型越好,则 \(L(\theta)\) 应越大
有了目标函数,可以对其求微分,但是乘积符号微分不好求,且计算小于1的乘法时会丢失精度,故使用对数化简
对其求对数简化的依据为:\(\log\) 函数为增函数,即: \[ \begin{gather} L(\theta_1)<L(\theta_2)\\ 对于\quad\log L(\theta_1)<\log L(\theta_2)\quad恒成立 \end{gather} \] 对似然函数求对数并化简: \[ \begin{gather} \log L(\theta)=\log \prod_{i=1}^nP(y^{(i)}=1|x^{(i)})^{y^{(i)}}P(y^{(i)}=0|x^{(i)})^{1-y^{(i)}}\\ \log L(\theta)=\sum_{i=1}^n(\log P(y^{(i)}=1|x^{(i)})^{y^{(i)}}+\log P(y^{(i)}=0|x^{(i)})^{1-y^{(i)}})\\ =\sum_{i=1}^n(y^{(i)}\log P(y^{(i)}=1|x^{(i)})+(1-y^{(i)})\log P(y^{(i)}=0|x^{(i)}))\\ =\sum_{i=1}^n(y^{(i)}\log P(y^{(i)}=1|x^{(i)})+(1-y^{(i)})\log (1-P(y^{(i)}=1|x^{(i)})))\\ =\sum_{i=1}^n(y^{(i)}\log f_\theta(x^{(i)})+(1-y^{(i)})\log (1-f_\theta(x^{(i)})))\\ \Rightarrow \quad \log L(\theta)=\sum_{i=1}^n(y^{(i)}\log f_\theta(x^{(i)})+(1-y^{(i)})\log (1-f_\theta(x^{(i)}))) \end{gather} \]
似然函数的微分
在回归中,我们使用的是最小化,原因是我们想要误差尽可能小,也就是目标函数要向着最小值移动
而在似然函数中,我们要求函数越大越好,也就是要求其最大值,也就是最大化
只需要将参数更新公式中的符号改为正号: \[ x=x-\eta\frac{d}{dx}g(x)\quad 改为\Rightarrow \quad x=x+\eta\frac{d}{dx}g(x) \] 对似然函数: \[ \log L(\theta)=\sum_{i=1}^n(y^{(i)}\log f_\theta(x^{(i)})+(1-y^{(i)})\log (1-f_\theta(x^{(i)}))) \] 进行微分操作:同回归,需要使用复合函数的微分
令:\(u=\log L(\theta) \quad v=f_\theta(x^{(i)})\)
则有: \[ \frac{\partial u}{\partial \theta_j}=\frac{\partial u}{\partial v}\cdot \frac{\partial v}{\partial \theta_j} \] 对于 \(\frac{\partial u}{\partial v}\) : \[ \begin{gather} \frac{\partial u}{\partial v}=\frac{\partial}{\partial v}\sum_{i=1}^n(y^{(i)}\log v+(1-y^{(i)})\log (1-v))\\ =\sum_{i=1}^n(\frac{y^{(i)}}{v}-\frac{1-y^{(i)}}{1-v}) \end{gather} \] 对于 \(\frac{\partial v}{\partial \theta_j}\) : \[ \frac{\partial v}{\partial \theta_j}=\frac{\partial f_\theta(x)}{\partial \theta_j}=\frac{\partial}{\partial \theta_j}\frac{1}{1+e^{-\theta^Tx}}\\ \] 对于:\(\qquad\qquad\qquad\qquad\qquad f(x)=\frac{1}{1+e^{-x}}\quad有:\quad \frac{\partial f(x)}{\partial x}=f(x)(1-f(x))\) \[ \begin{gather} \therefore \quad z=\theta^Tx\quad\frac{\partial v}{\partial \theta_j}=\frac{\partial v}{\partial z}\cdot \frac{\partial z}{\partial \theta_j}\\ \Rightarrow\quad \begin{cases} \frac{\partial v}{\partial z}=\frac{\partial}{\partial z}\frac{1}{1+e^{-z}}=v(1-v)\\ \frac{\partial z}{\partial \theta_j}=\frac{\partial \theta^Tx}{\partial \theta_j}=x_j \end{cases}\\ \therefore\;\frac{\partial v}{\partial \theta_j}=v(1-v)x_j \end{gather} \] 对于 \(\frac{\partial u}{\partial v}\cdot \frac{\partial v}{\partial \theta_j}\) : \[ \begin{gather} \frac{\partial u}{\partial v}\cdot \frac{\partial v}{\partial \theta_j}=\sum_{i=1}^n(\frac{y^{(i)}}{v}-\frac{1-y^{(i)}}{1-v})\cdot v(1-v)x_j\\ =\sum_{i=1}^n(y^{(i)}-v)x_j^{(i)}=\sum_{i=1}^n(y^{(i)}-f_\theta(x^{(i)}))x_j^{(i)}\\ 即:\quad\frac{\partial u}{\partial \theta_j}=\sum_{i=1}^n(y^{(i)}-f_\theta(x^{(i)}))x_j^{(i)} \end{gather} \] 最大化:\(\quad x=x+\eta\frac{d}{dx}g(x)\) \[ \theta_j=\theta_j+\eta\sum_{i=1}^n(y^{(i)}-f_\theta(x^{(i)}))x_j^{(i)} \] 或将其转为熟悉的最小化: \[ \theta_j=\theta_j-\eta\sum_{i=1}^n(f_\theta(x^{(i)})-y^{(i)})x_j^{(i)} \]
线性不可分
不能用直线进行区分,仅能使用曲线

向训练数据中加入高次项,对于上图仅需加入 \(x^2\) 即可 \[
\theta=
\begin{bmatrix}
\theta_0\\
\theta_1\\
\theta_2\\
\theta_3
\end{bmatrix}\qquad
x=\begin{bmatrix}
1\\
x_1\\
x_2\\
x_1^2
\end{bmatrix}\\
\\
\Downarrow
\\
\\
\theta^Tx=\theta_0+\theta_1x+\theta_2x+\theta_3x_1^2
\] 假设: \[
\theta=
\begin{bmatrix}
\theta_0\\
\theta_1\\
\theta_2\\
\theta_3
\end{bmatrix}=
\begin{bmatrix}
0\\
0\\
1\\
1
\end{bmatrix}\quad \Rightarrow\quad \theta^Tx=x_2-x_1^2\geq0\quad
\Rightarrow\quad x_2\geq x_1^2
\] 
通过增加次数,可变为复杂形状的决策边界
同时,逻辑回归参数更新也可用随机梯度下降法
还有其他一些分类算法:支持向量机(SVM)
评估
评估模型训练的准确性,防止出现 只有对训练数据正确 的情况
交叉验证:把数据分为两份,一份用于训练,一份用于测试(一般训测比为:8:2 or 7:3)
回归问题验证


左图中完美的兼顾了训练数据和测试数据,而右图中出现了 模型仅对训练数据有效的情况
模型评估就是检查训练好的模型对测试数据的拟合度,测试数据当作位置数据
对于回归,使用均方差(MSE)评估准确度:\(\frac{1}{n}\sum_{i=1}^n(y^{(i)}-f_\theta(x^{(i)}))^2\)
分类问题验证
使用混淆矩阵进行验证


精度
\[ Accuracy=\frac{TP+TN}{TP+FP+FN+TN} \]
例如:100个数据正确分类了80个,则 \(Accuracy=0.8\)
精确率和召回率
一般对数量不平衡数据中的数量较少的一方使用

像上图,精确率和召回率一般对数量只有5个的数据使用
精确率:(找对了吗?) \[
Precision=\frac{TP}{TP+FP}
\] 
即:分到positive中,有几个分对了?
像上图中:\(Precision=\frac{1}{1+2}=0.33\)
召回率:(都找对了吗?) \[ Recall=\frac{TP}{TP+FN} \] 即:本来是positive的,分对了几个?

像上图中:\(Recall=\frac{1}{1+4}=0.2\)
一般来说精确率和召回率会一高一低
如何综合二者的判断呢?
F值(F-score)
\[ Fmeasure=\frac{1+\beta^2}{\frac{\beta}{Precision}+\frac{\beta}{Recall}}\quad\Rightarrow\quad\frac{(1+\beta^2)\cdot Precision\cdot Recall}{\beta^2\cdot Precision\cdot Recall} \]
F1值(F1-score)
即 \(\beta=1\) 的F值 \[ F1=\frac{2}{\frac{1}{Precision} + \frac{1}{Recall}} \] F值的特点:只要 \(Precision\) 或者 \(Recall\) 其中的一个偏低,F值就会偏低
所以说这是一种很好的,权衡精确度和召回率的方法
例如: \[ \begin{gather} model A\quad Precision=0.6\quad Recall=0.39\quad F1=0.472\\ model B\quad Precision=0.02\quad Recall=1\quad F1=0.039 \end{gather} \] 所以说,modelA 比 modelB 更好!
K折交叉验证

步骤:
- 将数据分为K份
- 其一作为测试,其余为训练
- 更换测试数据,重复K次
- 计算精度平均值
合理选择K值,防止计算量过大
正则化
过拟合(overfitting):只能拟合训练数据
避免过拟合:
- 增加训练数据量
- 使用简单模型
- 正则化
对于回归中的目标函数:\(E(\theta)=\frac{1}{2}\sum_{i=1}^n(y^{(i)}-f_\theta(x^{(i)}))^2=C(\theta)\)
对其加上正则项:\(R(\theta)=\frac{\lambda}{2}\sum_{j=1}^m\theta_j^2\) (惩罚)即: \[ \begin{gather} E(\theta)=\frac{1}{2}\sum_{i=1}^n(y^{(i)}-f_\theta(x^{(i)}))^2+\frac{\lambda}{2}\sum_{j=1}^m\theta_j^2\\ \lambda:\;决定正则化项影响程度的正\,常数,自定义 \end{gather} \] 对上式进行最小化被称为:正则化
正则项的目的就是尽可能的削弱高次项对模型的影响,具体细节在机器学习理论基础会得到深入理解
一般不对 \(\theta_0\) 进行正则化,\(\theta_0\) 作偏置项
正则化效果:



\(\theta_1\) 更接近于0,目的是防止参数过大,也意味着该参数影响力变小
对于 \(\theta_0+\theta_1x+\theta_2x^2\) 若 \(\theta_2=0\) 则:

减小不必要参数的影响,将复杂模型变为简单模型
分类的正则化 \[ \log L(\theta)=\sum_{i=1}^n(y^{(i)}\log f_\theta(x^{(i)})+(1-y^{(i)})\log (1-f_\theta(x^{(i)})))=C(\theta) \]
和回归一样,在目标函数后加入正则化项:\(R(\theta)=\frac{\lambda}{2}\sum_{j=1}^m\theta_j^2\) 即: \[ \log L(\theta)=-\sum_{i=1}^n(y^{(i)}\log f_\theta(x^{(i)})+(1-y^{(i)})\log (1-f_\theta(x^{(i)})))+\frac{\lambda}{2}\sum_{j=1}^m\theta_j^2 \] 为什么变负号了:将其由最大化变为最小化
包含正则化项表达式的微分
\[ \begin{gather} E(\theta)=C(\theta)+R(\theta)\\ \frac{\partial E(\theta)}{\partial \theta_j}=\sum_{i=1}^n(f_\theta(x^{(i)})-y^{(i)})x_j^{(i)}+\lambda\theta_j \end{gather} \]
参数更新表达式: \[ \begin{gather} \theta_0=\theta_0-\eta\sum_{i=1}^n(f_\theta(x^{(i)})-y^{(i)})x_j^{(i)}\qquad (\theta_0不进行正则化)\\ \theta_1=\theta_1-\eta\sum_{i=1}^n(f_\theta(x^{(i)})-y^{(i)})x_j^{(i)}+\lambda\theta_j \end{gather} \] 逻辑回归同上
以上其实为L2正则化
- L2:减少参数影响
- L1:让参数消失(\(R(\theta)=\lambda\sum_{i=1}^n|\theta_i|\))
学习曲线
欠拟合:过度不训练
区分欠拟合和过拟合:
欠拟合:

由于训练不够,在数据增加时,越来越不拟合,训练精度下降
当数据增加时,测试数据越来越密集,在原有的模型上表现为精度上升
高偏差!
过拟合:

出现 对训练数据正确 故对训练数据精度一直很高
当数据增加时,测试数据精度就是达不到训练精度
高方差!
在机器学习理论基础中,还会对学习曲线进行进一步分析,以及更详细的讲解,这些只是作为学习理论的铺路石。
总结
学习了上述内容,你大概对机器学习的一些流程和其中的数学原理有了或多或少的了解
而原书的内容更加精彩,建议看一遍原书,再结合此文章学习
你也不用担心看不懂上述的一些内容,这些知识作为了解,而更深入的了解机器学习,还是要学习更为系统的理论知识
我相信你学完这些知识之后,再去接触机器学习理论基础,将会更加得心应手!
如何有什么问题的话,欢迎点击资料框的邮箱进行联系
简述机器学习中的入门数学原理