9

我想在這裏有一些專家指導什麼是我最好的方法來解決問題。我調查了一些機器學習,神經網絡和類似的東西。我已經調查過weka,某種baesian解決方案.. R ..幾個不同的東西。不過,我不確定如何真正開始。這是我的問題。最好的方法,我認爲是一個機器學習問題

我擁有或將擁有大量活動......最終大約有100,000人左右。每個事件由幾個(30-50)獨立變量和1個我所關心的因變量組成。在確定因變量的值時,一些自變量比其他自變量更重要。而且,這些事件與時間有關。今天發生的事情比10年前發生的事情更重要。

我希望能夠爲事件提供某種學習引擎,並讓它預測因變量。然後,知道該事件的因變量(以及之前發生的所有事件)的真實答案,我希望能夠訓練後續的猜測。一旦我瞭解了編程方向,我可以進行研究並弄清楚如何將我的想法轉化爲代碼。但我的背景是並行編程,而不是這樣的東西,所以我很樂意就此提供一些建議和指導。

謝謝!

編輯:這裏有一些關於我試圖解決的問題的更多細節:這是一個定價問題。假設我想要預測隨機漫畫書的價格。價格是我唯一關心的事情。但是有很多自變量是可以想到的。它是超人漫畫,還是Hello Kitty漫畫。多大了?什麼情況?等等。經過一段時間的訓練後,我希望能夠提供關於我可能正在考慮的漫畫書的信息,並讓它爲漫畫書提供合理的預期價值。好。所以漫畫書可能是一個虛假的例子。但你得到了一般想法。到目前爲止,從答案中,我正在對支持向量機和樸素貝葉斯進行一些研究。感謝您的所有幫助。

+1

我認爲標籤「分類」和「迴歸」是互斥的。它可以是「分類」,也可以是「迴歸」。它不能兼而有之。 – 2009-05-20 08:48:26

回答

1

如果你有一些機密數據 - 與他們的正確答案配對一堆樣品的問題 - ,通過培訓一些簡單的算法,如K-近鄰和感知,看到開始,如果任何有意義的東西出來吧。不要費心去試圖解決它,直到你知道你是否可以簡單地或完全解決它。

如果您沒有任何機密數據,或不是很多,開始研究無監督學習算法。

8

聽起來像你是Support Vector Machines的候選人。

去得到libsvm。閱讀它們分發的「SVM分類實用指南」,並且很短。

基本上,你打算把你的事件,像格式化:

dv1 1:iv1_1 2:iv1_2 3:iv1_3 4:iv1_4 ... 
dv2 1:iv2_1 2:iv2_2 3:iv2_3 4:iv2_4 ... 

來看,它通過自己的SVM大規模實用程序,然後使用自己的grid.py腳本來尋找合適的內核參數。學習算法應該能夠找出變量的不同重要性,儘管你也可以對事物進行加權。如果您認爲時間會很有用,那麼只需添加時間作爲訓練算法使用的另一個自變量(特徵)即可。

如果LIBSVM不能完全得到你想要的精確度,考慮加緊SVMlight。只有稍微難以處理,還有更多的選擇。

Bishop's Pattern Recognition and Machine Learning可能是看的什麼LIBSVM和SVMlight實際上是與您的數據做細節的第一本。

+0

好主意,LIBSVM真棒。 – 2009-02-07 01:32:45

1

這聽起來像任何一種分類應該針對此問題的工作:找到一個實例(你的事件)的最佳類(因變量)。一個簡單的起點可能是Naive Bayes分類。

1

這絕對是一個機器學習問題。 Weka是一個很好的選擇,如果你知道Java並且想要一個很好的GPL庫,你需要做的就是選擇分類器並寫一些膠水。 R可能不會削減它的許多實例(事件,如你所說),因爲它很慢。此外,在R中,您仍然需要查找或編寫機器學習庫,儘管這應該很容易,因爲它是一種統計語言。

