R語言數(shù)據(jù)分析與挖掘 課件全套 (陳維)第1-7章 初識(shí)數(shù)據(jù)分析與R語言-模型評(píng)估_第1頁
R語言數(shù)據(jù)分析與挖掘 課件全套 (陳維)第1-7章 初識(shí)數(shù)據(jù)分析與R語言-模型評(píng)估_第2頁
R語言數(shù)據(jù)分析與挖掘 課件全套 (陳維)第1-7章 初識(shí)數(shù)據(jù)分析與R語言-模型評(píng)估_第3頁
R語言數(shù)據(jù)分析與挖掘 課件全套 (陳維)第1-7章 初識(shí)數(shù)據(jù)分析與R語言-模型評(píng)估_第4頁
R語言數(shù)據(jù)分析與挖掘 課件全套 (陳維)第1-7章 初識(shí)數(shù)據(jù)分析與R語言-模型評(píng)估_第5頁
已閱讀5頁,還剩163頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第1章初識(shí)數(shù)據(jù)分析與R語言“文獻(xiàn)篩選”的故事

在一項(xiàng)關(guān)于嬰兒和兒童殘疾的研 究中,美國Tufts醫(yī)學(xué)中心篩選 了約33,000篇摘要 盡管Tufts醫(yī)學(xué)中心的專家效率 很高,對(duì)每篇摘要只需30秒鐘,但該工作仍花費(fèi)了250小時(shí)每項(xiàng)新的研究都要重復(fù)

這個(gè)麻煩的過程!需篩選的文章數(shù)在不斷顯著增長!為什么學(xué)數(shù)據(jù)分析“文獻(xiàn)篩選”的故事為了降低昂貴的成本,Tufts醫(yī)學(xué)中心引入了機(jī)器學(xué)習(xí)技術(shù)邀請(qǐng)專家閱讀少量摘要,標(biāo)記為“有關(guān)”或“無關(guān)”分類模型對(duì)是否“有關(guān)”進(jìn)行預(yù)測(cè)人類專家只需閱讀50篇摘要,系統(tǒng)的自動(dòng)篩選精度就達(dá)到93%人類專家閱讀1,000篇摘要,則系統(tǒng)的自動(dòng)篩選敏感度達(dá)到95%(人類專家以前需閱讀33,000篇摘要才能獲得此效果)為什么學(xué)數(shù)據(jù)分析色澤根蒂敲聲好瓜青綠蜷縮濁響是烏黑蜷縮濁響是青綠硬挺清脆否烏黑稍蜷沉悶否決策樹,神經(jīng)網(wǎng)絡(luò),支持向量機(jī),

Boosting,貝葉斯網(wǎng),……模型訓(xùn)練數(shù)據(jù)(label)訓(xùn)練

新數(shù)據(jù)樣本(淺白,蜷縮,濁響,?)

?=是類別標(biāo)記 未知典型的數(shù)據(jù)挖掘過程

使用學(xué)習(xí)算法(learningalgorithm)

類別標(biāo)記為什么學(xué)數(shù)據(jù)分析R是什么R是什么2014年數(shù)據(jù)分析常用語言排行榜1.1為什么學(xué)習(xí)R語言第一章緒論R語言主要優(yōu)勢(shì)(1)作圖美觀,完全免費(fèi)為什么要學(xué)R(2)算法覆蓋廣,軟件擴(kuò)展易

作為統(tǒng)計(jì)分析工具,R語言幾乎覆蓋整個(gè)統(tǒng)計(jì)領(lǐng)域的前沿算法。

截止2017年2月25日,CRAN(ComprehensiveRArchiveNetwork)上已經(jīng)有10162個(gè)可以獲取的R擴(kuò)展包,并且以每個(gè)月200多個(gè)包的速度發(fā)布,內(nèi)容涉及各行各業(yè),可以適用于各種復(fù)雜的統(tǒng)計(jì),如:貝葉斯推斷、分類方法、計(jì)量經(jīng)濟(jì)學(xué)、生態(tài)學(xué)、金融學(xué)、遺傳學(xué)、機(jī)器學(xué)習(xí)、穩(wěn)健統(tǒng)計(jì)、空間統(tǒng)計(jì)、生存分析、時(shí)間序列等多個(gè)方面。數(shù)千個(gè)R包,上萬種算法,開發(fā)者都能找到可直接調(diào)用的函數(shù)實(shí)現(xiàn)。為什么要學(xué)R(3)算法覆蓋廣,軟件擴(kuò)展易為什么要學(xué)R

作為一個(gè)開源軟件,R背后有一個(gè)強(qiáng)大的社區(qū)和大量的開放源碼支持,獲取幫助非常容易。

比如國外比較活躍的社區(qū)有GitHub和StackOverflow等,通常R包的開發(fā)者會(huì)先將代碼放到GitHub,接受世界各地的使用者提出問題,然后修改代碼,等代碼成熟后再放到CRAN上發(fā)布。

國內(nèi)最活躍的R社區(qū)就屬統(tǒng)計(jì)之都以及統(tǒng)計(jì)之都旗下的COS論壇了。為什么要學(xué)R(4)強(qiáng)大的社區(qū)支持

Python雖然也支持命令模式,但是相對(duì)來說,更偏向于流程控制語句,也就是可以寫一堆語句,然后執(zhí)行。R本身基本上不需要用到流程控制(當(dāng)然,它也支持流程控制)。(5)非過程模式Part/

01軟件下載與安裝1.1.1下載與安裝進(jìn)入R官方下載網(wǎng)址/。2.選擇相應(yīng)的操作系統(tǒng),如果使用Windows系統(tǒng),可以點(diǎn)擊“DownloadRforWindows”。3.選擇安裝風(fēng)格,建議選擇基本安裝。

4.點(diǎn)擊“Download”下載安裝程序。5.下載好后雙擊exe文件進(jìn)行安裝,安裝好后在“開始”菜單里可以找到R程序,點(diǎn)擊即可運(yùn)行。2.RGUI在Windows的“程序”選項(xiàng)中找到相應(yīng)的R程序,例如“Rx643.4.3”,點(diǎn)擊執(zhí)行1.命令行方式同時(shí)按下鍵盤上的

和R,在Windows的命令終端的提示符后上敲入R并且回車Rversion3.4.3(2017-11-30)--"Kite-EatingTree"Copyright(C)2017TheRFoundationforStatisticalComputingPlatform:x86_64-w64-mingw32/x64(64-bit)

R

'license()''licence()'

R.'contributors()''citation()'RR

1.1.2下載與安裝Part/

02包的安裝與加載包是R函數(shù)、數(shù)據(jù)、預(yù)編譯代碼以一種定義完善的格式組成的集合。R中的包存儲(chǔ)在計(jì)算機(jī)上名為library的目錄下,使用函數(shù).libPaths()可以查看該文件夾在計(jì)算機(jī)中的具體路徑,函數(shù)library()和search()則可分別顯示已安裝和加載的包列表。R已經(jīng)預(yù)裝了一組標(biāo)準(zhǔn)的包,其他包則可以通過下載安裝來使用。目前CRAN上提供了上萬個(gè)可使用的包。包的安裝最受歡迎的5個(gè)包分別是:dplyr:一種數(shù)據(jù)操作的語法devtools:一組用于包開發(fā)的工具foreign:讀取用其他軟件如Minitab、S、SAS、SPSS和Stata等存儲(chǔ)的數(shù)據(jù)cluster:聚類分析方法ggplot2:R語言圖形工具包的安裝不添加參數(shù)執(zhí)行install.packages()將顯示一個(gè)CRAN的鏡像站點(diǎn)列表,選擇相應(yīng)的鏡像(通常選擇離自己最近的節(jié)點(diǎn))后再選擇要安裝的包名即可可直接將包名作為參數(shù)傳遞給函數(shù)install.packages()進(jìn)行下載安裝>install.packages("stringr") #安裝一個(gè)用于字符串處理的包

包的安裝>str_length("HelloR!")>[1]8載入之后就可以直接調(diào)用包中定義的函數(shù)包安裝后還需要載入到內(nèi)存才能使用。以stringr包為例,執(zhí)行l(wèi)ibrary("stringr")可將對(duì)應(yīng)的包載入>library("stringr")#載入字符串處理包stringr

包的加載與使用>str_length("HelloR!")>[1]8載入之后就可以直接調(diào)用包中定義的函數(shù)包安裝后還需要載入到內(nèi)存才能使用。以stringr包為例,執(zhí)行l(wèi)ibrary("stringr")可將對(duì)應(yīng)的包載入>library("stringr")#載入字符串處理包stringr

包的加載與使用如果希望使用包中的函數(shù),則需要明確指定該函數(shù),調(diào)用“包名::函數(shù)名”自定義一個(gè)同名函數(shù),就會(huì)觀察到命名沖突的現(xiàn)象>str_length<-function(x)return+("Givemeasecond.Letmecounthowlong+thissentenceis!")>#自定義函數(shù)str_length與包中函數(shù)同名>str_length("HelloR!")[1]"Givemeasecond.Letmecounthowlongthissentenceis!">stringr::str_length("HelloR!")#現(xiàn)在使用的是得到字符串長度的函數(shù)[1]8命名沖突與解決Part/

03應(yīng)用R實(shí)現(xiàn)數(shù)據(jù)操作最基本的圖形:散點(diǎn)圖x<-1:20#x坐標(biāo)y<-x^2#y坐標(biāo)plot(x,y,main="y=x^2")使用type參數(shù),改變繪圖類型。例如:繪制點(diǎn)線圖plot(x,y,main="y=x^2",type="b")

每次調(diào)用plot(),現(xiàn)有的圖形窗口都會(huì)被新的圖形替代。使用下面的命令可以打開新的圖形窗口進(jìn)行繪圖。在Linux系統(tǒng)下,執(zhí)行x11();在Mac系統(tǒng)下,執(zhí)行macintosh();在Windows下,執(zhí)行windows()。創(chuàng)建基礎(chǔ)圖形可以通過修改一些圖形參數(shù)選項(xiàng)來自定義一幅圖形的多個(gè)特征,如字體、顏色、坐標(biāo)軸、和標(biāo)題等。opar<-par(no.readonly=T)par(lty=2,pch=15) x<-1:20y<-x^2plot(x,y,type="b")par(opar)直接給plot函數(shù)設(shè)置繪圖參數(shù)也能實(shí)現(xiàn)同樣的效果,但只是對(duì)單幅圖片生效。

plot(x,y,type="b",lty=2,pch=15)符號(hào)和線條參數(shù)說明pch指定繪制點(diǎn)時(shí)使用的符號(hào),參數(shù)數(shù)值及含義詳見右圖cex指定符號(hào)的大小。cex是一個(gè)數(shù)值,表示繪圖符號(hào)相對(duì)于默認(rèn)大小的縮放倍數(shù)。默認(rèn)大小為1,1.5表示放大為默認(rèn)值的1.5倍,0.5表示縮小為默認(rèn)值的50%,等等lty指定線條類型,參數(shù)數(shù)值詳見右圖lwd指定線條寬度。lwd是以默認(rèn)值的相對(duì)大小來表示的(默認(rèn)值為1)。例如,lwd=2將生成一條兩倍于默認(rèn)寬度的線條符號(hào)和線條使用不同的顏色參數(shù)個(gè)性化圖形各部位的色彩??梢赃x擇通過顏色名稱、十六進(jìn)制的顏色值、RGB值或HSV值來指定顏色。col="white"、col="#FFFFFF"、col=rgb(1,1,1)和col=hsv(0,0,1)都是表示白色的等價(jià)方式。使用調(diào)色板中的顏色索引給col參數(shù)賦值也可以使用相應(yīng)的色彩。默認(rèn)調(diào)色板中的顏色向量為:>palette()[1]"black""red""green3""blue""cyan""magenta""yellow""gray"右邊是常見的繪圖函數(shù)顏色參數(shù)參數(shù)說明col繪圖顏色col.axis坐標(biāo)軸刻度顏色col.lab坐標(biāo)軸名稱顏色col.main圖形標(biāo)題顏色col.sub副標(biāo)題顏色fg圖形前景色bf圖形背景色色彩使用調(diào)色板中顏色索引即可使用相應(yīng)的顏色,例如:>pie(rep(1,length(pal)),labels=sprintf("%d(%s)",seq_along(pal),pal),col=pal)rainbow(n)函數(shù)可以從光譜色中均勻地選取n種顏色組成向量。>palette(rainbow(7))>pal<-palette()>pie(rep(1,length(pal)),labels=sprintf("%d(%s)",seq_along(pal),pal),col=pal)調(diào)色板恢復(fù)為默認(rèn)>palette("default")色彩x<-1:20y<-x^2plot(x,y,ann=FALSE,col="tomato")title(main="標(biāo)題",col.main="red",sub="副標(biāo)題",col.sub="brown",xlab="x坐標(biāo)軸",ylab="y坐標(biāo)軸",col.lab="navy",cex.main=2,cex.sub=1.25,font.sub=3)標(biāo)簽與標(biāo)題文字設(shè)置外觀與字體。

參數(shù)說明cex基礎(chǔ)縮放倍數(shù)cex.axis坐標(biāo)軸刻度的縮放倍數(shù)cex.lab坐標(biāo)軸標(biāo)題的縮放倍數(shù)cex.main圖形標(biāo)題的縮放倍數(shù)cex.sub圖形副標(biāo)題的縮放倍數(shù)font字體樣式。1常規(guī),2加粗,3加斜,4加粗加斜,5符號(hào)字體font.axis坐標(biāo)軸刻度的字體樣式font.lab/main/sub坐標(biāo)軸名稱/標(biāo)題/副標(biāo)題名稱字體樣式ps字體磅值。文字的最終大小為cex*psfamily字族。例如serif襯線,sans無襯線,mono等寬在表達(dá)式中??梢允褂妙愃朴赥ex的句法來生成數(shù)學(xué)符號(hào)、運(yùn)算、公式和希臘字母。標(biāo)簽與標(biāo)題文字>data(Titanic)>mat<-apply(Titanic,4,sum);mat

NoYes1490711>barplot(mat,main="存活情況",names=c("遇難","存活"))barplot(height,width=1,space=NULL,names.arg=NULL,beside=FALSE,horiz=FALSE,density=NULL,angle=45,...)Titanic是R自帶的一個(gè)數(shù)據(jù)集。變量名取值說明Class1st,2nd,3rd,CrewSexMale,FemaleAgeChild,AdultSurvivedNo,Yes柱狀圖pie()函數(shù)用來創(chuàng)建餅狀圖,基本用法為pie(x,labels=names(x),radius=0.8,clockwise=FALSE,...)用餅圖來查看泰坦尼克號(hào)上不同艙位的乘客和船員的比例>pie(apply(Titanic,1,sum),c("一等艙","二等艙","三等艙","船員"))餅圖直方圖使用離散化的方法對(duì)變量分組統(tǒng)計(jì)。hist(x,freq=TRUE,breaks=, right=TRUE,...)

>x<-rnorm(1000,mean=0,sd=1)>par(mfrow=c(1,2)) >hist(x)>hist(x,freq=F) >lines(density(x),lwd=2)直方圖箱形圖(box-plot)又稱為盒須圖、盒式圖或箱線圖,是一種用作顯示一組數(shù)據(jù)分散情況的統(tǒng)計(jì)圖,因其形狀如同箱子而得名。箱形圖通過繪制連續(xù)型變量的五數(shù)總括,即最小值、下四分位數(shù)(第25百分位數(shù))、中位數(shù)(第50百分位數(shù))、上四分位數(shù)(第75百分位數(shù))以及最大值,描述了連續(xù)型變量的分布信息。boxplot()函數(shù)的一般形式:boxplot(x,...,range=1.5,width=NULL,outline=TRUE)對(duì)1000個(gè)正態(tài)分布的隨機(jī)變量繪制箱形圖>fig<-boxplot(x,main="箱形圖")>paras<-c("最小值","下四分位數(shù)","中位數(shù)", "上四分位數(shù)","最大值")>text(1.25,fig$stats,paras,pos=4)用圓圈標(biāo)出的點(diǎn)為離群點(diǎn)的值。把第一四分位數(shù)記為Q1,第三四分位數(shù)記為Q3,如果一個(gè)數(shù)值x滿足x<Q1–1.5(Q3–Q1),或x>Q3+1.5(Q3–Q1),那么就被認(rèn)為是離群點(diǎn)。箱型圖謝謝觀看第2章回歸分析Part/

01簡單線性回歸分析

簡單線性回歸>eruption.lm<-lm(eruptions~waiting,data=faithful)>coeffs<-coefficients(eruption.lm)>coeffs#一元線性回歸的參數(shù):截距、斜率(Intercept)waiting-1.874015990.07562795>plot(eruptions~waiting,faithful,#繪圖變量 col="blue",#繪圖參數(shù) main="老忠實(shí)線性回歸結(jié)果",#標(biāo)題 xlab="等待時(shí)間",#x軸標(biāo)簽 ylab="持續(xù)噴發(fā)時(shí)間") #y軸標(biāo)簽>fit<-lm(eruptions~waiting,data=faithful)>abline(fit,col="red")#畫出回歸模型lm參數(shù):因變量eruptions,自變量waiting,數(shù)據(jù)集faithful。使用coefficients()來顯示所得到的回歸方程中的系數(shù)。簡單線性回歸>waiting<-80#等待時(shí)間>duration<-coeffs[1]+coeffs[2]*waiting>duration(Intercept)4.1762>newdata<-data.frame(waiting=c(80,50))#封裝參數(shù)>predict(eruption.lm,newdata) 124.1762201.907381使用模型進(jìn)行預(yù)測(cè)。簡單線性回歸

