zoukankan      html  css  js  c++  java
  • 如何选择分类器?

    如何为实际的分类应用选择合适的分类器?如果你很关心分类的精度,那么最好的选择是逐个尝试不同的分类器并采用不同的参数,从中选择最好的一个。如果你只是想大致了解一下分类结果,那么本文接下来给出几个挑选原则。

    (1)你的数据集有多大?

    如果数据集较小,high bias/low variance类型的分类器(例如naive bayes)比low bias/high variance分类器(例如kNN)更有优势,因为后者容易导致过拟合。然而随着训练集的增长,则low bias/high variance分类器更好,因为其渐进误差更小,而此时high bias/low variance分类器不能提供足够准确的分类模型。

    (2)各分类器的特点。

    naive bayes分类器的特点:如果nb分类器的条件独立性假设成立,则naive bayes分类器比logistic regression等discriminative model性能更好,不需要过多的训练集。即便是此假设不成立,naive bayes分类器的实际效果仍然很好,并且能简单快速的得出分类结果。其主要缺点是不能学习特征间的关系。

    Logistic Regression分类器的特点:相比于Naive Bayes分类器,不需要考虑特征间的关联问题,同时可以规范化模型。相比于决策树或SVM分类器,LR的分类结果具有很好的概率解释,且当训练数据增加时,可以利用在线梯度下降法很容易的更新模型。当你需要一个概率框架(通过调节分类器的阈值得到置信区间)或你希望将来能够接受更多训练数据并快速更新分类模型时,可以使用LR分类器。

    决策树分类器的特点:很容易解释分类结果,能够处理特征间的关联,非参数化,不需要考虑异常样本或数据是否为线性可分的,其缺点是不支持在线学习,所以当训练集中有新样本加入时,需要重建决策树模型。另外,该分类器容易过拟合(这是随机森林等组合方法共同的问题,随机森林在很多方面比其他分类器较好,其速度快且具有较好的可扩展性,同时不需要像SVM一样调整大批参数)

    SVM分类器的特点:精度较好,且对于过拟合具有理论保证。如果采用合适的核函数,则可以支持非线性可分的数据分类。在文本分类等高维分类应用中广泛使用。然而SVM分类器是内存密集型,且训练得到的分类模型难以解释,运行和调参比较麻烦。

    然而,更好的训练数据往往比更好的算法更重要,同时设计更好的特征集合也对分类结果有较大的影响。如果你有大量的数据集,那么不同的分类算法对于分类结果的影响不大,所以你需要选择速度最快或最容易使用的分类算法。如果你比较关心分类的准确度,那么你最好尝试多种分类器并选择效果最好的一个。

    翻译自http://blog.echen.me/2011/04/27/choosing-a-machine-learning-classifier/

  • 相关阅读:
    python3 类方法的约束
    python3 最简单的网络编程udp(socket数据包datagram)
    python3 最简单的网络编程tcp(socket数据流)
    python3 初识面向对象
    python3 包的导入和使用
    python3 模块的导入和使用
    python3 logging模块
    python 逻辑运算
    python3 datetime模块
    python 面试题
  • 原文地址:https://www.cnblogs.com/zqliu133/p/4920753.html
Copyright © 2011-2022 走看看