99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁精彩閱讀SAS數(shù)據(jù)挖掘?qū)崙?zhàn)篇【三】
SAS數(shù)據(jù)挖掘?qū)崙?zhàn)篇【三】
2016-04-09
收藏

SAS數(shù)據(jù)挖掘實(shí)戰(zhàn)篇【三】

數(shù)據(jù)挖掘概念到SAS EM模塊和大概的流程介紹完之后,下面的規(guī)劃是【SAS關(guān)聯(lián)規(guī)則案例】【SAS聚類】【SAS預(yù)測(cè)】三個(gè)案例的具體操作步驟,【SAS的可視化技術(shù)】和【SAS的一些技巧和代碼】,至于像SAS的數(shù)據(jù)導(dǎo)入導(dǎo)出數(shù)據(jù)處理等一些基本的代碼,不作大的講解。到時(shí)候會(huì)穿插在每周日常里進(jìn)行介紹,只有多操作才能熟練。

貴在平時(shí)實(shí)踐和堅(jiān)持!


OK,廢話不多說,今天主要寫這篇“SAS數(shù)據(jù)挖掘實(shí)戰(zhàn)篇【三】”主要介紹,SAS的關(guān)聯(lián)規(guī)則應(yīng)用數(shù)據(jù)挖掘

1 關(guān)聯(lián)規(guī)則

1.1起源

關(guān)聯(lián)規(guī)則雖然來源于POS中,但是可以應(yīng)用于很多領(lǐng)域。關(guān)聯(lián)規(guī)則的應(yīng)用還包括商場(chǎng)的顧客購物分析、商品廣告郵寄分析、網(wǎng)絡(luò)故障分析等。沃爾瑪零售商的“尿布與啤酒”的故事是關(guān)聯(lián)規(guī)則挖掘的一個(gè)成功典型案例??偛课挥诿绹⒖仙莸腤al*Mart擁有世界上最大的數(shù)據(jù)倉庫系統(tǒng),它利用數(shù)據(jù)挖掘工具對(duì)數(shù)據(jù)倉庫中的原始交易數(shù)據(jù)進(jìn)行分析,得到了一個(gè)意外發(fā)現(xiàn):跟尿布一起購買最多的商品竟然是啤酒。如果不是借助于數(shù)據(jù)倉庫數(shù)據(jù)挖掘,商家決不可能發(fā)現(xiàn)這個(gè)隱藏在背后的事實(shí):在美國,一些年輕的父親下班后經(jīng)常要到超市去買嬰兒尿布,而他們中有30%~40%的人同時(shí)也為自己買一些啤酒。有了這個(gè)發(fā)現(xiàn)后,超市調(diào)整了貨架的擺放,把尿布和啤酒放在一起,明顯增加了銷售額。

1.2基本思想

關(guān)聯(lián)規(guī)則挖掘技術(shù)可以發(fā)現(xiàn)不同商品在消費(fèi)者購買過程中的相關(guān)性。給定一組事務(wù)集合,其中每個(gè)事務(wù)是一個(gè)項(xiàng)目集;一個(gè)關(guān)聯(lián)規(guī)則是形如X ->Y 的蘊(yùn)涵式, X 和Y 表示項(xiàng)目集,且X ∩ Y = Φ, X 和Y 分別稱為關(guān)聯(lián)規(guī)則X-> Y 的前提和結(jié)論。規(guī)則X->Y 的支持度(Support) 是事務(wù)集中包含X 和Y 的事務(wù)數(shù)與所有事務(wù)數(shù)之比,記為support(X->Y) ;規(guī)則X->Y 的置信度(Confidence) 是指包含X和Y 的事務(wù)數(shù)與包含X 的事務(wù)數(shù)之比, 記為confidence ( X->Y) 。支持度用于衡量所發(fā)現(xiàn)規(guī)則的統(tǒng)計(jì)重要性,而置信度用于衡量關(guān)聯(lián)規(guī)則的可信程度。一般來說,只有支持度和置信度均高的關(guān)聯(lián)規(guī)則才可能是消費(fèi)者感興趣的、有用的規(guī)則。

2 Apriori算法

2.1算法原理

Apriori 算法是 Agrawal 等于 1994 年提出的一個(gè)挖掘顧客交易數(shù)據(jù)庫中項(xiàng)集間的關(guān)聯(lián)規(guī)則的重要方法,是迄今最有影響挖掘布爾關(guān)聯(lián)規(guī)則頻繁項(xiàng)集的關(guān)聯(lián)規(guī)則算法。該關(guān)聯(lián)規(guī)則在分類上屬于單維、單層、布爾關(guān)聯(lián)規(guī)則。

