转自别处 有很多与此类似的文章 也不知道谁是原创 因原文由少于错误 所以下文对此有修改并且做了适当的重点标记(横线见的内容没大明白 并且有些复杂,后面的运行流程依据前面的得出的算子进行分类)
初步接触
谓LR分类器(Logistic Regression Classifier),并没有什么神秘的。在分类的情形下,经过学习之后的LR分类器其实就是一组权值w0,w1,...,wm.
详细描述 1.逻辑回归模型
1.1逻辑回归模型
考虑具有p个独立变量的向量
上式右侧形式的函数称为称为逻辑函数。下图给出其函数图象形式。
其中
定义不发生事件的条件概率为
那么,事件发生与事件不发生的概率之比为
这个比值称为事件的发生比(the odds of experiencing an event),简称为odds。因为0<p<1,故odds>0。对odds取对数,即得到线性函数,
1.2极大似然函数
假设有n个观测样本,观测值分别为
因为各项观测独立,所以它们的联合分布可以表示为各边际分布的乘积。
上式称为n个观测的似然函数。我们的目标是能够求出使这一似然函数的值最大的参数估计。于是,最大似然估计的关键就是求出参数 对上述函数求对数
上式称为对数似然函数。为了估计能使 对此函数求导,得到p+1个似然方程。
上式称为似然方程。为了解上述非线性方程,应用牛顿-拉斐森(Newton-Raphson)方法进行迭代求解。 1.3 牛顿-拉斐森迭代法
对
如果写成矩阵形式,以H表示Hessian矩阵,X表示
令
则 得牛顿迭代法的形式为
注意到上式中矩阵H为对称正定的,求解
最大似然估计的渐近方差(asymptotic variance)和协方差(covariance)可以由信息矩阵(information matrix)的逆矩阵估计出来。而信息矩阵实际上是
----------------------------------------------------------------------------------------------------------------------------------------------- 2.显著性检验
下面讨论在逻辑回归模型中自变量 2.1 Wald test 对回归系数进行显著性检验时,通常使用Wald检验,其公式为
其中,
如果需要检验假设
其中,
矩阵Q是第一列为零的一常数矩阵。例如,如果检验 然而当回归系数的绝对值很大时,这一系数的估计标准误就会膨胀,于是会导致Wald统计值变得很小,以致第二类错误的概率增加。也就是说,在实际上会导致应该拒绝零假设时却未能拒绝。所以当发现回归系数的绝对值很大时,就不再用Wald统计值来检验零假设,而应该使用似然比检验来代替。 2.2 似然比(Likelihood ratio test)检验
在一个模型里面,含有变量
计算似然值采用公式(1.8)。
倘若需要检验假设
式中, 2.3 Score检验
在零假设
上式中, 2.4 模型拟合信息 模型建立后,考虑和比较模型的拟合程度。有三个度量值可作为拟合的判断根据。 (1)-2LogLikelihood
(2) Akaike信息准则(Akaike Information Criterion,简写为AIC)
其中K为模型中自变量的数目,S为反应变量类别总数减1,对于逻辑回归有S=2-1=1。-2LogL的值域为0至 (3)Schwarz准则 这一指标根据自变量数目和观测数量对-2LogL值进行另外一种调整。SC指标的定义为
其中ln(n)是观测数量的自然对数。这一指标只能用于比较对同一数据所设的不同模型。在其它条件相同时,一个模型的AIC或SC值越小说明模型拟合越好。
3.回归系数解释 3.1发生比
odds=[p/(1-p)]
(1)连续自变量。对于自变量
(2)二分类自变量的发生比率。变量的取值只能为0或1,称为dummy variable。当
亦即对应系数的幂。 (3)分类自变量的发生比率。
如果一个分类变量包括m个类别,需要建立的dummy variable的个数为m-1,所省略的那个类别称作参照类(reference category)。设dummy variable为 3.2 逻辑回归系数的置信区间
对于置信度1-
上式中,
----------------------------------------------------------------------------------------------------------------------------------------------- 4.变量选择 4.1前向选择(forward selection):在截距模型的基础上,将符合所定显著水平的自变量一次一个地加入模型。 具体选择程序如下 (1) 常数(即截距)进入模型。 (2) 根据公式(2.6)计算待进入模型变量的Score检验值,并得到相应的P值。
(3) 找出最小的p值,如果此p值小于显著性水平 (4) 回到(2)继续下一次选择。 4.2 后向选择(backward selection):在模型包括所有候选变量的基础上,将不符合保留要求显著水平的自变量一次一个地删除。 具体选择程序如下 (1) 所有变量进入模型。 (2) 根据公式(2.1)计算所有变量的Wald检验值,并得到相应的p值。
(3) 找出其中最大的p值,如果此P值大于显著性水平 (4) 回到(2)进行下一轮剔除。 4.3逐步回归(stepwise selection) (1)基本思想:逐个引入自变量。每次引入对Y影响最显著的自变量,并对方程中的老变量逐个进行检验,把变为不显著的变量逐个从方程中剔除掉,最终得到的方程中既不漏掉对Y影响显著的变量,又不包含对Y影响不显著的变量。
(2)筛选的步骤:首先给出引入变量的显著性水平
(3)逐步筛选法的基本步骤 逐步筛选变量的过程主要包括两个基本步骤:一是从不在方程中的变量考虑引入新变量的步骤;二是从回归方程中考虑剔除不显著变量的步骤。 假设有p个需要考虑引入回归方程的自变量.
① 设仅有截距项的最大似然估计值为
设有最小p值的变量为
② 为了确定当变量
③ 此步开始于模型中已含有变量
④ 如此进行下去,每当向前选择一个变量进入后,都进行向后删除的检查。循环终止的条件是:所有的p个变量都进入模型中或者模型中的变量的p值小于
本文适合有少许文本分类实践经验的同学。
1.什么是文本分类? 简单点说,给定类别,将文本分到某个或某几个类别中。比如,一篇网页,判断它是体育类还是政治类还是娱乐类。当然网页比文本稍微复杂一些,需要先做一些页面解析等预处理工作。文本分类可看作网页分类的一个子问题。 想继续了解文本分类,推荐看计算所王斌老师的PPT ,点击这里。
2.什么是逻辑回归(LR, logistic regression)? 英文,参考wikipedia的定义,点击这里。 中文,可参考这篇,点击这里。 目前有不少机器学习方面的开源实现,本人采用了liblinear开源库,实现高效,使用简单,它支持LR和SVM,点击这里了解。
3.什么是模型调优? 对于文本分类问题,收集若干类别样本,确定好文本特征后,采用一些成熟的分类算法(朴素贝叶斯、SVM、决策树、LR等),即可得到一个分类器,采用交叉验证(cross validation)可得到这个分类器的大致效果。要想达到比较理想的分类效果(准确率/召回率),则需要进行模型调优。以下列举本人在利用LR的实践过程中觉得比较重要的调优点。
4. 训练样本调优 理想情况下,对于任何分类算法来讲,只要训练样本足够好(什么算好?),分类效果的差别并不是特别大。训练样本的好坏直接决定了分类效果。矛盾的是,理想中的训练样本几乎无法得到。主要原因有二:1)训练样本无法正确映射出现实世界中的各类别比例。比如现实世界里A类/B类=40,如果按照这个比例来确定训练样本,则显然不行。2)对于有监督学习来说,训练样本往往需要人工标注,这使得训练样本数量无法得到保证。另外人工标注不可避免会产生错误,也会对分类造成影响。 在实践过程当中,要保持对数据的敏感性,对于模型的错误/有偏输出结果,要不断分析和猜测并加以验证。比如某个非政治类词与政治类的关联度特别大,则可断定是训练样本的有偏性造成的(比如训练样本大部分来自新浪政治类网页,则新浪这个词肯定与政治类关联度特别大,要想办法消除这种有偏性)。
5. 特征调优 如何表示一个文本?向量空间模型(VSM)是比较常用的。对于文本分类问题,VSM的每一维可以表示一个word,而tfidf是比较常见的权重计算方法,但是tfidf的具体计算方法又有很多种(log形式, normalized形式、tf=1形式等)。任何一种都没有绝对的优劣性。需要在实践中根据具体数据来选择对应形式。 另外,特征的维数及各维定义也需要商榷。维数过大会带来训练时间过长和数据稀疏性问题。维数过小无法完整表示文本显然也不行。一般通过特征选择(feature selection)方法来确定特征维数和组成方式。实际使用过程中CHI和IG是效果比较好的两种。各维数含义则可简单可复杂,简单的,各维可表示一个word,直观明了;复杂的可使用LSI等方法来对其进行重构。 对于特征选择的计算结果(每维特征与各类别的关联度排序),可稍加分析,看是否存在训练样本的有偏问题。
6. 保持对数据的敏感性 模型调优是一个不断迭代的过程,在实践过程中,要善于根据分类器的输出(打分分布、区间样本抽查、误判分析)来发现问题所在。走一步,看一步。不要盲目地去调整,要根据模型目前的状态,分析其可能的问题所在,然后有针对性地去优化。另外还要确保测试集合的开放性,防止over-fitting.
7. 保持耐心、细致 模型调优又是一个繁琐的工作,需要不断的迭代优化,需要不断的抽查样本,需要不断的分析和对比数据。往往有时模型的输出结果与预测不符,会令人沮丧。但最重要的是要保持耐心和细心。如果确定目前的方法可以解决这类问题,则要坚定不移地走下去,同时细致地发现可能存在的问题并加以改进。相信总会得到一个令人满意的结果。 |
|