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)*cost1Tx(i))+(1-y(i))*cost0Tx(i)) ]  +λ /(2m)  *∑nj=1 θ2         (    cost1Tx(i))=-log hθ(x(i)),  cost0Tx(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)*cost1Tx(i))+(1-y(i))*cost0Tx(i)) ]  +λ /(2m)  *∑nj=1 θ2         (    cost1Tx(i))=-log hθ(x(i)),  cost0Tx(i))=-log(1-hθ(x(i)))      )

      SVM Cost Function:                           minθ    C*{ ∑i=1m [ y(i)*cost1Tf(i))+(1-y(i))*cost0Tf(i)) ]  +  1/2 *∑nj=1 θ2   }          (    cost1Tf(i))=-log hθ(x(i)),  cost0Tf(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)线性分类器:

对于线性可分数据,用一条直线可以完成分类:

 

贝叶斯分类器的交叉验证python 贝叶斯分类器描述_贝叶斯分类器的交叉验证python

对于线性不可分的数据,线性分类器的最优方法是使平方误差最小:

贝叶斯分类器的交叉验证python 贝叶斯分类器描述_决策树_02

(2)非线性分类器:

对于非线性分类,则要经过一些特殊的变换,将样本转换成线性可分的形式,这期间可能用到非线性核函数,或者非线性分类器;又或者人工知道如何进行转换的话,先将样本映射到线性可分的空间中,再使用线性分类器:

贝叶斯分类器的交叉验证python 贝叶斯分类器描述_贝叶斯分类器的交叉验证python_03

如上图所示,因为非线性分类器能够生成非常复杂的分类界面,因此它们常常有更准确的分类结果。不过前提是样本数目足够多,以不至于造成过拟合。

非线性分类器有决策树、神经网络等。

4、决策树分类

    决策树分类器的优点:

    首先,决策树方法能够生成可以理解的规则;

    其次,决策树算法的计算量相对来说不是很大;

    第三,决策树算法可以处理连续和离散数据;

    第四,决策树可以清晰地显示出属性的重要程度。决策树是通过计算信息熵选择分裂属性的,而信息熵正是该属性重要性的度量标量。

   

1)ID3算法:使用信息增益(衡量属性对样例的区分能力)来选择哪个属性作为分类的测试节点。

            基本思想:

  • 自顶向下的贪婪搜索遍历可能的决策树空间构造决策树(此方法是ID3算法和C4.5算法的基础);
  • 从“哪一个属性将在树的根节点被测试”开始;
  • 使用统计测试来确定每一个实例属性单独分类训练样例的能力,分类能力最好的属性作为树的根结点测试(如何定义或者评判一个属性是分类能力最好的呢?ID3算法使用的是信息增益,or 信息增益率)。
  • 然后为根结点属性的每个可能值产生一个分支,并把训练样例排列到适当的分支(也就是说,样例的该属性值对应的分支)之下。
  • 重复这个过程,用每个分支结点关联的训练样例来选取在该点被测试的最佳属性。

     这形成了对合格决策树的贪婪搜索,也就是算法从不回溯重新考虑以前的选择。

2)C4.5算法

C4.5算法是ID3的一种改进算法,其相比于ID3有以下优点:

  1. 用信息增益率来选择属性。ID3选择属性用的是子树的信息增益,这里可以用很多方法来定义信息,ID3使用的是熵(entropy,熵是一种不纯度度量准则),也就是熵的变化值,而C4.5用的是信息增益率。对,区别就在于一个是信息增益,一个是信息增益率。
  2. 在树构造过程中进行剪枝,在构造决策树的时候,那些挂着几个元素的节点,不考虑最好,不然容易导致overfitting。
  3. 对非离散数据也能处理。
  4. 能够对不完整数据进行处理

点评:

     

  • form Wind:决策树使用于特征取值离散的情况,连续的特征一般也要处理成离散的(而很多文章没有表达出决策树的关键特征or概念)。实际应用中,决策树overfitting比较的严重,一般要做boosting(Boosting是一种提高任意给定学习算法准确度的方法。)。分类器的性能上不去,很主要的原因在于特征的鉴别性不足,而不是分类器的好坏,好的特征才有好的分类效果,分类器只是弱相关。
  • 那如何提高 特征的鉴别性呢?一是设计特征时尽量引入domain knowledge,二是对提取出来的特征做选择、变换和再学习,这一点是机器学习算法不管的部分(我说的这些不是针对决策树的,因此不能说是决策树的特点,只是一些机器学习算法在应用过程中的经验体会)。