如果您認爲您的特徵(獨立變量)是條件獨立的(意思是獨立給定因變量),樸素貝葉斯是一個完美的分類器,因爲它是快速,可解釋,準確且易於實現的。但是,有了100,000個實例和30-50個特性,您可能會實現一個相當複雜的分類方案,該方案可以捕獲數據中的很多依賴性結構。你最好的選擇可能是一個支持向量機(Weka中的SMO)或一個隨機森林(是的,這是一個愚蠢的名字,但它幫助了隨機森林。)如果你想要分類器易於解釋的優點,即使在花費一些準確性,也許一個J48決策樹可以直線運作。我建議不要使用神經網絡,因爲它們非常慢,並且在實踐中通常不會比SVM和隨機森林更好。

1

SVM通常是可用的最佳分類器。這完全取決於你的問題和你的數據。對於某些問題,其他機器學習算法可能會更好。我看到了神經網絡(特別是遞歸神經網絡)在解決問題時更好的問題。這個問題沒有正確的答案,因爲它具有高度的情境依賴性,但我同意dsimcha和Jay的觀點,SVM是合適的開始。

1

我相信你的問題是一個regression問題,而不是分級問題。主要區別:在分類中,我們試圖學習離散變量的價值,而在迴歸中,我們試圖學習連續變量的價值。涉及的技術可能相似,但細節不同。 Linear Regression是大多數人首先嚐試的。還有很多其他的迴歸技術,如果線性迴歸沒有辦法。

1

你提到有30-50獨立變量,有些是爲休息更重要。因此,假設您有歷史數據(或稱爲訓練集),您可以使用PCA(Principal Componenta Analysis)或其他降維方法來減少自變量的數量。這一步當然是可選的。根據情況,通過保存每個變量,您可能會獲得更好的結果,但根據相關情況爲每個變量添加權重。在這裏,PCA可以幫助您計算變量的「相關」程度。

您也提到,在最近發生的事件應該是更重要的。如果是這樣的話,你可以將最近的事件加重得更高,將更老的事件降低。請注意,事件的重要性不必隨時間線性增長。如果它成指數增長,它可能更有意義,所以你可以在這裏玩數字。或者,如果您不缺乏培訓數據,也許您可​​以考慮放棄過時的數據。

就像Yuval F所說,這看起來更像迴歸問題而不是分類問題。因此,您可以嘗試SVR(支持向量迴歸),它是SVM(支持向量機)的迴歸版本。

一些其他的東西,你可以嘗試是:

  1. 你如何擴展您的自變量的取值範圍玩耍。說,通常[-1 ... 1]或[0 ... 1]。但你可以嘗試其他範圍,看看他們是否有幫助。有時他們會。大多數時候他們沒有。
  2. 如果您懷疑存在具有較低維度的「隱藏」特徵向量,例如N < < 30並且它本質上是非線性的,則需要非線性降維。您可以閱讀內核PCA或最近更多的多種雕刻。
1

你所描述的是一個經典的分類問題。在我看來,當你有像Weka這樣的工具時,爲什麼要編寫新的算法。如果我是你,我會通過一系列監督學習算法(我不完全瞭解乳清人使用10倍(或k倍)交叉驗證時首先建議無監督學習,因爲這很明顯是一個分類問題) ,如果我記得,這是Weka中的默認值,並且看看你得到了什麼結果!我會嘗試:

-Neural籃網
-SVMs
-Decision樹(這個工作對我很好,當我在做一個類似的問題)
與決策樹-Boosting /樹樁
其他-Anything !

Weka讓事情變得如此簡單,你真的可以得到一些有用的信息。我剛剛參加了一個機器學習課程,我完全按照上面的算法做了你想做的事情,所以我知道你在哪裏。對於我來說,決策失敗的推動效果非常好。 (順便說一句,boosting實際上是一種元算法,可以應用於大多數有監督的學習算法以通常提高其結果。)

使用決策樹(如果您使用ID3或類似變種)根據他們對數據進行區分的順序來選擇要分割的屬性 - 換句話說,哪些屬性基本上決定了分類的速度。因此,您可以在運行算法後查看樹,並查看漫畫書的哪個屬性最能確定價格 - 它應該是樹的根。

編輯:我認爲尤瓦爾是對的,我沒有注意到分類的價格價值的離散化問題。但是,我不知道Weka是否有迴歸,您仍然可以很容易地將分類技術應用於此問題。您需要爲漫畫的價格範圍制定多個價格範圍,以便您可以擁有表示漫畫價格的離散數字(如1到10)。然後你可以很容易地運行分類它。

相關問題