生活随笔
收集整理的這篇文章主要介紹了
15.2 序贯覆盖
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
15.2 序貫覆蓋
- 規則學習的目標是產生一個能夠覆蓋盡可能多的樣例的規則集。最直接的做法就是“序貫覆蓋”,即逐條歸納。再訓練集上的每學到一個規則,就將該規則覆蓋的訓練樣例去除,然后以剩下的訓練樣例組成訓練集重復上述過程。由于每次只處理一部分的數據,因此也被稱為“分治”策略
- 我們以命題規則學習為例來考察序貫覆蓋法,命題規則的規則體是對樣例屬性進行評估的布爾函數,如“色澤 = 親綠”,“含糖量 <= 0.2 ”等,規則頭是樣例類別。序貫覆蓋法的關鍵是如何從訓練集學出單條規則。顯然,對規則學習目標,產生一條規則就是尋找最優的一組邏輯文字來構成規則體,這是一個搜索問題。形式化的來說,就是給定正例集合和反例集合,學習任務就是基于候選文字集合 F ={fk}來產生最優規則r,在命題規則學習中,候選文字是形如“R{屬性i,屬性值j”的布爾表達式,其中屬性i表示樣例第i個屬性,屬性值ij表示屬性i的第j個候選值,R{x,y}則是判斷x,y是否滿足關系R的二元布爾函數
- 最簡單的做法就是從空規則開始,按照正例類別作為規則頭,再逐個遍歷訓練集中的每個屬性以及取值,嘗試將其作為邏輯文字添加到規則體中,若能夠使當前的規則體僅覆蓋正例,則由此產生一條規則,然后去除已經被覆蓋的正例并且基于剩余樣本嘗試生成下一條規則。
- 以西瓜數據集2.0為例,首先根據第1個樣例生成文字“好瓜”,和“色澤 = 親綠”加入規則,得到
- 這條規則覆蓋樣例1,6,10和17,其中有兩個正例和兩個反例,不符合“當前規則僅股改正例”的條件。于是,我們嘗試將命題替換為基于屬性“色澤”形成的其他原子命題,例如色澤 = 烏黑,然而在這個數據集中,這樣的操作不能產生符合條件的規則,于是我們回到色澤 = 青綠,嘗試增加一個基于其他屬性的原子命題,例如 *根蒂 = 蜷縮
- 該規則仍然覆蓋了 反例17,于是我們將第二個命題替換為基于該屬性形成的其他原子命題,例如 根蒂 = 稍蜷
- 這條規則不覆蓋任何的反例,雖然它僅僅只覆蓋一個正例,但是滿足當前規則僅覆蓋正例的條件,因此我們保留這個規則并且去除它覆蓋的樣例6,然后將剩下的9個樣例用作訓練集,如此繼續,我們將得到:
- 規則一:好瓜 👈 青綠 ∩ 稍蜷
- 規則二:好瓜 👈 青綠 ∩ 敲聲 = 濁響
- 規則三:好瓜 👈 烏黑 ∩ 蜷縮
- 規則四:好瓜 👈 烏黑 ∩ 紋理 = 稍糊
- 這個規則集覆蓋了所有的正例,未覆蓋任何的反例,這是序貫覆蓋發學習得到的條件
- 上面這種基于窮盡搜索的做法再屬性和候選值比較多的時候會由于組合爆炸而不可行。現實任務中一般有兩種策略來產生規則,第一種是自頂向下,即從比較一般的規則開始,逐漸添加新的文字以縮小規則覆蓋范圍,直到滿足預定的條件為止,也叫做生成-測試法,是規則逐漸特化的過程。第二種是自底向下,即從比較特殊的規則開始,逐漸刪除文字以擴大規則則覆蓋范圍,直到滿足條件為止,亦稱為數據驅動發,是規則逐漸泛化的過程。第一種策略是覆蓋范圍從大往小搜索規則,第二種的策略則相反。前者通常更容易產生泛化性能較好的規則,而后者則更適合于訓練樣本較少的情形,此外,前者對于噪聲的魯棒性比后者要強得多,因此,在命題規則學習中通常使用第一種策略,而在第二種策略在一階段學習這類假設空間非常復雜的任務上使用。
- 下面以西瓜數據集2.0訓練集為例來展示自頂向下的規則生成方法,首先從空規則開始,逐一將屬性 = 取值,作為原子命題加入空規則進行考察。假定基于訓練集準確率來評估規則的優劣,n / m表示加入了新規則在訓練集中的準確率,其中 m 為覆蓋的樣例總數,n 為覆蓋的正例數。如圖15.1 所示,經過第一輪的品谷歌,色澤 = 烏黑, 臍部 = 凹陷 都達到了最高點的準確率 3/ 4
- 將屬性次序最靠前的邏輯文字 色澤 = 烏黑 加入空規則,得到
- 然后,對上面的這條規則覆蓋額樣例,通過第二輪的評估可以直到,將圖15.1的五個邏輯文字加入規則后都能達到 100 % 的準確率,我們將覆蓋樣例最多,且屬性次序最靠前的邏輯文字 根蒂 = 蜷縮加入規則,于是得到了結果
- 規則生成過程中涉及一個評估規則優劣的指標,在上面的例子中使用的標準是:先考慮規則準確率,準確率相同時考慮覆蓋的樣例數,再相同的的時候考慮屬性的次序。在現實應用中可以根據具體的任務情況涉及恰當的標準。
- 此外,在上面的例子中每次僅僅考慮一個最優的文字,這通常過于貪心,易于陷入局部最優。為了緩解這個問題,可采用一些相對溫和的方法,例如,采用集束搜索,即每輪保留最優的b個邏輯文字,在下一輪中均采用構建候選集,再把候選集中最優的b個留待再下一輪使用。圖15.1中若采用b = 2 的集束搜索,則第一輪將保留準確率為 3/ 4 的兩個邏輯文字,在第二輪評估后就能獲得下面這條規則,其準確率仍為 100 %,但是覆蓋了 3 個正例
- 好瓜 👈 (臍部 = 凹陷) ∩ (根蒂 = 蜷縮)
- 由于序貫覆蓋發簡單有效,幾乎所有的規則學習算法都可以以他為基本的框架,它能夠方便的推廣到多分類問題中,只需要將每類分別處理即可。當學習關于第c類的規則的時候,將所有屬于類別c的樣本作為正例,其他類別的樣本違反例
總結
以上是生活随笔為你收集整理的15.2 序贯覆盖的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。