Jordan Lecture Note-1: Introduction

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

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

然后,我在说说机器学习中最简单的二分类问题。 所谓二分类问题就是让机器来识别出 A 和 B。假设训练集 $\{x_i,y_i\}_{i=1}^N$,其中 $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$,则set$y=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<0$。对$w^*$进行归一化使得$\|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$。

Jordan Lecture Note-1: Introduction的更多相关文章

  1. Jordan Lecture Note-3: 梯度投影法

    Jordan Lecture Note-3:梯度投影法 在这一节,我们介绍如何用梯度投影法来解如下的优化问题: \begin{align} \mathop{\min}&\quad f(x)\n ...

  2. Colorful Lecture Note(手工栈)

    题目1 : Colorful Lecture Note 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Little Hi is writing an algorithm ...

  3. HihoCoder - 1103 Colorful Lecture Note

    Little Hi is writing an algorithm lecture note for Little Ho. To make the note more comprehensible, ...

  4. Colorful Lecture Note

    Colorful Lecture Note 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Little Hi is writing an algorithm lectu ...

  5. hihocoder #1103 : Colorful Lecture Note微软苏州校招笔试 1月10日(字符串处理+栈)

    #1103 : Colorful Lecture Note 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Little Hi is writing an algorit ...

  6. note of introduction of Algorithms(Lecture 3 - Part1)

    Lecture 3(part 1) Divide and conquer 1. the general paradim of algrithm as bellow: 1. divide the pro ...

  7. Jordan Lecture Note-5: Kernels

    Kernels 我们首先来回顾kernel函数的定义:一个函数$K(x,y)$为kernel函数当且仅当对$\forall g, \int K(x,y)g(x)g(y)dxdy\geq 0$成立.另外 ...

  8. Jordan Lecture Note-2: Maximal Margin Classifier

    Maximal Margin Classifier Logistic Regression 与 SVM 思路的不同点:logistic regression强调所有点尽可能远离中间的那条分割线,而SV ...

  9. Jordan Lecture Note-12: Kernel典型相关分析(Kernel Canonical Correlation Analysis, KCCA).

    Kernel典型相关分析 (一)KCCA 同样,我们可以引入Kernel函数,通过非线性的坐标变换达到之前CCA所寻求的目标.首先,假设映射$\Phi_X: x\rightarrow \Phi_X(x ...

随机推荐

  1. Linux--使用expect进行自动交互

    在linux下进行一些操作时,有时需要与机器进行一些交互操作,比如切换账号时输入账号密码,传输文件时输入账号密码登陆远程机器等,但有时候这些动作需要在shell脚本中进行,这个时候就可以使用expec ...

  2. e2e 自动化集成测试 架构 实例 WebStorm Node.js Mocha WebDriverIO Selenium Step by step (六) 自动化测试结构小节

    上一篇‘e2e 自动化集成测试 架构 京东 商品搜索 实例 WebStorm Node.js Mocha WebDriverIO Selenium Step by step (五) 如何让窗体记录登录 ...

  3. duilib corner属性的贴图技巧——让图片自动贴到控件的的某一边或者一角并自适应控件的大小

    转载请说明原出处,谢谢~~ Duilib给控件贴图功能可以附带多个属性,各个属性的配合可以达到许多效果.以下是duilib支持的所有贴图属性: 贴图描述: Duilib的表现力丰富很大程度上得益于贴图 ...

  4. 【转载】【内存对齐(二)】__declspec( align(#) )的用法和大小计算

    转自:http://www.cppblog.com/deercoder/archive/2011/03/13/141747.html 感谢作者! 在上面讲到了关于pack的内存对齐和计算方法,这里继续 ...

  5. 在asp.net mvc中使用PartialView返回部分HTML段

    问题链接: MVC如何实现异步调用输出HTML页面 该问题是个常见的 case, 故写篇文章用于提示新人. 在asp.net mvc中返回View时使用的是ViewResult,它继承自ViewRes ...

  6. CSS:7个你可能不认识的单位

    原文:7 CSS Units You Might Not Know About 众所周知,当使用CSS技术的时候,很容被一些奇异问题给困住.而当我们面对新的问题时,这会让我们处于非常不利的位置. 但是 ...

  7. 降低Java垃圾回收开销的5条建议

    保持GC低开销的窍门有哪些? 随着一再拖延而即将发布的 Java9,G1(“Garbage First”)垃圾回收器将被成为 HotSpot 虚拟机默认的垃圾回收器.从 serial 垃圾回收器到CM ...

  8. XML学习笔记(2)--dom4j操作XML

    1. 介绍(四种方式的比较这部分转载自:http://www.blogjava.net/xcp/archive/2010/02/12/312617.html) 1)DOM(JAXP Crimson解析 ...

  9. 一些常用的IOS开发网站

    开发教程: 即便过了入门阶段,还是要经常看看一些不错的实例教程.1.http://mobile.tutsplus.com/category/tutorials/iphone/ 比较新的一个网站,以前没 ...

  10. ecstore 后台登陆跳转到 api失败,中心请求网店API失败

    解决过程没有具体参与,官方解决后回复的邮件,可以参考一下: 后台登陆错误图:   商派解决方法邮件:   特别注意:这个错误提示有时候也跟ecstore的nginx服务器伪静态有关,具体参考: htt ...