机器学习(三)分类算法及其评估

一、常见分类算法及其优缺点

算法优点缺点
Bayes 贝叶斯分类法1)所需估计的参数少,对于缺失数据不敏感。
2)有着坚实的数学基础,以及稳定的分类效率。
1)需要假设属性之间相互独立,这往往并不成立。(喜欢吃番茄、鸡蛋,却不喜欢吃番茄炒蛋)。
2)需要知道先验概率。
Decision Tree决策树1)不需要任何领域知识或参数假设。
2)适合高维数据。
3)简单易于理解。
4)短时间内处理大量数据,得到可行且效果较好的结果。
5)能够同时处理数据型和常规性属性。
1)对于各类别样本数量不一致数据,信息增益偏向于那些具有更多数值的特征。
2)易于过拟合。
3)忽略属性之间的相关性。
4)不支持在线学习。
SVM支持向量机1)可以解决小样本下机器学习的问题。
2)提高泛化性能。
3)可以解决高维、非线性问题。超高维文本分类仍受欢迎。
4)避免神经网络结构选择和局部极小的问题。
1)对缺失数据敏感。
2)内存消耗大,难以解释。
KNN K近邻1)思想简单,理论成熟,既可以用来做分类也可以用来做回归;
2)可用于非线性分类;
3)训练时间复杂度为O(n);
4)准确度高,对数据没有假设,对outlier不敏感;
1)计算量太大。
2)对于样本分类不均衡的问题,会产生误判。
3)需要大量的内存。
4)输出的可解释性不强。
Logistic Regression逻辑回归1)速度快。
2)简单易于理解,直接看到各个特征的权重。
3)能容易地更新模型吸收新的数据。
4)如果想要一个概率框架,动态调整分类阀值。
特征处理复杂。需要归一化和较多的特征工程。
Neural Network 神经网络1)分类准确率高。
2)并行处理能力强。
3)分布式存储和学习能力强。
4)鲁棒性较强,不易受噪声影响。
1)需要大量参数(网络拓扑、阀值、阈值)。
2)结果难以解释。
3)训练时间过长。
Adaboosting1)集成方法,很高精度的分类器。
2)可以使用各种方法构建子分类器,Adaboost算法提供的是框架。
3)当使用简单分类器时,计算出的结果是可以理解的。而且弱分类器构造极其简单。
4)简单,不用做特征筛选。
5)不用担心过拟合。
对outlier比较敏感

二、分类算法的评估依据

1. 评价术语

T:True;F:False;P:positive;N:negative
T与F表示分类对错,P与N表示正例与反例

预测为正预测为负总计
实际为正TPFNP
实际为负FPTNN
总计TP+FPFN +TNP+N

TP(True Positive):对的正例,实际为正,分类也为正;
FP(False Positve):错的正例,实际为负,分类为正;
FN(False Negative):错的负例,实际为正,分类为负;
TN(True Negative):对的负例,实际为负,分类也为负。
P:正例个数
N:负例个数

2. 评价指标

  • 正确率(accuracy)= (TP+TN) / (P+N)
    分对的样本数占所有样本的比率,越大越好
  • 错误率(error rate)= 1 - accuracy
    与正确率互斥
  • 灵敏度(sensitivity)= TP / P
    正例中被分对的比例,衡量分类器对正例的识别能力
  • 特异性(specificity)= TN / N
    负例中被分对的比例,衡量的是对负例的识别能力
  • 精度(precision)= TP / (TP+FP)
    分在正例中的实际为正例所占的比率,也叫精准率,查准率
  • 召回率(recall rate)= TP / (TP+FN),也叫灵敏度,查全率
  • 综合分类率(F1-score): F 1 = 2 × p r e c i s i o n × r e c a l l p r e c i s i o n + r e c a l l ​ F1=\frac{2 \times precision \times recall}{precision + recall}​ F1=precision+recall2×precision×recall

3. ROC曲线和AUC包围面积

ROC曲线是(Receiver Operating Characteristic Curve,受试者工作特征曲线)的简称,是以灵敏度(真阳性率)为纵坐标,以1减去特异性(假阳性率)为横坐标绘制的性能评价曲线。可以将不同模型对同一数据集的ROC曲线绘制在同一笛卡尔坐标系中,ROC曲线越靠近左上角,说明其对应模型越可靠。也可以通过ROC曲线下面的面积(Area Under Curve, AUC)来评价模型,AUC越大,模型越可靠。

4. 正确率能很好的评估分类算法吗?

正确率确实是一个很直观很好的评价指标,但是有时候正确率高并不能完全代表一个算法就好。比如对某个地区进行地震预测,地震分类属性分为0:不发生地震、1发生地震。我们都知道,不发生的概率是极大的,对于分类器而言,如果分类器不加思考,对每一个测试样例的类别都划分为0,达到99%的正确率,但是,问题来了,如果真的发生地震时,这个分类器毫无察觉,那带来的后果将是巨大的。很显然,99%正确率的分类器并不是我们想要的。出现这种现象的原因主要是数据分布不均衡,类别为1的数据太少,错分了类别1但达到了很高的正确率缺忽视了研究者本身最为关注的情况。

如果一个分类器能正确分对所有的实例,那么各项指标都已经达到最优,但这样的分类器往往不存在。比如之前说的地震预测,既然不能百分百预测地震的发生,但实际情况中能容忍一定程度的误报。假设在1000次预测中,共有5次预测发生了地震,真实情况中有一次发生了地震,其他4次则为误报。正确率由原来的999/1000=99.9下降为996/1000=99.6。召回率由0/1=0%上升为1/1=100%。对此解释为,虽然预测失误了4次,但真的地震发生前,分类器能预测对,没有错过,这样的分类器实际意义更为重大,正是我们想要的。在这种情况下,在一定正确率前提下,要求分类器的召回率尽量高。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值