摘要:面向屬性歸納方法是面向查詢的、基于泛化的聯機數據分析處理技術。研究使用SQL語句直接實現廣義關系表,簡化面向屬性歸納方法的實現。
關鍵詞:數據挖掘;數據泛化;面向屬性歸納
中圖分類號:TP311文獻標識碼:A 文章編號:1009-3044(2008)28-0004-03
Use SQL statement implement Attribute-oriented Induction
WU Rong
(Soochow University School of Computer Science Technology, Suzhou 215001, China)
Abstract:Attribute-oriented towards Query and base on generalization of online data analysis treatment technology. Research on the user SQL statement implement generalized relationship tables. Simplified the Attribute-oriented Induction method's implementation.
Key words: data mining; data generalization; attribute-oriented induction
1 引言
數據泛化是一個過程,它將數據庫中任務相關的大型數據集從相對較低的概念層抽象成較高的概念層。由于數據庫上的數據或對象所包含的信息總是最原始、基本的信息。人們有時希望能從較高層次的視圖上處理或瀏覽數據,因此需要對數據進行不同層次上的泛化以適應各種查詢要求。這種數據描述有助于提供數據的總體印象。例如,街道可以泛化為較高層的城市或者國家;年齡可以替換為青年、中年和老年。數據泛化目前主要有兩種技術:多維數據分析萬法和面向屬性的歸納方法。這里將對面向屬性的歸納算法的實現做初步的研究。
2 什么是面向屬性的歸納
面向屬性的歸納(attribute-oriented induction,AOI),它的思路是,直接對用戶感興趣的數據視圖(用一般的SQL查詢語言即可獲得)進行泛化,而不是像多維數據分析方法那樣預先就存儲好了泛化數據。方法的提出者將這種數據泛化技術稱為面向屬性的歸納方法。原始關系經過泛化操作后得到的是一個泛化關系,它從較高的層次上總結了在較低層次上的原始關系,然后合并那些在泛化后變成相同的紀錄,壓縮數據空間。有了泛化關系后,就可以將它進行各種深入的操作,生成滿足用戶需要的知識,如在泛化關系基礎上生成特性規則、判別規則、分類規則,以及關聯規則等。
3 面向屬性歸納的算法
輸入:
DB,關系數據庫;
DMQuery,數據挖掘查詢;
a_list,屬性列表(包含屬性ai等);
Gen(ai),每個屬性ai的泛化閥值。
輸出:
(1) W←get_task_relevant_data(DMQuery,DB);//工作關系W存放任務相關的數據。
(2) prepare_for_generalization(W);//實現如下。
① 掃描W,收集每個屬性ai的不同值。(注意:如果W很大,可以通過考察W的樣本來做。)
② 對于每個屬性ai,根據給定或默認屬性閥值,確定ai是否應當刪除;如果不刪除,則計算它的最小期望層次Li,并確定映射對(v,v'),其中v是W中ai的不同值,而v'是v在層Li上相應的泛化值。
(3) P←generalization(W);
通過用映射中對應的v'替換W中每個值v,累計計數并計算所有聚集值,導出主廣義關系P。
這一步可以用以下兩種方法之一有效地實現:
① 對于每個廣義元組,通過二分搜索將它插入已排序的主關系P中。如果元組已在P中,則簡單地增加它的計數值并相應地處理其他聚集值;否則,將它插入P。
② 在大部分情況下,由于主關系層不同值的個數很少,可以將主關系編碼,作為m維數組,其中m是P中的屬性數,而每個維包含對應的泛化屬性值。如果有的話,數組的每個元素存放對應得計數和其他聚集值(如果有的話)。廣義元組的插入通過對應的數組元素的度量聚集進行。
算法說明:
在面向屬性歸納之前,需要進行數據聚焦(data focusing)。這一步對應于說明任務相關數據(即用于分析的數據),根據數據挖掘查詢提供的信息進行數據收集。
分析的數據準備完成后,可以使用屬性刪除和屬性泛化,這兩種基本的數據泛化操作。
4 實例分析:面向屬性歸納的算法的實現
以SQL Server提供的示例數據庫Northwind作為OLTP基礎數據庫,介紹面向屬性歸納算法的實現。
Nothwind數據庫是一個商貿公司銷售數據庫,它存儲了客戶銷售相關的各種數據:訂單數據、客戶數據、產品數據、員工數據、供貨商數據等。它是一個OLTP數據庫,以交易為處理單位,關系復雜。
數據準備
選擇Invoices視圖挖掘產品銷售數量的特征描述。也可稱作初始工作關系表。Invoices視圖查詢的具體屬性如(圖1),Invoices視圖的數據集合如(圖2)。
■
圖1 Invoices 視圖查詢的具體屬性
■
圖2 Invoices 視圖的數據集合
數據泛化
(1) ShipName, ShipAddress, ShippedDate, ShipCity, ShipRegion, ShipPostalCode, ShipCountry, CustomerID, CustomerName, OrderID, PostalCode, Salesperson, OrderID, OrderDate, RequiredDate, ShipperName, UnitPrice, Discount, ExtendedPrice, Freight, Address, City, Country, Region:這些屬性不屬于重要屬性,所以刪除。所以,僅保留ProductID,ProductName。
(2) Quantity:存在概念分層。
銷售數量分為5個等級進行泛化:0~50,51~100,101~150,151~200,201以上
數據統計結果
某種商品一次性購買數量在不同銷售等級發生的次數。
用SQL實現泛化過程,將相同的元組進行分組。
我們可以使用SQL語法中的CASE函數,實現對數據進行概念分層,同時映射到我們規定的泛化等級。
CASE的語法:
SELECT <myColumnSpec> =
CASE
WHEN <A> THEN <somethingA>
WHEN <B> THEN <somethingB>
ELSE <somethingE>
END
所以,對于銷售數量Quantity泛化出的5個等級,可以用CASE函數實現如下:
'Quantity' =
CASE
WHEN (\"Order Details\".Quantity)>= 0 and (\"Order Details\".Quantity)<= 50 THEN '0~50'
WHEN (\"Order Details\".Quantity)>= 51 and (\"Order Details\".Quantity)<= 100 THEN '51~100'
WHEN (\"Order Details\".Quantity)>= 101 and (\"Order Details\".Quantity)<= 150 THEN '101~150'
WHEN (\"Order Details\".Quantity)>= 151 and (\"Order Details\".Quantity)<= 200 THEN '151~200'
WHEN (\"Order Details\".Quantity)>= 201 THEN '201以上'
ELSE 'NA'
END
如果出現異常數據,不在銷售數量泛化等級內的,用'NA'來表示。
完整實現SQL如(圖3)所示。最后廣義關系數據呈現,如(圖4)所示。
■
圖3 Invoices 的廣義關系視圖
■
圖4 Invoices 廣義關系數據表
5 結束語
面向屬性歸納方法,通過屬性屬性刪除,屬性泛化操作,合并相等的廣義元組,并累計對應得計數值,大大減小了泛化后數據集的大小,節省了存儲數據的空間。同時可以提供用戶各種統計圖表。當數據量較大,如何加快面向屬性的歸納速度值得我們做進一步研究。這將不僅僅是屬性的選擇,泛化的程度的研究,還有廣義關系的實現方法的研究。
參考文獻:
[1] Jiawei Han Micheline Kamber.Data Mining Concepts and Techniques [M].Second Edition.CHINA MACHINE PRESS.2007.7.
[2] Mehmed Kantardzic.Data Mining Concepts,Models,Methods,and Algorithms [M].TSINGHUA UNIVERSITY PRESS.2003.8.
[3] Nong Ye. The Handbook Of Data Mining[M].LAWRENCE ERLBAUM ASSOCIATES,PUBLISHEERS.2003.