模型选择
模型選擇
一個模型可能有很多種情況出現,那么我們如何選擇最優的模型呢?
1、哪條曲線擬合效果是最好的?
2、 泛化
機器學習的目標是使學得的模型能很好地適用于“新樣本”,而不是僅僅在訓練樣本上工作的很好;即便對聚類這樣的無監督學習任務,我們也希望學得的簇劃分能適用于沒在訓練集中出現的樣本。學得模型適用于新樣本的能力,稱為“泛化”(generalization)能力。
具有強泛化能力的模型能很好地適用于整個樣本空間。(現實任務中的樣本空間的規模通常很大,如 20 個屬性,每個屬性有 10 個可能取值,則樣本空間的規模是 10^20 )。
還有一個泛化的概念:
【基礎概念】模型具有好的泛化能力指的是:模型不但在訓練數據集上表現的效果很好,對于新數據的適應能力也有很好的效果。?
當我們討論一個機器學習模型學習能力和泛化能力的好壞時,我們通常使用過擬合和欠擬合的概念,過擬合和欠擬合也是機器學習算法表現差的兩大原因。?
【基礎概念】過擬合 overfitting:模型在訓練數據上表現良好,在未知數據或者測試集上表現差。?
【基礎概念】欠擬合 underfitting:在訓練數據和未知數據上表現都很差。
3、欠擬合
圖 1 和圖 2 都是模型欠擬合的情況:即模型在訓練集上表現的效果差,沒有充分利用數據,預測準確率很低,擬合結果嚴重不符合預期。
產生的原因:模型過于簡單出現的場景:欠擬合一般出現在機器學習模型剛剛訓練的時候,也就是說一開始我們的模型往往是欠擬合也正是因為如此才有了優化的空間,我們通過不斷優化調整算法來使得模型的表達能力更強。
解決辦法:?
(1)添加其他特征項:因為特征項不夠而導致欠擬合,可以添加其他特征項來很好的解決。?
(2)添加多項式特征,如圖(3)我們可以在線性模型中通過添加二次或三次項使得模型的泛化能力更強。?
(3)減少正則化參數,正則化的目的是用來防止過擬合的,但是現在模型出現了欠擬合,需要減少正則化參數。
4、過擬合
圖四是模型過擬合的情況:即模型在訓練集上表現的很好,但是在測試集上效果卻很差。也就是說,在已知的數據集合中非常好,再添加一些新數據進來效果就會差很多。
產生的原因:可能是模型太過于復雜、數據不純、訓練數據太少等造成。?
出現的場景:當模型優化到一定程度,就會出現過擬合的情況。
解決辦法:?
(1)重新清洗數據:導致過擬合一個原因可能是數據不純導致的,?
(2)增大訓練的數據量:導致過擬合的另一個原因是訓練數據量太小,訓練數據占總數據比例太低。?
(3)采用正則化方法對參數施加懲罰:導致過擬合的原因可能是模型太過于復雜,我們可以對比較重要的特征增加其權重,而不重要的特征降低其權重的方法。常用的有 L1 正則和 L2 正則,稍后會提到。?
(4)采用 dropout 方法,即采用隨機采樣的方法訓練模型,常用于神經網絡算法中。?
注意:模型的過擬合是無法徹底避免的,我們能做的只是緩解,或者說減小其風險,因為機器學習面臨的是 NP 難問題(這列問題不存在有效精確解,必須尋求這類問題的有效近似算法求解),但是有效算法必然是在多項式時間內運行完成的,因此過擬合是不可避免的。
在實際的任務中往往通過多種算法的選擇,甚至對同一個算法,當使用不同參數配置時,也會產生不同的模型。那么,我們也就面臨究竟選擇哪一種算法,使用哪一種參數配置?這就是我們在機器學習中的“模型選擇(model select)”問題,理想的解決方案當然是對候選模型的泛化誤差進行評估,然后選擇泛化誤差最小的那個模型。
總結
- 上一篇: sklearn中模型的选择和各个模型的比
- 下一篇: HDFS、MR、Kafka、Storm、