5

我是新來的人工神經網絡。分離和模式匹配技術

我對這樣的應用程序:

table

我有顯著大集的對象。每個對象都有六個屬性,由P1 – P6表示。每個屬性都有一個符號值。換句話說,在我的示例中,P1 – P6可以具有來自集合{A,B,C,D,E,F}的值。它們不是數字。 (假設A,B,C,d,E,F是顏色;然後你就會明白我的想法)

現在,還有另外一個特性 - [R,我很感興趣,假設

R =。 {G1,G2,G3,G4,G5}

我需要培養系統大集P1 – P6和有關R.現在我要做到以下幾點。

  1. 我有一個對象,我知道P1〜P6的值。我需要找到 R(該對象所屬的組)

  2. 爲了得到所需的R什麼是我需要在P1 – P6中具有的模式。 作爲R = G2的例子,我需要找出P1 – P6中的任何模式。

我的問題是:

  1. 什麼理論/技術/技術,我應該閱讀和學習 爲了實現分別爲1和2,?

  2. 你可以推薦什麼工具/庫來模擬/實現/測試這個 ?

+0

設定值有多大{A,B,C,D,E,F,...}?它是有限的嗎? – wildplasser

+0

是的。他們是獨立的 –

+0

那麼,恕我直言,你的問題似乎或多或少像一個搜索引擎或推薦系統(除了Px是有固定大小)你看過SVD? – wildplasser

回答

3

你應該看看classification algorithms(人工智能款),特別是近鄰的算法。你的問題可以通過不同的技術來解決,這些技術都有不同的優點和缺點。

不過,我不知道在人工智能的任何方法,它允許雙向分類(或者換句話說,兩者同時實施的先決條件1和2)的。因爲你想做的所有事情都有一個P1..P6 < => R的雙向映射,所以我建議只使用映射表而不是人工智能算法。如果您不確切知道您的樣本是在P1..P6的A..E下分類的,那麼AI會很好用。

如果你堅持使用AI的話,我建議先來看一個Perceptron。感知器由輸入,中間和輸出神經元組成。舉個例子,你會有輸入 - 神經元P1a..P1e,P2a..P2e,...和五個輸出神經元R1..R5。訓練結束後,您應該可以輸入P1..P6並獲得適當的R1..R5作爲輸出。

至於框架和技術,我只知道商業智能套件的Visual Studio中,雖然也有很多其他框架的AI在那裏。由於我沒有使用它們中的任何一個(我總是用C/C++自己編寫它們),所以我不能推薦任何。

5

你描述你的問題的樣子,你需要查找各種機器學習技術。如果是我,我會嘗試閱讀關於k-NN(k個最近鄰居)的分類。當我說分類時,我的意思是如果你知道P1-P6就得到R。這是一個非常簡單的技術,在這裏應該很有幫助。

至於周圍的其他方式,你基本上需要的是你的人口的代表性樣本。這是我認爲不太常見的,但你可以嘗試像k-means聚類。聚類方法通常自己確定一個對象的類(屬性R),但是k-means在這種情況下聚類很酷,因爲你需要給它一些對象類(例如R的不同可能值),並且最終你會得到一個有代表性的樣本

你絕對不應該去在我看來,任何真正複雜的技術(如神經網絡),因爲你的數據沒有一個確切的數字解釋和值不能逐步解釋。

推薦的工具真的取決於您的基本編程語言。有一個名爲Orange的很棒的工具,它基於Python,它是我選擇這些類型的工具(特別是因爲將Python模塊與C/C++連接起來非常簡單)。如果您更喜歡Java,那麼可以使用一個非常類似的工具Weka。我認爲Weka是有點更好記錄,但我不喜歡Java,所以我從來沒有嘗試過。

這些工具都具有圖形化點擊界面,你可以只加載數據,並把工作分類,通過參數玩,並檢查您開始使用什麼樣的輸出不同的技術和不同的調校。一旦你決定獲得你需要的結果(或者你不喜歡圖形界面),你也可以在編程時使用它們作爲一種庫(Python for Orange和Weka for Java),並將分類作爲更大項目的一部分。

如果你仔細閱讀Orange或Weka的文檔,我認爲它會給你一些想法,你可以對你所擁有的數據做什麼實際的工作,以及當你知道一些看起來很有趣的技術時,數據,也許你可以在這裏獲得更多的質量評論和一些特定方法的信息,而不僅僅是尋找一般性建議。

1

這似乎是一個典型的分類問題。如果你真的有很多數據看看Apache Mahout,它提供了機器學習算法的分佈式實現。如果您需要更簡單的原型設計TimBL是一個不錯的選擇。