SAS數(shù)據(jù)挖掘實(shí)戰(zhàn)篇【五】
SAS——預(yù)測(cè)模型
6.1 測(cè)模型介紹
預(yù)測(cè)型(Prediction)是指由歷史的和當(dāng)前的數(shù)據(jù)產(chǎn)生的并能推測(cè)未來(lái)數(shù)據(jù)趨勢(shì)的知識(shí)。這類(lèi)知識(shí)可以被認(rèn)為是以時(shí)
間為關(guān)鍵屬性的關(guān)聯(lián)知識(shí),可以應(yīng)用到以時(shí)間為關(guān)鍵屬性的源數(shù)據(jù)挖掘中。從預(yù)測(cè)的主要功能上看,主要是對(duì)未來(lái)
數(shù)據(jù)的概念分類(lèi)和趨勢(shì)輸出。統(tǒng)計(jì)學(xué)中的回歸方法等可以通過(guò)歷史數(shù)據(jù)直接產(chǎn)生對(duì)未來(lái)數(shù)據(jù)預(yù)測(cè)的連續(xù)值。因而這
些預(yù)測(cè)型知識(shí)己經(jīng)蘊(yùn)藏在諸如趨勢(shì)曲線(xiàn)等輸出形式中。常見(jiàn)的預(yù)測(cè)模型主要有邏輯回歸、決策樹(shù)和神經(jīng)網(wǎng)絡(luò)。
一個(gè)隨機(jī)事件的發(fā)生與否往往與多個(gè)影響因素有關(guān),Logistic回歸分析能從眾多的影響該事件發(fā)生的可疑因素中篩
選出對(duì)事件發(fā)生概率有影響的因素,并建立用這些因素估計(jì)該事件在某段時(shí)間內(nèi)發(fā)生概率的回歸模型。
決策樹(shù)的基本原理是遞歸的將數(shù)據(jù)裁分成子集,以便每一個(gè)子集包含目標(biāo)變量類(lèi)似的狀態(tài),這些目標(biāo)變量是可預(yù)測(cè)
屬性。每一次對(duì)樹(shù)進(jìn)行拆分,都要評(píng)價(jià)所有的輸入屬性對(duì)可預(yù)測(cè)屬性的影響。當(dāng)這個(gè)遞歸的過(guò)程結(jié)束時(shí),決策樹(shù)也
就創(chuàng)建完了。決策樹(shù)算法與其他的數(shù)據(jù)挖掘算法相比有一些優(yōu)勢(shì),比如,利用決策樹(shù)可以快速創(chuàng)建挖掘模型,并且
創(chuàng)建的模型也很容易解釋。每一條從根節(jié)點(diǎn)到葉節(jié)點(diǎn)的路徑就是一條規(guī)則?;?a href='/map/jueceshu/' style='color:#000;font-size:inherit;'>決策樹(shù)的預(yù)測(cè)也非常高效。對(duì)事例
進(jìn)行預(yù)測(cè)的過(guò)程是從根節(jié)點(diǎn)落到葉節(jié)點(diǎn)的路徑,所選擇的路徑基于決策樹(shù)中節(jié)點(diǎn)的拆分條件。
當(dāng)某一事例落到一個(gè)葉節(jié)點(diǎn)時(shí),這個(gè)事例的預(yù)測(cè)值就是基于存儲(chǔ)在節(jié)點(diǎn)的統(tǒng)計(jì)值的。
人工神經(jīng)網(wǎng)絡(luò):模擬人的神經(jīng)元功能,從結(jié)構(gòu)上模仿生物神經(jīng)網(wǎng)絡(luò),經(jīng)過(guò)輸入層、隱藏層、輸出層等,對(duì)數(shù)據(jù)進(jìn)行
調(diào)整、計(jì)算,最后得到結(jié)果,是一種通過(guò)訓(xùn)練來(lái)學(xué)習(xí)的非線(xiàn)性預(yù)測(cè)模型。
6.2 logistic回歸
預(yù)測(cè)的基本問(wèn)題就是根據(jù)目前的事實(shí)正確地判斷未知事件發(fā)生的可能性。在實(shí)際項(xiàng)目中,未知值稱(chēng)為目標(biāo),已知事
實(shí)稱(chēng)為輸入。輸入和目標(biāo)描述觀測(cè)值的度量方式。輸入和目標(biāo)變量的度量方式是通過(guò)不同的度量尺度表示。SAS EM
為構(gòu)建模型定義如下度量尺度:
區(qū)間度量:允許執(zhí)行簡(jiǎn)單算術(shù)運(yùn)算或者對(duì)數(shù)運(yùn)算的數(shù)值
有序度量:擁有內(nèi)在順序的定性屬性
名義度量:缺少內(nèi)在順序的定性屬性
二元度量:擁有兩個(gè)層次的定性屬性
為了解決預(yù)測(cè)中的基礎(chǔ)問(wèn)題,構(gòu)建輸入變量和目標(biāo)變量之間的數(shù)學(xué)關(guān)系。這種數(shù)學(xué)關(guān)系就是常說(shuō)的預(yù)測(cè)模型。一旦
建好預(yù)測(cè)模型,就可以運(yùn)用該模型來(lái)預(yù)測(cè)那些目標(biāo)值未知的輸入觀測(cè)值。構(gòu)建預(yù)測(cè)模型需要訓(xùn)練數(shù)據(jù)集,即先前的
輸入和目標(biāo)觀測(cè)數(shù)據(jù)集。假設(shè)該訓(xùn)練數(shù)據(jù)集可以用來(lái)代表未知的觀測(cè)值。一個(gè)非常簡(jiǎn)單的預(yù)測(cè)模型假設(shè)所有可能的
輸入和目標(biāo)組合都記錄在訓(xùn)練數(shù)據(jù)集中。一般來(lái)說(shuō),在真實(shí)的訓(xùn)練數(shù)據(jù)集中,一個(gè)特定的輸入集合某個(gè)范圍的目標(biāo)
區(qū)間相對(duì)應(yīng)。由于這種噪聲數(shù)據(jù)存在,預(yù)測(cè)模型經(jīng)常根據(jù)輸入集提供目標(biāo)變量的期望值。針對(duì)定性目標(biāo),目標(biāo)變量
的期望值可以通過(guò)每個(gè)定性級(jí)別的概率來(lái)解釋。這兩種情況都說(shuō)明任何預(yù)測(cè)模型在正確性方面的存在限制。
模型角色和度量尺度
目標(biāo)變量時(shí)二值的,并且通過(guò)logit函數(shù)作為鏈接函數(shù)的一般線(xiàn)性模型稱(chēng)為邏輯線(xiàn)性回歸模型。它假設(shè)比
率的變化在W定義的方向上是單調(diào)的。由于在整個(gè)輸入空間比率的變化實(shí)在單一的方向,標(biāo)準(zhǔn)的邏輯回
歸模型的決策邊界是一個(gè)超平面。邏輯回歸模型的簡(jiǎn)單結(jié)構(gòu)使它很容易解釋。
作為某商品類(lèi)目公司的市場(chǎng)分析師,你可能需要為二值目標(biāo)變量(purchase)建立邏輯回歸模型,判斷
某個(gè)顧客是否會(huì)產(chǎn)生購(gòu)買(mǎi)。輸入數(shù)據(jù)集存放在SAS安裝文件的SAMPSIO.DMEXA1中,該數(shù)據(jù)集包含
1966個(gè)顧客觀測(cè)值信息。它包含31個(gè)區(qū)間變量輸入和18個(gè)分類(lèi)變量輸用于構(gòu)建模型。該邏輯回歸模型產(chǎn)
生的打分公式應(yīng)用在新的數(shù)據(jù)集中,給那些可能產(chǎn)生購(gòu)買(mǎi)的顧客發(fā)送郵件。
1 創(chuàng)建SAS EM工程
2 添加輸入數(shù)據(jù)源節(jié)點(diǎn)
設(shè)置SAMPSIO.DMEXA1數(shù)據(jù)集作為輸入數(shù)據(jù)源
選擇變量選項(xiàng)卡,設(shè)置purchase為目標(biāo)變量,變量amount的模型角色為rejected
設(shè)置目標(biāo)變量的層次,選擇分類(lèi)變量選項(xiàng)卡,目標(biāo)變量的順序值決定了事件級(jí)別。二值目標(biāo)變量purchase
擁有兩種值0和1.,0表示NO,1表示YES。默認(rèn)情況下,目標(biāo)的順序值設(shè)置為降序。在該實(shí)例中,主要判
斷顧客是否產(chǎn)生購(gòu)買(mǎi)(event level = YES)。另外,還可以設(shè)置目標(biāo)變量的目標(biāo)信息。最后,關(guān)閉輸入數(shù)
據(jù)源節(jié)點(diǎn)。
3 添加數(shù)據(jù)劃分節(jié)點(diǎn)
對(duì)輸入數(shù)據(jù)集運(yùn)用層次抽樣方法創(chuàng)建訓(xùn)練和驗(yàn)證數(shù)據(jù)集。訓(xùn)練數(shù)據(jù)集被用來(lái)擬合回歸模型,驗(yàn)證數(shù)據(jù)集
用來(lái)評(píng)估回歸模型。層次抽樣技術(shù)保留購(gòu)買(mǎi)者和非購(gòu)買(mǎi)者在訓(xùn)練集和驗(yàn)證集中的初時(shí)比率。
首先,在流程圖空間加入數(shù)據(jù)劃分節(jié)點(diǎn),打開(kāi)數(shù)據(jù)劃分節(jié)點(diǎn),在劃分選項(xiàng)卡,設(shè)置輸入數(shù)據(jù)集的70%
作為訓(xùn)練集,30%作為驗(yàn)證集,測(cè)試為0。針對(duì)類(lèi)型輸入變量STATECOD,選擇層次抽樣方法單選按鈕。
激活層次選項(xiàng)卡,在status列中,設(shè)置STATECOD的狀態(tài)為use。
關(guān)閉數(shù)據(jù)劃分節(jié)點(diǎn)。
4 添加變量轉(zhuǎn)換節(jié)點(diǎn)
打開(kāi)轉(zhuǎn)換節(jié)點(diǎn),創(chuàng)建二值變量wealth,當(dāng)income大于40000同時(shí)homeval大于100000,則其值為1,否則為0。
在主菜單中,選擇工具,創(chuàng)建變量。
創(chuàng)建新的分類(lèi)變量,對(duì)age進(jìn)行分箱處理,劃分為4個(gè)年齡組。右擊age變量,選擇transform,選擇bucket菜單
右擊frequent輸入變量,查看分布
從圖中可以發(fā)現(xiàn),frequent的傾斜度很大,極值會(huì)影響參數(shù)的預(yù)測(cè)。
右擊frequent,選擇transform,選擇方法log,進(jìn)行轉(zhuǎn)換。再查看導(dǎo)出變量的分布。
5 添加回歸模型節(jié)點(diǎn)
在輸入數(shù)據(jù)源節(jié)點(diǎn),可以在區(qū)間變量和分類(lèi)變量選項(xiàng)卡中,查看觀測(cè)值的缺失值,在本案例中發(fā)現(xiàn),沒(méi)
有缺失值。在實(shí)際中,若存在缺失值,可以加入replacement節(jié)點(diǎn),進(jìn)行處理。在回歸模型中不能直接
處理缺失值觀測(cè)值。
打開(kāi)回歸模型節(jié)點(diǎn),激活變量選項(xiàng)卡,在工具菜單選擇interactive builder,選擇recency變量,設(shè)置
degree為2,點(diǎn)擊多項(xiàng)式按鈕,產(chǎn)生新的變量recency * recency;然后,選擇recency和ntitle,點(diǎn)擊cross
,產(chǎn)生新變量recency * ntitle。
選擇selection選項(xiàng)卡,方法選擇stepwise。在Criteria中,設(shè)置Entry 和stay Significance Levels 為0.1
關(guān)閉回歸節(jié)點(diǎn),運(yùn)行回歸模型節(jié)點(diǎn),查看結(jié)果。
回歸窗口是對(duì)輸入變量重要性的統(tǒng)計(jì)性運(yùn)用圖形的方式進(jìn)行描述。該模型有9個(gè)參數(shù),對(duì)應(yīng)8個(gè)輸入變
量。點(diǎn)擊柱狀圖,可以識(shí)別相應(yīng)的參數(shù)。柱狀圖的高度表示參數(shù)的重要性,顏色表示效果增加的方向
。紅色表示增長(zhǎng)的效果,即相應(yīng)輸入的值越大,則貢獻(xiàn)越大。反之,則越小。
6 創(chuàng)建模型提升圖
右擊模型節(jié)點(diǎn),選擇模型管理器。在工具菜單,選擇創(chuàng)建lift圖。
7 部署模型
SAS EM有兩種方式部署模型,打分代碼模塊和打分?jǐn)?shù)據(jù)集。
打分代碼模塊用來(lái)在外部環(huán)境產(chǎn)生預(yù)測(cè)的目標(biāo)值。它可以創(chuàng)建sas,c以及java等不同語(yǔ)言的代碼。Sas
代碼可以直接嵌入在sas應(yīng)用程序中產(chǎn)生預(yù)測(cè)。C語(yǔ)言形式的必須進(jìn)過(guò)編譯。
方式1:創(chuàng)建評(píng)價(jià)數(shù)據(jù)集
在流程圖空間加入輸入數(shù)據(jù)源節(jié)點(diǎn),設(shè)置數(shù)據(jù)集角色為score,關(guān)閉輸入數(shù)據(jù)源節(jié)點(diǎn)
添加SAS打分節(jié)點(diǎn)和SAS代碼節(jié)點(diǎn)
打開(kāi)SAS打分節(jié)點(diǎn),設(shè)置如下
執(zhí)行該節(jié)點(diǎn)
打開(kāi)SAS代碼節(jié)點(diǎn),在數(shù)據(jù)選項(xiàng)卡中,選擇score單選按鈕
在export選項(xiàng)卡中,點(diǎn)擊add,選擇predict,得到數(shù)據(jù)集。然后,在program選項(xiàng)卡中輸入下面的sas代碼
data &_pre;
set &_score;
if p_purchaseyes lt 0.60 then delete;
run;
proc print data = &_pre;
var custid p_purchaseyes;
run;
從而得到預(yù)測(cè)結(jié)果。
libname MYLIB ODBC dsn='dsn name';
proc datasets library=MYLIB;
delete MY_SCORE_NAME;
run;
quit;
data MYLIB.MY_SCORE_NAME;
set &_SCORE;
keep variable;
run;
方式2:創(chuàng)建打分代碼模塊
打開(kāi)打分節(jié)點(diǎn),選擇Score code選項(xiàng)卡
CDA數(shù)據(jù)分析師考試相關(guān)入口一覽(建議收藏):
? 想報(bào)名CDA認(rèn)證考試,點(diǎn)擊>>>
“CDA報(bào)名”
了解CDA考試詳情;
? 想學(xué)習(xí)CDA考試教材,點(diǎn)擊>>> “CDA教材” 了解CDA考試詳情;
? 想加入CDA考試題庫(kù),點(diǎn)擊>>> “CDA題庫(kù)” 了解CDA考試詳情;
? 想了解CDA考試含金量,點(diǎn)擊>>> “CDA含金量” 了解CDA考試詳情;