簡單線性回歸

簡單線性回歸

簡單線性回歸qq圖可用于直觀驗(yàn)證一組數(shù)據(jù)是否來自于某個(gè)給定的分布,或者驗(yàn)證兩組數(shù)據(jù)是否來自同一分布。根據(jù)所討論的分布計(jì)算出每個(gè)數(shù)據(jù)點(diǎn)的理論預(yù)期值,如果數(shù)據(jù)確實(shí)遵循假定的分布,那么在qq圖上的點(diǎn)將大致散落在一條直線上。正態(tài)概率圖就是一種把數(shù)據(jù)集與正態(tài)分布進(jìn)行比較的圖形化工具。例如,可以比較線性回歸模型的標(biāo)準(zhǔn)化殘差來檢驗(yàn)殘差是否真正地符合正態(tài)分布規(guī)律。>qqnorm(eruption.stdres,ylab="標(biāo)準(zhǔn)化殘差",xlab="正態(tài)得分",main="老忠實(shí)噴發(fā)持續(xù)時(shí)間")>qqline(eruption.stdres)

簡單線性回歸Part/

02多項(xiàng)式回歸分析

指標(biāo)名說明crim按鎮(zhèn)分布的人均犯罪率zn居住區(qū)域地塊超過25,000平方英尺的比例indus每個(gè)鎮(zhèn)中非零售商業(yè)用地的比例chas與查爾斯河有關(guān)的啞數(shù)據(jù)(1表示河流范圍,0為其他)nox一氧化氮濃度(partsper10million)rm每戶平均房間數(shù)age1940年前修建的戶主居住的單位數(shù)dis到5個(gè)波士頓就業(yè)中心的加權(quán)距離rad到達(dá)放射狀高速公路方便程度的指數(shù)tax每萬美元的全額房產(chǎn)稅率ptratio每個(gè)鎮(zhèn)的小學(xué)生師比

b1000(B-0.63)^2其中B是每個(gè)鎮(zhèn)的黑人比例lstat低收入人口比例medv一千美元為單位的戶主居住房屋的價(jià)格中位值多項(xiàng)式回歸分析把medv當(dāng)作因變量,而把其余的指標(biāo)作為自變量,可以建立起一個(gè)多元線性回歸模型如下:使用lm()函數(shù)計(jì)算得出模型并保存在變量Boston.lm中>Boston.lm<-lm(medv~.,data=BostonHousing)多元線性回歸的判定系數(shù)>summary(Boston.lm)$r.squared[1]0.7406427

多項(xiàng)式回歸分析

多項(xiàng)式回歸分析Part/

03在SLID數(shù)據(jù)集上研究線性回歸案例操作見課本謝謝觀看第3章關(guān)聯(lián)分析Part/

01關(guān)聯(lián)分析的準(zhǔn)備工作以對(duì)消費(fèi)者的建模為例,舉一些場(chǎng)景下的常用算法對(duì)應(yīng):劃分消費(fèi)者群體:聚類,分類;購物籃分析:相關(guān),聚類;購買額預(yù)測(cè):回歸,時(shí)間序列;滿意度調(diào)查:回歸,聚類,分類;什么是關(guān)聯(lián)分析數(shù)據(jù)挖掘主要模型:分類、聚類、預(yù)測(cè)及關(guān)聯(lián)什么是關(guān)聯(lián)分析什么是關(guān)聯(lián)分析什么是關(guān)聯(lián)分析

關(guān)聯(lián)規(guī)則算法常用來描述數(shù)據(jù)之間的相關(guān)關(guān)系,關(guān)聯(lián)規(guī)則模式屬于描述型模式,挖掘關(guān)聯(lián)規(guī)則的算法和聚類算法類似,屬于無監(jiān)督學(xué)習(xí)的方法。什么是關(guān)聯(lián)分析

關(guān)聯(lián)規(guī)則就是由關(guān)聯(lián)的規(guī)則,它的定義是:兩個(gè)不相交的非空集合X、Y,如果由X->Y,就說X->Y是一條關(guān)聯(lián)規(guī)則。其中X表示的是兩個(gè)互斥事件,X稱為前因(antecedent),Y稱為后果(consequent),上述關(guān)聯(lián)規(guī)則表示X會(huì)導(dǎo)致Y。關(guān)聯(lián)規(guī)則的強(qiáng)度用支持度(support)和置信度(confidence)來描述。在實(shí)際應(yīng)用中,商品在銷售中存在一定的關(guān)聯(lián)性。如果大量的數(shù)據(jù)表明,消費(fèi)者購買A產(chǎn)品的同時(shí)也會(huì)同時(shí)購買B產(chǎn)品,那么A和B之間存在關(guān)聯(lián)性,記為A->B。例如,在超市中,常常會(huì)看到兩個(gè)商品的捆綁銷售,很有可能就是關(guān)聯(lián)分析的結(jié)果。什么是關(guān)聯(lián)分析什么是關(guān)聯(lián)分析時(shí)間(Time)商品(Items)T1{牛奶,面包}T2{面包,尿布,啤酒,雞蛋}T3{牛奶,尿布,啤酒,可樂}T4{面包,牛奶,尿布,啤酒}T5{面包,牛奶,尿布,可樂}Part/

02Apriori規(guī)則1使用Apriori規(guī)則完成關(guān)聯(lián)挖掘Apriori是廣為人知的關(guān)聯(lián)規(guī)則挖掘算法,它依靠逐層的廣度優(yōu)先策略生成候選項(xiàng)集,首先逐層找到所有的頻繁項(xiàng)集(項(xiàng)集支持度大于給定值),例如先找到1-頻繁項(xiàng)集,然后基于1-頻繁項(xiàng)集找到2-頻繁項(xiàng)集,依次遞歸,基于k-頻繁項(xiàng)集生成新的k+1頻繁項(xiàng)集,直至找不到新的頻繁項(xiàng)集為止。Apriori原理(1)尋找所有不低于最小支持度的項(xiàng)集(頻繁項(xiàng)集);(2)使用頻繁項(xiàng)集生成規(guī)則。PS:

支持度:數(shù)據(jù)集中包含該項(xiàng)集的記錄所占的比例;

頻繁項(xiàng)集:支持度大于最小支持度的項(xiàng)集。對(duì)數(shù)據(jù)集中的每條交易記錄tran和每個(gè)候選項(xiàng)集can:

檢查一下can是否是tran的子集:

如果是,則增加can的計(jì)數(shù)值

對(duì)每個(gè)候選項(xiàng)集:

如果其支持度不低于最小值,則保留該項(xiàng)集返回所有頻繁項(xiàng)集列表生成候選項(xiàng)集工作流程發(fā)現(xiàn)關(guān)聯(lián)規(guī)則當(dāng)集合中項(xiàng)的個(gè)數(shù)大于0時(shí):

構(gòu)建一個(gè)k個(gè)項(xiàng)組成的候選項(xiàng)集的列表

檢查數(shù)據(jù)以確認(rèn)每個(gè)項(xiàng)集都是頻繁的

保留頻繁項(xiàng)集并構(gòu)建k+1項(xiàng)組成的候選項(xiàng)集的列表規(guī)則原則2去掉冗余規(guī)則要去掉冗余規(guī)則,首先應(yīng)找到冗余的規(guī)則。我們可以先基于提升度對(duì)規(guī)則排序,再調(diào)用is.subset函數(shù)找到已排序規(guī)則的子集,is.subset函數(shù)會(huì)產(chǎn)生一個(gè)itemMatrix對(duì)象。可以將下三角矩陣設(shè)置為NA,然后計(jì)算矩陣的colSums值,如果該值大于等于1,則意味著該指定規(guī)則是冗余的。當(dāng)我們找到這些冗余規(guī)則后,就可以從已排序的規(guī)則中去掉它們。最后,再調(diào)用inspect函數(shù)驗(yàn)證這些冗余規(guī)則。3關(guān)聯(lián)規(guī)則的可視化除了可以以文本形式展示關(guān)聯(lián)規(guī)則外,我們還可以對(duì)規(guī)則進(jìn)行可視化,以便更輕松地發(fā)現(xiàn)項(xiàng)集間的關(guān)聯(lián)。接下來,我們將介紹如何使用arulesViz包實(shí)現(xiàn)關(guān)聯(lián)規(guī)則的可視化。Part/

