M为样本个数,为模型对样本i的预测结果,
为样本i的真实标签。算法
判别式:LR,SVM,神经网络,CRF,Boosting缓存
详情:支持向量机网络
特征维数高选择线性核函数
样本数量可观、特征少选择高斯核(非线性核)性能
样本数量很是多选择线性核(避免形成庞大的计算量)学习
详情:支持向量机优化
支持向量机是一种二分类模型,他的基本想法就是基于训练集和样本空间中找到一个最好的划分超平面,将两类样本分割开来,首先你就要知道什么样的划分发才能称为“最”好划分设计
看上图,二维平面上有两类样本,一类是用‘+’表示,另外一类用‘-’表示,那么中间那几条划分线每条都能将两类样本分割开来,但咱们咱们一眼就注意到中间那条加粗的划分超平面,彷佛他是最好的,由于两类的样本点都离他挺远的,专业点说就是该划分超平面对训练样本局部扰动的‘容忍’性最好。好,这还只是个二维平面,咱们能够经过可视化大概寻找这样一个超平面,但若是三维,四维,五维呢,咱们必须用咱们擅长的数学去描述它,推导它。code
在样本空间中,划分超平面可用表示,记为(w,b),样本点(xi,yi)到划分超平面的函数间隔为
,几何间隔为:
orm
若,可知函数间隔和几何间隔相等,若超平面参数w,b成比例的改变(超平面没有变),则函数间隔也是成比例的改变,而几何间隔不变。
支持向量机的基本想法就是求解可以正确划分训练数据集而且几何间隔最大的分离超平面,表达为数学公式即为:
其实函数间隔的取值并不影响最优化问题的解,假设将w和b成倍的改变为aw,ab,那么函数间隔也会相应变成a
,函数间隔的对上面最优化问题的不等式没有影响,也对目标函数没有影响,所以为简便,取
,并且咱们注意到最大化
等价于最小化
(为啥取平方呢,由于后面好求导),即可获得下面支持线性可分(线性不可分的状况后面会提到)的支持向量机的最优化问题
这是一个凸二次优化的问题,能够直接求解,可是为了简便呢,咱们要应用拉格朗日对偶性,求解他的对偶问题
其实求解对偶问题相比于原问题有一下几点好处(1).对偶问题更容易求解,由于不用求w了 (2)咱们能够天然引入核函数,这样能够推广到线性不可分分类问题上
创建拉格朗日函数,引进拉格朗日乘子,定义拉格朗日函数:
根据原始问题的对偶性,原始问题的对偶性是极大极小问题,即
将其代入对偶问题,可得
解出alpha以后,那么w,b也相应获得啦
接下来,咱们看看颇有意思的上式不等式约束的kkt条件(不懂请百度)带给咱们的信息
咦,对于任意训练样本,总有
或者
,也就是说最终与模型有关的的样本点都位于最大间隔的边界上,咱们称之为支持向量,其他的样本点与模型无关
在前面的讨论中,咱们都是聊的线性可分的状况,那么大多数状况下都线性不可分怎么办,好比这样(如左)
山人自有妙计,咱们能够将样本先映射到高维特征空间,而后就能够继续分割了(如右)
前面咱们说到了对偶问题是
公式中涉及到计算,xi,xj是映射到特征空间以后的内积,因为特征维数可能会很高,甚至是无穷多维,直接计算很困难,因此咱们引入了核函数:
这样咱们就能够不用麻烦的计算内积了
dqn的各类trick:
第一个Trick。DQN引入卷积层。模型经过Atari游戏视频图像了解环境信息并学习策略。DQN须要理解接收图像,具备图像识别能力。卷积神经网络,利用可提取空间结构信息卷积层抽取特征。卷积层提取图像中重要目标特征传给后层作分类、回归。DQN用卷积层作强化学习训练,根据环境图像输出决策。
第二个Trick。Experience Replay。深度学习须要大量样本,传统Q-Learning online update方法(逐一对新样本学习)不适合DQN。增大样本,多个epoch训练,图像反复利用。Experience Replay,储存Agent Experience样本,每次训练随机抽取部分样本供网络学习。稳定完成学习任务,避免短视只学习最新接触样本,综合反复利用过往大量样本学习。建立储存Experience缓存buffer,储存必定量较新样本。容量满了,用新样本替换最旧样本,保证大部分样本相近几率被抽到。不替换旧样本,训练过程被抽到几率永远比新样本高不少。每次须要训练样本,直接从buffer随机抽取必定量给DQN训练,保持样本高利用率,让模型学习到较新样本。
第三个Trick。用第二个DQN网络辅助训练,target DQN,辅助计算目标Q值,提供学习目标公式里的maxaQ(st+1,a)。两个网络,一个制造学习目标,一个实际训练,让Q-Learning训练目标保持平稳。强化学习 Q-Learning学习目标每次变化,学习目标分部是模型自己输出,每次更新模型参数会致使学习目标变化,更新频繁幅度大,训练过程会很是不稳定、失控,DQN训练会陷入目标Q值与预测Q值反馈循环(陷入震荡发散,难收敛)。须要稳定target DQN辅助网络计算目标Q值。target DQN,低频率、缓慢学习,输出目标Q值波动较小,减少训练过程影响。
第四个Trick。Double DQN。传统DQN高估Action Q值,高估不均匀,致使次优Action被高估超过最优Action。targetDQN 负责生成目标Q值,先产生Q(st+1,a),再经过maxa选择最大Q值。Double DQN,在主DQN上经过最大Q值选择Action,再获取Action在target DQN Q值。主网选择Action,targetDQN生成Action Q值。被选择Q值,不必定老是最大,避免被高估次优Action老是超过最优Action,致使发现不了真正最好Action。学习目标公式:Target=rt+1+γ·Qtarget(st+1,argmaxa(Qmain(st+1,a)))。
第五个Trick。Dueling DQN。Dueling DQN,Q值函数Q(st,at)拆分,一部分静态环境状态具备价值V(st),Value;另外一部分动态选择Action额外带来价值A(at),Advantage。公式,Q(st,at)=V(st)+A(at)。网络分别计算环境Value和选择Action Advantage。Advantage,Action与其余Action比较,零均值。网络最后,再也不直接输出Action数量Q值,输出一个Value,及Action数量 Advantage值。V值分别加到每一个Advantage值上,得最后结果。让DQN学习目标更明确,若是当前指望价值主要由环境状态决定,Value值大,全部Advantage波动不大;若是指望价值主要由Action决定,Value值小,Advantage波动大。分解让学习目标更稳定、精确,DQN对环境状态估计能力更强。
1 核函数本质
核函数的本质能够归纳为以下三点:
1)实际应用中,经常遇到线性不可分的状况。针对这种状况,经常使用作法是把样例特征映射到高维空间中,转化为线性可分问题。
2)将样例特征映射到高维空间,可能会遇到维度太高的问题。
3)针对可能的维灾难,能够利用核函数。核函数也是将特征从低维到高维的转换,但避免了直接进行高维空间中的复杂计算,能够在低维上进行计算,却能在实质上将分类效果表如今高维上。
固然,SVM也能处理线性可分问题,这时使用的就是线性核了。
经常使用的核函数包括以下几个:线性核函数,多项式核函数,RBF核函数(高斯核),Sigmoid核函数
2 线性核
2.1 线性核
SVM确定是能够处理线性问题的,这个就是斯坦福课程里讲SVM时候,最开始讲解的部分,以线性问题入手进行讲解。
线性核计算为k(x1,x2)=,其实就是在原始空间中的内积。
2.2 线性SVM和逻辑回归
当SVM使用线性核时,在处理分类问题时,和逻辑回归比较有哪些异同,如何选择?
1)线性核SVM和逻辑回归本质上没有区别
2)n=特征数,m=训练样本数目
若是n相对m比较大,使用逻辑回归或者线性SVM,例如n=10000,m=10-1000
若是n比较小,m数值适中,使用高斯核的SVM,例如n=1-1000,m=10-10000
若是n比较小,m很大,构建更多特征,而后使用逻辑回归或者线性SVM
3 非线性核
经常使用的非线性核包括多项式核,RBF核(高斯核),sigmoid核。
RBF核一般是首选,实践中每每能表现出良好的性能。计算方法以下:
其中,若是σ选得很大的话,高次特征上的权重实际上衰减得很是快,因此实际上(数值上近似一下)至关于一个低维的子空间;反过来,若是σ选得很小,则能够将任意的数据映射为线性可分——固然,这并不必定是好事,由于随之而来的多是很是严重的过拟合问题。不过,总的来讲,经过调控参数,高斯核实际上具备至关高的灵活性,也是使用最普遍的核函数之一。
多项式核计算方法以下:
sigmoid核函数计算方法以下:
采用Sigmoid函数做为核函数时,支持向量机实现的就是一种多层感知器神经网络,应用SVM方法,隐含层节点数目(它肯定神经网络的结构)、隐含层节点对输入节点的权值都是在设计(训练)的过程当中自动肯定的。并且支持向量机的理论基础决定了它最终求得的是全局最优值而不是局部最小值,也保证了它对于未知样本的良好泛化能力而不会出现过学习现象。
4 如何选择
1)能够利用专家先验知识余弦选定核函数,例如已经知道问题是线性可分的,就可使用线性核,没必要选用非线性核
2)利用交叉验证,试用不一样的核函数,偏差最小的即为效果最好的核函数
3)混合核函数方法,将不一样的核函数结合起来
我以为问题是线性可分和线性不可分其中之一,那在选择核函数的时候,若是不清楚问题属于哪一类,就两类核都尝试一下,因此能够主要尝试线性核以及RBF核。
1) Linear核:主要用于线性可分的情形。参数少,速度快,对于通常数据,分类效果已经很理想了。
2)RBF核:主要用于线性不可分的情形。参数多,分类结果很是依赖于参数。有不少人是经过训练数据的交叉验证来寻找合适的参数,不过这个过程比较耗时。
至于到底该采用哪一种核,要根据具体问题,有的数据是线性可分的,有的不可分,须要多尝试不一样核不一样参数。若是特征的提取的好,包含的信息量足够大,不少问题都是线性可分的。固然,若是有足够的时间去寻找RBF核参数,应该能达到更好的效果。
没有一种黄金规则能够肯定哪一种核函数将推导出最准确的SVM,在实践中,核函数的选择通常并不致使准确率的很大差异。SVM老是发现全局解,而不是局部解。
5 其余
SVM的复杂度主要由支持向量数刻画,而不是数据的维度,所以相比其余方法,SVM不太容易过拟合。
SVM的损失函数:
一、Hinge损失函数
首先咱们来看什么是合页损失函数(hinge loss function):
hinge loss function
下标”+”表示如下取正值的函数,咱们用z表示中括号中的部分:
也就是说,数据点若是被正确分类,损失为0,若是没有被正确分类,损失为z。合页损失函数以下图所示:
二、SVM损失函数
SVM的损失函数就是合页损失函数加上正则化项:
二、SVM损失函数
SVM的损失函数就是合页损失函数加上正则化项:
损失函数
决策树和朴素贝叶斯是最经常使用的两种分类算法,本篇文章介绍朴素贝叶斯算法。贝叶斯定理是以英国数学家贝叶斯命名,用来解决两个条件几率之间的关系问题。简单的说就是在已知P(A|B)时如何得到P(B|A)的几率。朴素贝叶斯(Naive Bayes)假设特征P(A)在特定结果P(B)下是独立的。
1.几率基础:
在开始介绍贝叶斯以前,先简单介绍下几率的基础知识。几率是某一结果出现的可能性。例如,抛一枚匀质硬币,正面向上的可能性多大?几率值是一个0-1之间的数字,用来衡量一个事件发生可能性的大小。几率值越接近1,事件发生的可能性越大,几率值越接近0,事件越不可能发生。咱们平常生活中听到最多的是天气预报中的降水几率。几率的表示方法叫维恩图。下面咱们经过维恩图来讲明贝叶斯公式中常见的几个几率。
在维恩图中:
S:S是样本空间,是全部可能事件的总和。
P(A):是样本空间S中A事件发生的几率,维恩图中绿色的部分。
P(B):是样本空间S中B事件发生的几率,维恩图中蓝色的部分。
P(A∩B):是样本空间S中A事件和B事件同时发生的几率,也就是A和B相交的区域。
P(A|B):是条件几率,是B事件已经发生时A事件发生的几率。
对于条件几率,还有一种更清晰的表示方式叫几率树。下面的几率树表示了条件几率P(A|B)。与维恩图中的P(A∩B)相比,能够发现二者明显的区别。P(A∩B)是事件A和事件B同时发现的状况,所以是二者相交区域的几率。而事件几率P(A|B)是事件B发生时事件A发生的几率。这里有一个先决条件就是P(B)要首先发生。
由于条件几率P(A|B)是在事件B已经发生的状况下,事件A发生的几率,所以P(A|B)能够表示为事件A与B的交集与事件B的比率。
该公式还能够转换为如下形式,以便咱们下面进行贝叶斯公式计算时使用。
2.贝叶斯公式:
贝叶斯算法经过已知的P(A|B),P(A),和P(B)三个几率计算P(B|A)发生的几率。假设咱们如今已知P(A|B),P(A)和P(B)三个几率,如何计算P(B|A)呢?经过前面的几率树及P(A|B)的几率可知,P(B|A)的几率是在事件A发生的前提下事件B发生的几率,所以P(B|A)能够表示为事件B与事件A的交集与事件A的比率。
该公式一样能够转化为如下形式:
经过计算能够证实P(A|B)*P(B)和P(B|A)*P(A)最后求得的结果是几率表中的同一个区域的值,所以:
咱们经过P(A∩B)= P(B∩A)证实了在已知P(A|B),P(A),和P(B)三个几率的状况下能够计算出P(B|A)发生的几率。整个推导和计算过程能够说得通。但从统计学的角度来看,P(A|B)和P(B|A)两个条件几率之间存在怎样的关系呢?咱们从贝叶斯推断里能够找到答案。
3.贝叶斯推断:
贝叶斯推断能够说明贝叶斯定理中两个条件几率之间的关系。换句话说就是咱们为何能够经过P(A|B),P(A),和P(B)三个几率计算出P(B|A)发生的几率。
在贝叶斯推断中,每一种几率都有一个特定的名字:
P(B)是”先验几率”(Prior probability)。
P(A)是”先验几率”(Prior probability),也做标准化常量(normalized constant)。
P(A|B)是已知B发生后A的条件几率,叫作似然函数(likelihood)。
P(B|A)是已知A发生后B的条件几率,是咱们要求的值,叫作后验几率。
P(A|B)/P(A)是调整因子,也被称做标准似然度(standardised likelihood)。
贝叶斯推断中有几个关键的概念须要说明下:
第一个是先验几率,先验几率是指咱们主观经过事件发生次数对几率的判断。
第二个是似然函数,似然函数是对某件事发生可能性的判断,与条件几率正好相反。经过事件已经发生的几率推算事件可能性的几率。
维基百科中对似然函数与几率的解释:
几率:是给定某一参数值,求某一结果的可能性。
例如,抛一枚匀质硬币,抛10次,6次正面向上的可能性多大?
似然函数:给定某一结果,求某一参数值的可能性。
例如,抛一枚硬币,抛10次,结果是6次正面向上,其是匀质的可能性多大?
第三个是调整因子:调整因子是似然函数与先验几率的比值,这个比值至关于一个权重,用来调整后验几率的值,使后验几率更接近真实几率。调整因子有三种状况,大于1,等于1和小于1。
调整因子P(A|B)/P(A)>1:说明事件可能发生的几率要大于事件已经发生次数的几率。
调整因子P(A|B)/P(A)=1:说明事件可能发生的几率与事件已经发生次数的几率相等。
调整因子P(A|B)/P(A)<1:说明事件可能发生的几率与事件小于已经发生次数的几率。
所以,贝叶斯推断能够理解为经过先验几率和调整因子来得到后验几率。其中调整因子是根据事件已经发生的几率推断事件可能发生的几率(经过硬币正面出现的次数来推断硬币均匀的可能性),并与已经发生的先验几率(硬币正面出现的几率)的比值。经过这个比值调整先验几率来得到后验几率。
后验几率=先验几率x调整因子
sigmoid function 的导数以下:
逻辑回归用来分类0/1 问题,也就是预测结果属于0 或者1 的二值分类问题。这里假设了二值知足伯努利分布,也就是
其也能够写成以下的形式:
对于训练数据集,特征数据x={x1, x2, … , xm}和对应的分类标签y={y1, y2, … , ym},假设m个样本是相互独立的,那么,极大似然函数为:
log似然为:
如何使其最大呢?与线性回归相似,咱们使用梯度上升的方法(求最小使用梯度降低),那么。
若是只用一个训练样例(x,y),采用随机梯度上升规则,那么随机梯度上升更新规则为:
大写字母X表示随机变量,小写字母x表示随机变量X的某个具体的取值;
P(X)表示随机变量X的几率分布,P(X,Y)表示随机变量X、Y的联合几率分布,P(Y|X)表示已知随机变量X的状况下随机变量Y的条件几率分布;
p(X=x)表示随机变量X取某个具体值的几率,简记为p(x);
p(X=x,Y=y) 表示联合几率,简记为p(x,y),p(Y=y|X=x)表示条件几率,简记为p(y|x),且有:p(x,y)=p(x)*p(y|x)。
熵:若是一个随机变量X的可能取值为X={x1,x2,…,xk},其几率分布为P(X=xi)=pi(i= 1,2,...,n),则随机变量X的熵定义为:
把最前面的负号放到最后,便成了:
上面两个熵的公式,不管用哪一个都行,并且二者等价,一个意思(这两个公式在下文中都会用到)。
联合熵:两个随机变量X,Y的联合分布,能够造成联合熵Joint Entropy,用H(X,Y)表示。
条件熵:在随机变量X发生的前提下,随机变量Y发生所新带来的熵定义为Y的条件熵,用H(Y|X)表示,用来衡量在已知随机变量X的条件下随机变量Y的不肯定性。
简单解释下上面的推导过程。整个式子共6行,其中
第二行推到第三行的依据是边缘分布p(x)等于联合分布p(x,y)的和;
第三行推到第四行的依据是把公因子logp(x)乘进去,而后把x,y写在一块儿;
第四行推到第五行的依据是:由于两个sigma都有p(x,y),故提取公因子p(x,y)放到外边,而后把里边的-logp(x,y)-logp(x))写成-log(p(x,y)/p(x)) ;
第五行推到第六行的依据是:p(x,y)=p(x)*p(y|x),故p(x,y)/p(x)=p(y|x)。
相对熵:又称互熵,交叉熵,鉴别信息,Kullback熵,Kullback-Leible散度等。设p(x)、q(x)是X中取值的两个几率分布,则p对q的相对熵是:
在必定程度上,相对熵能够度量两个随机变量的“距离”,且有D(p||q) ≠D(q||p)。另外,值得一提的是,D(p||q)是必然大于等于0的。
互信息:两个随机变量X,Y的互信息定义为X,Y的联合分布和各自独立分布乘积的相对熵,用I(X,Y)表示:
经过上面的计算过程,咱们发现居然有H(Y)-I(X,Y)=H(Y|X)。故经过条件熵的定义,有:H(Y|X)=H(X,Y)-H(X),而根据互信息定义展开获得H(Y|X)=H(Y)-I(X,Y),把前者跟后者结合起来,便有I(X,Y)= H(X)+H(Y)-H(X,Y),此结论被多数文献做为互信息的定义。
则
sigmoid function 的导数以下:
逻辑回归用来分类0/1 问题,也就是预测结果属于0 或者1 的二值分类问题。这里假设了二值知足伯努利分布,也就是
其也能够写成以下的形式:
log似然为:
若是只用一个训练样例(x,y),采用随机梯度上升规则,那么随机梯度上升更新规则为:
在必定程度上,相对熵能够度量两个随机变量的“距离”,且有D(p||q) ≠D(q||p)。另外,值得一提的是,D(p||q)是必然大于等于0的。
且有I(X,Y)=D(P(X,Y)||P(X)P(Y))。下面,我们来计算下H(Y)-I(X,Y)的结果,以下: