R語言與機器學(xué)習(xí)關(guān)聯(lián)分析_第1頁
R語言與機器學(xué)習(xí)關(guān)聯(lián)分析_第2頁
R語言與機器學(xué)習(xí)關(guān)聯(lián)分析_第3頁
R語言與機器學(xué)習(xí)關(guān)聯(lián)分析_第4頁
R語言與機器學(xué)習(xí)關(guān)聯(lián)分析_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

用R語言進行關(guān)聯(lián)分析關(guān)聯(lián)是兩個或多個變量取值之間存在的一類重要的可被發(fā)現(xiàn)的某種規(guī)律性。關(guān)聯(lián)分析目的是尋找給定數(shù)據(jù)記錄集中數(shù)據(jù)項之間隱藏的關(guān)聯(lián)關(guān)系,描述數(shù)據(jù)之間的密切度。項集這是一個集合的概念,在一籃子商品中的一件消費品即為一項(tem),則若干項的集合為項集,如{啤酒,尿布}構(gòu)成一個二元項集。關(guān)聯(lián)規(guī)則一般記為的形式,X為先決條件,Y為相應(yīng)的關(guān)聯(lián)結(jié)果,用于表示數(shù)據(jù)內(nèi)隱含的關(guān)聯(lián)性。如:,表示購買了尿布的消費者往往也會購買啤酒。關(guān)聯(lián)性強度如何,由三個概念一一支持度、置信度、提升度來控制和評價。例:有10000個消費者購買了商品,其中購買尿布1000個,購買啤酒2000個,購買面包500個,同時購買尿布和面包800個,同時購買尿布和面包100個。支持度(Support)支持度是指在所有項集中{X,Y}出現(xiàn)的可能性,即項集中同時含有X和Y的概率:該指標(biāo)作為建立強關(guān)聯(lián)規(guī)則的第一個門檻,衡量了所考察關(guān)聯(lián)規(guī)則在'量”上的多少。通過設(shè)定最小閾值(minsup),剔除'出鏡率”較低的無意義規(guī)則,保留出現(xiàn)較為頻繁的項集所隱含的規(guī)則。設(shè)定最小閾值為5%,由于{尿布,啤酒}的支持度為800/10000=8%,滿足基本輸了要求,成為頻繁項集,保留規(guī)則;而{尿布,面包}的支持度為100/10000=1%,被剔除。置信度(Confidence)置信度表示在先決條件X發(fā)生的條件下,關(guān)聯(lián)結(jié)果Y發(fā)生的概率:這是生成強關(guān)聯(lián)規(guī)則的第二個門檻,衡量了所考察的關(guān)聯(lián)規(guī)則在'質(zhì)”上的可靠性。相似的,我們需要對置信度設(shè)定最小閾值(mincon)來實現(xiàn)進一步篩選。具體的,當(dāng)設(shè)定置信度的最小閾值為70%時,置信度為800/1000=80%,而的置信度為800/2000=40%,被剔除。提升度(lift)提升度表示在含有X的條件下同時含有Y的可能性與沒有X這個條件下項集中含有Y的可能性之比:該指標(biāo)與置信度同樣衡量規(guī)則的可靠性,可以看作是置信度的一種互補指標(biāo)。R中Apriori算法算法步驟:選出滿足支持度最小閾值的所有項集,即頻繁項集;從頻繁項集中找出滿足最小置信度的所有規(guī)則。library(arules)#加載arules包click_detail=read.transactions("click_detail.txt”,format="basket”,sep=”,”,cols=c(1))#讀取txt文檔(文檔編碼為ANSI)rules<-apriori(click_detail,parameter=list(supp=0.01,conf=0.5,target="rules"))#調(diào)用apriori算法rulessetof419rulesinspect(rules[1:10])#查看前十條規(guī)則解釋library(arules):加載程序包arules,當(dāng)然如果你前面沒有下載過這個包,就要先install.packages(arules)click_detail=read.transactions("click_detail.txt",format="basket",sep=",",cols=c(1))讀入數(shù)據(jù)read.transactions(file,format=c("basket","single"),sep=NULL,cols=NULL,rm.duplicates=FALSE,encoding="unknown")file:文件名,對應(yīng)click_detail中的“click_detail.txt”format:文件格式,可以有兩種,分別為“basket”,“single”,click_detail.txt中用的是basket。basket:basket就是籃子,一個顧客買的東西都放到同一個籃子,所有顧客的transactions就是一個個籃子的組合結(jié)果。如下形式,每條交易都是獨立的。文件形式:item1,item2item1item2,item3讀入后:items{item1,item2}{item1}{item2,item3}single:single的意思,顧名思義,就是單獨的交易,簡單說,交易記錄為:顧客1買了產(chǎn)品1,顧客1買了產(chǎn)品2,顧客2買了產(chǎn)品3......(產(chǎn)品1,產(chǎn)品2,產(chǎn)品3中可以是單個產(chǎn)品,也可以是多個產(chǎn)品),如下形式:trans1item1trans2item1trans2item2讀入后:itemstransactionID{item1}trans1{item1,item2}trans2sep:文件中數(shù)據(jù)是怎么被分隔的,默認為空格,click_detail里面用逗號分隔cols:對basket,col=1,表示第一列是數(shù)據(jù)的transactionids(交易號),如果col=NULL,則表示數(shù)據(jù)里面沒有交易號這一列;對single,col=c(1,2)表示第一列是transactionids,第二列是itemidsrm.duplicates:是否移除重復(fù)項,默認為FALSEencoding:寫到這里研究了encoding是什么意思,發(fā)現(xiàn)前面txt可以不是”ANSI”類型,如果TXT是“UTF-8”,寫encoding=”UTF-8”,就OK了.3)rules<-apriori(click_detail,parameter=list(supp=0.01,conf=0.5,target="rules")):apriori函數(shù)apriori(data,parameter=NULL,appearance=NULL,control=NULL)data:數(shù)據(jù)parameter:設(shè)置參數(shù),默認情況下parameter=list(supp=0.1,conf=0.8,maxlen=10,minlen=1,target="rules”)supp:支持度(support)conf:置信度(confidence)maxlen,minlen:每個項集所含項數(shù)的最大最小值target:"rules”或“frequentitemsets”(輸出關(guān)聯(lián)規(guī)則/頻繁項集)apperence:對先決條件X(lhs),關(guān)聯(lián)結(jié)果Y(rhs)中具體包含哪些項進行限制,如:設(shè)置lhs=beer,將僅輸出lhs含有beer這一項的關(guān)聯(lián)規(guī)則。默認情況下,所有項都將無限制出現(xiàn)。control:控制函數(shù)性能,如可以設(shè)定對項集進行升序sort=1或降序sort=-1排序,是否向使用者報告進程(verbose=F/T)補充通過支持度控制:rules.sorted_sup=sort(rules,by=”support”)通過置信度控制:rules.sorted_con=sort(rules,by=”confidence”)通過提升度控制:rules.sorted_lift=sort(rules,by=”lift”)Apriori算法兩步法:頻繁項集的產(chǎn)生:找出所有滿足最小支持度閾值的項集,稱為頻繁項集;規(guī)則的產(chǎn)生:對于每一個頻繁項集l,找出其中所有的非空子集;然后,對于每一個這樣的子集a,如果support(l)與support(a)的比值大于最小可信度,則存在規(guī)則a==>(l-a)。頻繁項集產(chǎn)生所需要的計算開銷遠大于規(guī)則產(chǎn)生所需的計算開銷頻繁項集的產(chǎn)生幾個概念:1,一個包含K個項的數(shù)據(jù)集,可能產(chǎn)生2W個候選集

頻繁項集產(chǎn)生2,先驗原理:如果一個項集是頻繁的,則它的所有子集也是頻繁的(理解了頻繁項集的意義,這句話很容易理解的);相反,如果一個項集是非頻繁的,則它所有子集也一定是非頻繁的。

3基于支持度(SUPPORT)度量的一個關(guān)鍵性質(zhì):一個項集的支持度不會超過它的子集的支持度(很好理解,支持度是共同發(fā)生的概率,假設(shè)項集{A,B,C},{A,B}是它的一個自己,A,B,C同時發(fā)生的概率肯定不會超過A,B同時發(fā)生的概率)。上面這條規(guī)則就是Apriori中使用到的,如下圖,當(dāng)尋找頻繁項集時,從上往下掃描,當(dāng)遇到一個項集是非頻繁項集(該項集支持度小于Minsup),那么它下面的項集肯定就是非頻繁項集,這一部分就剪枝掉了。一個例子(百度到的一個PPT上的):MinimumSupport=3TID1MilkMinimumSupport=3TID1Milk2Biearl, Beer?Eggs3Milk.Diaper,BeerCoke4Breid,Mi]khDinper,Bee5Bienl,Milk,Diapei^€"okePairs(2-itemsets)1tense'Count(Bread,MiIk)3{Breadier}并偈lai|(Bread,Diaper}31M||k,Beer)2(MiIk,Diaper}{Beer,Diaper}33(NoneedtogeneratecandidatesinvolvingCokeorEggs)ItIt總msetCount(Bread.Milk,Di^per]3Ifeverysubsetisoonsidered,歸+6C2+%=41Withsupport-basedpruning^6+6+1=13當(dāng)我在理解頻繁項集的意義時,在R上簡單的復(fù)現(xiàn)了這個例子,這里采用了eclat算法,跟apriori應(yīng)該差不多:代碼:item<-list(c("bread","milk"),c("bread","diaper","beer","eggs"),c("milk","diaper","beer","coke"),c("bread","milk","diaper","beer"),c("bread","milk","diaper","coke"))names(item)<-paste("tr”,c(1:5),sep="")itemtrans<-as(item,"transactions")#將List轉(zhuǎn)為transactions型rules=eclat(trans,parameter=list(supp=0.6,target="frequentitemsets"),control=list(sort=1))inspect(rules)#查看頻繁項集運行后結(jié)果:>inspect(rules)itemssupport1{beer,diaper}0.62{diaper,milk}0.63{bread,diaper}0.64{bread,milk}0.65{beer} 0.66{milk} 0.87{bread}0.88{diaper}0.8以上就是該例子的所有頻繁項

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論