摘要:面向?qū)傩詺w納方法是面向查詢的、基于泛化的聯(lián)機(jī)數(shù)據(jù)分析處理技術(shù)。研究使用SQL語句直接實(shí)現(xiàn)廣義關(guān)系表,簡化面向?qū)傩詺w納方法的實(shí)現(xiàn)。
關(guān)鍵詞:數(shù)據(jù)挖掘;數(shù)據(jù)泛化;面向?qū)傩詺w納
中圖分類號:TP311文獻(xiàn)標(biāo)識碼: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 引言
數(shù)據(jù)泛化是一個過程,它將數(shù)據(jù)庫中任務(wù)相關(guān)的大型數(shù)據(jù)集從相對較低的概念層抽象成較高的概念層。由于數(shù)據(jù)庫上的數(shù)據(jù)或?qū)ο笏男畔⒖偸亲钤?、基本的信息。人們有時希望能從較高層次的視圖上處理或?yàn)g覽數(shù)據(jù),因此需要對數(shù)據(jù)進(jìn)行不同層次上的泛化以適應(yīng)各種查詢要求。這種數(shù)據(jù)描述有助于提供數(shù)據(jù)的總體印象。例如,街道可以泛化為較高層的城市或者國家;年齡可以替換為青年、中年和老年。數(shù)據(jù)泛化目前主要有兩種技術(shù):多維數(shù)據(jù)分析萬法和面向?qū)傩缘臍w納方法。這里將對面向?qū)傩缘臍w納算法的實(shí)現(xiàn)做初步的研究。
2 什么是面向?qū)傩缘臍w納
面向?qū)傩缘臍w納(attribute-oriented induction,AOI),它的思路是,直接對用戶感興趣的數(shù)據(jù)視圖(用一般的SQL查詢語言即可獲得)進(jìn)行泛化,而不是像多維數(shù)據(jù)分析方法那樣預(yù)先就存儲好了泛化數(shù)據(jù)。方法的提出者將這種數(shù)據(jù)泛化技術(shù)稱為面向?qū)傩缘臍w納方法。原始關(guān)系經(jīng)過泛化操作后得到的是一個泛化關(guān)系,它從較高的層次上總結(jié)了在較低層次上的原始關(guān)系,然后合并那些在泛化后變成相同的紀(jì)錄,壓縮數(shù)據(jù)空間。有了泛化關(guān)系后,就可以將它進(jìn)行各種深入的操作,生成滿足用戶需要的知識,如在泛化關(guān)系基礎(chǔ)上生成特性規(guī)則、判別規(guī)則、分類規(guī)則,以及關(guān)聯(lián)規(guī)則等。
3 面向?qū)傩詺w納的算法
輸入:
DB,關(guān)系數(shù)據(jù)庫;
DMQuery,數(shù)據(jù)挖掘查詢;
a_list,屬性列表(包含屬性ai等);
Gen(ai),每個屬性ai的泛化閥值。
輸出:
(1) W←get_task_relevant_data(DMQuery,DB);//工作關(guān)系W存放任務(wù)相關(guān)的數(shù)據(jù)。
(2) prepare_for_generalization(W);//實(shí)現(xiàn)如下。
① 掃描W,收集每個屬性ai的不同值。(注意:如果W很大,可以通過考察W的樣本來做。)
② 對于每個屬性ai,根據(jù)給定或默認(rèn)屬性閥值,確定ai是否應(yīng)當(dāng)刪除;如果不刪除,則計(jì)算它的最小期望層次Li,并確定映射對(v,v'),其中v是W中ai的不同值,而v'是v在層Li上相應(yīng)的泛化值。
(3) P←generalization(W);
通過用映射中對應(yīng)的v'替換W中每個值v,累計(jì)計(jì)數(shù)并計(jì)算所有聚集值,導(dǎo)出主廣義關(guān)系P。
這一步可以用以下兩種方法之一有效地實(shí)現(xiàn):
① 對于每個廣義元組,通過二分搜索將它插入已排序的主關(guān)系P中。如果元組已在P中,則簡單地增加它的計(jì)數(shù)值并相應(yīng)地處理其他聚集值;否則,將它插入P。
② 在大部分情況下,由于主關(guān)系層不同值的個數(shù)很少,可以將主關(guān)系編碼,作為m維數(shù)組,其中m是P中的屬性數(shù),而每個維包含對應(yīng)的泛化屬性值。如果有的話,數(shù)組的每個元素存放對應(yīng)得計(jì)數(shù)和其他聚集值(如果有的話)。廣義元組的插入通過對應(yīng)的數(shù)組元素的度量聚集進(jìn)行。
算法說明:
在面向?qū)傩詺w納之前,需要進(jìn)行數(shù)據(jù)聚焦(data focusing)。這一步對應(yīng)于說明任務(wù)相關(guān)數(shù)據(jù)(即用于分析的數(shù)據(jù)),根據(jù)數(shù)據(jù)挖掘查詢提供的信息進(jìn)行數(shù)據(jù)收集。
分析的數(shù)據(jù)準(zhǔn)備完成后,可以使用屬性刪除和屬性泛化,這兩種基本的數(shù)據(jù)泛化操作。
4 實(shí)例分析:面向?qū)傩詺w納的算法的實(shí)現(xiàn)
以SQL Server提供的示例數(shù)據(jù)庫Northwind作為OLTP基礎(chǔ)數(shù)據(jù)庫,介紹面向?qū)傩詺w納算法的實(shí)現(xiàn)。
Nothwind數(shù)據(jù)庫是一個商貿(mào)公司銷售數(shù)據(jù)庫,它存儲了客戶銷售相關(guān)的各種數(shù)據(jù):訂單數(shù)據(jù)、客戶數(shù)據(jù)、產(chǎn)品數(shù)據(jù)、員工數(shù)據(jù)、供貨商數(shù)據(jù)等。它是一個OLTP數(shù)據(jù)庫,以交易為處理單位,關(guān)系復(fù)雜。
數(shù)據(jù)準(zhǔn)備
選擇Invoices視圖挖掘產(chǎn)品銷售數(shù)量的特征描述。也可稱作初始工作關(guān)系表。Invoices視圖查詢的具體屬性如(圖1),Invoices視圖的數(shù)據(jù)集合如(圖2)。
■
圖1 Invoices 視圖查詢的具體屬性
■
圖2 Invoices 視圖的數(shù)據(jù)集合
數(shù)據(jù)泛化
(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:存在概念分層。
銷售數(shù)量分為5個等級進(jìn)行泛化:0~50,51~100,101~150,151~200,201以上
數(shù)據(jù)統(tǒng)計(jì)結(jié)果
某種商品一次性購買數(shù)量在不同銷售等級發(fā)生的次數(shù)。
用SQL實(shí)現(xiàn)泛化過程,將相同的元組進(jìn)行分組。
我們可以使用SQL語法中的CASE函數(shù),實(shí)現(xiàn)對數(shù)據(jù)進(jìn)行概念分層,同時映射到我們規(guī)定的泛化等級。
CASE的語法:
SELECT <myColumnSpec> =
CASE
WHEN <A> THEN <somethingA>
WHEN <B> THEN <somethingB>
ELSE <somethingE>
END
所以,對于銷售數(shù)量Quantity泛化出的5個等級,可以用CASE函數(shù)實(shí)現(xiàn)如下:
'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
如果出現(xiàn)異常數(shù)據(jù),不在銷售數(shù)量泛化等級內(nèi)的,用'NA'來表示。
完整實(shí)現(xiàn)SQL如(圖3)所示。最后廣義關(guān)系數(shù)據(jù)呈現(xiàn),如(圖4)所示。
■
圖3 Invoices 的廣義關(guān)系視圖
■
圖4 Invoices 廣義關(guān)系數(shù)據(jù)表
5 結(jié)束語
面向?qū)傩詺w納方法,通過屬性屬性刪除,屬性泛化操作,合并相等的廣義元組,并累計(jì)對應(yīng)得計(jì)數(shù)值,大大減小了泛化后數(shù)據(jù)集的大小,節(jié)省了存儲數(shù)據(jù)的空間。同時可以提供用戶各種統(tǒng)計(jì)圖表。當(dāng)數(shù)據(jù)量較大,如何加快面向?qū)傩缘臍w納速度值得我們做進(jìn)一步研究。這將不僅僅是屬性的選擇,泛化的程度的研究,還有廣義關(guān)系的實(shí)現(xiàn)方法的研究。
參考文獻(xiàn):
[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.