泛化 過擬合與欠擬合

2021-10-10 17:19:36 字數 1604 閱讀 6231

在監督學習中,我們想要在訓練資料上構建模型,然後能夠對沒見過的新資料(這些新資料與訓練集具有相同的特性)做出準確**。如果乙個模型能夠對沒見過的資料做出準確**,我們就說它能夠從訓練集泛化(generalize)到測試集。我們想要構建乙個泛化精度盡可能高的模型。

通常來說,我們構建模型,使其在訓練集上能夠做出準確**。如果訓練集和測試集足夠相似,我們預計模型在測試集上也能做出準確**。不過在某些情況下這一點並不成立。例如,如果我們可以構建非常複雜的模型,那麼在訓練集上的精度可以想多高就多高。為了說明這一點,我們來看乙個虛構的例子。比如有乙個新手資料科學家,已知之前船的買家記錄和對買船不感興趣的顧客記錄,想要**某個顧客是否會買船。目標是向可能購買的人傳送**電子郵件,而不去打擾那些不感興趣的顧客。

假設我們有顧客記錄,如表 2-1 所示。

對資料觀察一段時間之後,我們的新手資料科學家發現了以下規律:「如果顧客年齡大於45 歲,並且子女少於 3 個或沒有離婚,那麼他就想要買船。」如果你問他這個規律的效果如何,我們的數科學家會回答:「100% 準確!」的確,對於表中的資料,這條規律完全正確。我們還可以發現好多規律,都可以完美解釋這個資料集中的某人是否想要買船。資料中的年齡都沒有重複,因此我們可以這樣說:66、52、53 和 58 歲的人想要買船,而其他年齡的人都不想買。雖然我們可以編出許多條適用於這個資料集的規律,但要記住,我們感興趣的並不是對這個資料集進行**,我們已經知道這些顧客的答案。我們想知道新顧客是否可能會買船。因此,我們想要找到一條適用於新顧客的規律,而在訓練集上實現100% 的精度對此並沒有幫助。我們可能認為資料科學家發現的規律無法適用於新顧客。它看起來過於複雜,而且只有很少的資料支援。例如,規律裡「或沒有離婚」這一條對應的只有一名顧客。

判斷乙個演算法在新資料上表現好壞的唯一度量,就是在測試集的評估。然而從直覺上看,我們認為簡單的模型對新資料的泛化能力更好。如果規律是「年齡大於 50歲的人想要買船」,並且這可以解釋所有顧客的行為,那麼我們將更相信這條規律,而不是與年齡、子女和婚姻狀況都有關係的那條規律。因此,我們總想找到最簡單的模型。構建乙個對現有資訊量來說過於複雜的模型,正如我們的新手資料科學家做的那樣,這被稱為過擬合(overfitting)。如果你在擬合模型時過分關注訓練集的細節,得到了乙個在訓練集上表現很好、但不能泛化到新資料上的模型,那麼就存在過擬合。與之相反,如果你的模型過於簡單——比如說,「有房子的人都買船」——那麼你可能無法抓住資料的全部內容以及資料中的變化,你的模型甚至在訓練集上的表現就很差。選擇過於簡單的模型被稱為欠擬合(underfitting)。我們的模型越複雜,在訓練資料上的**結果就越好。但是,如果我們的模型過於複雜,我們開始過多關注訓練集中每個單獨的資料點,模型就不能很好地泛化到新資料上。二者之間存在乙個最佳位置,可以得到最好的泛化效能。這就是我們想要的模型。

圖 2-1 給出了過擬合與欠擬合之間的權衡。

欠擬合與過擬合

在用機器學習搭建模型時,經常會碰到這樣一種情況,你的模型演算法在樣本資料中匹配的非常完美。但用新資料測試,發現模型結果和實際差距非常大。那麼恭喜你!你掉進了機器學習中常見的乙個大坑 過擬合。什麼是過擬合呢?機器學習本質上是通過建立資料模型,使其和現有資料相吻合,從而找到資料中內在的規律。如下面三張圖...

欠擬合與過擬合

一 1.欠擬合 訓練集上表現很差 這種情況在測試集上也不會好 高偏差 bias 解決辦法 選擇更複雜的網路 有正則項就減小正則項引數等。2.過擬合 訓練集上表現很好,但測試集上表現很差,高方差 variance 解決辦法 採用更多資料 如果有正則化就增加正則化引數,沒有就加上正則化 dropout等...

過擬合與欠擬合

過擬合與欠擬合 欠擬合 個人理解就是由於資料少 正則化太厲害 模型複雜度太簡單等原因,導致模型沒有學習到足夠的規律,準確率與模型可達到的準確率差距較大。但是模型在訓練集和測試集的曲線趨勢是正常收斂的。解決方法為有 增加特徵,尋找與標籤相關性較大的特徵,在保證特徵沒有共線性的前提下,增加特徵的數量 減...