Processing math: 0%

Boostable

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  116 随笔 :: 0 文章 :: 28 评论 :: 92116 阅读

     Jordan Lecture Note-1: Introduction

     第一部分要整理的是Jordan的讲义,这份讲义是我刚进实验室时我们老师给我的第一个任务,要求我把讲义上的知识扩充出去,然后每周都要讲给他听。如果有需要这份讲义的话,请留言,我会用邮件发给你。

    首先,我来说说机器学习这个东西。刚进实验室,我根本连什么是机器学习都不知道,听到这个名词后的第一反应是机器人,心想估计是搞硬件的。后来才发现其实机器学习更偏向于后面两个字,也就是“学习”。打个不恰当的比方吧,人类在婴儿时期,还无法对世上的东西进行识别,比如小汽车跟货车有什么区别?这时,婴儿的父母就会指着小汽车对他说,这是个小汽车,它有四个小轮子,四个门等等;指着货车对他说,这是货车,它有六个大轮子,两个门等等。当婴儿接受到这些信息后,就会在脑中对汽车和货车的一些属性特征进行抽象,从而能够得出一个能够识别汽车和货车的模型。其实机器学习也类似吧,把人类抽象出的一些特征信息作为机器学习的“资料”,术语称之为训练集,有了这些“资料”后,我们在给定一个学习算法,这个学习算法针对这个“资料”就能学习出一个模型,而这个模型就是机器最后用来决策的根据。

     然后,我在说说机器学习中最简单的二分类问题。 所谓二分类问题就是让机器来识别出 A 和 B。假设训练集 {xi,yi}Ni=1,其中 x_i\in\mathbb{R}^d 成为输入特征,d为特征的维度,y\in\{0,1\} 称为 label。每一个输入数据x_i都对应着一个输出的label y_i,而我们的目标是通过给定的这个训练集,学习出一个模型,这个模型能够尽可能正确的判断出这个输入的数据是属于哪一个label。这类问题有很多实际应用,比如人脸识别,垃圾邮件过滤等等。很显然,更一般的多分类问题指的是label的数量大于2.

    接下来,我简单的介绍四种二分类的方法,分类是1)感知器(Perceptron)2)逻辑斯回归(Logistic Regression)3)线性判别分析(Linear Discriminant Analysis)4)支撑向量机(Support Vector Machine)。


 一 Perceptron

    1)感知器算法

 step 1:

       初始化 w=w_0

 step 2:

     for $i=1,2, ... ,n$

           计算w_jx_i,若w_jx_i>0,则sety=1,否则y=0

       更新权重w=w + \lambda(y_i-y)x_i

     end for

step 3:

     若step 2中的权重都没有被更新的话说明算法已经收敛,返回权重w;否则转step 2.

step 4: 

     最终的判断函数为f(x)=w^Tx,若f(x)>0,则y为1;否则y为0.

 2) 感知器算法的收敛定理

   如果数据是线性可分的话(也就是存在的一个线性函数f(x)能使所有的x所对应的label都能通过上述决策准则得到),那么算法就一定收敛,既存在有限次数能找到权重w.

 证明:由于数据是线性可分的,那么一定存在一个权向量w^*能够正确的决策出所有的数据label,既对于label 1有w^Tx>0,对于label 2 有w^Tx<0w^*进行归一化使\|w^*\|=1,将属于label 2 的数据x_i做乘-1处理,得到新的数据x_k。于是必存在一个正数d,使对所有的样本有w^*x_k\geq d。任意权向量与最优权向量w^*的余弦角\mathop{cos}\alpha=\frac{w^*\cdot w}{\|w^*\|\|w\|}

    设感知器在训练过程中的判错模式依次为x_{i_1},x_{i_2}, ..., x_{i_t}, ...,则每一个判错模式都对应的对权重的更新:

w_{k+1} = w_k + \lambda x_{i_k}

其中\lambda为学习系数。由w^*\cdot w_{k+1}=w^*[w_k+\lambda x_{i_k}]=w^*\cdot w_k+\lambda w^*\cdot x_{i_k}\geq w^*\cdot w_k+\lambda d,迭代计算下去得:

 w^*\cdot w_{k+1} \geq w^*\cdot w_0 + k\lambda d

 选择w_0\in\{x_k\},必满足 w^*\cdot w_0>0,所以 w^*\cdot w_k\geq k\lambda d

     在w_k 为收敛到 w_* 时,对于判错模式必有 w_k\cdot x_{i_k} < 0,所以