Apriori算法的基本思想是通過對(duì)數(shù)據(jù)庫D的多次掃描來發(fā)現(xiàn)所有的頻繁項(xiàng)集。在第k次掃描中只考慮具有同一長(zhǎng)度k的所有項(xiàng)集。在第1趟掃描中,Apriori算法計(jì)算I中所有單個(gè)項(xiàng)的支持度,生成所有長(zhǎng)度為1的頻繁項(xiàng)集。在后續(xù)的掃描中,首先以前一次所發(fā)現(xiàn)的所有頻繁項(xiàng)集為基礎(chǔ),生成所有新的候選項(xiàng)集(Candidate Itemsets),即潛在的頻繁項(xiàng)集,然后掃描數(shù)據(jù)庫D,計(jì)算這些候選項(xiàng)集的支持度,最后確定候選項(xiàng)集中哪一些真正成為頻繁項(xiàng)集。重復(fù)上述過程直到再也發(fā)現(xiàn)不了新的頻繁項(xiàng)集。算法高效的關(guān)鍵在于生成較小的候選項(xiàng)集,也就是盡可能不生成和計(jì)算那些不可能成為頻繁項(xiàng)集的候選項(xiàng)集。

2.2算法步驟

Apriori 算法主要分成兩步:首先找出數(shù)據(jù)中所有的頻繁項(xiàng)集,這些項(xiàng)集出現(xiàn)的頻繁性要大于或等于最小支持度。然后由頻繁項(xiàng)集產(chǎn)生強(qiáng)關(guān)聯(lián)規(guī)則,這些規(guī)則必須滿足最小支持度和最小置信度。算法的總體性能由第一步?jīng)Q定,第二步相對(duì)容易實(shí)現(xiàn)。

Lk:k維頻繁項(xiàng)目集的集合,該集合中的每個(gè)元素包含兩部分:項(xiàng)目集本身、項(xiàng)目集的支持度。

Ck:k維候選項(xiàng)目集集合,是k維頻繁項(xiàng)目集集合的超集,也就是潛在的頻繁項(xiàng)目集集合,該集合中的每個(gè)元素也包含兩部分:項(xiàng)目集本身、項(xiàng)目集的支持度。任何項(xiàng)目集的元素都按某個(gè)標(biāo)準(zhǔn)(例如字典順序)進(jìn)行排序。包括k個(gè)項(xiàng)目(k個(gè)項(xiàng)目為:c[1],c[2],?,c[k])的項(xiàng)目集c用如下形式來表示:c[1],c[2],?,c[k],由于c已經(jīng)排序,則有:c[1]<c[2]<?<c[k]。


a).Apriori算法描述

輸入:交易數(shù)據(jù)庫D,最小支持度minsup

輸出:頻繁項(xiàng)目集集合Answer

(1)Begin

(2)L1=(large 1-itemsets);

(3)For(k=2;Lk-1≠ ;k++)Do

(4)Ck=apriori_gen(Lk-1);//得到新候選項(xiàng)目集。

(5)For all transactionst∈D Do

(6)Ct=subset(Ck,t);//計(jì)算屬于t的候選項(xiàng)目集。

(7)For all candidates c∈Ct Do

(8)c.count++;

(9)EndFor

(10)EndFor

(11)Lk={c∈Ck|c.count≥minsup}

(12)EndFor

(13)Answer=Uk Lk;

(14)End


b).apriori_gen算法描述

輸入:Lk-1

輸出:Lk

(1)Begin

(2)For each p∈Lk-1 Do

(3)For each q∈Lk-1 Do

(4)If p.item1=q.item1,?,p.itemk-2=q.itemk-2,p.itemk-1<q.itemk-1

(5)Then c=p.item1,p.item2,?,p.itemk-1,q.itemk-1;EndIf

(6)If (k-1)-subset s Lk-1 of c

(7)Then delete c;

(8)Else insert c into Ck;EndIf

(9)EndFor

(10)EndFor

(11)Return Lk

(12)End


2.3算法分析與改進(jìn)

如果在交易數(shù)據(jù)集合中包含的不同的項(xiàng)目的數(shù)量為n個(gè),以Apriori為基礎(chǔ)的頻繁項(xiàng)目集發(fā)現(xiàn)算法將要計(jì)算2n項(xiàng)目集。當(dāng)n比較大時(shí),將會(huì)產(chǎn)生組合爆炸,實(shí)際上這將是NP難的問題。