03Eclat挖掘使用Eclat挖掘頻繁項(xiàng)集Apriori算法使用水平數(shù)據(jù)結(jié)構(gòu)來存放事務(wù),Eclat則使用垂直數(shù)據(jù)結(jié)構(gòu)來存放每個(gè)事務(wù)的ID(tid)列表,在計(jì)算K+1項(xiàng)集的支持度時(shí),Eclat算法只需要計(jì)算兩個(gè)K項(xiàng)集的tid表的交集即可。Eclat算法也可從頻繁項(xiàng)集中生成關(guān)聯(lián)規(guī)則。使用cspade挖掘頻繁時(shí)序模式序列模式挖掘常用方法是使用SPADE算法,該算法是時(shí)間序列頻繁模式挖掘中的一種,使用垂直數(shù)據(jù)結(jié)構(gòu)存放ID列表,數(shù)據(jù)庫中每個(gè)輸入序列都擁有一個(gè)SID值,而事件則擁有各自的EID值。SPADE算法采用Apriori算法生成候選項(xiàng)集的思想,同時(shí)對(duì)ID表求交集,從(n-1)序列生成n序列的子集。如果某序列的出現(xiàn)次數(shù)大于給定的最小支持度,則認(rèn)為其足夠頻繁,當(dāng)算法再也找不到新的序列時(shí)結(jié)束挖掘。第4章聚類分析“方以類聚,物以群分”。機(jī)器學(xué)習(xí)與基于規(guī)則的推理不同,是一個(gè)以數(shù)據(jù)為基礎(chǔ)的歸納學(xué)習(xí)模式和規(guī)律的過程。分類和聚類是兩種典型的機(jī)器學(xué)習(xí)應(yīng)用。在分類時(shí),已知類別的個(gè)數(shù),每一個(gè)類別分配了一個(gè)唯一的標(biāo)簽,分類就是根據(jù)帶標(biāo)簽的樣本學(xué)習(xí)得到一個(gè)分類器,再對(duì)一個(gè)不帶標(biāo)簽的測(cè)試對(duì)象按照應(yīng)屬類別為它加上標(biāo)簽的過程。與分類不同,聚類的樣本數(shù)據(jù)不帶有標(biāo)簽,根據(jù)樣本之間的相似程度來將樣本分為幾個(gè)類別(或者叫簇),并且期望在每個(gè)類別的內(nèi)部,樣本之間的相似程度盡可能大,而不同在類別之間,樣本的相似程度盡可能小。樣本可以表示成樣本空間中的點(diǎn),二距離代表了點(diǎn)之間的(不)相似程度。什么是聚類分析什么是聚類分析Part/

01層次聚類距離的含義:鳶尾花數(shù)據(jù)集>

data(iris)>

str(iris)'data.frame':

150

obs.

of

5

variables:

$

Sepal.Length:

num

5.1

4.9

4.7

4.6

5

5.4

4.6

5

4.4

4.9

...

$

Sepal.Width

:

num

3.5

3

3.2

3.1

3.6

3.9

3.4

3.4

2.9

3.1

...

$

Petal.Length:

num

1.4

1.4

1.3

1.5

1.4

1.7

1.4

1.5

1.4

1.5

...

$

Petal.Width

:

num

0.2

0.2

0.2

0.2

0.2

0.4

0.3

0.2

0.2

0.1

...

$

Species

:

Factor

w/

3

levels

"setosa","versicolor",..:

1

1

1

1

1

1

1

1

1

1

...R內(nèi)置iris數(shù)據(jù)集共150個(gè)樣本,特征向量為x=(花萼長度,花萼寬度,花瓣長度,花瓣寬度)。類別標(biāo)簽為花的品種,分別是setosa、versicolor和virginica三種。什么是層次聚類ggplot畫圖>

library

(ggplot2)

#加載包含ggplot

()的包>

ggplot

(data

=

iris)

+

geom_point(aes(x

=

Petal.Length,

y

=

Petal.Width,

color

=

Species

,

shape

=

Species

),

position

=

"jitter")150個(gè)樣本中,每個(gè)類別各有50個(gè)樣本,用不同的顏色表示。可以看出,不同類別的樣本距離較遠(yuǎn),同一類別的樣本彼此接近。層次聚類選擇合適的特征與距離度量>

ggplot

(data

=

iris

)

+

geom_point

(aes(x

=

Sepal.Length,

y

=

Sepal.Width,color

=

Species

,

shape

=

Species

),

position

=

"jitter")再以花萼的長度(Sepal.Length)和寬度(Sepal.Width)為特征來繪制散點(diǎn)圖。在setosa與另外兩個(gè)品種之間依然存在有明顯的分界,versicolor與virginica之間不僅沒有明顯的分界線,而且混雜在一起難以區(qū)別。層次聚類樣本之間的距離距離的定義要滿足下列三個(gè)條件:非負(fù)、對(duì)稱和三角不等式。閔可夫斯基距離:假設(shè)n維實(shí)特征空間中樣本,距離當(dāng)p=1時(shí),稱為曼哈頓距離。當(dāng)p=2時(shí),稱為歐幾里得距離。R語言提供了函數(shù)dist()

計(jì)算數(shù)據(jù)集中樣本點(diǎn)與點(diǎn)的距離。層次聚類歸一化處理>

x

<-

iris[,

-5]

#只使用數(shù)值屬性>

x

<-

scale(x)

#標(biāo)準(zhǔn)化>

dist.iris

<-

dist

(x,

method

=

"euclidean")

#計(jì)算距離矩陣>

dmat

<-

as.matrix

(dist.iris)

#調(diào)整為矩陣格式>

round

(dmat[1:5,1:5],

2)

#保留兩位小數(shù)

1

2

3

4

51

0.00

1.17

0.84

1.10

0.26有時(shí)不同維度上的特征具有不同的量綱,即使量綱相同,取值范圍也可能由很大的差異。歸一化處理:把取值變?yōu)?到1之間的數(shù)值。層次聚類樣本集合之間的距離樣本子集之間的距離存在不同的類別之間的距離定義方法。注意:對(duì)于類別之間距離的不同定義,會(huì)產(chǎn)生不同的聚類效果。下面列出了幾種最常見的類之間距離定義。

單聯(lián)動(dòng):一個(gè)類中的所有樣本點(diǎn)與另一個(gè)類中的所有樣本點(diǎn)的距離的最小值。

全聯(lián)動(dòng):一個(gè)類中的所有樣本點(diǎn)與另一個(gè)類中的所有樣本點(diǎn)的距離的最大值。

平均聯(lián)動(dòng):一個(gè)類中的所有樣本點(diǎn)與另一個(gè)類中的所有樣本點(diǎn)的距離的平均值。

質(zhì)心法:一個(gè)類中的質(zhì)心到另一個(gè)類的質(zhì)心的距離。

Ward法:兩個(gè)類之間的離差平方和。層次聚類Part/

02K均值聚類knn分類距離表示了數(shù)據(jù)樣本在特征空間的接近程度,相似的樣本具有相同的類別??梢愿鶕?jù)距離度量來尋找在空間中與未知樣本最為接近的帶有類別標(biāo)簽的樣本,用它們給新數(shù)據(jù)分類。

在R語言的class包中提供了knn()函數(shù),用已知數(shù)據(jù)中的k個(gè)近鄰對(duì)測(cè)試數(shù)據(jù)分類,給沒有標(biāo)記類別的數(shù)據(jù)加上類別標(biāo)簽。函數(shù)knn()的調(diào)用形式如下:knn

(train,

test,

cl,

k

=

1,

l

=

0,

prob

=

FALSE,

use.all

=

TRUE)參

數(shù)說

明train訓(xùn)練集案例的矩陣或數(shù)據(jù)框test測(cè)試集案例的矩陣或數(shù)據(jù)框cl訓(xùn)練集實(shí)際分類的因子型數(shù)據(jù)k考慮的近鄰數(shù)量l確定的決策所需的最少得票prob如果設(shè)為TRUE,則會(huì)把贏得類別時(shí)得到的投票比例返回給屬性probuse.all控制如何處理平局(多個(gè)近鄰距離相等)的方法。如果設(shè)為TRUE,則考慮所有距離等于第k大的近鄰,否則只隨機(jī)選擇一個(gè)距離第k大的近鄰以只考慮k個(gè)近鄰Knn分類knn舉例:鳶尾花library

(class) #用50%樣本組成訓(xùn)練集train

<-

rbind

(iris3[1:25,,1],

iris3[1:25,,2],

iris3[1:25,,3])test

<-

rbind

(iris3[26:50,,1],

iris3[26:50,,2],

iris3[26:50,,3])cl

<-

factor

(c

(rep("setosa",25),

rep("versicolor",25),

rep("virginica",25))) #cl用作分類標(biāo)簽#對(duì)測(cè)試集調(diào)用knn()函數(shù)iris.knn

<-

knn

