2017-02-28 138 views
-1

讓我們假設我們有一個巨大的數據庫爲我們提供訓練數據D和專用於機器學習問題的較小測試數據T.這些數據涵蓋了現實世界問題的許多方面,因此其結構非常不同。 當我們現在用D訓練一個不接近定義的機器學習算法(神經網絡,SVM,隨機森林,...),並最終測試創建的模型對T時,我們獲得了一定的性能測量P(混淆矩陣,mse,.. )。分割訓練數據以訓練n個模型的最佳數量

的問題:如果我能獲得更好的性能,通過將問題ITO更小的子問題,例如通過將D聚類成若干不同的訓練集D1,D2,D3,...,我怎麼能找到最佳的聚類? (簇的數量,質心,......)

以一種蠻力的方式,我正在考慮使用帶有隨機數量的簇C的kNN聚類,這導致了訓練數據D1,D2 ...特區。 我現在將訓練C個不同的模型,並最終對訓練集T1,T2,...,Tc進行測試,其中相同的kNN聚類已用於將T分割成C個測試集T1,...,Tc。

這給了我最佳的整體性能平均的組合(P1,P2,...,PC)將是一個我想選擇。

我只是想知道你是否知道比暴力破解這個更復雜的方式?

非常感謝提前

+0

這沒有多大意義。試着對你正在做的事情更正式。它目前聽起來像:通過kNN將一些巨大的數據分成較小的數據,這些數據在非常不同的數據集中起作用;在這些中學習一些分類器並採取最好的措施。顯然,這是接近可能的最壞的方法,因爲泛化被殺死了。隨機選擇數據集會更好(沒有kNN)。 – sascha

+0

隨機選擇數據集是例如隨機森林確實如此,我意識到它的好處。但是,無論如何,將一個大問題分解爲子問題應該使子問題處理更容易。你說的對,單一模型在泛化上差得多,因爲它只處理整個可能性空間的一小部分。這就是爲什麼有一個很好的預選步驟是非常重要的,這個步驟能夠正確地聚集新的傳入數據。 – Marcus

+0

想象一個問題,應該區分不同的布塊。襯衫褲子,西裝裙子等等。現在每個不同的類別都有子類別。褲子可以用牛仔褲,cort,西裝褲等等來區分,而不是學習整個數據,我只能爲褲子設計一個單一的模型,現在減少的問題是區分牛仔褲和cort等。現在,預處理步驟,可以區分褲子和其他部分。只有當我確定它是褲子時,我纔會使用褲子模型。 – Marcus

回答

0

聚類很難。

比分類更難,因爲你沒有標籤來告訴你,如果你正在做的好,或者沒有很好的。它不能做魔術,但它需要你仔細選擇參數並評估結果。

你不能只是轉儲數據爲k-手段和期待任何事出來有用。你首先需要真正仔細地清理和預處理你的數據,然後你可能會簡單地發現它實際上只是一個單個大塊...

此外,如果聚類運行良好,並且訓練分類器獨立地在每個羣集上,那麼每個分類器將錯過關鍵數據。結果可能表現真的很糟糕!

如果您只想訓練部分數據,請使用隨機森林。

但它聽起來像你對分級分類方法更感興趣。如果您有良好的層次結構信息,這可能會奏效。你首先要在分類上訓練一個分類器,然後再在分類中訓練一個分類器才能獲得最終的分類。