【问题标题】:Discrete and Continuous Classifier on Sparse Data稀疏数据上的离散和连续分类器
【发布时间】:2023-03-30 03:20:01
【问题描述】:

我正在尝试对包含离散和连续特征的示例进行分类。此外,该示例表示稀疏数据,因此即使系统可能已经针对 100 个特征进行了训练,该示例也可能只有 12 个。

用于完成此任务的最佳分类器算法是什么?我一直在研究 Bayes、Maxent、Decision Tree 和 KNN,但我不确定它们是否完全符合要求。我发现最大的症结在于大多数实现不支持稀疏数据集离散和连续特征。谁能推荐一个符合这些标准的算法和实现(最好是在 Python 中)?

目前我看过的库包括:

  1. Orange(主要是学术性的。实现不是非常有效或实用。)
  2. NLTK(也是学术性的,虽然有很好的 Maxent 实现,但不处理连续特征。)
  3. Weka(仍在研究中。似乎支持广泛的算法,但文档很差,因此不清楚每个实现支持什么。)

【问题讨论】:

    标签: java python machine-learning classification


    【解决方案1】:

    Support vector machines? libsvm 可以在 Python 中使用,而且速度很快。

    处理稀疏向量输入,并且不介意某些特征是连续的,而其他特征只是 -1/+1。 (如果你有一个 n 路离散特征,标准做法是将其扩展为 n 个二元特征。)

    【讨论】:

    • 有趣。虽然我以前听说过它们,但我对 SVM 没有太多经验。但是,找到合适的内核会不会很困难?
    • 我发现 libsvm 严重缺乏文档,并且没有社区论坛。如果它支持稀疏数据集,则该特征隐藏得很好。分布中包含的 single Python 示例使用密集数据集,即使其他训练文件似乎以稀疏样式格式化。
    • libsvm 的默认内存布局已调整为有效处理稀疏数据,并且 libsvm 文件输入格式不存储零值属性。另一方面,对于密集数据,您需要一个特殊的实现:csie.ntu.edu.tw/~cjlin/libsvmtools/#libsvm_for_dense_datacsie.ntu.edu.tw/~cjlin/libsvm/faq.html#f303
    【解决方案2】:

    Weka (Java) 满足您的所有要求:

    查看此Pentaho wiki 以获取文档、指南、视频教程等的链接列表...

    【讨论】:

    • 除此之外,还有一个在 NLTK 中实现的 Weka 的 Python 绑定。
    【解决方案3】:

    scikit-learn,一个 Python 机器学习模块,支持 Stochastic Gradient DescentSupport Vector machines 处理稀疏数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-26
      • 1970-01-01
      • 1970-01-01
      • 2015-06-11
      • 2012-11-02
      • 1970-01-01
      • 2018-03-21
      • 1970-01-01
      相关资源
      最近更新 更多