(train,

test,

cl,

k

=

3,

prob=TRUE)把鳶尾花數(shù)據(jù)集一分為二,一半用于訓(xùn)練,一半用于測(cè)試。選擇參數(shù)k=3,調(diào)用knn()。Knn分類混淆矩陣>

target

<-

factor

(c

(rep("setosa",25),

rep("versicolor",25),rep("virginica",25)))

#目標(biāo)分類標(biāo)簽>

#預(yù)測(cè)分類結(jié)果與目標(biāo)類別比較:行為預(yù)測(cè)值,列為實(shí)際值,對(duì)角線上的是分類正確的結(jié)果>

table

(iris.knn,

target)

#混淆矩陣

targetiris.knn

setosa

versicolor

virginica

setosa

25

0

0

versicolor

0

23

3

virginica

0

2

22對(duì)角線上的元素代表了分類正確的結(jié)果。行中除了對(duì)角線元素之外如果還有非0值,表示了誤報(bào)。列中除了對(duì)角線元素之外如果還有非0值,表示了漏報(bào)??梢杂没煜仃噥碓u(píng)價(jià)分類器的性能。Knn分類聚類算法人工神經(jīng)網(wǎng)絡(luò)一般都使用有監(jiān)督的學(xué)習(xí)。在神經(jīng)網(wǎng)絡(luò)中,通過學(xué)習(xí)來調(diào)整每個(gè)神經(jīng)元節(jié)點(diǎn)對(duì)輸入信號(hào)與偏移量加權(quán)時(shí)使用的權(quán)值。類似于其他有監(jiān)督學(xué)習(xí)的方法,訓(xùn)練神經(jīng)網(wǎng)絡(luò)的目標(biāo)就是通過參數(shù)的選擇使模型成為一個(gè)可以正確地把輸入數(shù)據(jù)轉(zhuǎn)化為預(yù)期輸出結(jié)果的映射??梢詰?yīng)用多層感知器模型,應(yīng)用神經(jīng)網(wǎng)絡(luò)解決非線性回歸與分類等有監(jiān)督學(xué)習(xí)中的問題聚類算法kmeans聚類k均值算法包括下列具體步驟:在樣本數(shù)據(jù)集中任選k個(gè)樣本點(diǎn)作為初始的簇心;掃描每個(gè)樣本點(diǎn),求該樣本點(diǎn)到各個(gè)簇心之間的距離,選擇其中最短距離的簇心,并將樣本點(diǎn)歸為該簇心表示的類。別對(duì)每個(gè)類中的所有樣本點(diǎn)求均值,作為新的簇心。重復(fù)步驟(2)和(3),直到達(dá)到最大迭代次數(shù),或者更新后的簇心與原來的簇心幾乎吻合(形成不動(dòng)點(diǎn))。kmeans()函數(shù)的主要參數(shù)參

數(shù)說

明x數(shù)據(jù)的數(shù)值矩陣,或者能被轉(zhuǎn)化成矩陣的對(duì)象(例如,數(shù)值向量或只包含數(shù)值列的數(shù)據(jù)框)centers目標(biāo)的簇的數(shù)量k,或是一組各不相同的初始簇心。如果是k,會(huì)隨機(jī)選擇幾組x中的行作為初始簇心iter.max算法指定的最大迭代次數(shù)nstart當(dāng)centers是一個(gè)數(shù)字時(shí),表示需要選擇多少組隨機(jī)簇心kmeans分類kmeans對(duì)象kmeans()函數(shù)通過迭代將數(shù)據(jù)點(diǎn)劃分為k簇,使得每一個(gè)點(diǎn)到所屬的簇心的距離之和最小。結(jié)果就是k個(gè)簇心都等于該簇中所有點(diǎn)的均值。函數(shù)調(diào)用的形式如下:kmeans(x,centers,iter.max=10,nstart=1)kmeans

()函數(shù)返回“kmeans”類中的一個(gè)對(duì)象,對(duì)象屬性可以直接訪問。參數(shù)說明cluster整數(shù)向量取值從1~k,表明每一點(diǎn)被劃分到哪一個(gè)簇centers簇心矩陣totss距離的總平方和withinss對(duì)應(yīng)每一個(gè)簇的簇內(nèi)距離平方和向量

size每一個(gè)簇包含的點(diǎn)的個(gè)數(shù)iter迭代次數(shù)

kmeans()函數(shù)返回值kmeans分類舉例:鳶尾花聚類>

x

<-

iris[,-5]

#用四種幾何尺寸作為特征向量>

y

<-

iris$Species

#類別為Species屬性>

kc

<-

kmeans

(x,3)

#使用特征向量聚成三類>

table

(y,kc$cluster)

#列出混淆矩陣y

1

2

3

setosa

0

50

0

versicolor

48

0

2

virginica

14

0

36>

kc$centers

#查看簇心

>

kc$size

#查看各簇的大小[1]

62

50

38

Sepal.Length

Sepal.Width

Petal.Length

Petal.Width1

5.901613

2.748387

4.393548

1.4338712

5.006000

3.428000

1.462000

0.2460003

6.850000

3.073684

5.742105

2.071053kmeans分類層次聚類層次結(jié)構(gòu)普遍存在于自然界和人們的社會(huì)生活中,例如動(dòng)物的分類方法、文件的樹狀結(jié)構(gòu)。層次聚類是一種自底向上的逐步聚類方法。在k均值聚類中,用戶必須預(yù)先知道要把樣本聚成多少個(gè)簇。有些時(shí)候,用戶難以準(zhǔn)確地預(yù)判到底存在多少類。層次聚類采用自底向上的方式構(gòu)建了一個(gè)聚類層次結(jié)構(gòu),而無需提前指定聚類的個(gè)數(shù)。層次聚類層次聚類的步驟層次聚類算法的具體步驟如下:假設(shè)樣本總數(shù)為N,在初始時(shí),所有樣本點(diǎn)都自成一類,一共有N類;選擇距離最小的兩個(gè)類合并,于是減少一類,剩下N

1類;重復(fù)步驟2,直到所有數(shù)據(jù)點(diǎn)都屬于同一類。R語言通過函數(shù)hclust()實(shí)現(xiàn)層次聚類。hclust()需要將數(shù)據(jù)用距離矩陣表示出來,所以還需用到dist()函數(shù)。在默認(rèn)情況下,類之間使用全聯(lián)動(dòng)方法度量距離。層次聚類層次聚類舉例clusters<-hclust(dist(iris[,3:4]))plot(clusters)以iris為例。選擇對(duì)versicolor和virginica區(qū)分度更高的Petal.Length和Petal.Width兩種花瓣屬性來計(jì)算距離。層次聚類確定分類數(shù)量>

clusterCut

<-

cutree(clusters,

3)>

table(clusterCut,

iris$Species)

clusterCut

setosa

versicolor

virginica

1

50

0

0

2

0

21

50

3

0

29

0從圖中得出結(jié)論,最好把數(shù)據(jù)劃分成三類或四類??梢允褂煤瘮?shù)cutree()把系統(tǒng)樹劃分成理想數(shù)量的類。不妨選擇分成三類,用混淆矩陣對(duì)聚類結(jié)果與真實(shí)的品種進(jìn)行比較。層次聚類Part/

03聚類算法比較改進(jìn)分類結(jié)果>clusters<-hclust(dist(iris[,3:4]),method='average’)>plot(clusters)>

clusterCut

<-

cutree(clusters,

3)>

table(clusterCut,

iris$Species)

clusterCut

setosa

versicolor

virginica

1

50

0

0

2

0

45

1

3

0

5

49用平均聯(lián)動(dòng)替代全聯(lián)動(dòng)計(jì)算距離。分類效果明顯改善。層次聚類查看錯(cuò)分樣本調(diào)用ggplot

()按照品種和分類結(jié)果標(biāo)色。可以看出錯(cuò)分的樣本點(diǎn)都位于邊界。ggplot(data

=

iris,

aes(x

=

Petal.Length,

y

=

Petal.Width,color

=

Species),

position

=

"jitter")

+

geom_point(alpha

=

0.4,

size

=

3.5)

+

geom_point(col

=

clusterCut)

+

scale_color_manual(values

=

c('black',

'red',

'green'))層次聚類密度聚類基于密度的聚類(DBSCAN)是一種對(duì)數(shù)據(jù)點(diǎn)集進(jìn)行劃分的聚類方式,可以從帶噪聲和離群點(diǎn)的數(shù)據(jù)中找到不同形狀和大小的簇。DBSCAN的基本思想非常直觀:給定位于同一空間的一組數(shù)據(jù)點(diǎn),如果一些分布稠密的點(diǎn)緊密地依靠在一起,則應(yīng)被歸為一類,而處在低密度區(qū)域的點(diǎn)就應(yīng)該被看作離群點(diǎn)。也就是說,在點(diǎn)集的不同子集中計(jì)算出的密度是決定聚類的依據(jù),因此,近鄰多的點(diǎn)與距離其他鄰居遠(yuǎn)的點(diǎn)顯然要分別對(duì)待。密度聚類密度聚類中的概念核心點(diǎn):如果一點(diǎn)被稱為核心點(diǎn),則至少在其給定半徑的鄰域中包含了指定數(shù)量的點(diǎn)。直達(dá)點(diǎn):如果某一點(diǎn)是一個(gè)核心點(diǎn),另一點(diǎn)在該點(diǎn)給定半徑的的鄰域中,則稱為該點(diǎn)的直達(dá)點(diǎn)。可達(dá)點(diǎn):如果存在一條路徑從某一點(diǎn)連接到一個(gè)給定點(diǎn),則稱該點(diǎn)維給定點(diǎn)的可達(dá)點(diǎn);除該點(diǎn)外,路徑上的其他點(diǎn)均須為核心點(diǎn)。注意,可達(dá)關(guān)系并不一定對(duì)稱,無論距離遠(yuǎn)近,沒有點(diǎn)可以從非核心點(diǎn)可達(dá)。不能從其他點(diǎn)可達(dá)的點(diǎn)都屬于離群點(diǎn)。密度連通性:如果兩個(gè)點(diǎn)均可從另一點(diǎn)可達(dá),則稱這兩點(diǎn)密度連通。密度聚類DBSCAN的步驟DBSCAN算法可以簡化成下列幾步:找到每一個(gè)點(diǎn)的鄰域,如果鄰域中有超過給定數(shù)量的點(diǎn),該點(diǎn)即被識(shí)別為核心點(diǎn)。找到核心點(diǎn)的連通部分,而忽略掉非核心點(diǎn);如果非核心點(diǎn)是附近一個(gè)簇的鄰居,將其分配給附近的簇,否則劃分為噪聲點(diǎn)。密度聚類密度聚類舉例install.packages

("fpc")library

(fpc)library

(mlbench)pts

<-

mlbench::mlbench.cassini

(n

=

600,

relsize

=

c(3,2,1))plot

(pts)先用mlbench包來生成仿真數(shù)據(jù)。再用R語言里面的fpc包來實(shí)現(xiàn)密度聚類算法。密度聚類應(yīng)用:密度聚類mlbench.cassini()函數(shù)產(chǎn)生了三個(gè)類別的樣本點(diǎn)。其中兩個(gè)邊緣的類分布成香蕉形狀,中間一類分布為圓形。函數(shù)的第一個(gè)參數(shù)n表示總的樣本點(diǎn)數(shù),第二個(gè)參數(shù)為一個(gè)向量,反映各個(gè)類別樣本點(diǎn)的相對(duì)比例。密度聚類dbscan函數(shù)>

cluster.density

<-

dbscan

(data

=

pts$x,

eps

=

0.2,

MinPts

=

5,

method

=

"hybrid")>

cluster.densitydbscanPts=600MinPts=5eps=0.2

0123border34174seed029618195total330019899>

plot.dbscan(cluster.density,pts$x)取鄰域半徑為0.2,最小樣本點(diǎn)MinPts為5,進(jìn)行密度聚類.參數(shù)method="hybrid"表示提供的數(shù)據(jù)為原始數(shù)據(jù),并計(jì)算原始數(shù)據(jù)的部分距離矩陣。border表示非核心點(diǎn),seed為核心點(diǎn)密度聚類Part/

04聚類效果評(píng)估聚類效果聚類結(jié)果表明,總共被聚為四類對(duì)應(yīng)圖中四種顏色的三角形。圖中圓圈表示非核心點(diǎn),用三角形表示核心點(diǎn)。聚類效果改變參數(shù)>

cluster.density

<-

dbscan(data

=

pts$x,

eps

=

0.22,

MinPts

=

5,

method

=

"hybrid")>

cluster.densitydbscanPts=600MinPts=5eps=0.22123border0102seed30019098total300200100

密度聚類中,鄰域半徑和最小樣本點(diǎn)數(shù)決定了最終的聚類效果。如果改變鄰域半徑,就能產(chǎn)生不同的聚類結(jié)果。略微擴(kuò)大半徑,對(duì)比前面的結(jié)果,可以看到border點(diǎn)明顯減少。聚類效果評(píng)估分類算法分類和回歸同屬于有監(jiān)督的學(xué)習(xí),因?yàn)閷?duì)樣本而言,在學(xué)習(xí)的時(shí)候已經(jīng)獲知它們對(duì)應(yīng)的因變量。分類應(yīng)用與回歸應(yīng)用的區(qū)別在于,它們的因變量類型分別是類別的標(biāo)簽和數(shù)值。很多分類模型同樣適用于回歸問題。聚類分類算法Part/

05使用密度聚類方法處理數(shù)據(jù)操作見課本謝謝觀看第5章決策樹決策樹決策樹是一類有監(jiān)督的學(xué)習(xí)算法,可以視為同一組if/then規(guī)則的集合,但是從結(jié)構(gòu)上看決策樹又是一種樹狀模型。如果針對(duì)的是分類問題,一棵決策樹中的每一片樹葉都代表一個(gè)類別的標(biāo)簽,而每一個(gè)非樹葉節(jié)點(diǎn)則表示一個(gè)條件測(cè)試,每一個(gè)分支表明了條件測(cè)試執(zhí)行的結(jié)果。訓(xùn)練好決策樹后,就可以用做分類預(yù)測(cè):從樹根開始,根據(jù)數(shù)據(jù)樣本是否滿足當(dāng)前條件,來選擇應(yīng)該繼續(xù)訪問哪一個(gè)子節(jié)點(diǎn),這樣就可以一步一步地到達(dá)樹葉,從而判斷樣本的類別。從樹根到樹葉的一條路徑就反映出對(duì)樣本分類的過程。與其他機(jī)器學(xué)習(xí)方法相比較,決策樹易于理解,也不需要對(duì)數(shù)據(jù)進(jìn)行復(fù)雜的預(yù)處理,既不需要標(biāo)準(zhǔn)化,也無須特別關(guān)注NA數(shù)據(jù)。決策樹過程生成決策樹的步驟得到一棵全局最優(yōu)的決策樹是NP難的問題,現(xiàn)實(shí)中依賴各種貪婪算法求解決策樹的訓(xùn)練問題。CART是分類與回歸樹的簡稱(ClassificationandRegressionTrees),該算法生成的決策樹既可用于分類,也可用于回歸。構(gòu)建CART決策樹的基本步驟可以概括成以下幾點(diǎn):對(duì)于給定的訓(xùn)練數(shù)據(jù)子集,尋找預(yù)測(cè)標(biāo)簽的最佳特征;劃分上述特征以獲得最好的分類結(jié)果,劃分出兩個(gè)新的數(shù)據(jù)子集;重復(fù)步驟1和2,直到滿足停止條件。決策樹過程rpart包rpart包實(shí)現(xiàn)了可用于分類或回歸的決策樹。rpart()函數(shù)的使用方法相對(duì)簡單,其調(diào)用形式為:rpart(formula,data,weights,subset,na.action=na.rpart,method,model=FALSE,x=FALSE,y=TRUE,parms,control,cost,...)參

數(shù)說

明formula表示因變量與自變量關(guān)系的響應(yīng)公式,如y~x1+x2表示y依賴于x1和x2data可選項(xiàng),用于解釋公式中的變量名,通常是包含formula中變量的數(shù)據(jù)框weights可選項(xiàng),案例權(quán)重subset可選表達(dá)式,表示哪些數(shù)據(jù)行構(gòu)成的子集可以用于擬合

na.action處理缺失項(xiàng)的方法,默認(rèn)情況下刪去沒有因變量的樣本,但是保留缺少部分自變量的樣本method可選項(xiàng)包括“anova”“poisson”“class”或“exp”。如果未提供該參數(shù),程序會(huì)根據(jù)因變量的數(shù)據(jù)類型自行猜測(cè)。如果因變量是因子型,默認(rèn)method="class";如果是數(shù)值型,假定method="anova";如果是生存對(duì)象,假定method="exp";如果包含兩列,假定method="poisson"。建議調(diào)用時(shí)明確指定所需方法決策樹過程決策樹聚類:鳶尾花分類install.packages

("rpart")

#安裝包library

(rpart)

#載入包#因變量為Species,公式中的.表示自變量為其余屬性,#method="class"表明是分類樹fit

<-

rpart

(Species

~

.,

method="class",

iris)選擇用與聚類時(shí)同樣的長寬尺寸特征來完成分類。很多深度學(xué)習(xí)包都會(huì)帶有支持GPU多線程運(yùn)算的版本,需要更復(fù)雜的安裝過程。rpart()函數(shù)產(chǎn)生的分類樹十分簡單,只有兩個(gè)條件節(jié)點(diǎn)和三片樹葉。決策樹過程決策樹畫圖函數(shù)使用泛型函數(shù)plot()畫出來的決策樹過于簡單,而且非常不美觀??梢允褂胷part.plot包中的rpart.plot()畫圖。安裝好rpart.plot包后,執(zhí)行下列語句:>

library

(rpart.plot)>

rpart.plot

(fit)決策樹過程獨(dú)立性可視化

pairs

(iris[1:4],

line.main=1.5,

main

=

"Iris數(shù)據(jù)集特征對(duì)比(紅:setosa

,綠:versicolor,藍(lán):virginica)", pch

=

21,

bg

=

c("red",

"green3",

"blue") [unclass(iris$Species)])決策樹過程E1071包library(e1071)

#加載包e1071classifier

<-

naiveBayes(iris[,1:4],

iris[,5])

#創(chuàng)建分類器

table

(predict(classifier,

iris[,-5]),

iris[,5])

#生成混淆矩陣

#混淆矩陣的結(jié)果

setosa

versicolor

virginica

setosa

50

0

0

versicolor

0

47

3

virginica

0

3

47

在e1071包中包含了樸素貝葉斯模型用戶可以直接調(diào)用naiveBayes(),在參數(shù)中分別給出自變量和因變量。雖然一些特征和獨(dú)立性假設(shè)并不一致,但是還是可以取得非常好的分類效果。決策樹過程泛化性能set.seed

(2018)

#初始化隨機(jī)種子index

<-

sample

(x

=

2,

size

=

nrow

(iris),

replace

=

TRUE,

prob

=

c(0.8,0.2))

#按照80%與20%比例劃分iris.Training

<-

iris[index==1,

]

#訓(xùn)練集iris.Test

<-

iris[index==2,

]

#測(cè)試集classifier

<-

naiveBayes(iris.Training[,1:4],

iris.Training

[,5])table

(predict(classifier,

iris.Test[,-5]),

iris.Test[,5])把數(shù)據(jù)集分成兩部分,分別用于訓(xùn)練與測(cè)試。使用抽樣函數(shù)sample()來劃分?jǐn)?shù)據(jù)集,按參數(shù)prob中給出的比例隨機(jī)從x中生成數(shù)量等于size的整數(shù)。設(shè)置replcae=TRUE,使用置換抽樣的方法。決策樹過程Part/

01遞歸決策樹遞歸決策樹及可視化決策樹對(duì)分類結(jié)果的預(yù)測(cè)是基于一個(gè)或多個(gè)輸入變量并結(jié)合劃分條件完成的。分裂過程從分類樹樹根節(jié)點(diǎn)開始,在每個(gè)節(jié)點(diǎn),算法根據(jù)劃分條件檢查輸入變量是否需要繼續(xù)向左子樹或右子樹遞歸進(jìn)行劃分當(dāng)?shù)竭_(dá)分類樹的任意葉子節(jié)點(diǎn)(終點(diǎn))時(shí),停止分裂。評(píng)價(jià)遞歸決策樹預(yù)測(cè)能力如何調(diào)用predict函數(shù)和table函數(shù)分別生成預(yù)測(cè)表以及實(shí)際類標(biāo)號(hào)表。首先,需獲得分類模型churn.rp和準(zhǔn)備好之前提到的訓(xùn)練數(shù)據(jù)trainset和測(cè)試數(shù)據(jù)集testset,然后執(zhí)行以下操作完成對(duì)分類樹的預(yù)測(cè)性能驗(yàn)證。遞歸決策樹剪枝我們已經(jīng)為churn數(shù)據(jù)集構(gòu)建了一棵復(fù)雜的決策樹。但是,為了避免過度適應(yīng),我們需要去掉一部分分類描述能力比較弱的規(guī)則以提高預(yù)測(cè)準(zhǔn)確率。條件推理樹除了傳統(tǒng)決策樹(rpart)算法外,條件推理樹(ctree)是另外一類比較常見的基于樹的分類算法。與傳統(tǒng)決策樹類似,條件推理樹也是通過非獨(dú)立變量進(jìn)行單變量分裂來實(shí)現(xiàn)對(duì)數(shù)據(jù)的遞歸劃分處理。與傳統(tǒng)決策樹不同是,條件推理樹選擇分裂變量時(shí)依據(jù)的是顯著性測(cè)量的結(jié)果,而不是采用信息最大化方法(rpart里使用了基尼系數(shù))。條件推理樹預(yù)測(cè)能力在搭建好條件推理樹分類模型后,就可以使用treeresponse和predict函數(shù)預(yù)測(cè)測(cè)試數(shù)據(jù)集testset的類標(biāo)號(hào),并進(jìn)一步使用分類表和混淆矩陣來評(píng)價(jià)算法的預(yù)測(cè)能力。在此之前需要執(zhí)行完前述相關(guān)步驟獲得條件推理樹模型ctree.model,并準(zhǔn)備好了trainset和testset兩個(gè)數(shù)據(jù)集,然后執(zhí)行以下操作完成對(duì)條件推理樹預(yù)測(cè)能力的評(píng)測(cè)。第6章神經(jīng)網(wǎng)絡(luò)與支持向量機(jī)Part/

01支持向量機(jī)

支持向量機(jī)(SupportVectorMachine,SVM)是一種支持線性分類和非線性分類的二元分類算法。經(jīng)過演進(jìn),現(xiàn)在也支持多元分類,被廣泛地應(yīng)用在回歸以及分類當(dāng)中。支持向量機(jī)支持向量機(jī)支持向量機(jī)可以簡單地描述為對(duì)樣本數(shù)據(jù)進(jìn)行分類,真正對(duì)決策函數(shù)進(jìn)行求解。首先,要找到分類問題中的最大分類間隔,然后確定最優(yōu)分類超平面,并將分類問題轉(zhuǎn)化為二次規(guī)劃問題進(jìn)行求解。線性可分支持向量機(jī)支持向量機(jī)支持向量機(jī)線性可分:如果在特征空間中存在一個(gè)超平面能夠?qū)⑻卣骺臻g中的實(shí)例分為兩類,使得超平面的任意一側(cè)的實(shí)例全部擁有同一種標(biāo)簽。若找不到這樣的平面,則稱為線性不可分。在線性可分的情況下,在超平面兩側(cè)所有樣本點(diǎn)中,存在某點(diǎn)離該平面最近,則把這個(gè)最近的距離稱為間隔。支持向量機(jī)(SupportVectorMachine,SVM)是一種有監(jiān)督的學(xué)習(xí)方法,可以用于與分類和回歸相關(guān)的數(shù)據(jù)分析任務(wù)。給定一組訓(xùn)練樣本,每一個(gè)樣本都帶有各自的類別標(biāo)簽,支持向量機(jī)的訓(xùn)練目標(biāo)就是構(gòu)建一個(gè)分類模型,將空間中的不同類別的點(diǎn)用盡可能寬的間隔分開。支持向量機(jī)線性可分支持向量機(jī)核函數(shù)支持向量機(jī)用到了線性可分的假設(shè)。對(duì)于線性不可分的情形,可以借助核函數(shù)把低維空間中的點(diǎn)映射到高維空間,期望在低維空間中線性不可分的點(diǎn)在高維空間變得線性可分。選擇核函數(shù)是為了可以完成樣本點(diǎn)從低維空間到高維空間的變換。但是,在獲得線性可分性能時(shí),用戶也不希望因此引入過高的計(jì)算開銷。支持向量機(jī)中設(shè)計(jì)核函數(shù)時(shí)只要求它的內(nèi)積形式可以用原空間中點(diǎn)的簡單函數(shù)來計(jì)算。因此,高維空間中的超平面可定義為與空間中某個(gè)向量的點(diǎn)積為常數(shù)的點(diǎn)的集合。支持向量機(jī)e1071包中的svm()函數(shù)函數(shù)svm()返回的是一個(gè)SVM類中的對(duì)象,可以使用svm_model$labels查看。下面列出了對(duì)象中的部分屬性:

(1)SV:發(fā)現(xiàn)的支持向量矩陣;(2)labels:分類模式下對(duì)應(yīng)的標(biāo)簽;(3)index:輸入向量中的支持向量索引。svm()函數(shù)的主要核函數(shù)包括:支持向量機(jī)支持向量機(jī)舉例library

("e1071")attach

(iris)x

<-

subset

(iris,

select=-Species)

y

<-

Speciessvm_model

<-

svm

(Species

~

.,

data=iris)

#品種是其他屬性的因變量subset()函數(shù)從iris中取出子集,第一個(gè)參數(shù)表示數(shù)據(jù)集,select是一個(gè)邏輯向量。svm_model默認(rèn)調(diào)用的是最常用核函數(shù)之一的徑向核radial。支持向量機(jī)分類效果>

