2014-01-14 105 views
-1

假設爲一家保險公司工作的數據分析師被要求建立一個預測模型來預測客戶是否會購買移動房屋保險。他/他用不同數量的鄰居(k = 1,2,3,4,5)嘗試kNN分類器。他/他獲得了以下訓練數據測得的F分數:(1.0; 0.92; 0.90; 0.85; 0.82)。基於此,分析師決定部署k = 1的kNN。這是一個不錯的選擇嗎?在這種情況下,你會如何選擇最佳的鄰居數量?數據挖掘KNN分類器

+2

現在,這看起來像功課 – goncalopp

+0

@ user3195317這可能是一個星期的晚了,但* SO不是要求做功課的地方!*請不要那麼做!下次閱讀*如何問問頁面! –

+0

@ user3195317如果你會根據指導方針改善你的問題,我認爲它*可以*值得回答。下一次你提出一個問題時,不要忽略這些規則。謝謝。 –

回答

2

使用整個訓練集選擇預測算法的參數並不是一個好主意,因爲結果將偏向於這個特定的訓練集並且沒有關於泛化性能的信息(即,對於看不見的情況的性能)。您應該應用交叉驗證技術,例如10倍交叉驗證以選擇一定範圍內的最佳K(即具有最大F值的K)。 這包括將你的訓練數據分成10個相等的部分,保留9個部分用於訓練,1個用於驗證。迭代,使每個部分被遺漏以供驗證。如果採取足夠的摺疊,這也可以讓您獲得F值的統計數據,然後您可以測試這些值對於不同的K值是否具有統計顯着性。

參見例如還有: http://pic.dhe.ibm.com/infocenter/spssstat/v20r0m0/index.jsp?topic=%2Fcom.ibm.spss.statistics.help%2Falg_knn_training_crossvalidation.htm

然而,這裏的微妙之處在於預測的數據點數量和K值之間可能存在依賴關係。因此,如果您使用交叉驗證,則使用9/10的訓練集來進行訓練......不確定是否已對此進行任何研究,以及如何針對最終訓練集中的內容進行更正。無論如何,大多數軟件包僅使用上述技術,例如請參閱鏈接中的SPSS。 在這種情況下,您有N-1個訓練樣本(原始訓練集有N個),一種解決方案是使用leave-one-out交叉驗證(每個數據樣本不需要進行一次測試)。