2013-03-20 62 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-支持向量機

如果你只對預測性能感興趣,擁有足夠的訓練數據並且沒有缺失值,您會發現使用更復雜的方法(如貝葉斯網絡)不會導致預測性能的統計顯着改善。即使他們這樣做,您應該從這三個(相對)簡單的方法開始,並將它們用作參考基準。