2011-04-06 59 views
0

我有一個由數百萬個示例組成的數據集,其中每個示例都包含128個以名稱分類的連續值特徵。我試圖找到一個強大的數據庫/索引來用作高維數據的KNN分類器。我試過Weka's IBk classifier,但它扼殺了這麼多的數據,即使這樣它也必須加載到內存中。 Lucene,特別是通過PyLucene接口,會是一個可能的選擇嗎?使用PyLucene作爲K-NN分類器

我發現Lire,它似乎以類似的方式使用Lucene,但在審查代碼後,我不確定它們是如何拉斷它,或者如果它是我試圖的相同的東西做。

我意識到Lucene是作爲文本索引工具而設計的,而不是作爲通用分類器,但可以以這種方式使用嗎?

+1

要處理「數以百萬計的例子」,你應該採取看看apache mahout - 分佈式機器學習框架 - 它似乎有kNN:https://issues.apache.org/jira/browse/MAHOUT-115。 – Skarab 2011-04-06 21:28:04

+0

我找不到Mahout的KNN的任何文檔,除了在Taste組件中對其進行簡要引用外,它明確指出它僅支持布爾特性。 Mahout不能用作通用KNN。 – Cerin 2011-04-07 00:03:07

回答

1

根據您告訴我們的信息,Lucene似乎不是正確的選擇。 Lucene會爲您提供一種存儲數據的方式,但就檢索而言,它並不是用於執行任何操作,而是對文本字符串進行搜索。由於K-NN非常簡單,所以最好在典型的RDBMS或類似Berkeley DB中創建自己的數據存儲。您可以創建基於各種尺寸的子超立方體的按鍵/標記以加快速度 - 從要分類的物品的桶開始並向外移動...

+0

我還沒有看到任何關於KNN分類的RDBM支持,除了GIS標準之外,大多數只有昂貴的專有系統才支持。我不確定你的意思是用「hypercubes」創建鍵/標記。你能否引用一些資料來源? – Cerin 2011-04-06 19:34:50

+0

如果您使用RDBMS,則必須自行推出。如果你有一個大的數據集,你可以在BDB或RDMNS中存儲所有對,然後在每個維度上對它們進行索引。對於兩個維度來說,這將像在參數的空間上繪製網格一樣。然後,您會查找單元格和相鄰單元格以查找最近的項目。沒有消息來源,只是一個想法。 – dfb 2011-04-06 21:10:06

0

這在Lucene中已經用geospatial searches完成。當然,built-in地理空間搜索只使用兩個維度,所以您必須修改一下。但使用數字範圍查詢的基本思想是可行的。

(注意:我不知道任何人做高維k近鄰使用Lucene,所以我不能在這將是多麼快評)