Jordan Lecture Note-1: Introduction
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的更多相关文章
- Jordan Lecture Note-3: 梯度投影法
Jordan Lecture Note-3:梯度投影法 在这一节,我们介绍如何用梯度投影法来解如下的优化问题: \begin{align} \mathop{\min}&\quad f(x)\n ...
- Colorful Lecture Note(手工栈)
题目1 : Colorful Lecture Note 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Little Hi is writing an algorithm ...
- HihoCoder - 1103 Colorful Lecture Note
Little Hi is writing an algorithm lecture note for Little Ho. To make the note more comprehensible, ...
- Colorful Lecture Note
Colorful Lecture Note 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Little Hi is writing an algorithm lectu ...
- hihocoder #1103 : Colorful Lecture Note微软苏州校招笔试 1月10日(字符串处理+栈)
#1103 : Colorful Lecture Note 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Little Hi is writing an algorit ...
- 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 ...
- Jordan Lecture Note-5: Kernels
Kernels 我们首先来回顾kernel函数的定义:一个函数$K(x,y)$为kernel函数当且仅当对$\forall g, \int K(x,y)g(x)g(y)dxdy\geq 0$成立.另外 ...
- Jordan Lecture Note-2: Maximal Margin Classifier
Maximal Margin Classifier Logistic Regression 与 SVM 思路的不同点:logistic regression强调所有点尽可能远离中间的那条分割线,而SV ...
- Jordan Lecture Note-12: Kernel典型相关分析(Kernel Canonical Correlation Analysis, KCCA).
Kernel典型相关分析 (一)KCCA 同样,我们可以引入Kernel函数,通过非线性的坐标变换达到之前CCA所寻求的目标.首先,假设映射$\Phi_X: x\rightarrow \Phi_X(x ...
随机推荐
- mapreduce优化总结
集群的优化 1.合理分配map和reduce任务的数量(单个节点上map任务.reduce任务的最大数量) 2.其他配置 io.file.buffer.size hadoop访问文件的IO操作都需要通 ...
- 树形DP+树状数组 HDU 5877 Weak Pair
//树形DP+树状数组 HDU 5877 Weak Pair // 思路:用树状数组每次加k/a[i],每个节点ans+=Sum(a[i]) 表示每次加大于等于a[i]的值 // 这道题要离散化 #i ...
- Java中的return
比如你写了一个叫getInt的类public int getInt(){ //这个类的意思就是一个具有返回值类型为int的类了 //通常如果不需要返回值的话 这里就写void....//你的具体代码r ...
- Codeforces 380 简要题解
ABC见上一篇. 感觉这场比赛很有数学气息. D: 显然必须要贴着之前的人坐下. 首先考虑没有限制的方案数.就是2n - 1(我们把1固定,其他的都只有两种方案,放完后长度为n) 我们发现对于一个限制 ...
- Java NIO 缓冲区学习笔记
Buffer其实就是是一个容器对象,它包含一些要写入或者刚读出的数据.在NIO中加入Buffer对象,体现了新库与原I/O的一个重要区别.在面向流的I/O中,您将数据直接写入或者将数据直接读到Stre ...
- CodeForces 682C Alyona and the Tree (树+dfs)
Alyona and the Tree 题目链接: http://acm.hust.edu.cn/vjudge/contest/121333#problem/C Description Alyona ...
- Hibernate入门(1)-第一个Hibernate程序
Hibernate入门(1)-第一个Hibernate程序 Hibernate是最著名的ORM工具之一,本系列文章主要学习Hibernate的用法,不涉及Hibernate的原理.本文介绍第一个Hib ...
- hdu 5363 Key Set
http://acm.hdu.edu.cn/showproblem.php?pid=5363 Key Set Time Limit: 2000/1000 MS (Java/Others) Mem ...
- I - Control - HDU 4289 (最大流)
题意:有N个城市,现在城市S出现了一伙歹徒,他们想运送一些炸弹到D城市,不过警方已经得到了线报知道他们的事情,不过警察不知道他们所在的具体位置,所以只能采取封锁城市的办法来阻断暴徒,不过封锁城市是需要 ...
- Linux命令之env:显示当前用户的环境变量
Linux系统里的env命令可以显示当前用户的环境变量,还可以用来在指定环境变量下执行其他命令.下面来比较一下set,env和export命令的异同:set命令显示当前shell的变量,包括当前用户的 ...