讓我們假設我們有一個巨大的數據庫爲我們提供訓練數據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)將是一個我想選擇。
我只是想知道你是否知道比暴力破解這個更復雜的方式?
非常感謝提前
這沒有多大意義。試着對你正在做的事情更正式。它目前聽起來像:通過kNN將一些巨大的數據分成較小的數據,這些數據在非常不同的數據集中起作用;在這些中學習一些分類器並採取最好的措施。顯然,這是接近可能的最壞的方法,因爲泛化被殺死了。隨機選擇數據集會更好(沒有kNN)。 – sascha
隨機選擇數據集是例如隨機森林確實如此,我意識到它的好處。但是,無論如何,將一個大問題分解爲子問題應該使子問題處理更容易。你說的對,單一模型在泛化上差得多,因爲它只處理整個可能性空間的一小部分。這就是爲什麼有一個很好的預選步驟是非常重要的,這個步驟能夠正確地聚集新的傳入數據。 – Marcus
想象一個問題,應該區分不同的布塊。襯衫褲子,西裝裙子等等。現在每個不同的類別都有子類別。褲子可以用牛仔褲,cort,西裝褲等等來區分,而不是學習整個數據,我只能爲褲子設計一個單一的模型,現在減少的問題是區分牛仔褲和cort等。現在,預處理步驟,可以區分褲子和其他部分。只有當我確定它是褲子時,我纔會使用褲子模型。 – Marcus