【问题标题】:Which algorithms/concepts should i dig for author prediction我应该挖掘哪些算法/概念来进行作者预测
【发布时间】:2013-03-10 00:28:23
【问题描述】:

我一直在做一些尝试 使用我自己的数据集找出专栏的作者。

我打算使用mlpy python 库。它有很好的文档, (大约 100 页 pdf)。我也对其他图书馆开放 建议。

问题是,我迷失在数据挖掘和机器学习中 概念。有太多的工作,太多的算法和 概念。

我在问路,我应该学习什么算法/概念, 并搜索我的具体问题。

到目前为止,我已经构建了一个类似这样的数据集。

| author | feature x | feature y | feature z | some more features |
|--------+-----------+-----------+-----------+--------------------|
| A      |         2 |         4 |         6 | ..                 |
| A      |         1 |         1 |         5 | ..                 |
| B      |        12 |        15 |         9 | ..                 |
| B      |        13 |        13 |        13 | ..                 |

现在,我将获得一个新列并对其进行解析,之后我将拥有所有 专栏的特点,我的目标是找出谁 该专栏的作者是。

由于我不是 ML 人,我只能想到在 所有行上的特征并选择最接近的行。但我很确定 这不是我应该走的路。

我会很感激任何方向、链接、阅读等。

【问题讨论】:

    标签: python machine-learning classification prediction


    【解决方案1】:

    鉴于您不熟悉 ML,我推荐的前三种算法是:

    1- 逻辑回归 2-朴素贝叶斯 3- 支持向量机

    如果您只对预测性能感兴趣,拥有足够的训练数据并且没有缺失值,您会发现使用更复杂的方法(例如贝叶斯网络)不会导致预测性能在统计上显着提高。即使他们这样做了,您也应该从这三种(相对)简单的方法开始,并将它们用作参考基准。

    【讨论】:

      【解决方案2】:

      如果您有足够的训练数据,那么您可以使用 kNN(k-Nearest Neighbor)分类器来达到您的目的。它易于理解,但功能强大。

      检查scikits.ann 以获取可能的实现。

      This tutorial 这里是 scikits-learn 中的一个很好的参考。

      编辑:此外,这里是kNN of scikits-learn 的页面。您可以从给定的示例中轻松理解它。

      而且,mlpy 还有seems to have kNN

      【讨论】:

      • 我认为您在这里搞混了一些事情。 scikits.ann 和 scikit-learn 是完全不相关的项目。 (不过,后者确实有一个 k-NN 实现。)
      • 糟糕,我已经澄清了。谢谢。
      • kNN 是一个很好的分类器,但如果你有大量的训练数据,它可能会很慢。我建议也尝试支持向量机,它也有一个easy-to-use implementation in scikits-learn。从 RBF 内核开始。您可以使用它对多种类型的数据进行良好的分类。当然,还有no free lunch,所以尝试不同的分类器及其参数!
      • 哇,我认为 mlpy 文档很酷,但我尝试了 scikits-learn,它很棒。我已经使用 iris 数据集完成了 kNN,并且我知道了发生了什么,感谢您指出 scikits-learn 和算法。在我弄脏手之后,我会按照史蒂夫 L 和佩德罗姆的建议进一步研究。谢谢大家。
      【解决方案3】:

      正如其他人所提到的,您可以使用很多算法来进行作者归属。 kNN 是一个很好的起点。此外,您可以尝试其他几种算法,例如 Logistic Regression、朴素贝叶斯分类器和神经网络,它们可能会提供更准确的预测。

      我还对作者归属和抄袭检测感兴趣。事实上,我已经使用上述技术来进行源代码作者归属。您可以阅读以下研究论文,了解有关这些内容的更多信息。

      1. http://www.ijmlc.org/papers/50-A243.pdf [基于机器学习的源代码抄袭检测工具]
      2. http://dl.acm.org/citation.cfm?id=2423074【源码作者识别与无监督特征学习】

      另外,如果你打算使用 Python,还可以查看http://scikit-learn.org/stable/ 库。这也是一个综合性的库,带有很好的文档。

      【讨论】:

        【解决方案4】:

        您在 mlpy 上实现了多种算法,因此您应该没问题。我同意 Steve L 所说的支持向量机很棒,但即使它更容易使用,内部细节也不容易掌握,尤其是如果你是 ML 新手。

        除了 kNN,您还可以考虑分类树 (http://en.wikipedia.org/wiki/Decision_tree_learning) 和逻辑回归 (http://en.wikipedia.org/wiki/Logistic_regression)。

        对于初学者来说,决策树的优势在于生成的输出易于理解,因此更易于调试。

        另一方面,如果您需要更多数据,逻辑回归可以为您提供良好的结果和很好的扩展性。

        我会说,在您的情况下,您会寻找在阅读后您会发现使用起来更舒服的算法。大多数时候,它们都非常有能力为您提供非常不错的结果。祝你好运!

        【讨论】:

          猜你喜欢
          • 2012-11-19
          • 1970-01-01
          • 2019-01-29
          • 1970-01-01
          • 2015-09-11
          • 2022-01-16
          • 1970-01-01
          • 2011-05-04
          • 2015-03-10
          相关资源
          最近更新 更多