注意:
也可以選擇Product維表中的其他屬性如Brand作為嵌套鍵,這樣,我們將對客戶購買的品牌分析,而不是產品之間的關聯。
因為該模型隻是用於分析產品之間的關聯,所以嵌套表中沒有必要包括其他屬性,而且也不需要添加其他的嵌套表。
在定義了挖掘結構之後,向導會提示對源立方體進行切片。由於本例是分析紐約州客戶的交叉銷售模式,因此我們選擇Dim er,找到State Proviname屬性,運算符為“等於”,點擊下拉框找到“New York”。
現在,對模型的定義已經完成,修改適當的挖掘結構和模型的名稱後,即可以進行處理。
注意:
在本例中,對客戶購買商品的時間沒有進行限製,即如果客戶在3月份購買了一瓶啤酒,然後又在9月份購買了一些尿布,那麼因為沒有指定時間的約束,所以該模型認為啤酒和尿布是有關聯的。解決這個問題有兩種方法,第一種方法是使用立方體切片將購買的時間限製到給定的某一日,因為這種方法隻是基於一天,顯然很難發現某種模式。第二種方法是在立方體上添加事務維,從而在事務表中的每一行都包含事務ID。然後指定事例表為事務維(即鍵列由客戶ID變成了事務ID,因為事務ID是針對每次的購物事件創建的,而與客戶無關),嵌套表為Product維表。通過這種方式來分析每個事務內的購買模式。
事實上,購物籃分析不受限於客戶購買商品的情況,我們可以通過靈活地指定事例表和嵌套表來對不同的商業問題進行建模。例如,如果希望分析客戶傾向於進行購物的商店,則可以將er維設置為事例表,而將Store設置為嵌套表;如果希望分析每個商店不同促銷之間的關係,則可以將Store設置為事例表,而將Promotion維設置為嵌套表。
3.創建銷售預測模型
預測也是數據挖掘另一個重要的任務。立方體通常包含時間維。立方體用戶自然會詢問立方體度量的預測值。例如,在後三個月紐約州的商店將銷售多少瓶紅酒?在後兩年中每個商店可以有多少營業額?
在本例中,使用Microsoft時序算法在Reler Sales立方體上創建挖掘模型,模型的目標是對每個商店的某個月Order Quantity、Sales Amount和Total Product Cost進行預測。
因為模型用於預測每個商店的銷售額,因此事例維是Reler維表。選擇維的主鍵Dim Reler作為事例鍵。
由於我們將對度量值進行預測,所以需要選擇適當的度量值既作為輸入又作為可預測,選中Order Quantity、Sales Amount、Total Product Cost三個度量。我們知道Microsoft時序算法的特點是在多個序列之間進行交叉預測,即如果Order Quantity與Sales Amount有較強的相關性,那麼算法將會發現該模式,使用Order Quantity來預測Sales Amount。
Dim Reler表中有701個分銷商,如果全部進行預測,則時序將達到701*3=2403個。所以我們需要選擇某個分銷商來進行預測。在定義多維數據集切片時,我們對選擇分銷商ID為189來進行預測。數據立方體可能包含多年的數據,但一些數據可能太陳舊了,同時為了計算速度的加快,所以不需要模型輸入所有的曆史數據,這樣對預測沒有太大影響。例如,如果證券交易數據庫擁有10多年的曆史數據,那最初5年的數據最有可能對預測沒有用處。所以隻使用最近兩年的數據在時間維上對立方體進行切片。
注意:
在大多數立方體中具有時間維,但這些時間維很可能包含代表未來時間單位的成員。如果不對時間維進行切片,那麼在訓練數據中將包括未來時間成員,因為這些未來時間還沒有對應的度量值,所以在默認情況下,OLAP挖掘模型在處理期間將以0來替換這些null值。如果沒有對立方體進行切片,則構建的模型將會產生偏差。
如果序列中有些時間幀缺乏數據,則在處理模型時會報錯,需要在模型參數中設置MISSING_VALUE_SUBSTITUTION參數。指定空缺值以空、前值或者平均值代替。
【本章小結】
本章主要介紹了如何對多維立方體進行挖掘。多維立方體和關係數據庫中的數據存放形式有所不同,所以在構造挖掘模型時,更多的是采用事例表和嵌套表的形式,在設置事例鍵和嵌套鍵時,可以根據分析的目標而靈活地設置。但需要注意的是,屬性值和鍵值之間需要有1-n的對應關係。