在文章LDA(线性判别分析,Linear Discriminant Analysis)中,我们已经从贝叶斯理论的角度推导了LDA。现在我们来看LDA是如何应用于二分类问题的。
两个类别的对数几率
和逻辑回归一样,我们可以通过求两个类别的对数几率来判断当前数据属于哪个类别。
logP(Y=0∣X=x)P(Y=1∣X=x)=logP0(x)P1(x)+logπ0π1=logπ0π1−21(μ1+μ0)TΣ−1(μ1−μ0)+xTΣ−1(μ1−μ0)(1)
若(1)>0, 则认为x属于1类,否则属于0类。
我们通过将(1)中的x剥离哦,获得我们需要的判别公式和对应阈值。
xTΣ−1(μ1−μ0)>SS=21(μ1+μ0)TΣ−1(μ1−μ0)−logπ0π1
若xTΣ−1(μ1−μ0)>S,则判别为1类;
若xTΣ−1(μ1−μ0)<S,则判别为0类;
这里的S我们是通过训练数据直接得到的。这种做法往往是不太好的。我们有一个强大的工具ROC曲线(Receiver Operating Characteristic curve)来描述不同S下的表现。
ROC曲线
ROC曲线是根据一系列不同的二分类方式(分界值或决定阈),以真阳性率(灵敏度)为纵坐标,假阳性率(1-特异度)为横坐标绘制的曲线。传统的诊断试验评价方法有一个共同的特点,必须将试验结果分为两类,再进行统计分析。ROC曲线的评价方法与传统的评价方法不同,无须此限制,而是根据实际情况,允许有中间状态,可以把试验结果划分为多个有序分类,如正常、大致正常、可疑、大致异常和异常五个等级再进行统计分析。因此,ROC曲线评价方法适用的范围更为广泛。1
二分类混淆矩阵(Confusion matrix K=2)
在机器学习中,混淆矩阵是一种常用的用来评价算法性能的可视化方法。下面我们来看看二分类问题下的混下矩阵。
|
Positive 阳 |
Negtive 阴 |
| True 真 |
TP 真阳例 |
FN 假阴例 |
| False 假 |
FP 假阳例 |
TN 真阴例 |
从这张表,我们可以定义出几个常用而又容易混淆的率:
错误率(Error rate)准确率(Accuracy)查准率(Precision精确度)查全率(Recall rate召回率)TPR(True positive rate)FPR(Falsepositiverate)=TP+FN+FP+TNFN+FP=TP+FN+FP+TNTP+TN=TP+FPTP=TP+FNTP=TP+FNTP(Sensitivity)=FP+TNFP(1−Specificity)
这样,我们再返回去看上面的ROC曲线。我们会发现,这张图中横轴从左到右是1→0的,这是因为这张图将横轴的FPR改成了Specificity.
QDA(Quadratic Discriminant Analysis)
之前我们在推导LDA的过程中假设所有类别的协方差矩阵Σk=Σ,而在QDA中,我们将单独计算Σk
这样,我们需要改变一下判别函数:
δk(x)C(x)=logPk(x)+log(πk)=−21(x−μk)TΣk−1−21log∣Σk∣+logπk=karg maxδk(x)
然后用极大似然估计μ^k,πk,Σ^k(or Sk=mk−1mkΣ^k)
Naive LDA和Naive QDA
在Naive的算法中,我们将协方差矩阵Σ或Σk考虑成一个对角矩阵,也就是说各个变量之间相互独立(这种情况在现实应用中是很少见的)。
各个模型的参数个数
下面的式子中K代表样本的类别,n代表样本的维度。
LDA:Kn+2n(n+1)+K−1QDA:Kn+2Kn(n+1)+K−1Naive LDA:Kn+n+K−1Naive QDA:2Kn+K−1