【机器学习基础】机器学习基础2——分类
在分类的章节,主要总结Logistic回归和Softmax回归,其中前者主要用于二分类问题,后者主要用于多分类问题
分类问题属于监督学习的范畴,监督学习就是指利用一组已知类别(或者说带有标签)的样本,利用结果与真实结果之间的差异来调整分类器的参数,使其达到要求性能的过程,在监督学习中,每个实例都是由一个输入对象(通常为矢量形式)和一个期望的输出值(也称为监督信号)组成
Logistic回归
Logistic回归是机器学习中常见的二分类算法
Sigmoid函数
对于分类问题,任务就是定义一种函数,能接受所有的输入,然后预测出类别,Logistic回归是解决二分类问题的算法,把类别定义为0和1,因此需要定义一种函数实现0与1的跳跃,而Sigmoid函数符合这样的要求:
\[f(x)=\frac{1}{1+e^{-x}} \]其导数为:
\[f^{'}(x)=f(x)[1-f(x)] \]可见对于Sigmoid函数的求导极其方便,易于编程实现,函数图像如下所示:
可见当x减小时,函数值趋向于0;当x增大时,函数值趋向于1,因此Sigmoid函数可看成是阶跃函数,且在实数范围内连续可导,优化稳定
任何自变量经过Sigmoid函数映射后得到的结果可以看成是一个概率,因此在Logistic回归算法中,可以将经过Sigmoid函数映射得到大于0.5的数据归为1类,将小于0.5的数据归为0类
Logistic回归模型
输入数据集D:
\[D={ (\pmb{x}^{(1)},y^{(1)}),(\pmb{x}^{(2)},y^{(2)}),...,(\pmb{x}^{(m)},y^{(m)}) } \]其中m代表输入数据集大小,x(i)表示一组输入数据:
\[\pmb{x}^{(i)}=(x_1^{(i)},x_2^{(i)},...,x_n^{(i)}) \]对于x(i)而言有n个属性,而y(i)∈{0,1},即y(i)只能等于0或1
Logistic回归也需要定义一组模型参数来对数据进行线性组合,然后将这种线性组合利用Sigmoid函数进行映射得到对应的模型分类:
\[\pmb{z}=\theta_0x_0+\theta_1x_1+\theta_2x_2+...+\theta_nx_n \]\[h_{\pmb{\theta}}(\pmb{x})=f(\pmb{z})=\frac{1}{1+e^{-\pmb{z}}} \]其中,θi表示线性回归参数,xi表示输入数据特征,其中x0=1
与线性回归一样,任务就是寻找最佳的参数θ来获得最佳分类,可以利用极大似然估计来估计寻求最佳模型参数,由于Sigmoid函数输出值可以看成是概率,而Logistic回归是一个二分类问题,因此可以写成:
\[p(y=1|\pmb{x};\pmb{\theta})=h_{\pmb{\theta}}(\pmb{x}) \]\[p(y=0|\pmb{x};\pmb{\theta})=1-h_{\pmb{\theta}}(\pmb{x}) \]也可以写成一个式子:
\[p(y|\pmb{x};\pmb{\theta})=[h_{\pmb{\theta}}(\pmb{x})]^y[1-h_{\pmb{\theta}}(\pmb{x})]^{1-y} \]同时样本分类y~B(p),即服从伯努利(0-1)分布,如果假设样本之间是独立同分布的,因此分类的任务就变成:
\[argmax\prod_{i=1}^{m}p(y^{(i)}|\pmb{x}^{(i)};\pmb{\theta}) \]利用极大似然估计:
\[l(\pmb{\theta})=log\prod_{i=1}^{m}p(y^{(i)}|\pmb{x}^{(i)};\pmb{\theta}) =\sum_{i=1}^m log p(y^{(i)}|\pmb{x}^{(i)};\pmb{\theta}) =\sum_{i=1}^m log [h_{\pmb{\theta}}(\pmb{x}^{(i)})]^{y^{(i)}}[1-h_{\pmb{\theta}}(\pmb{x}^{(i)})]^{1-y^{(i)}} =\sum_{i=1}^m y^{(i)}log h_{\pmb{\theta}}(\pmb{x}^{(i)})+(1-y^{(i)})log(1-h_{\pmb{\theta}}(\pmb{x}^{(i)})) \]对上式求导:
\[\frac{\partial}{\partial\theta_j}l(\pmb{\theta})=\sum_{i=1}^m[y^{(i)}-h_{\pmb{\theta}}(\pmb{x}^{(i)})]x_j^{(i)} \]因此可见,Logistic回归与线性回归的梯度增量在形式上是一样的
定义Logistic回归的损失函数:
\[J(\pmb{\theta})=-\sum_{i=1}^m y^{(i)}log h_{\pmb{\theta}}(\pmb{x}^{(i)})+(1-y^{(i)})log(1-h_{\pmb{\theta}}(\pmb{x}^{(i)})) \]可以写出在Logistic回归算法中BGD、SGD以及MBGD的伪代码:
广义线性模型
指数家族分布
指数家族分布须满足下式:
\[p(y;\pmb{\eta})=b(y)exp[\pmb{\eta}^TT(y)-a(\pmb{\eta})] \]其中,η为分布的自然参数,或者正则参数;T(y)为充分统计量,通常T(y)=y;a(η)为对数划分函数;e-a(**η**)起正则化作用,使p(y;η)在(0,1)浮动
下面以伯努利分布作为实例:
广义线性模型
Softmax回归
Softmax回归是Logistic回归的推广,用于解决多分类问题,即目标变量y可以取任意一个k值,y∈{1,2,...,k}
假设目标变量y服从多项分布,使用k个参数φ1,φ2,...,φk指定每种结果的概率,即φi=p(y=i;φ),并且φi求和等于1
可以利用指数家族分布将多项分布重写,首先定义T(y)∈Rk-1:
\[T(1)= \left[ \begin{matrix} 1 \\ 0 \\ 0 \\ \vdots \\ 0 \end{matrix} \right], T(2)= \left[ \begin{matrix} 0 \\ 1 \\ 0 \\ \vdots \\ 0 \end{matrix} \right], T(3)= \left[ \begin{matrix} 0 \\ 0 \\ 1 \\ \vdots \\ 0 \end{matrix} \right],..., T(k-1)= \left[ \begin{matrix} 0 \\ 0 \\ 0 \\ \vdots \\ 1 \end{matrix} \right], T(k)= \left[ \begin{matrix} 0 \\ 0 \\ 0 \\ \vdots \\ 0 \end{matrix} \right] \]使用T(y)i表示向量T(y)的第i个分量,同时定义指示函数,便于后面公式的推导:
\[1\{x\}= \begin{cases} 1, & \text{x is True} \\ 0, & \text{x is False} \\ \end{cases} \]可见指示函数1{x}在参数x为真时取值为1,否则为0,多项分布可表示为: