0%

机器学习中可能会使用的理论

本文是关于一些西瓜书学习过程中的一些数学理论的汇总.

线性可分和线性模型1

线性可分是指可以使用一个线性函数(二维的是直线, 三维的是平面等更高维的线性函数), 将两类样本分开.

线性模型并不是说一定要使用线性函数去拟合数据, 这是一个误区, 区分模型是否线性, 主要是看模型中的自变量\(x\)前的系数\(w\), 一个\(x\)只受一个\(w\)影响, 那么模型就是线性模型!

例如有一个模型的函数是:\(y = w_0 + w_1x + w_2x^2\), 很明显是一个非线性的二次方函数, 但是若我们令\(x_1 = x, x_2 = x^2\), 那么模型的函数就可以转化为\(y = w_0 + w_1x_1 + w_2x_2\), 从而变成了一个线性函数, 也就是线性模型.

分类变量化为连续值2

有时我们的有些数据可能是离散的, 这时候我们会考虑将数据化为连续值.

  • 有序(order)数据中, 比如"低" "中" "高"等, 可以使用\(\{0, 0.5, 1\}\)来表示.
    • 直接使用map映射, 或使用LabelEncoder.
  • 无序数据中, 比如"西瓜" "南瓜" "冬瓜"等, 就需要使用\((1,0,0), (0,1,0), (0,0,1)\)来表示.
    • 独热编码OneHotEncoder或 pandas 中的get_dummies.

无序属性在连续化的时候, 不能像连续值一样直接使用值代替, 因为值之间存在大小, 从而会引入不当的有序关系.

但其实对分类变量化为连续值, 或多或少会引入一些额外的有序关系.

广义特征值与广义瑞利商3

广义特征值和广义瑞利商在机器学习西瓜书——第03章线性模型中有涉及

广义特征值

\(\boldsymbol{A}\), \(\boldsymbol{B}\)\(n\)阶方阵, 若存在数\(\lambda\), 使得方程\(\boldsymbol{A}x = \lambda \boldsymbol{B}x\)存在非零解, 则称\(\lambda\)\(\boldsymbol{A}\)相对于\(\boldsymbol{B}\)广义特征值, \(x\)\(\boldsymbol{A}\)相对于\(\boldsymbol{B}\)的属于广义特征值\(\lambda\)特征向量.

\(\boldsymbol{B} = \boldsymbol{I}\)(单位矩阵) 时, 广义特征值退化为标准特征值问题.

广义瑞利商

其实准确来说是在厄密矩阵下的, 我们仅考虑实数域, 那么就退化为对称矩阵.

\(\boldsymbol{A}\), \(\boldsymbol{B}\)\(n\)阶对称矩阵, 且\(\boldsymbol{B}\)正定, 称\(R(\boldsymbol{x}) = \frac{\boldsymbol{x}^TA\boldsymbol{x}}{\boldsymbol{x}^TB\boldsymbol{x}}(\boldsymbol{x}\neq \boldsymbol{0})\)\(\boldsymbol{A}\)相对于\(\boldsymbol{B}\)广义瑞利商.

\(\boldsymbol{B} = \boldsymbol{I}\)(单位矩阵) 时, 广义瑞利商退化为瑞利商.

广义瑞利商性质

知道了广义瑞利商的形式, 那么我们可以直接应用它的性质:

\(\lambda_i, \boldsymbol{x}_i(i = 1,2,3,\dots,n)\)\(\boldsymbol{A}\)相对于\(\boldsymbol{B}\)的广义特征值和特征向量, 且\(\lambda_1\leq\lambda_2\leq\dots\leq\lambda_n\). 那么就有:

\[ \min_{\boldsymbol{x}\neq\boldsymbol{0}}{R(\boldsymbol{x})} = \frac{\boldsymbol{x}^TA\boldsymbol{x}}{\boldsymbol{x}^TB\boldsymbol{x}} = \lambda_1, \boldsymbol{x}^* = \boldsymbol{x}_1; \\ \max_{\boldsymbol{x}\neq\boldsymbol{0}}{R(\boldsymbol{x})} = \frac{\boldsymbol{x}^TA\boldsymbol{x}}{\boldsymbol{x}^TB\boldsymbol{x}} = \lambda_n, \boldsymbol{x}^* = \boldsymbol{x}_n; \]

更一般来说, 就是前\(k\)个大的广义瑞利商对应于其前k个大的广义特征值.

证明的话就可以使用下面的拉格朗日乘子法: 当固定\(\boldsymbol{x}^TB\boldsymbol{x} = 1\)时, 使用拉格朗日乘子法可推得\(\boldsymbol{A}x = \lambda \boldsymbol{B}x\)这样一个广义特征值的问题, 因此, \(\boldsymbol{x}\)的所有可能的解即为\(\boldsymbol{x}_i(i=1,2,\dots,n)\)\(n\)个广义特征向量, 将其带入\(R(\boldsymbol{x})\)就可以得到结论.

固定\(\boldsymbol{x}^TB\boldsymbol{x} = 1\)并不关心其值, 而需要的是比值, 这里做的是一般性假设, 也可以令分子为1, 但是令分母为1可以使得更加简化, 不必纠结.

之前在线性判别分析中使用的损失函数\(\max{J}\)的形式就是广义瑞利商. 西瓜书后续还有的多分类问题其实就可以根据广义瑞利商的性质来说明.

Sigmoid函数

对于阶跃函数, 具有不光滑不连续的数学性质, 对模型不友好, 所以经常使Sigmoid函数『像S型的函数』来代替. 多使用于神经网络, 在逻辑回归中也有使用.

\[ f(x)=\frac{1}{1+e^{-\lambda x}} \]

其中系数\(\lambda\)决定着S函数的压缩程度。该函数的特点是,它是有上、下界,单调增长,连续光滑的,即是连续可微的。它可使同一网络既能处理小信号,也能处理大信号,因为该函数中区的高增益部分解决了小信号需要高放大倍数的问题;而两侧的低增益区正好适于处理大的净输入信号。这正像生物神经元在输入电平范围很大的情况下也能正常工作一样。

Sigmoid性质

Sigmoid还有一个很好的性质:

\[ f'(x) = \lambda f(x)(1-f(x)) \]

当前\(\lambda = 1\)时, 则有

\[ f'(x) = f(x)(1-f(x)) \]

优化问题

拉格朗日乘子法

拉格朗日乘数法在考研数学中其实做过题目, 还是比较简单的套路, 这里只不过是扩充到了向量形式.

对于仅含等式约束的优化问题:

\[ \begin{aligned} \min_{\boldsymbol{x}} \quad &{f(\boldsymbol{x})} \\ s.t. \quad &h_i(\boldsymbol{x} = 0) \quad i=1,2,\dots,n \end{aligned} \]

其中自变量\(\boldsymbol{x}\in\mathbb{R}^n\), \(f(\boldsymbol{x})\)\(h(\boldsymbol{x}_i)\)均一阶连续可偏导. 那么就可以写成拉格朗日函数:

\[ L(\boldsymbol{x}, \boldsymbol{\lambda}) = f(\boldsymbol{x}) + \sum^n_{i=1}{\lambda_ih_i(\boldsymbol{x})} \]

其中的\(\boldsymbol{\lambda}=(\lambda_1, \lambda_2, \dots, \lambda_n)^T\)为拉格朗日乘子.

对其求偏导, 并令为0, 再搭配约束条件\(h_i(\boldsymbol{x})=0\), 可以解出\(\boldsymbol{x}\)为上述优化问题的所有可能的极值点.

这就是拉格朗日乘子法, 用来求仅含等式约束的优化问题.

梯度下降法

梯度下降法(gradient descent)是一种常用的一阶(first-order)优化方法, 求解无约束优化问题最简单最经典的方法之一.

考虑无约束优化问题\(\min\limits_{\boldsymbol{x}} f(\boldsymbol{x})\), 其中\(f(\boldsymbol{x})\)连续可微, 那么若能构造一个序列\(\boldsymbol{x}^0,\boldsymbol{x}^1,\dots\)使得

\[ f(\boldsymbol{x}^t+1) < f(\boldsymbol{x}^t), \quad t = 0,1,2... \]

那么通过不断执行该过程就可以收敛到局部极小点.

根据泰勒展开式有:

\[ f(\boldsymbol{x}+\Delta\boldsymbol{x}) \approxeq f(\boldsymbol{x}) + \Delta \boldsymbol{x}^T\nabla f(\boldsymbol{x}) \]

欲使得\(f(\boldsymbol{x}+\Delta\boldsymbol{x}) < f(\boldsymbol{x})\), 则可以选择\(\Delta\boldsymbol{x} = -\gamma\nabla f(\boldsymbol{x})\). 其中步长\(\gamma\)是一个小常数.

每步的步长可以不同, 选取合适的步长来确保使得梯度下降收敛到局部极小值, 太大的步长容易产生振荡, 太小的步长则收敛速度较慢, 所以需要选取合适的步长, 常设置为0.1. 特别地, 若f(x)满足L-lipschitz条件, 那么将步长设置为\(\frac{1}{2L}\)就可以确保收敛到局部最小值.

L-lipschitz条件是指, 对任意\(\boldsymbol{x}\), 存在常数\(L\), 使得\(\|\nabla f(\boldsymbol{x})\|\leq L\). 这个在毕设中使用过, 效果还是不错的!

以上所说的都是局部极小点, 因为我们可能陷入一个"低谷"无法下降, 所以当目标函数为凸函数时, 我们就可以收敛到全局最优解了.

二阶(以后接触再详细表述): 当目标函数\(f(\boldsymbol{x})\)二阶连续可导时, 使用二阶泰勒展开式得到牛顿法(Newton's method), 迭代轮数更少, 但使用复杂的海森矩阵求逆运算, 计算复杂度高, 高维问题几乎不可行, 除非找到近似逆矩阵来代替, 这就是拟牛顿法(quasi-Newton method).

参考资料


  1. 海绵彭帆.理解线性可分和线性不可分与机器学习什么叫线性模型[EB/OL].https://blog.csdn.net/qq_45079973/article/details/104051441, 2020.↩︎

  2. 周志华.机器学习[M].北京: 清华大学出版社, 2016: 53-54.↩︎

  3. 二次元的Datawhale.【吃瓜教程】《机器学习公式详解》(南瓜书)与西瓜书公式推导直播合集 第3章-二分类线性判别分析[EB/OL].https://www.bilibili.com/video/BV1Mh411e7VU?p=5, 2021.↩︎

------ 本文结束------