\begin{eqnarray*} &\|w_{k+1}\|^2=[w_k+\lambda x_{i_k}][w_k+\lambda x_{i_k}] \\ &=\|w_k\|^2+2\lambda w_k\cdot x_{i_k} + \lambda^2 \|x_{i_k}\|^2 + \lambda^2\end{eqnarray*}

 迭代计算可得:\|w_k\|^2\leq \|w_0\|^2 + k\lambda^2 = C + k \lambda^2,其中C为常数。

 当w_k=w^*时,\mathop{cos}\alpha=1,故

1=\frac{w^*\cdot w_k}{\|w^*\|\|w_k\|}\geq\frac{k\lambda d}{\sqrt{C+k\lambda^2}}

 \Longrightarrow

k\leq\frac{\lambda^2+\sqrt{\lambda^2+4C\lambda^2 d^2}}{2\lambda^2 d^2}.

 

二 Logistic  Regression

回归:一种用于估计变量之间的关系的统计技术。

线性回归:若变量之间的关系为线性关系,则称之为线性回归。

逻辑斯回归: 一种概率统计分类模型,它的好处在于能用一个概率值来描述分类的准确度。事实上,它是通过引进logistic函数来对线性函数做一个归一化。

 Logistic Function:

\begin{eqnarray} &\mathbb{P}(y_i=1|x_i) = \frac{1}{1+e^{-\theta^\prime x_i}} \label{equ:logit1} \\ &\mathbb{P}(y_i=0|x_i)=1-\mathbb{P}(y_i=1|x_i)=\frac{1}{1+e^{\theta^\prime x_i}} \label{equ:logit2}\end{eqnarray}

\ref{equ:logit1}\ref{equ:logit2}可得:

\mathbb{P}(y_i|x_i)=\frac{e^{y_i\theta^\prime x_i}}{1+e^{\theta^\prime x_i}}

Logistic分类准则:我们只需求出\mathbb{P}(y_i=1|x_i),若\mathbb{P}(y_i=1|x_i)>0.5,则x_i属于第一类;若小于0.5,则属于第0类。

Logistic regression就是通过对训练集的学习而估计出\theta,这个参数的估计是通过最大似然估计得到的。

似然函数:L(\theta)=\prod_{i=1}^N\mathbb{P}(y_i|x_i,\theta).

log似然函数:l(\theta)=\mathop{ln}(L(\theta))=\sum_{i=1}^N\{y_i\theta^\prime x_i-\mathop{ln}(1+e^{\theta^\prime x_i})\}

对log似然函数求导可得:

\begin{equation}\frac{\partial l}{\partial \theta}=\sum_{i=1}^N(y_ix_i-\frac{e^{\theta^\prime x_i}}{1+e^{\theta^\prime x_i}}x_i)= \sum_{i=1}^N(y_i-\hat{y}_i)x_i\label{equ:partial}\end{equation},

其中\hat{y}_i=\mathbb{P}(y_i=1|x_i,\theta).

通过最大化上述log似然函数来估计出\theta,有两种方法可用,一种是梯度上升(gradient ascent),另一种是随机梯度方法。

 1)Newton-Raphson方法

 先求出梯度向量和海森(Hessian)矩阵。

梯度向量:\nabla l(\theta^t)=[\frac{\partial l}{\partial \theta}]_{\theta^t}.

Hessian矩阵:H(\theta^t)=[\frac{\partial^2l}{\partial \theta_i\partial\theta_j}]_{\theta^t}.

l(\theta)\theta^t点处的泰勒级数展开为:

\begin{equation}l(\theta)=l(\theta^t)+\nabla l(\theta^t)(\theta-\theta^t)+\frac{1}{2}H(\theta^t)(\theta-\theta^t)^2\label{equ:taylor}\end{equation}

\ref{equ:taylor}求导,并令导数为0,得到\theta的更新式:

\theta^{t+1}=\theta^t-[H(\theta^t)]^{-1}\nabla l(\theta^t).

2) 随机梯度方法

 当数据量很大时,用上述的方法计算量太大了,此时可以使用随机梯度方法。根据\ref{equ:partial}可得如下更新式子:

\theta^{t+1}=\theta^t+\lambda(y_{i(t)}-\hat{y}_{i(t)})x_{i(t)}

其中 \hat{y}_{i(t)}=\mathbb{P}(y_i=1|x_i,\theta)i(t)为第t步随机选出的数据。