pred

<-

predict

(svm_model,

x)

>

table

(pred,

y)

ypred

setosa

versicolor

virginica

setosa

50

0

0

versicolor

0

48

2

virginica

0

2

48

從分類效果可以看出,在versicolor和virginica中,各有兩個(gè)樣本被混淆。支持向量機(jī)取得的分類效果現(xiàn)在比決策樹更好。支持向量機(jī)數(shù)據(jù)預(yù)處理plot

(svm_model,

iris,

Petal.Width

~

Petal.Length,

#因?yàn)閕ris數(shù)據(jù)包括四個(gè)屬性,在二維圖形中需要指定其余二維,才能顯示區(qū)域邊界

slice

=

list

(Sepal.Width

=

2,

Sepal.Length

=

4))從圖中可以觀察到支持向量(用×表示)的分布情況。因?yàn)榘迅呔S數(shù)據(jù)畫在了二維平面上,而且間隔的選取對(duì)其他兩個(gè)沒有顯示的維度的特定值設(shè)置的,所以圖中的支持向量并不一定落在邊界附近。支持向量機(jī)參數(shù)優(yōu)化>

svm_model_after_tune

<-

svm

(Species

~

.,

data=iris,

kernel="radial",

cost=2,

gamma=0.8)>

summary

(svm_model_after_tune)>

pred

<-

predict

(svm_model_after_tune,x)

>

table

(pred,

y)

y

pred

setosa

versicolor

virginica

setosa

50

0

0

versicolor

0

49

0

virginica

0

1

50支持向量機(jī)對(duì)參數(shù)敏感。以radial核函數(shù)、損失系數(shù)2(表明了分類器對(duì)錯(cuò)誤分類的容忍度。)以及核函數(shù)參數(shù)0.8訓(xùn)練出一個(gè)新的分類器。從混淆矩陣可以看出結(jié)果的改善。支持向量機(jī)Part/

02神經(jīng)網(wǎng)絡(luò)基本原理人工神經(jīng)網(wǎng)絡(luò)是在生物學(xué)中神經(jīng)網(wǎng)絡(luò)的啟發(fā)下誕生了的。在生命科學(xué)中,神經(jīng)網(wǎng)絡(luò)是指動(dòng)物大腦中一系列相互連接的神經(jīng)元。信號(hào)通過神經(jīng)元的軸突經(jīng)過突觸傳遞到其他神經(jīng)元的樹突上,這就是神經(jīng)元之間的接口。當(dāng)外界總的信號(hào)輸入超過了一定的閾值,神經(jīng)元?jiǎng)t會(huì)沿著軸突傳遞信號(hào)。神經(jīng)元就可以通過接口相互影響,共同發(fā)揮作用。神經(jīng)網(wǎng)絡(luò)原理神經(jīng)元神經(jīng)元是人工神經(jīng)網(wǎng)絡(luò)中的基本組成單位,在結(jié)構(gòu)上受到了神經(jīng)生物學(xué)中動(dòng)物大腦神經(jīng)元的啟示。單個(gè)神經(jīng)元的功能非常簡單,只是把輸入信號(hào)加權(quán)求和,再把結(jié)果傳遞給一個(gè)激活函數(shù)。一般地,激活函數(shù)會(huì)選擇性地抑制住一部分神經(jīng)元。典型的激活函數(shù)通常是非線性的。多個(gè)神經(jīng)元相互連接就組成了一個(gè)神經(jīng)網(wǎng)絡(luò)。通過選擇神經(jīng)元的數(shù)量、結(jié)合方式,以及激活函數(shù)的形式,用戶可以構(gòu)造不同結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò)。神經(jīng)網(wǎng)絡(luò)原理ReLU函數(shù)x

<-

seq

(-1,1,0.1)

#設(shè)置xrelu

<-

function

(x)

ifelse

(x

>

0,

x,

0)

#定義ReLU函數(shù)plot

(x,

relu(x),

type

=

"l")

#畫出函數(shù)text

(0.6,

0.4,

"ReLU

(x)")

#添加文字說明神經(jīng)網(wǎng)絡(luò)原理多層感知器模型多層感知器一般由至少三層神經(jīng)元組成,除了輸入層與輸出層之外,還至少包括一個(gè)被稱為隱層的中間層。一般在多層感知器中使用全連接模式,也就是相鄰層中的神經(jīng)元節(jié)點(diǎn)互相連接。在相鄰層的兩個(gè)神經(jīng)元ni和nj之間傳輸信號(hào)時(shí),使用權(quán)重wij來定量表示這種連接關(guān)系。因?yàn)闄?quán)重wij的大小是可以調(diào)節(jié)的,如果使用非線性激活函數(shù),多層感知器可以逼近一些極其復(fù)雜的多變量函數(shù)。輸入層隱層輸出層神經(jīng)網(wǎng)絡(luò)原理反向傳播算法前向傳播:在神經(jīng)網(wǎng)絡(luò)中,信號(hào)從輸入層到輸出層逐層傳播。如果連接每一層的權(quán)重都是已知的,根據(jù)輸入信號(hào)就可以計(jì)算出輸出信號(hào)。當(dāng)權(quán)重未知時(shí),需要根據(jù)輸入和輸出來估計(jì)權(quán)重,使得神經(jīng)網(wǎng)絡(luò)能刻畫出輸入和輸出之間的映射。反饋機(jī)制:猜測(cè)一組權(quán)重作為初始值,前向傳播信號(hào)計(jì)算出理論輸出,再根據(jù)理論值與實(shí)際值的偏差,來修正權(quán)重。神經(jīng)網(wǎng)絡(luò)原理偏差估計(jì)反向傳播:偏差信號(hào)從輸出層到輸入層逐層反向傳遞。把第i層的第j個(gè)神經(jīng)元的偏差記作。使用梯度下降法更新對(duì)權(quán)重參數(shù)的估計(jì)。因?yàn)橹挥休敵鰧拥钠梢灾苯佑?jì)算出來,在其他層中需要先得到估計(jì)偏差,才能用于修訂參數(shù)。把下一層的偏差傳遞給上一層,用于偏差估計(jì)簡化:神經(jīng)網(wǎng)絡(luò)原理梯度估計(jì)使用梯度下降的方法來求權(quán)重,需要首先得出梯度方向,也就是偏差對(duì)權(quán)重的偏導(dǎo)。把第i層的第j個(gè)神經(jīng)元的偏差記作。

,。鏈?zhǔn)角髮?dǎo):選擇步長,神經(jīng)網(wǎng)絡(luò)原理算法說明學(xué)習(xí)因子η對(duì)于算法的性能非常重要。因?yàn)樯窠?jīng)網(wǎng)絡(luò)中的優(yōu)化目標(biāo)函數(shù)不一定為凸,梯度下降法只能保證收斂到局部最優(yōu),不能保證全局最優(yōu)。對(duì)于一般的應(yīng)用而言,局部最優(yōu)實(shí)際上已經(jīng)能夠具有實(shí)用性。神經(jīng)網(wǎng)絡(luò)原理R語言中的神經(jīng)網(wǎng)絡(luò)包包

名說

明nnet支持單隱層的前饋神經(jīng)網(wǎng)絡(luò),可用于多項(xiàng)式對(duì)數(shù)線性模型neuralnet使用反向傳播算法訓(xùn)練神經(jīng)網(wǎng)絡(luò)h2o包含支持H2O的R腳本功能RSNNS斯圖加特神經(jīng)網(wǎng)絡(luò)模擬器的接口

tensorflowTensorFlow的接口deepnetR語言深度學(xué)習(xí)包darch支持深度架構(gòu)和受限玻爾茲曼機(jī)的R語言包rnn實(shí)現(xiàn)循環(huán)神經(jīng)網(wǎng)絡(luò)的包MXNetR支持靈活高效GPU計(jì)算和深度學(xué)習(xí)的R語言包kerasKeras的R語言接口神經(jīng)網(wǎng)絡(luò)原理neuralnet包R語言中的neuralnet包支持神經(jīng)網(wǎng)絡(luò)的基本操作。安裝與下載:install.packages

("neuralnet")library

("neuralnet")主要的神經(jīng)網(wǎng)絡(luò)建模函數(shù)為:neuralnet(formula,data,hidden=1,threshold=0.01,stepmax=1e+05,rep=1,startweights=NULL,learningrate.limit=NULL,learningrate.factor=list(minus=0.5,plus=1.2),learningrate=NULL,lifesign="none",lifesign.step=1000,algorithm="rprop+",err.fct="sse",act.fct="logistic",linear.output=TRUE,exclude=NULL,constant.weights=NULL,likelihood=FALSE)

稱說

溫馨提示

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

評(píng)論

0/150

提交評(píng)論