分类器学习笔记
1、线性分类器(Linear Regression)
1.1贝叶斯分类器
朴素贝叶斯(Naive Bayes)分类器,以垃圾邮件分类为例子,需要特征之间满足条件独立的假设;
局限性:
(1)要求自变量和因变量之间满足线性关系;
(2)朴素贝叶斯要求特征之间满足条件独立,不能学习特征之间的相互作用。
满足条件以后,根据最大后验概率(MAP)准则:maxθ P(y|x)=P(x|y)*P(y)/P(x) <=> maximizing Πi=1mp(x(i),y(i)),计算出三个参数:Øi|y=1 =p(xi=1|y=1),Øi|y=0 =p(xi=1|y=0),Øy =p(y=1).
有了这些参数以后,对新的一个特征为x的样本进行预测,只要简单计算:p(y=1|x) = p(x|y=1)*p(y=1)/p(x) = (Πi=1n p(xi|y=1))*p(y=1)/[(Πi=1n p(xi|y=1))*p(y=1)+(Πi=1n p(xi|y=0))*p(y=0)].
1.2 Logistic Regression分类器
Logistic Regression Cost Function: minθ 1/m ∑i=1m [ y(i)*cost1(θTx(i))+(1-y(i))*cost0(θTx(i)) ] +λ /(2m) *∑nj=1 θ2j ( cost1(θTx(i))=-log hθ(x(i)), cost0(θTx(i))=-log(1-hθ(x(i))) )
hθ(x(i))=1/(1+e-θTx(i))=g(z)
成本函数的第一项,损失项,是为了使得模型预测的误差最小,而第二项规则化项则是为了使得模型尽可能简单。
从logistic回归的成本函数表达式可以看出,第二项作为regularization items(惩罚项),其中的θ对成本函数的作用与第一项中θ的作用是相反的,添加了惩罚项后,由参数λ调节控制,前后两项相互制约,使得θ既不能过大也不能过小,最终平衡到一个合适的值,使得训练集和测试集效果接近。但是从logistic的假设函数hθ来看,如果数据不是线性可分,则效果还是不好的。
局限性:
(1)自变量对疾病的影响是独立的,但实际情况及推导结果不同;
(2)训练集的样例数目要有200例以上才可不考虑参数估计的偏性;
(3)logistic分类器说到底是线性分类器,如果数据不是线性可分的,还是不能用logistic回归
2、 SVM classifier
SVM分类器既可以作为线性分类器,也可以作为非线性分类器,这主要取决于它的核函数。
如果不使用kernel(saying:'linear kernel'),则它是一个线性分类器;如果使用其他的核函数(e.g. Gaussian kernel),则是一个非线性分类器,具有非线性判决边界。
更具体地说,核函数的作用,是在输入样本线性不可分的情况下,通过函数映射将输入样本映射到另外一个高维空间并使其线性可分。
SVM作为线性分类器主要用在特征数目n很大,样本数据m很小的情况。因为如果你的训练样本很少,再采用复杂的分类函数,就会很容易出现过拟合。SVM作为非线性分类器主要用在特征数目很少,样本数目非常多的情况。因为如果你有非常多的训练样本,就可以采用非线性判决边界,去获得更加准确的分类效果。
Logistic Regression Cost Function: minθ 1/m ∑i=1m [ y(i)*cost1(θTx(i))+(1-y(i))*cost0(θTx(i)) ] +λ /(2m) *∑nj=1 θ2j ( cost1(θTx(i))=-log hθ(x(i)), cost0(θTx(i))=-log(1-hθ(x(i))) )
SVM Cost Function: minθ C*{ ∑i=1m [ y(i)*cost1(θTf(i))+(1-y(i))*cost0(θTf(i)) ] + 1/2 *∑nj=1 θ2j } ( cost1(θTf(i))=-log hθ(x(i)), cost0(θTf(i))=-log(1-hθ(x(i))) )
对比logistic回归和SVM的成本函数,发现它们在形式上是一样的,不同之处其实仅仅在于假设函数hθ。logistic回归的判断依据是θTx(i)>>0, y=1;θTx(i)<<0, y=0;即其分类依据是要让成本函数整个的要尽可能小;而SVM分类器判别依据是:θTx(i)>=1, y=1;θTx(i)<=-1, y=0;即只要判为1的点和判为0的点都距离boundary有1的单位间隔就好了,所以SVM分类器又叫做“最大间隔分类器”。
而SVM不同于logistic的假设函数hθ,成就了它非线性分类的优势。
在上面的成本函数中,第二项体现了SVM被称为“large margin classifier”(最大间隔分类器)的原理(根据计算内积的原理推导,约束条件是假设函数成立(即y=1时,θTx(i)>=1,此时cost1=0;y=0时,θTx(i)<=-1,此时cost0=0),此时第一项为0,只剩第二项。实际上还是取决于假设函数hθ(x(i)));第一项中的假设函数hθ(x(i)),以及核函数X--->f的映射,决定了SVM non-linear classifier的性质;第一项中的常数C,相当于logistic回归 regularization项中的参数λ,起到调节参数个数(即特征个数),防止过拟合的作用。
局限性:
(1)由于SVM的核函数本质上的作用还是为了生成新的特征,因此,对于特征数目远远大于样本数目的数据来说,先进行特征筛选是非常有必要的,否则,会很容易出现过拟合;
(2)核函数的选择需要依靠经验;
3、线性分类器与非线性分类器的区别
(1)线性分类器:
对于线性可分数据,用一条直线可以完成分类:
对于线性不可分的数据,线性分类器的最优方法是使平方误差最小:
(2)非线性分类器:
对于非线性分类,则要经过一些特殊的变换,将样本转换成线性可分的形式,这期间可能用到非线性核函数,或者非线性分类器;又或者人工知道如何进行转换的话,先将样本映射到线性可分的空间中,再使用线性分类器:
如上图所示,因为非线性分类器能够生成非常复杂的分类界面,因此它们常常有更准确的分类结果。不过前提是样本数目足够多,以不至于造成过拟合。
非线性分类器有决策树、神经网络等。
4、决策树分类
决策树分类器的优点:
首先,决策树方法能够生成可以理解的规则;
其次,决策树算法的计算量相对来说不是很大;
第三,决策树算法可以处理连续和离散数据;
第四,决策树可以清晰地显示出属性的重要程度。决策树是通过计算信息熵选择分裂属性的,而信息熵正是该属性重要性的度量标量。
1)ID3算法:使用信息增益(衡量属性对样例的区分能力)来选择哪个属性作为分类的测试节点。
基本思想:
- 自顶向下的贪婪搜索遍历可能的决策树空间构造决策树(此方法是ID3算法和C4.5算法的基础);
- 从“哪一个属性将在树的根节点被测试”开始;
- 使用统计测试来确定每一个实例属性单独分类训练样例的能力,分类能力最好的属性作为树的根结点测试(如何定义或者评判一个属性是分类能力最好的呢?ID3算法使用的是信息增益,or 信息增益率)。
- 然后为根结点属性的每个可能值产生一个分支,并把训练样例排列到适当的分支(也就是说,样例的该属性值对应的分支)之下。
- 重复这个过程,用每个分支结点关联的训练样例来选取在该点被测试的最佳属性。
这形成了对合格决策树的贪婪搜索,也就是算法从不回溯重新考虑以前的选择。
2)C4.5算法
C4.5算法是ID3的一种改进算法,其相比于ID3有以下优点:
- 用信息增益率来选择属性。ID3选择属性用的是子树的信息增益,这里可以用很多方法来定义信息,ID3使用的是熵(entropy,熵是一种不纯度度量准则),也就是熵的变化值,而C4.5用的是信息增益率。对,区别就在于一个是信息增益,一个是信息增益率。
- 在树构造过程中进行剪枝,在构造决策树的时候,那些挂着几个元素的节点,不考虑最好,不然容易导致overfitting。
- 对非离散数据也能处理。
- 能够对不完整数据进行处理
点评:
- form Wind:决策树使用于特征取值离散的情况,连续的特征一般也要处理成离散的(而很多文章没有表达出决策树的关键特征or概念)。实际应用中,决策树overfitting比较的严重,一般要做boosting(Boosting是一种提高任意给定学习算法准确度的方法。)。分类器的性能上不去,很主要的原因在于特征的鉴别性不足,而不是分类器的好坏,好的特征才有好的分类效果,分类器只是弱相关。
- 那如何提高 特征的鉴别性呢?一是设计特征时尽量引入domain knowledge,二是对提取出来的特征做选择、变换和再学习,这一点是机器学习算法不管的部分(我说的这些不是针对决策树的,因此不能说是决策树的特点,只是一些机器学习算法在应用过程中的经验体会)。