訓練集和測試集的區別

1、訓練集和測試集

一般來說,訓練集用來估計模型中的參數,使模型能夠反映現實,進而預測未來或其他未知的信息,而測試集用來評估模型的預測性能。

例如:已知1000個小朋友的體重和身高數據,想建立體重與身高的線性迴歸模型。我們可以用900個小朋友的身高和體重數據(訓練集)來擬合模型中的參數,進而預測另外100個小朋友的體重(已知身高數據),預測值和實際值的差別就可以用來衡量模型的預測性能(測試集是100個小朋友的體重和身高);或者使用1995-2018年的GDP數據建立線性迴歸模型來預測2019年的GDP數據;

這裏可能會有個疑問:

爲什麼不用1000個小朋友的數據拿來做擬合?

將1000個小朋友的數據輸入到模型擬合過程中,這在技術上是可以實現的,也可以計算出來每個小朋友的實際值和預測值,進而計算出誤差。但是,這可能存在過擬合問題,即模型預測性能在其他數據集中表現會有明顯降低。也就是說,用一個數據集既做訓練又做測試,性能評估指標是不準確的,相當於你考試時做的都是平常做過的課後題,無法檢測出實際水準。

爲了更好地評價我們的模型,除非我們在1000個小朋友之外,再去找一些小朋友作爲測試集。此時希望不會有人提出爲什麼不把新找的數據加入到訓練集。同理,如果我們想測試基於1995-2018年GDP數據而建立的預測模型準確度,需要2019年的GDP數據(這可能就要等一年纔行了)。

數據當然沒那麼容易獲取,所以我們只能把現有的數據集人工分爲訓練集和測試集。此時,比如只能獲得1995-2017年的數據,然後用2018年的GDP數據來檢驗模型預測的準確性。

2、推薦系統與機器學習

機器學習模型中的訓練集和測試集的劃分是很好理解的,而推薦系統中有一些,特別是協同過濾算法,訓練集和測試集的劃分有所不同。

2.1 機器學習

假如我們要給銀行開發一個信用違約風險預測模型,通過每個客戶的個人信息、消費行爲、資產狀況、借貸數額等狀況來預測該客戶是否會按時還貸。

這是一個經典的分類問題,我們可以使用機器學習模型來處理,像決策樹、邏輯迴歸、神經網絡等,用80%的用戶作爲訓練集來擬合這些模型中的參數,然後把訓練好的模型放到剩餘那20%的用戶中做測試,從而得到模型的性能指標。

這時,訓練集和測試集的劃分方法是基於用戶的,訓練集的作用是擬合模型中的參數。

2.2 推薦系統

推薦系統中也有一些基於機器學習的推薦模型,這些和2.1是相同的,在這裏不提。

我們着重提的是基於用戶的協同過濾推薦算法,它與機器學習模型直觀上有兩點不同。

  1. 協同過濾推薦算法中沒有像線性迴歸模型中那樣待估計的參數α、β等。(無監督)
  2. 協同過濾推薦算法不能基於用戶劃分訓練集和測試集。因爲協同過濾推薦模型要輸入的必須是個矩陣(需要近鄰用戶的購買行爲信息),而不是某用戶的一行數據(而決策樹、邏輯迴歸模型是可以的)。

我最初的想法也是覺得協同過濾推薦算法的訓練集根本沒有什麼用,沒有什麼能貢獻給測試集。後來才發現個推薦算法的不同之處。

訓練集和測試集的劃分方法

協同過濾推薦算法的訓練集劃分不是基於用戶的,而是基於值的,即【用戶,項目,評分】三元組。如果訓練集爲80%,測試集爲20%,我們就可以將用戶-項目評分中的80%抽取出來作爲訓練集,沒抽取的那20%當做測試集(這些項目的值在訓練集中表示爲不存在)。

假如,某用戶-項目評分矩陣中有100個項目,其中用戶張三購買並評價了20個項目,也就是有80個項目未購買。這時,我們將20個項目中抽取80%,也就是16個項目作爲訓練集,另外4個項目作爲測試集。即假設張三隻購買並評價了100個項目中的16個項目,實際上已經購買的那4個項目就當做未購買。

訓練集在推薦算法中的作用

協同過濾推薦算法中的第一步就是尋找近鄰用戶,近鄰用戶的質量和數量都會影響最終的模型性能。而訓練集要訓練的,其實就是目標用戶的近鄰用戶,也可以說是用戶相似矩陣。

舉個例子就是,我們以用戶張三的16個項目得出的近鄰用戶,和使用20個項目得出的近鄰用戶是不同的,而後者往往更加準確。拓展到所有用戶,使用80%數據得到的用戶相似矩陣,當然不如使用100%數據得到的用戶相似矩陣。但是正如第一節所說的,爲了保證測試的準確性,我們必須分出來一些數據作爲測試集。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章