最近幾天在看模式識別方面的資料,多次遇到“overfitting”這個概念,最終覺得以下解釋比較容易接受,就拿出來分享下。
overfittingt是這樣一種現象:一個假設在訓練數據上能夠獲得比其他假設更好的擬合,但是在訓練數據外的數據集上卻不能很好的擬合數據。此時我們就叫這個假設出現了overfitting的現象。出現這種現象的主要原因是訓練數據中存在噪音或者訓練數據太少。而解決overfit的方法主要有兩種:提前停止樹的增長或者對已經生成的樹按照一定的規則進行后剪枝。
百度中關於overfitting的標准定義:給定一個假設空間H,一個假設h屬於H,如果存在其他的假設h’屬於H,使得在訓練樣例上h的錯誤率比h’小,但在整個實例分布上h’比h的錯誤率小,那么就說假設h過度擬合訓練數據。
..........................
以下概念由本人摘自《數據挖掘-概念與技術》
P186 過分擬合 即在機器學習期間,它可能並入了訓練數據中的某些特殊的異常點,這些異常不在一般數據集中出現。
P212 由於規則可能過分擬合這些數據,因此這種評論是樂觀的。也就是說,規則可能在訓練數據上行能很好,但是在以后的數據上九不那么好。
............................
補充c4.5算法中的介紹 這個通俗易懂
決策樹為什么要剪枝?原因就是避免決策樹“過擬合”樣本。前面的算法生成的決策樹非常的詳細而龐大,每個屬性都被詳細地加以考慮,決策樹的樹葉節點所覆蓋的訓練樣本都是“純”的。因此用這個決策樹來對訓練樣本進行分類的話,你會發現對於訓練樣本而言,這個樹表現堪稱完美,它可以100%完美正確得對訓練樣本集中的樣本進行分類(因為決策樹本身就是100%完美擬合訓練樣本的產物)。但是,這會帶來一個問題,如果訓練樣本中包含了一些錯誤,按照前面的算法,這些錯誤也會100%一點不留得被決策樹學習了,這就是“過擬合”。C4.5的締造者昆蘭教授很早就發現了這個問題,他作過一個試驗,在某一個數據集中,過擬合的決策樹的錯誤率比一個經過簡化了的決策樹的錯誤率要高。那么現在的問題就來了,如何在原生的過擬合決策樹的基礎上,通過剪枝生成一個簡化了的決策樹?
分類和預測
分類和數值預測是預測問題的兩種主要類型。分類是預測分類(離散、無序的)標號,而預測則是建立連續值函數模型。
一、分類問題的步驟:
1、使用訓練集建立描述預先定義的數據類或概念集的分類器。
第一步也稱之為“學習步”或者“訓練模型階段”,使用特定的分類算法通過分析從訓練集中學習來構造相應的分類器或者分類模型。這一步也可以看做是,通過訓練樣本學習一個映射或者函數,它可以用來預測給定元組X的類標號y。
訓練集是由數據元組和與之相關聯的類標號組成,數據元組X由n維屬性向量組成,
表示該元組在第i個屬性上的取值。
由於訓練集中每個元組都有其對應的類標號,因此分類模型的訓練過程也稱為監督學習(Supervised Learning),即分類器的學習是在被告知每個訓練元組的屬於哪個類的監督下進行。
與之對應的是聚類,也稱為無監督學習(Unsupervised Learning),在學習的過程中,每個訓練元組的類標號是未知的,並且通過學習所形成的類的個數或集合也可能實現不知道。
2、使用第一步建立的分類模型對新的數據進行分類。
建立起相應的分類模型后就可以應用該模型對新數據進行分類。對於一個特定的模型衡量其性能的主要指標是:准確率(Accuracy)
(1)、分類器的准確率度量
准確率Acc(M),在模式識別文獻中也稱為分類器的總體識別率(Recognition Rate),是分類器M正確分類的的元組所占的百分比,它反映分類器對各類元組的識別情況。
混淆矩陣(Confusion Matrix)是分析分類器識別不同類元組的一種有效工具。給定m個類,則混淆矩陣是一個m*m的二維表,表示類i用被分類器標記為類別j的元組數量。理想地,對於具有高准確率的分類器,大部分的元組都集中在混淆矩陣的對角線上。
給定兩類,可以使用術語正元組(感興趣的主類元組)和負元組。真正(True Positives)表示分類器正確分類的正元組,真負(True Negatives)是分類器正確標分類的負元組。假正(False Positives)是分類錯誤的負元組,即實際為負元組預測分類為正元組。假負(False Negatives)是錯誤標記的正元組,即實際為正元組被分類器分類為負元組。
(2)、分類器的靈敏性(Sensitivity)度量和特效性(Specificity)度量
假設已經訓練的分類器將醫療數據元組分類為“cancer”和“not_cancer”。90%的准確率使該分類器看上去相當准確,但是,如果只有3%~4%的訓練元組是“cancer”,顯然90%的准確率是不可以接受的(比如該分類器只能對“not_cancer”類的元組正確分類,對“cancer”類的元組全部分類錯誤)。
我們希望有某種度量能夠對分類器識別“cancer”元組(設為正元組)和“not_cancer”元組(設為負元組)進行分別評估,為此引入靈敏性(Sensitivity)度量和特效性(Specificity)度量。
靈敏度也稱為真正率,是指分類器正確識別正元組的百分比。特效性也稱為真負率,是指分類器正確識別負元組的百分比,具體計算方法如下兩個公式:
不難證明,准確率是靈敏性和特效性的函數:
(3)、分類問題中的過度擬合(Overfit)現象
Overfit是這樣一種現象:一個假設在訓練數據上能夠獲得比其他假設更好的擬合,但是在訓練數據外的數據集上卻不能很好的擬合數據。此時我們就叫這個假設出現了overfit的現象。出現這種現象的主要原因是訓練數據中存在噪音或者訓練數據太少。而解決overfit的方法主要有兩種。提前停止樹的增長或者對已經生成的樹按照一定的規則進行后剪枝。
我們將訓練好的模型檢驗訓練集數據,得到的誤差率稱之為訓練誤差。將該模型用於檢驗測試樣本,得到的誤差率稱之為泛化誤差。一個好的分類模型不僅要能夠很好的擬合訓練數據,而且應該對未知樣本能夠准確分類。也就是說,一個好的分類模型必須同時具有低訓練誤差和泛化誤差。對訓練數據擬合過好的模型,其泛化誤差可能比具有較高訓練誤差的模型高,這種情況就是所謂模型的過度擬合。
過度擬合產生的原因:
① 噪聲數據導致過度擬合
在現實中,噪聲數據往往是難以完全避免的,使用這些噪聲數據擬合得到的模型,在將其應用於分類中就可能產生錯誤分類。
② 缺乏代表性樣本導致過度擬合
在訓練數據缺乏具有代表的樣本的情況下,往往需要繼續細化模型才能得到較好擬合訓練集的模型,這樣得到的模型同樣可能具有較高的泛化誤差。
避免過度擬合的策略:
與上述兩個導致模型過度擬合的因素同時出現的是模型的復雜度。模型越復雜出現過度擬合的概率就越高。因此,對於給定具有相同泛化誤差的模型,我們往往更傾向於較為簡單的模型,這就是所謂的Occam剃刀(Occam’s Razor)原則。為了避免過度擬合,降低決策樹的復雜度,通常的策略是剪枝,該策略采用統計方法刪除最不可靠的分支,以提高對未來分類識別的速度和分類識別新數據的能力。
① 先剪枝(pre-pruning)法
先剪枝法是通過提前停止分支的生長過程,即通過在當前結點上就判斷是否需要繼續划分該結點所包含訓練樣本集來實現的。這就需要更為限制性的約束條件,如當觀察到衡量不純性的度量低於某個確閾值就停止分支的生長。
該方法的優點在於避免產生過分擬合訓練數據的過於復雜的子樹。但是我們很難為提前終止選擇正確的閾值,閾值太高將導致擬合不足,閾值太低則不能充分解決過度擬合問題。
② 后剪枝(post-pruning)法
后剪枝法從一個“充分生長”的樹中,按照自底向上的方式修剪多余的分支。修剪的方法有兩種:
(1)用新的葉子節點替換子樹,該葉子節點的類標簽由子樹記錄中的多數類確定;
(2)用子樹中最常用的分支代替子樹。
J48決策樹算法采用了子樹提升(Subtree Raising)與子樹替換(Subtree Replacement)的修剪策略。計算修剪前后的預期分類錯誤率,如果修剪導致預期分類錯誤率變大,則放棄剪枝,保留該結點的相應分支,否則就將相應節點分支修剪刪除。在產生一系列經過修剪的決策樹候選之后,利用一個獨立的測試數據集對這些經過修剪的決策樹的分類的准確性進行評價,保留下那些預期分類錯誤率最小的決策樹。與先剪枝相比,后剪枝傾向於產生更好的結果。
二、為分類和預測准備數據
可以對數據使用下面的預處理步驟提高分類或預測步驟的准確性、有效性和可伸縮性。
1、數據清理:
用於消除或減少數據噪聲和處理缺失值(最簡單的處理方式是用最常出現的值替換缺失值)。
2、相關分析:
可能存在某些屬性是冗余的,使用相關分析來識別任意兩個給定的屬性是否是統計相關的。數據集中還可能包含不相關的屬性,可以使用屬性子集選擇找出屬性的規約子集,使得數據類的結果概率分布與使用所有屬性得到的原分布盡可能接近。因此可以使用相關分析和屬性子集選擇,探測對分類或預測任務不起作用的屬性,將其從數據集的屬性中刪除。
3、數據變換與歸約:
數據可以通過規范化進行變換,在學習階段使用神經網絡或涉及距離度量的方法時尤為重要。規范化涉及將所給屬性的所有值按比例進行縮放,使得它們落入較小的指定區間,如-1.0到1.0,或者0.0到1.0。
數據也可以通過泛化到較高層概念進行變換。對於連續值屬性,這種變換非常有用。例如,屬性income的數值可以泛化為離散的區間,如low,medium和high。泛化可以壓縮原來的訓練數據,使得學習時的輸入輸出得以減少。
還可以采用其他方法對數據進行規約,這些方法包括從小波變換和主成分分析到諸如分箱、直方圖分析和聚類的離散化技術。