2012-05-08 62 views
3

問題陳述有點像這樣:二元分類與基於規則的方法,而不是正確的算法

給出一個網站,我們必須把它分爲兩個預定義的類別之一(說無論是其電子商務網站或不是?)

我們已經嘗試了樸素貝葉斯算法爲此與多種預處理技術(停止詞去除,詞幹等)和適當的功能。

我們希望將精度提高到90或更接近一些,這是我們從這種方法中得不到的。

這裏的問題是,在手動評估精度的同時,我們在網頁上尋找一些標識符(例如Checkout按鈕,Shop/Shopping,paypal等等),這些標識符在我們的算法中有時會被忽略。

我們在想,如果我們太確定這些標識符,爲什麼我們不創建rule based classifier,我們將按照一組規則(將根據一些優先級編寫)對頁面進行分類。

例如如果它包含商店/購物並且具有結賬按鈕,那麼它是電子商務頁面。 和許多類似的規則在一些優先順序。

根據一些規則,我們也會訪問網站的其他頁面(目前,我們只訪問主頁,這也是沒有得到非常高的準確性的原因)。

基於規則的方法會遇到什麼潛在問題?或者這對我們的用例會更好?

用複雜的算法創建這些規則(例如FOIL, AQ等)會是一個好主意嗎?

回答

1

一個決策樹算法可以把你的數據,並返回一個規則未標記的情況下的預測集

實際上,決策樹實際上只是一個遞歸下降分區程序,由一組規則組成,其中每個規則位於樹中的一個節點上,並且該規則在未標記的數據實例上的應用程序發送該實例向左或向右分叉。

很多決策樹實現顯式地生成規則集,但這不是必須的,因爲規則(規則是什麼以及規則在決策流中的位置)通過查看代表訓練有素的決策樹分類器的樹。

特別是,每個規則只是特定特徵(數據列或字段)中特定值的布爾檢驗。例如,假設每個數據行中的其中一個特徵描述了應用高速緩存的類型;進一步假設此功能有三個可能的值,memcache,redis定製。那麼規則可能是Applilcation Cache | memcache或這個數據實例是否有基於redis的Application Cache?

從決策樹中提取的規則是布爾型 - 無論是true還是false。按照慣例,False由左邊緣表示(或者鏈接到下面的子節點和這個父節點的左手邊)。 True由右側邊緣表示。

因此,新的(未標記的)數據行從根節點開始,然後根據在根節點處的規則是回答True還是False而向右或向下發送。在數據實例達到最低級別(沒有規則的節點或葉節點)之前應用下一個規則(至少在樹層次中是級別)。一旦數據點被過濾到葉節點,那麼它實質上是分類的,因爲每個葉節點具有與其相關聯的訓練數據實例的分佈(例如,25%好| 75%差,如果好和不好的是類標籤)。這種經驗分佈(在理想的情況下,它由一個只有一個類標籤的數據實例組成)確定未知數據實例的估計類標籤。

自由&開放源碼庫,Orange,有decision tree module(具體ML技術的實現被稱爲橘「部件」),這似乎是一個堅實的實現C4.5,這可能是最廣泛使用,也許是最好的決策樹實施。

安迪奧萊利網站有一個tutorial on decision tree construction and use,其中包括工作決策樹模塊的源代碼python

+0

因此,防止「基於每個規則的分類器可以表示爲決策樹」或「基於規則的分類器等同於決策樹」的陳述唯一的事實是人們可以創建具有周期的不相關規則集或規則集,而根據定義,決策樹是非循環的? –

2
The issue here is, while evaluating the accuracy manually, we look for a few identifiers on web page (e.g. Checkout button, Shop/Shopping,paypal and many more) which are sometimes missed in our algorithms. 

那麼,爲什麼你不把這些信息包括在你的分類方案中呢?在html中找到付款/結賬按鈕並不難,所以這些應該肯定是功能。一個好的分類器依賴於兩件事情 - 好的數據和好的特性。確保你有兩個!

如果你必須做一個基於規則的分類器,那麼或多或少地把它想象成一個決策樹。如果你使用的是函數式編程語言,這很容易做到 - 基本上只是在輸入一個端點之前進行遞歸,然後給予分類。

+1

即使在添加這些功能後,由於噪音或非電子商務類別的更多功能,它有時也會被歸類爲非電子商務。 是的,我同意基於規則的部分。 – instanceOfObject

+2

有趣。也許值得用基於決策樹的分類器來解決這個問題。這可能會消除你所看到的噪音,因爲它引入了功能之間的一些依賴關係。 – nflacco

+0

而且,規則可以以更好的方式創建,並提供比特徵更多的信息(有時)。例外 - 我們可以用多個'和'/'或'子句創建規則,但功能不提供這樣的任何內容。 糾正我,如果我錯了。 – instanceOfObject

相關問題