我应该挖掘哪些算法/概念来进行作者预测

时间:2013-03-20 18:12:40

标签: python machine-learning classification prediction

我一直致力于尝试的事情 通过使用我自己的数据集找出列的作者。

我打算使用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家伙,所以我只能想到在两者之间找到距离 所有行上的功能并选择最接近的行。但我很确定 这不是我应该去的方式。

我会欣赏任何指示,链接,阅读等。

4 个答案:

答案 0 :(得分:3)

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

检查scikits.ann是否有可能的实施。

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

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

而且,mlpy也是seems to have kNN

答案 1 :(得分:2)

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

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

对于初学者来说,决策树的优势在于可以产生易于理解且易于调试的输出。

另一方面,如果您需要更多数据,Logistic回归可以为您提供良好的结果并且可以很好地扩展。

我会说,在你的情况下,你会寻找算法,在读了一下之后你会发现使用起来更舒服。大多数时候,他们都非常有能力给你非常好的结果。祝你好运!

答案 2 :(得分:2)

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

我也对作者归属和抄袭检测感兴趣。实际上,我已经将上述技术用于源代码作者归属。您可以使用以下研究论文了解更多相关信息。

  1. http://www.ijmlc.org/papers/50-A243.pdf [基于机器学习的源代码抄袭检测工具]
  2. http://dl.acm.org/citation.cfm?id=2423074 [无代理功能学习的源代码作者识别]
  3. 此外,如果您打算使用Python,您还可以查看http://scikit-learn.org/stable/库。这也是一个综合性的库,附带了很好的文档。

答案 3 :(得分:1)

鉴于你不熟悉ML,我建议的前三种算法是:

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

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