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 专家,所以我只能考虑获取所有行上的特征之间的距离并选择最接近的那个。但我很确定这不是我应该走的路。

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

4

4 回答 4

3

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

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

此处的本教程可作为 scikits-learn 中的一个很好的参考。

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

而且, mlpy似乎也有 kNN

于 2013-03-20T18:16:37.317 回答
2

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

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

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

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

于 2013-03-22T07:30:30.993 回答
2

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

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

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

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

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

于 2013-03-20T19:04:40.153 回答
1

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

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

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

于 2013-07-29T13:52:15.590 回答