zoukankan      html  css  js  c++  java
  • Jordan Lecture Note-1: Introduction

         Jordan Lecture Note-1: Introduction

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

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

         然后,我在说说机器学习中最简单的二分类问题。 所谓二分类问题就是让机器来识别出 A 和 B。假设训练集 ${x_i,y_i}_{i=1}^N$,其中 $x_iinmathbb{R}^d$ 成为输入特征,d为特征的维度,$yin{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_kgeq 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 + klambda d$$

     选择$w_0in{x_k}$,必满足 $w^*cdot w_0>0$,所以 $w^*cdot w_kgeq klambda d$。

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

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

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

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

    $$1=frac{w^*cdot w_k}{|w^*||w_k|}geqfrac{klambda d}{sqrt{C+klambda^2}}$$

     $Longrightarrow$

    $$kleqfrac{lambda^2+sqrt{lambda^2+4Clambda^2 d^2}}{2lambda^2 d^2}.$$

    二 Logistic  Regression

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

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

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

     Logistic Function:

    egin{eqnarray} &mathbb{P}(y_i=1|x_i) = frac{1}{1+e^{- heta^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^{ heta^prime x_i}} label{equ:logit2}end{eqnarray}

    由 ef{equ:logit1}和 ef{equ:logit2}可得:

    $$mathbb{P}(y_i|x_i)=frac{e^{y_i heta^prime x_i}}{1+e^{ heta^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就是通过对训练集的学习而估计出$ heta$,这个参数的估计是通过最大似然估计得到的。

    似然函数:$L( heta)=prod_{i=1}^Nmathbb{P}(y_i|x_i, heta)$.

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

    对log似然函数求导可得:

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

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

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

     1)Newton-Raphson方法

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

    梯度向量:$ abla l( heta^t)=[frac{partial l}{partial heta}]_{ heta^t}$.

    Hessian矩阵:$H( heta^t)=[frac{partial^2l}{partial heta_ipartial heta_j}]_{ heta^t}$.

    $l( heta)$在$ heta^t$点处的泰勒级数展开为:

    egin{equation}l( heta)=l( heta^t)+ abla l( heta^t)( heta- heta^t)+frac{1}{2}H( heta^t)( heta- heta^t)^2label{equ:taylor}end{equation}

    对 ef{equ:taylor}求导,并令导数为0,得到$ heta$的更新式:

    $$ heta^{t+1}= heta^t-[H( heta^t)]^{-1} abla l( heta^t)$$.

    2) 随机梯度方法

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

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

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

    三 线性判别分析(LDA)

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

       类中心点:$mu_1=frac{1}{N_1}sum_{xin W_1}x$,$mu_0=frac{1}{N_0}sum_{xin W_0}x$,其中$W_1,W_0$分别表示第1类和第0类数据集合。则投影后的样本均值为:$widetilde{mu}_1=frac{1}{N_1}sum_{yin W_1}y=frac{1}{N_1}sum_{xin W_1}w^prime x=w^prime mu_1$,$widetilde{mu}_0=w^primemu_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 riangleq w^prime S_b w$$

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

    $$widetilde{s}_1^2=sum_{yin W_1}(y-widetilde{mu}_1)^2=sum_{xin W_1}(w^prime x-w^primemu_1)^2=sum_{xin W_1} w^prime(x-mu_1)(x-mu_0)^prime w riangleq w^prime S_1w$$

    $$widetilde{s}_0^2=sum_{xin W_0}w^prime(x-mu_0)(x-mu_0)^prime w riangleq 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$,可将上述模型转化为:

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

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

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

    又因为$S_w=sum_{xin W_1}(x-mu_1)(x-mu_1)^prime+sum_{xin 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 wLongrightarrow 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$为下三角形矩阵,故

    egin{eqnarray}frac{w^prime S_bw}{w^prime S_ww}&=frac{w^prime S_bw}{w^prime LL^prime w}\ &=frac{eta^prime L^{-1}(mu_1-mu_0)(mu_1-mu_0)^prime {L^prime}^{-1}eta}{eta^primeeta}\&=frac{eta^prime Aeta}{eta^primeeta}label{equ:rayleigh}end{eqnarray}

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

  • 相关阅读:
    2020年4月4日训练
    HZNU Training 17 for Zhejiang Provincial Competition 2020
    [kuangbin带你飞]专题四 最短路练习
    三分法
    洛谷多校第一周续
    洛谷春季 ACM 多校训练第五周
    简单数学三月小结
    线段树&树状数组
    图论三月小结
    Java中Double保留后小数位的几种方法
  • 原文地址:https://www.cnblogs.com/boostable/p/lec_introduction.html
Copyright © 2011-2022 走看看