1. 程式人生 > 實用技巧 >《SLIQ:A fast scalable classifier for data mining》論文筆記

《SLIQ:A fast scalable classifier for data mining》論文筆記

1 簡介

本文根據1996年《SLIQ:A fast scalable classifier for data mining》翻譯總結的,即一個快速的可擴充套件的資料探勘分類器。看了論文,論文中沒找到SLIQ的縮寫,還不清楚為什麼這麼叫。

SLIQ之前的演算法都是基於記憶體的,無法應用於大量資料,SLIQ可以,基於記憶體和硬碟。

主要使用了兩個技術:pre-sorting、寬度優先(breadth-first)樹增長策略。

SLIQ採用決策樹分類,決策樹分類相對於其他分類方法更加快速。比如神經網路需要非常長的訓練時間,即使是小的資料集。

決策樹示例如下:
在這裡插入圖片描述

2 決策樹分類

大部分決策樹分類有兩個階段:樹構建和樹裁剪。

樹構建的虛擬碼可以表示如下:
在這裡插入圖片描述

樹裁剪:上面構建的樹分類的所有的資料,這可能導致樹枝是基於虛假的噪聲資料或者統計波動而建立的。當分類測試資料時,這些樹枝可能導致錯誤。樹裁剪的目的是去除這些樹枝,基於最小的估計錯誤率選擇子樹。

3 可擴充套件說明

3.1 樹構建

樹的建立包括兩個主要的操作,(1)對每個資料屬性的分割評估與最好的分割選擇;(2)使用最好的分割進行分割的建立。

分割指標:對一個數據屬性評估分割的好壞。採用的gini 指標。
在這裡插入圖片描述

3.2 樹裁剪

要基於最小的估計錯誤率選擇子樹,有兩種方法可以評估錯誤率,一種是使用原來的訓練資料,另一種是使用的獨立資料。Cross-validation 屬於第一種方法。第2種方法是將訓練資料分為兩部分,一部分用來構建樹,一部分用來裁剪樹。

4 SLIQ進行分類

4.1 概述

SLIQ是一個決策樹分類器,可以處理數字的和分類的屬性。SLIQ在樹成長階段使用pre-sorting 技術來減少評估數字特徵的花費。這個排序過程是整合在寬度優先(Breadth-First)的樹增長策略裡,使SLIQ可以分類磁盤裡的資料。

此外SLIQ對於分類屬性的分割,使用了一個快速分組演算法。

SLIQ基於Minimum Description Length原則使用了一個新的樹裁剪演算法,這個演算法很費很少,但可以產生緊湊的、正確的樹。

所有這些技術使SLIQ可以處理大資料,對有大量的類別、屬性和樣本數的資料進行分類。

4.2 Pre-sorting 和 Breadth-First

消除決策樹的每個節點的排序,而是在樹成長階段的開始,對數字屬性只排序一次。
如下圖所示,對訓練資料的每個屬性建立一個separate list,如下圖的右邊的前兩個表格;此外再建一個class list,如下圖右邊最後一個表格。每個separate list有兩列,一列是屬性的值,一列是對應class list的索引值。

在這裡插入圖片描述

4.2.1 處理節點分割

採用的非深度優先,而是寬度優先。例子如下圖,在N1處,根據age<=35, 初始化histogram ,分為N2、N3,比如N2初始化表格代表age<=35的有一個B,一個G;N3初始化表格,有1個B、3個G。L代表左側,符合條件的;R代表右側,不符合條件的。

接著在N2節點,用salary<=15評估第一次分割,更新histogram,如下圖中間的左表格,L-B更新為1,R-B更新為0.(可以看上一節的全量資料,其中age=23、salary=15的資料是B類別,另一條age=30的資料是G類別,不用更新histogram)。

接著在N3節點,用salary<=40,更新histogram。

在這裡插入圖片描述

4.2.2 更新class list

上面分割完後,就要對每個葉子節點建立子節點,並更新class list。如下圖,更新class list 第4行的N3為N6。
在這裡插入圖片描述

4.3 類別屬性的分組

比如一個屬性A屬於S,S又屬於S。其中S是屬性A的所有可能的組合。S的所有組合評估是代價較高的,特別是S的基數很大時。

SLIQ採用混合的方法,當S的基數不超過某個閾值時,評估S的所有分組。當大於閾值時,採用貪婪演算法求出S`。

4.4 樹裁剪

採用MDL(Minimum Description Length)策略。
在這裡插入圖片描述

5 實驗結果

5.1 小資料集

小資料集上,主要是和IND包中的CART、C4這兩個演算法進行比較。如下圖所示,IND-Cart演算法有較高的準確率、較小的樹,但速度慢。IND-C4的準確率和速度還行,但是樹太大。而SLIQ兼顧。
在這裡插入圖片描述

5.2 可擴充套件性

可以看到SLIQ的擴充套件性與分類時間是線性增長的,主要是因為資料大小和I/O讀寫的花費直接成比例相關。圖中兩個function是不同的樹大小。

在這裡插入圖片描述