2013-03-20 61 views
4

我一直在努力尝试 通过使用我自己的数据集找出列的作者。我应该为作者预测挖掘哪些算法/概念

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

我会很感激的任何指示,链接,朗诵等

回答

3

如果你有足够的训练数据,那么你可以使用k近邻(k近邻)分类为你的目的。它很容易理解,但功能强大。

检查scikits.ann的可能实现。

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

编辑:另外,这边是kNN of scikits-learn的页面。从给定的例子中你可以很容易地理解它。

而且,mlpy也是seems to have kNN

+0

谢谢,我会处理它,让你知道它是如何去。 – 2013-03-20 18:22:41

+1

我认为你在这里混合了一些东西。 scikits.ann和scikit-learn完全不相关的项目。 (尽管后者确实有k-NN实现。) – 2013-03-20 18:24:07

+0

糟糕,我澄清了它。谢谢。 – petrichor 2013-03-20 18:26:46

2

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

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

对于初学者来说,决策树的优点是可以产生一个易于理解并因此更容易调试的输出。

逻辑回归另一方面,可以给你很好的结果和规模很好,如果你需要更多的数据。

我会说,在你的情况下,你会寻找算法,读一点后,你会发现更舒适的工作。大多数时候,他们都非常有能力给你非常好的结果。祝你好运!

2

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

我也对作者归属和抄袭检测感兴趣。事实上,我已经使用上述技术来源代码作者归属。你可以阅读更多关于这些,通过使用以下研究论文。

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

此外,如果你打算使用Python,你也可以看看http://scikit-learn.org/stable/库。这也是一个全面的库,它有一个很好的文档。

1

既然你不熟悉的ML,前三个算法,我建议是:

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

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