三 线性判别分析(LDA)

    将n维数据降到一维,又能够保证类别能够清晰地反映到低维数据上。根据几何知识可知,将x投影到向量w上,即y=w^\prime x,表示投影点距离某固定点的位置。

   类中心点:\mu_1=\frac{1}{N_1}\sum_{x\in W_1}x\mu_0=\frac{1}{N_0}\sum_{x\in W_0}x,其中W_1,W_0分别表示第1类和第0类数据集合。则投影后的样本均值为:\widetilde{\mu}_1=\frac{1}{N_1}\sum_{y\in W_1}y=\frac{1}{N_1}\sum_{x\in W_1}w^\prime x=w^\prime \mu_1\widetilde{\mu}_0=w^\prime\mu_0

    为了使中心点距离尽可能的远,即最大化以下式子:

J(w)=\|\widetilde{\mu}_1-\widetilde{\mu}_0\|^2=\|w^\prime(\mu_1-\mu_0)\|^2=w^\prime (\mu_1-\mu_0)(\mu_1-\mu_0)^\prime w\triangleq w^\prime S_b w

   但若只考虑该标准并不合理,还应考虑类内的聚合度,即类内的聚合度越高效果越好。用\widetilde{s}_1^2,\widetilde{s}_0^2表征样本的密集程度,其定义如下:

\widetilde{s}_1^2=\sum_{y\in W_1}(y-\widetilde{\mu}_1)^2=\sum_{x\in W_1}(w^\prime x-w^\prime\mu_1)^2=\sum_{x\in W_1} w^\prime(x-\mu_1)(x-\mu_0)^\prime w\triangleq w^\prime S_1w

\widetilde{s}_0^2=\sum_{x\in W_0}w^\prime(x-\mu_0)(x-\mu_0)^\prime w\triangleq w^\prime S_0 w

\widetilde{s}_1^2+\widetilde{s}_0^2=w^\prime S_1w+w^\prime S_0w=w^\prime S_w w。根据类间尽可能分离,类内尽可能聚合的原则,得到Fisher判别准则:

\mathop{\max}\frac{w^\prime S_b w}{w^\prime S_w w}.

接下去介绍两种解上述优化问题的方法。

 1) 由于w扩大任意倍不会影响最后的结果,故我们可令w^\prime S_w w=1,可将上述模型转化为:

\begin{eqnarray*}&\mathop{\max}\quad w^\prime S_b w\\& \mathop{s.t.}\quad \|w^\prime S_b w\|=1\end{eqnarray*}

加入拉格朗日乘子:C(w)=w^\prime S_b w - \lambda(w^\prime S_w w - 1)

C(w)求导:\frac{dC(w)}{dw}=2S_bw-2\lambda S_w w=0\Longrightarrow S_bw=\lambda S_ww

又因为S_w=\sum_{x\in W_1}(x-\mu_1)(x-\mu_1)^\prime+\sum_{x\in W_0}(x-\mu_0)(x-\mu_0)^\prime,可以证明其为正定矩阵,故S_w可逆,所以S_w^{-1}S_bw=\lambda w.

S_bw=(\mu_1-\mu_0)(\mu_1-\mu_0)^\prime w=(\mu_1-\mu_0)\lambda_w,其中\lambda_w为关于w的实数。

S_w^{-1}S_bw=S_w^{-1}(\mu_1-\mu_0)\lambda_w=\lambda w\Longrightarrow w=\frac{\lambda_w}{\lambda}S_w^{-1}(\mu_1-\mu_0)

由于w扩大与缩小均不影响结果,故w=S_w^{-1}(\mu_1-\mu_0)

 2)由于S_w实对称并且正定,故S_w可用Cholesky分解S_w=LL^\prime,其中 L为下三角形矩阵,故

\begin{eqnarray}\frac{w^\prime S_bw}{w^\prime S_ww}&=\frac{w^\prime S_bw}{w^\prime LL^\prime w}\\ &=\frac{\beta^\prime L^{-1}(\mu_1-\mu_0)(\mu_1-\mu_0)^\prime {L^\prime}^{-1}\beta}{\beta^\prime\beta}\\&=\frac{\beta^\prime A\beta}{\beta^\prime\beta}\label{equ:rayleigh}\end{eqnarray}

其中\beta=L^\prime w。上述式子\ref{equ:rayleigh}的最大值为A的最大特征值,\beta为对应的特征向量。求得\beta后就可求出参数w

 

 

 

 

 

 

 

 

 

 

 

 

 

posted on   Boostable  阅读(653)  评论(5编辑  收藏  举报
编辑推荐:
· 理解Rust引用及其生命周期标识(下)
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
阅读排行:
· 2025成都.NET开发者Connect圆满结束
· Ollama本地部署大模型总结
· langchain0.3教程:从0到1打造一个智能聊天机器人
· 在 VS Code 中,一键安装 MCP Server!
· 用一种新的分类方法梳理设计模式的脉络
点击右上角即可分享
微信分享提示