算法 | 优点 | 缺点 |
---|---|---|
Bayes | 1. 所需估计的参数少 ,对于缺失数据不敏感; 2. 有着坚实的数学基础,以及稳定的分类效率 | 1. 需要假设属性之间相互独立 ,但这往往并不成立;2. 需要知道先验概率; 3. 分类决策存在错误率 |
Decision Tree | 1. 不需要任何领域的知识或参数假设; 2. 适合 高维数据 ;3. 能够在短时间内处理大量数据,得到可行且效果较好的结果; 4. 能够同时处理数据型和常规属性 | 1. 对于各类样本数量不一致的数据,信息增益 偏向于那些具有更多数量的样本;2. 容易发生过拟合; 3. 忽略属性之间的关联性; 4. 不支持在线学习 |
SVM | 1. 可以解决小样本 下机器学习的问题;2. 提高泛化性能; 3. 可以解决 高维、非线性 问题;4. 避免神经网络结构选择和局部极小的问题 | 1. 对缺失数据敏感; 2. 内存消耗大 ,难以解释;3. 运行速度较慢 ,调参复杂 |
KNN | 1. 可用于非线性 分类;2. 核心思路简单,理论成熟,既可做分类也可以做回归; 3. 训练时间复杂度为 O(n)O(n)O(n) 4. 准确度高, 对数据没有假设 ,对离群值不敏感 | 1. 计算量太大; 2. 对于样本分类不均衡的问题,会产生误判; 3. 需要 大量的内存 ;4. 输出的可解释性不强 |
Logistic Regression | 1. 简单,速度快,直接看到各个特征的权重; 2. 能容易的更新模型,吸收新的数据; 3. 想要一个概率框架,能够动态调整分类阈值 | 1. 特征处理过程复杂,需要进行归一化等特征工程 |
Neural Network | 1. 分类准确率高; 2. 并行处理能力 强;3. 分布式存储 和学习能力强;4. 鲁棒性较强 | 1. 需要大量参数; 2. 结果难以解释; 3. 训练时间过长 |
Adaboosting | 1. 有很高精度; 2. 可以使用各种方法构建 子分类器 ,Adaboosting 提供的是框架 ;3. 当使用简单分类器时,计算出的结果是可以理解的,而且弱分类器构造及其简单; 4. 流程简单,不用做特征选择; 5. 不用担心过拟合 | 对离群值比较敏感 |
几个常见的模型评价术语,假设分类目标只有两类,即正例和负例:
其中,True、False 描述的是分类器是否判断正确,Positive、Negative 是分类器的分类结果。
二分类算法评价指标:
正确率是一个很直观、很好的评价指标,但是有时候正确率高并不能完全代表一个算法就好。比如对某个地区进行地震预测,地震分类属性分为:0 代表不发生地震,1 代表发生地震。我们知道,不发生地震的概率是极大的。对于分类器而言,如果分类器不加思考,对每一个测试样例都划分为 0,达到 99% 的正确率。那么,真的发生地震时,这个分类器毫无察觉,后果将是灾难性的。显然,99% 的正确率不是我们想要的,出现这种现象的原因主要是数据分布不均衡,类别为 1 的数据太少。
假设在 1000 次预测中,共有 5 次预测发生了地震,真实情况中只有一次发生了地震,其他 4 次为误报。正确率由原来的 999/1000=99.9% 下降到了 996/1000=99.6%,但召回率由 0/1=0% 上升为 1/1=100%。虽然预测失误了 4 次,但真的地震发生时,分类器能预测对,没有错过,这样的分类器实际意义更大,正是我们想要的。
[1] 《深度学习500问》,谈继勇,电子工业出版社。