機器學習中的規則通常是指語義明確,能描述資料分布所隱含的客觀規律或領域概念,可寫成「若…則…」形式的邏輯規則,「規則學習」是從訓練資料中學習出一組能用於對未見示例進行判別的規則。
形式化地看,一條規則形如:
其中邏輯符號「←」右邊部分稱為「規則體」,表示該條規律的==「前提」==,左邊部分稱為「規則頭」,表示該條規則的結果,規則體是由邏輯文字fk組成的合取式,其中合取符號「^」用來表示「並且」。每個文字fk都是對示例屬性進行檢驗的布林表示式,例如「色澤=烏黑」(對是1錯是0)。l是規則體中邏輯文字的個數,稱為規則的長度,規則頭同樣是邏輯文字,一般用來表示規則所判定的目標類別或概念,例如「好瓜」,這樣的邏輯規則也被稱為「if then 規則」。(if 色澤=烏黑 then 好瓜)。
規則學習相比於svm,神經網路更具有可解釋性,能使使用者更直觀的對判別過程有所了解,另一方面,數理邏輯具有極強的表達能力,絕大多數人類知識都能通過數理邏輯進行簡潔的刻畫和表達。例如「父親的父親是爺爺」,這樣的知識不易用函式式描述,而用一階邏輯則可方便地寫為「爺爺(x,y)」←父親(x,z)^父親(z,y)[y的父親是z,且z的父親是x,那麼y的爺爺是x]。
因此,規則學習能更自然地在學習過程中引入領域知識,此外,邏輯規則的抽象描述能力在處理一些高度複雜的ai任務時具有顯著的優勢,例如在問答系統中有時可能遇到非常多,甚至無窮種可能的答案,此時若能基於邏輯規則進行抽象表述或者推理,則將帶來極大的便利。此時若能基於邏輯規則進行抽象表述或者推理,則將帶來極大的便利。
假定我們從西瓜資料集學得規律集合r:
規則一的長度為2,它通過判斷兩個邏輯文字的賦值來對示例進行判別。符合該規則的樣本稱為被該規則「覆蓋」,需注意的是,被規則1覆蓋的樣本是好瓜,但沒被規則1覆蓋的未必不是好瓜(好瓜可能有其他的規則),只有被規則2這樣以-好瓜為頭的規則覆蓋的才不是好瓜。(紋理模糊的必不是好瓜)。
顯然,規則集合中的每條規則都可看作乙個子模型,規則集合是這些子模型的乙個整合。當同乙個示例被==判別結果不同的多條規則覆蓋時,稱發生了「衝突」,解決衝突的辦法稱為「衝突消解」。常用的衝突消解策略有投票法,排序法,元規則法等。
投票法是將判別相同的規則數最多的結果作為最終結果。排序法是在規則集合上定義乙個順序,在發生衝突時使用排序最前的規則;相應的規則學習過程稱為「帶序規則」學習或「優先順序規則」學習。元規則法是根據領域知識事先設定一些「元規則」,即關於規則的規則,例如,「發生衝突時使用長度最小的規則」(啟發式),然後根據元規則的指導來使用規則集合。
此外,從訓練集學得的規則集合也許不能覆蓋所有可能的未見示例,例如,前述規則集合r無法對「根蒂=蜷縮」、「臍部=稍凹」且「紋理=清晰」的示例進行判別;
這種情況在屬性數目很多時時常出現,因此,規則學習演算法通常會設定一條**「預設規則」**,由它來處理規則集合未覆蓋的樣本;例如為r增加一條預設規則:「未被規則1,2覆蓋的都不是好瓜」。
從形式語言表達能力而言,規則可分為兩類:「命題規則」和「一階規則」。
前者是由「原子命題」和邏輯連線詞「與^」「或v」「非–」和蘊含←構成的簡單陳述句;例如規則集合r就是乙個命題規則集,「根蒂=蜷縮」,「臍部=凹陷」都是原子命題,後者的基本成分是能描述事物的屬性或關係的「原子公式」,例如…後面不想寫了。
udev 規則學習
action add kernel sd a z 0 9 run bin umount l media usb k action add kernel sd a z 0 9 run bin rm fr media usb k action add kernel sd a z run bin umou...
haccess規則學習
rewriteengine on rewritecond mozilla 5 0.rewriterule index.php index.m.php rewritecond lynx.rewriterule index.php index.l.php rewriterule index.php in...
機器學習 規則學習
f1 f 2 fl 一階規則比 邏輯規則?強很多,能表達複雜的關係,稱為關係型規則,其語義層面與人類的語義層面一致。如何從訓練集學出單條規則 從空規則開始,將正例類別作為規則頭,逐個遍歷訓練集中的每個屬性及取值。在屬性和候選值較多時會存在組合 的問題。cn2 似然率統計量lrs lrs 2 m lo...