J.S.Park等人提出了一個(gè)基于Hash技術(shù)的DHP算法,利用Hash技術(shù)有效改進(jìn)候選項(xiàng)目集的生成過程,減少I/O的存取時(shí)間,其效率高于Apriori算法。雖然Sampling算法、Partition算法、DIC算法等都試圖減少對(duì)交易數(shù)據(jù)集合的搜索次數(shù),但仍有很多缺點(diǎn)。Sampling算法從原數(shù)據(jù)集合中隨機(jī)抽樣出一部分樣本,利用樣本來挖掘關(guān)聯(lián)規(guī)則以減少算法的搜索次數(shù),但是由于數(shù)據(jù)集合中經(jīng)常存在數(shù)據(jù)分布不均勻的情況,所以隨機(jī)抽樣根本就無法保證能夠抽取到有代表性的樣本;Partition算法雖然通過對(duì)數(shù)據(jù)集合分區(qū)分別挖掘,最后進(jìn)行匯總的方法來減輕I/O的負(fù)擔(dān),事實(shí)上它是增加了CPU的負(fù)擔(dān)。

3 SAS 關(guān)聯(lián)規(guī)則案例

1問題背景

考慮下面案例,一家商店希望通過客戶的基本購買信息了解客戶購買某商品同時(shí)還購買其他哪些商品。這就是常見的購物籃分析。

ASSOCCS數(shù)據(jù)集中1001位客戶購買商品的信息。主要有以下商品信息:1001位顧客購買了7個(gè)項(xiàng)目的商品,產(chǎn)生了7007行數(shù)據(jù)。每一行數(shù)據(jù)表示一條交易信息。


2建立初始流程圖

Clipboard Image.png

3設(shè)置輸入數(shù)據(jù)源結(jié)點(diǎn)

打開輸入數(shù)據(jù)源結(jié)點(diǎn)

從SAMPSIO庫中選擇ASSOCS數(shù)據(jù)集

點(diǎn)擊變量選項(xiàng)卡

設(shè)置customer的模型角色為id

設(shè)置time的模型角色為rejected

設(shè)置product的模型角色為target

關(guān)閉輸入數(shù)據(jù)源結(jié)點(diǎn)

Clipboard Image.png

4設(shè)置關(guān)聯(lián)規(guī)則結(jié)點(diǎn)

打開關(guān)聯(lián)規(guī)則結(jié)點(diǎn),選擇general選項(xiàng)卡,修改結(jié)點(diǎn)信息。

5理解和選擇分析模式

Clipboard Image.png

默認(rèn)的分析模式是by context,它根據(jù)輸入數(shù)據(jù)源的結(jié)點(diǎn)信息選擇合適的分析方法。如果輸入數(shù)據(jù)集包括:

一個(gè)id變量和target變量,該結(jié)點(diǎn)自動(dòng)執(zhí)行關(guān)聯(lián)分析。

一個(gè)序列變量包括使用的狀態(tài),該結(jié)點(diǎn)執(zhí)行序列分析。序列分析需要定義一個(gè)序列模型角色的變量。

另外,還可以設(shè)置最小支持度,項(xiàng)目的最大數(shù)目和最小置信度。

Clipboard Image.png

在規(guī)則選項(xiàng)卡中包含每條規(guī)則的信息。并且,還可以根據(jù)提升度,支持度和置信度的升序或者降序進(jìn)行排列。

定制化

在SAS EM中計(jì)算一個(gè)項(xiàng)與其他項(xiàng)之間的關(guān)聯(lián)規(guī)則

1創(chuàng)建一個(gè)新的數(shù)據(jù)集或者修改原數(shù)據(jù)集使它至少包含以下三個(gè)變量:

一個(gè)唯一的ID標(biāo)識(shí),一個(gè)目標(biāo)變量,一個(gè)人工變量(如果值為coke,則設(shè)置為1否則設(shè)置為2)。

2執(zhí)行序列模式發(fā)現(xiàn)。

此處以coke為例,得到轉(zhuǎn)化后的數(shù)據(jù)集

data tmp;

set sampsio.assocs;

if product = 'coke' then visit = 1 ;

else visit = 2;

run;

Clipboard Image.png

數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼

若不方便掃碼,搜微信號(hào):CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對(duì)象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺(tái)檢測(cè)極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請(qǐng)參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請(qǐng)輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請(qǐng)輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }