機(jī)器學(xué)習(xí)與R語言學(xué)習(xí)筆記_第1頁
機(jī)器學(xué)習(xí)與R語言學(xué)習(xí)筆記_第2頁
機(jī)器學(xué)習(xí)與R語言學(xué)習(xí)筆記_第3頁
機(jī)器學(xué)習(xí)與R語言學(xué)習(xí)筆記_第4頁
機(jī)器學(xué)習(xí)與R語言學(xué)習(xí)筆記_第5頁
已閱讀5頁,還剩107頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

內(nèi)部資料,注意保密機(jī)器學(xué)習(xí)與R語言學(xué)習(xí)筆記2015年7月文檔修訂記錄:版本編號(hào)變化狀態(tài)簡(jiǎn)要說明日期變更人批準(zhǔn)日期批準(zhǔn)人vC創(chuàng)立學(xué)習(xí)筆記2015.7.31余紅vA新增余紅vA新增余紅vA新增余紅vA新增理解回歸和用線性回歸預(yù)測(cè)醫(yī)療費(fèi)用余紅v1.1A新增理CART算法的應(yīng)用余紅*變化狀態(tài):C――創(chuàng)立,A——增加,M——修改,D——?jiǎng)h除目錄TOC\o"1-4"\h\z\u183321機(jī)器學(xué)習(xí)簡(jiǎn)介7291201.1機(jī)器學(xué)習(xí)的起源72651.2機(jī)器如何學(xué)習(xí)7205451.2.1抽象化和知識(shí)表達(dá)7145401.2.2一般化8215721.2.3評(píng)估學(xué)習(xí)的成功性8152321.3將機(jī)器學(xué)習(xí)應(yīng)用于數(shù)據(jù)中的步驟8281791.4選擇機(jī)器學(xué)習(xí)算法876721.4.1考慮輸入的數(shù)據(jù)8302341.4.2考慮機(jī)器學(xué)習(xí)算法的類型8149001.4.3為數(shù)據(jù)匹配適宜的算法9155112數(shù)據(jù)的管理和理解9278482.1R數(shù)據(jù)結(jié)構(gòu)1030322.1.1向量10242402.1.2因子10228492.1.3列表11180962.1.4數(shù)據(jù)框119482.2用R管理數(shù)據(jù)1298912.2.1保存和加載R數(shù)據(jù)結(jié)構(gòu)12128202.2.2用CVS文件導(dǎo)入和保存數(shù)據(jù)12277622.3探索和理解數(shù)據(jù)12150942.3.1探索數(shù)據(jù)的結(jié)構(gòu)12234282.3.2探索數(shù)值型變量131723測(cè)量中心趨勢(shì)-平均數(shù)和中位數(shù)132788測(cè)量數(shù)據(jù)分散程度-四分位數(shù)和五數(shù)匯總1410157數(shù)值型變量可視化-箱圖1525975數(shù)值型變量可視化-直方圖1632726了解數(shù)值型數(shù)據(jù)-均勻分布和正態(tài)分布1617651衡量數(shù)據(jù)的分散程度-方差和標(biāo)準(zhǔn)差17191052.3.3探索分類變量17177802.3.4探索變量之間的關(guān)系1820626變量之間關(guān)系的可視化-散點(diǎn)圖187912檢驗(yàn)變量之間的關(guān)系-雙向交叉表18321383概率學(xué)習(xí)--樸素貝葉斯分類19313983.1理解樸素貝葉斯2057563.1.1貝葉斯方法的根本概念20120103.1.2樸素貝葉斯算法2129055樸素貝葉斯分類2122289拉普拉斯估計(jì)2127543在樸素貝葉斯算法中使用數(shù)值特征22140203.2例子-基于貝葉斯算法的收集垃圾短信過濾22291054分而治之-應(yīng)用決策樹和規(guī)那么進(jìn)行分類2219124.1理解決策樹23242354.1.1分而治之232793rpart函數(shù)241596124211182517889J48函數(shù)25273174.1.2255103選擇最正確的分割2521259修剪決策樹2680774.226117664.2.1第1步-收集數(shù)據(jù)27129574.2.2第2步-探索和準(zhǔn)備數(shù)據(jù)2712785數(shù)據(jù)探索2730027數(shù)據(jù)準(zhǔn)備-創(chuàng)立隨機(jī)的訓(xùn)練數(shù)據(jù)集和測(cè)試數(shù)據(jù)集28275634.2.3第3步-基于數(shù)據(jù)訓(xùn)練模型28312194.2.4第4步-評(píng)估模型性能3589124.2.5第5步-提高模型的性能3630029提高決策樹的準(zhǔn)確性3632268犯一些比其他錯(cuò)誤更嚴(yán)重的錯(cuò)誤66278684.3例子-CART算法建立汽車油耗預(yù)測(cè)模型67102954.3.1第1步-收集數(shù)據(jù)6713811數(shù)據(jù)集概況671994數(shù)據(jù)預(yù)處理68127534.3.2第2步-基于數(shù)據(jù)訓(xùn)練模型6925355對(duì)“油耗”變量建立回歸樹-數(shù)字結(jié)果6922428對(duì)“油耗”變量建立回歸樹-樹形結(jié)果7024215對(duì)“分組油耗”變量建立分類樹70254204.3.3第3步-對(duì)測(cè)試集預(yù)測(cè)目標(biāo)變量評(píng)估模型性能70289735預(yù)測(cè)數(shù)值型數(shù)據(jù)-回歸方法71309095.1理解回歸72324895.1.1簡(jiǎn)單線性回歸72175365.1.2普通最小二乘法7280235.1.3相關(guān)系數(shù)73123365.1.4多元線性回歸73278995.2例子-應(yīng)用線性回歸預(yù)測(cè)醫(yī)療費(fèi)用74118475.2.1第1步-收集數(shù)據(jù)74292555.2.2第2步-探索和準(zhǔn)備數(shù)據(jù)75462探索特征之間的關(guān)系-相關(guān)系數(shù)矩陣7610005可視化特征之間的關(guān)系-散點(diǎn)圖矩陣76185245.2.3第3步-基于數(shù)據(jù)訓(xùn)練模型77192325.2.4第4步-評(píng)估模型性能783195.2.5第5步-提高模型性能793342模型的設(shè)定-添加非線性關(guān)系7925290轉(zhuǎn)換-將一個(gè)數(shù)值型變量轉(zhuǎn)換為一個(gè)二進(jìn)制指標(biāo)7911021模型的設(shè)定-參加相互作用的影響805905全部放在一一個(gè)改良的回歸模型80248475.3理解回歸樹和模型樹819325.4例子-用回歸樹和模型樹估計(jì)葡萄酒的質(zhì)量81230795.4.1第1步:收集數(shù)據(jù)8171765.4.2第2步:探索和準(zhǔn)備數(shù)據(jù)81178175.4.3第3步:基于數(shù)據(jù)訓(xùn)練模型83319915.4.4第4步:評(píng)估模型的性能8430105用相關(guān)系數(shù)比擬預(yù)測(cè)值和真實(shí)值的接近程度8516053用平均絕對(duì)誤差〔MeanAbsoluteError,MAE〕度量性能85237545.4.5第5步:提升模型的性能8579336黑箱方法-神經(jīng)網(wǎng)絡(luò)和支持向量機(jī)90104976.1理解神經(jīng)網(wǎng)絡(luò)91264426.1.1從生物神經(jīng)元到人工神經(jīng)元92231876.1.2激活函數(shù)9359146.1.3網(wǎng)絡(luò)拓?fù)?33501層的數(shù)目9311758信息傳播的方向9326605每一層的節(jié)點(diǎn)數(shù)94137216.1.4用后向傳播訓(xùn)練神經(jīng)網(wǎng)絡(luò)94137716.2用人工神經(jīng)網(wǎng)絡(luò)對(duì)混凝土的強(qiáng)度進(jìn)行建模9494796.2.1第1步-收集數(shù)據(jù)94178016.2.2第2步-探索和準(zhǔn)備數(shù)據(jù)9482766.2.3第3步-基于數(shù)據(jù)訓(xùn)練模型9515836.2.4第4步-評(píng)估模型的性能97123766.2.5第5步-提高模型的性能9890576.3理解支持向量機(jī)98101536.3.1用超平面分類99114756.3.2尋找最大間隔9910433線性可分的數(shù)據(jù)情形993685非線性可分的數(shù)據(jù)情況9977106.3.3對(duì)非線性空間使用核函數(shù)9915906.4用支持向量機(jī)進(jìn)行光學(xué)字符識(shí)別100287126.4.1第1步-收集數(shù)據(jù)100105656.4.2第2步-探索和準(zhǔn)備數(shù)據(jù)100150226.4.3第3步-基于數(shù)據(jù)訓(xùn)練模型101265336.4.4第4步-評(píng)估模型的性能102140426.4.5第5步-提高模型的性能10366277探尋模式-基于關(guān)聯(lián)規(guī)那么的購(gòu)物籃分析103179207.1理解關(guān)聯(lián)規(guī)那么104113767.2用于關(guān)聯(lián)規(guī)那么學(xué)習(xí)的Apriori算法104147107.2.1度量規(guī)那么興趣度-支持度和置信度10539207.2.2用Apriori原那么建立規(guī)那么10574707.3例子-用關(guān)聯(lián)規(guī)那么確定經(jīng)常一起購(gòu)置的食品雜貨105293767.3.1第1步-收集數(shù)據(jù)106113247.3.2第2步-探索和準(zhǔn)備數(shù)據(jù)10627169數(shù)據(jù)準(zhǔn)備-為交易數(shù)據(jù)創(chuàng)立一個(gè)稀疏矩陣10626256可視化商品支持度-商品的頻率圖10712123可視化交易數(shù)據(jù)-繪制稀疏矩陣107146907.3.3第3步-創(chuàng)立規(guī)那么集107209977.3.4第4步-評(píng)估性能108307588模型性能的評(píng)價(jià)108146128.1度量分類方法的性能10946158.1.1在R中處理分類預(yù)測(cè)數(shù)據(jù)109212298.1.2深入探討混淆矩陣10941418.1.3使用混淆矩陣度量性能110284209附錄A:R的輸入和輸出11129209.1輸入112218729.2輸出112317289.2.1文本輸出11251449.2.2圖形輸出112725410附錄B:R語言根本數(shù)據(jù)管理1123031710.1一個(gè)例如113841710.2創(chuàng)立新變量11397210.3變量的重編碼1142020010.4變量的重命名11549810.5缺失值115714410.5.1重編碼某些值為缺失值116926910.5.2在分析中排除缺失值1163134110.6日期值117546810.6.1將日期轉(zhuǎn)換為字符型變量1182738710.7類型轉(zhuǎn)換1181466110.8數(shù)據(jù)排序1192294810.9數(shù)據(jù)集的合并1191145610.9.1添加列1202174310.9.2添加行1203207510.10數(shù)據(jù)集取子集1202078410.10.1選入〔保存〕變量120807410.10.2剔除〔丟棄〕變量12191010.10.3選入觀測(cè)121888910.10.4subset()函數(shù)1213130210.10.5隨機(jī)抽樣1222058011附錄C:R語言圖形初階122100111.1使用圖形123900211.2繪制多幅圖形并隨時(shí)查看每一個(gè)1231783311.3圖形的組合123521011.4圖形參數(shù)124843211.4.1文本標(biāo)注1243267512附錄C:R語言繪圖1251916012.1根本圖形126543512.1.1條形圖1261951912.1.2箱線圖1262204112.1.3散點(diǎn)圖127602112.1.4折線圖1281312213附錄C:R語言常用函數(shù)129236313.1CrossTable1302872413.2plot130493813.3lines131機(jī)器學(xué)習(xí)簡(jiǎn)介機(jī)器學(xué)習(xí)于知識(shí)表示機(jī)器學(xué)習(xí)兩大類算法機(jī)器學(xué)習(xí)任務(wù)機(jī)器學(xué)習(xí)的起源機(jī)器學(xué)習(xí)的研究領(lǐng)域是創(chuàng)造計(jì)算機(jī)算法,把數(shù)據(jù)轉(zhuǎn)化為智能行為。機(jī)器學(xué)習(xí)的核心主要側(cè)重于找出復(fù)雜數(shù)據(jù)的意義。計(jì)算機(jī)科學(xué)家TomM.Mitchell提出的一個(gè)機(jī)器學(xué)習(xí)的定義是:如果機(jī)器能夠獲取經(jīng)驗(yàn)并且能利用它們,在以后的類似經(jīng)驗(yàn)〔經(jīng)歷〕中能夠提高它的表現(xiàn),該機(jī)器就稱為機(jī)器學(xué)習(xí)。數(shù)據(jù)挖掘是與機(jī)器學(xué)習(xí)緊密相關(guān)的學(xué)科,它涉及從大型數(shù)據(jù)庫中產(chǎn)生新的洞察。機(jī)器學(xué)習(xí)與數(shù)據(jù)挖掘一個(gè)可能的差異是機(jī)器學(xué)習(xí)側(cè)重執(zhí)行一個(gè)的任務(wù),而數(shù)據(jù)挖掘那么是側(cè)重尋找有價(jià)值的信息。例如,可能會(huì)用機(jī)器學(xué)習(xí)方法教一個(gè)機(jī)器人開車,然而可能會(huì)利用數(shù)據(jù)挖掘了解哪種類型的車是最平安的。機(jī)器學(xué)習(xí)是數(shù)據(jù)挖掘的先期準(zhǔn)備,反之那么不然。挖掘數(shù)據(jù)是指挑選最適宜的數(shù)據(jù)來支持某個(gè)理論的行為,不要與數(shù)據(jù)挖掘相混淆。機(jī)器如何學(xué)習(xí)機(jī)器學(xué)習(xí)過程可以分為如下三個(gè)局部:數(shù)據(jù)輸入這局部利用觀察、記憶及存儲(chǔ),以及回憶來提供進(jìn)一步推理的事實(shí)依據(jù)。抽象化這局部涉及把數(shù)據(jù)轉(zhuǎn)換為更寬泛的表現(xiàn)形式〔broaderrepresentation〕。如果沒有深刻的理解,知識(shí)就會(huì)局限于輸入的數(shù)據(jù)。這意味著除了已經(jīng)見過的以外,沒有獲取其他多余的信息。更高級(jí)的學(xué)習(xí)方式要求學(xué)習(xí)者用他們自己的話來描述學(xué)習(xí)的主題。一般化這局部應(yīng)用抽象的數(shù)據(jù)來形成行動(dòng)的根底。直到學(xué)習(xí)者能夠把抽象知識(shí)應(yīng)用到將來的行動(dòng)中去,學(xué)習(xí)過程才算完成。抽象化和知識(shí)表達(dá)知識(shí)表達(dá)將原始輸入的數(shù)據(jù)概括在一個(gè)模型里。模型的選擇通常不是機(jī)器來完成的,而是由學(xué)習(xí)的任務(wù)和所分析數(shù)據(jù)的類型來決定的。知識(shí)表達(dá)是通過訓(xùn)練、測(cè)試,從而獲得性能符合要求的模型的過程。用一個(gè)特定的模型來擬合數(shù)據(jù)集的過程稱為訓(xùn)練。當(dāng)模型被訓(xùn)練后,數(shù)據(jù)轉(zhuǎn)換為一個(gè)匯總了原始信息的抽象形式。該處特定的模型指是分類、聚類、回歸等等。一般化一般化被想象成訓(xùn)練過程中對(duì)所有可用于數(shù)據(jù)抽象化的模型〔即理論〕的搜索過程。一般化就是把這個(gè)集合里的理論的數(shù)量較少到一個(gè)可以管理的數(shù)目。評(píng)估學(xué)習(xí)的成功性一般化過程的最后一步就是在存在偏差的情況下判斷模型的成功性。試圖用模型擬合噪聲就是過度擬合問題的根底。模型處理噪聲數(shù)據(jù)的好壞是判斷模型成功與否的一個(gè)重要方面。將機(jī)器學(xué)習(xí)應(yīng)用于數(shù)據(jù)中的步驟機(jī)器學(xué)習(xí)任務(wù)的步驟如下:收集數(shù)據(jù)探索數(shù)據(jù)和準(zhǔn)備數(shù)據(jù)基于數(shù)據(jù)訓(xùn)練模型評(píng)價(jià)模型的性能改良模型的性能選擇機(jī)器學(xué)習(xí)算法DavidWolpert于1996年提出的沒有免費(fèi)午餐定理:沒有一種機(jī)器學(xué)習(xí)方法對(duì)所有環(huán)境都是最好的。考慮輸入的數(shù)據(jù)輸入數(shù)據(jù)是以案例〔example〕和特征〔feature〕組成的表格形式呈現(xiàn)的??紤]特征的表現(xiàn)形式很重要,因?yàn)閿?shù)據(jù)集中特征的種類和數(shù)量有助于你找到一個(gè)適于學(xué)習(xí)任務(wù)的機(jī)器學(xué)習(xí)算法??紤]機(jī)器學(xué)習(xí)算法的類型機(jī)器學(xué)習(xí)算法可以分為兩類:用來建立預(yù)測(cè)模型的有監(jiān)督學(xué)習(xí)算法和用來建立描述模型的無監(jiān)督學(xué)習(xí)算法。監(jiān)督并不是指需要人工干預(yù),它是讓目標(biāo)值擔(dān)任監(jiān)督的角色,讓它告訴學(xué)習(xí)者要學(xué)習(xí)的任務(wù)是什么。為數(shù)據(jù)匹配適宜的算法為了找到與學(xué)習(xí)任務(wù)相適應(yīng)的機(jī)器學(xué)習(xí)方法,需要從下面4種類型的任務(wù)之一開始,它們分別是:分類、數(shù)值預(yù)測(cè)、模式識(shí)別或者聚類。模型任務(wù)附注有監(jiān)督學(xué)習(xí)算法最近鄰分類樸素貝葉斯分類決策樹分類分類器分類線性回歸數(shù)值預(yù)測(cè)回歸樹數(shù)值預(yù)測(cè)模型樹數(shù)值預(yù)測(cè)神經(jīng)網(wǎng)絡(luò)雙重用處支持向量機(jī)雙重用處無監(jiān)督學(xué)習(xí)算法關(guān)聯(lián)規(guī)那么模式識(shí)別如:購(gòu)物籃分析、推薦系統(tǒng)k均值聚類聚類數(shù)據(jù)的管理和理解學(xué)完本章,將理解:根本的R數(shù)據(jù)結(jié)構(gòu)以及如何使用它們來存儲(chǔ)和提取數(shù)據(jù)如何把不同來源格式的數(shù)據(jù)導(dǎo)入R理解并可視化復(fù)雜數(shù)據(jù)的常用方法R數(shù)據(jù)結(jié)構(gòu)機(jī)器學(xué)習(xí)中經(jīng)常使用的R數(shù)據(jù)結(jié)構(gòu)是:向量、因子、列表、數(shù)組和數(shù)據(jù)框。向量向量是同一類型的數(shù)據(jù)元素的有序集合??梢允褂媒M合函數(shù)〔combinefunction〕c()來創(chuàng)立向量,并且能通過箭頭運(yùn)算符“<-”來給向量賦一個(gè)名字。注意:R中的賦值運(yùn)算符是“<-”,而不是“=”。誤用“=”作為賦值運(yùn)算符可能會(huì)導(dǎo)致不可預(yù)知的錯(cuò)誤。>subject_name<-c(“JohnDoe”,“JaneDoe”,“SteveGrave”);>temperature<-c(98.1,98.6,101.4);>flu_status<-c(FALSE,FALSE,TRUE);通過向量中元素的序號(hào)〔下標(biāo)〕來訪問元素。注意:R數(shù)據(jù)結(jié)構(gòu)中的下表是從1,而不是從0開始。>temperature[2]通過冒號(hào)操作符獲得一個(gè)范圍內(nèi)的向量元素。>temperature[2:3]通過指定一個(gè)負(fù)號(hào)可以把該項(xiàng)排除在輸出數(shù)據(jù)之外。>temperature[-2]通過使用一個(gè)邏輯向量來標(biāo)識(shí)每一項(xiàng)為哪一項(xiàng)否包含在輸出數(shù)據(jù)中。>temperature[c(TRUE,TRUE,FALSE)];因子對(duì)用類別值來代表特征的名義屬性,盡管可以用一個(gè)字符型向量來存儲(chǔ)名義屬性的數(shù)據(jù),但R提供了稱為因子〔factor〕的專用數(shù)據(jù)結(jié)構(gòu)來表示這種屬性的數(shù)據(jù)。要把字符型向量轉(zhuǎn)換為因子,只需要應(yīng)用factor()函數(shù)。>gender<-factor(c(“MALE”,“FEMALE”,“MALE”));>gender;[1]MALEFEMALEMALELevels:FEMALEMALE注意:因子的水平由數(shù)據(jù)可能取到的所有類別組成。創(chuàng)立因子后,可以參加另外的沒有在數(shù)據(jù)中出現(xiàn)的水平。>blood<-factor(c(“O”,“AB”,“A”),levels=c(“A”,“B”,“AB”,“O”));注意:用levels=語句來給出一個(gè)額外的向量,該向量給出了4個(gè)可能的血型。存儲(chǔ)額外的水平使未來增加其他血型類型稱為可能。列表列表是可由不同類型的元素組成的有序集合。列表的創(chuàng)立使用list()函數(shù)。建立列表,可以給列表中每一項(xiàng)的值命名。名字不是必須的,但是它使得接下來可以通過名字來訪問列表中的值,而不是像向量那樣通過位置序號(hào)。>subject1<-list(fullname=subject_name[1],temperature=temperature[1],flu_status=flu_status[1],gender=gender[1],blood=blood[1]);列表中的各項(xiàng)是由=構(gòu)成的名值對(duì)列表中的各項(xiàng)是由=構(gòu)成的名值對(duì)通過在列表名后附件一個(gè)“$”符號(hào)和值的名字,可以直接訪問列表元素:>subject1$temperature可以通過指定一個(gè)名字向量來獲取列表中多個(gè)列表項(xiàng):>subject1[c(“temperature”,“flu_status”)]數(shù)據(jù)框機(jī)器學(xué)習(xí)中使用的最重要的R數(shù)據(jù)結(jié)構(gòu)是數(shù)據(jù)框,它是一個(gè)于電子表格或數(shù)據(jù)庫相類似的結(jié)構(gòu)。數(shù)據(jù)框準(zhǔn)確來說是一個(gè)向量列表,它結(jié)合了向量和列表兩個(gè)方面的有點(diǎn)。>pt_data<-data.frame(subject_name,temperature,flu_status,gender,blood,stringsAsFactors=FALSE);注意:如果不指定參數(shù)stringsAsFactors=FALSE,R將會(huì)自動(dòng)把每個(gè)字符向量轉(zhuǎn)化為因子。>pt_datasubject_nametemperatureflu_statusgenderblood1JohnDoe98.1FALSEMALEO......通過名字引用數(shù)據(jù)框中的數(shù)據(jù)項(xiàng):>pt_data$subject_name;于列表相類似,可以用名稱向量從數(shù)據(jù)框中提取多列數(shù)據(jù):>pt_data[c(“temperature”,“flu_status”)];通過指定行號(hào)和列號(hào),訪問數(shù)據(jù)框的數(shù)據(jù)項(xiàng):>pt_data[1,2]提取數(shù)據(jù)框中多行多列數(shù)據(jù):>pt_data[c(1,3),c(2,4)];#提取第1和第3行的第2和第4列數(shù)據(jù)要提取所有行或者列,主要讓行或者列的局部空白就可以了:>pt_data[,1]#提取第1列數(shù)據(jù)>pt_data[1,]#提取第1行的數(shù)據(jù)負(fù)號(hào)也能用來排除特定行或者特定列的數(shù)據(jù):>pt_data[-2,c(-1,-3,-5)]#排除第2行及第1,3,5列的數(shù)據(jù)用R管理數(shù)據(jù)保存和加載R數(shù)據(jù)結(jié)構(gòu)可以使用save()函數(shù)將R數(shù)據(jù)結(jié)構(gòu)保存到一個(gè)擴(kuò)展名為.RData的文件中。>save(x,y,z,file=“”);#對(duì)象x,y和z保存到指定文件可以使用load()函數(shù)將保存在擴(kuò)展名為.RData中的數(shù)據(jù)結(jié)構(gòu)加載到當(dāng)前會(huì)話。>load(“”);注意:要特別小心正在加載的數(shù)據(jù)結(jié)構(gòu)!用load()命令導(dǎo)入的文件中所存儲(chǔ)的所有數(shù)據(jù)結(jié)構(gòu)都會(huì)加載工作區(qū),即使它們會(huì)覆蓋工作區(qū)中其他一些正在使用的東西。如果需要結(jié)束當(dāng)前R會(huì)話,save.image()命令會(huì)把所有的會(huì)話寫入一個(gè)叫做.RData的文件里。默認(rèn)情況下,R將會(huì)在下次啟動(dòng)時(shí)尋找這個(gè)文件,上次R結(jié)束時(shí)的會(huì)話將會(huì)重現(xiàn)。用CVS文件導(dǎo)入和保存數(shù)據(jù)探索和理解數(shù)據(jù)在這個(gè)步驟里,將開始探索數(shù)據(jù)的特征和案例,并且找到數(shù)據(jù)的獨(dú)特之處。對(duì)數(shù)據(jù)理解越深,就會(huì)更好地讓機(jī)器學(xué)習(xí)模型匹配你的學(xué)習(xí)問題。探索數(shù)據(jù)的結(jié)構(gòu)通過一個(gè)二手車打折銷售廣告的真實(shí)數(shù)據(jù)集,理解數(shù)據(jù)探索的內(nèi)容和過程。通過read.csv()函數(shù)把數(shù)據(jù)加載到R數(shù)據(jù)框中:>usedcars<-read.csv(“usedcars”,stringsAsFactors=FALSE);調(diào)查的第一個(gè)問題是數(shù)據(jù)是如何組織的。函數(shù)str()提供了一個(gè)用來創(chuàng)立數(shù)據(jù)字典的根本輪廓:>str(usedcars);根據(jù)相關(guān)領(lǐng)域知識(shí),特征名稱和特征值可以對(duì)變量所代表的含義做出假定。如變量year可能值汽車制造的時(shí)間,也可能指汽車廣告貼出的時(shí)間。有時(shí)候,數(shù)據(jù)集的特征名稱可能是沒有具體含義的名字、代號(hào)或者像V1這樣的簡(jiǎn)單數(shù)字。通過進(jìn)一步調(diào)查,從而確定特征名稱確切代表的含義是必不可少的。即使特征名稱由具體意義,也要謹(jǐn)慎檢查標(biāo)簽含義的真確性。探索數(shù)值型變量匯總統(tǒng)計(jì)量:普遍使用的一組描述數(shù)值的指標(biāo),包括兩種類型:數(shù)據(jù)的中心測(cè)度和分散程度測(cè)度。summary(()給出了幾個(gè)常用的匯總統(tǒng)計(jì)量。>summary(usedcars$year)Min.1stQu.MedianMean3rdQu.Max.200020082009200920102012也可以通過summary()函數(shù)同時(shí)得到多個(gè)數(shù)值型變量的匯總統(tǒng)計(jì)量:>summary(usedcars[c(“price”,“mileage”)])pricemileageMin.:3800Min.:48671stQu.:109951stQu.:27200Median:13592Mdeian:16385Mean:12962Mean:442613rdQu.:149043rdQu.:55125Max.:21992Max.:151479price的平均值為$12962,mileage的平均值為44261,這些數(shù)據(jù)告訴我們什么信息呢?因?yàn)槠骄鶅r(jià)格相對(duì)偏低,所以可以預(yù)期數(shù)據(jù)中包括經(jīng)濟(jì)型汽車。數(shù)據(jù)中也有可能包括新型的豪華汽車,有著高里程數(shù),但是相對(duì)較低的平均里程數(shù)的統(tǒng)計(jì)數(shù)據(jù)并不提供支持這個(gè)假設(shè)的證據(jù)。另一方面,數(shù)據(jù)并沒有提供證據(jù)讓我們忽略這個(gè)可能性。所以,在進(jìn)一步檢驗(yàn)數(shù)據(jù)是要留意這一點(diǎn)。測(cè)量中心趨勢(shì)-平均數(shù)和中位數(shù)中心趨勢(shì)測(cè)度是用來標(biāo)識(shí)一組數(shù)據(jù)的中間值。平均數(shù):一般當(dāng)一個(gè)數(shù)被認(rèn)為是平均數(shù)時(shí),它是落在總體樣本的兩個(gè)極值之間的某個(gè)位置。平均數(shù)時(shí)具有代表性的,它和組里的其他值不會(huì)差的太多,可以把它看做一個(gè)所有其他值用來進(jìn)行參照的值。統(tǒng)計(jì)學(xué)中,平均數(shù)也叫做均值,它定義為所有值的總和除以值的個(gè)數(shù)。R提供了一個(gè)函數(shù)mean(),它能計(jì)算數(shù)字向量的均值:>mean(c(36000,44000,56000))均值是最普遍引用的測(cè)量數(shù)據(jù)集中心的統(tǒng)計(jì)量,但它不一定是最適宜的。另一個(gè)普遍使用的檢驗(yàn)中心趨勢(shì)的指標(biāo)是中位數(shù)。中位數(shù)位于排序后值列表的中間。R提供了函數(shù)median()來計(jì)算中位數(shù)。>median(c(36000,44000,56000))44000均值和中位數(shù)的區(qū)別:落在值域兩端的值對(duì)均值和中位數(shù)的影響是不同的。尤其是均值,它對(duì)異常值,或者那些對(duì)大多數(shù)數(shù)據(jù)而言異常高或低的值,是非常敏感的,容易受到那一小局部極端值的影響。上述例如中,mileage的均值44261比中位數(shù)36385大了超過20%,令人疑心數(shù)據(jù)集中一些二手車由極高的mileage值。為進(jìn)一步調(diào)查這一點(diǎn),需要在分析中應(yīng)用一些額外的匯總統(tǒng)計(jì)量。測(cè)量數(shù)據(jù)分散程度-四分位數(shù)和五數(shù)匯總五數(shù)匯總:是一組5個(gè)統(tǒng)計(jì)量,它們大致描述一個(gè)數(shù)據(jù)集的差異。所有的5個(gè)統(tǒng)計(jì)量包含在函數(shù)summary()的輸出結(jié)果中。按順序排列,它們是:最小值〔Min.〕第一四分位數(shù),或者Q1〔1stQu.〕中位數(shù),或Q2〔Median〕第三四分位數(shù),或Q3〔3rdQu.〕最大值〔Max.〕R提供了函數(shù)min()和函數(shù)max()來分別計(jì)算數(shù)據(jù)向量中的最小值和最大值。最大值和最小值的差值稱為值域。在R中,range()函數(shù)同時(shí)返回最小值和最大值。把range()函數(shù)和差值函數(shù)diff()相結(jié)合,這樣能夠用一條命令來檢驗(yàn)數(shù)據(jù)的值域。>range(usedcars$price)[1]380021992>diff(range(used$price))18192分位數(shù)把一個(gè)數(shù)據(jù)集分成相等數(shù)量的數(shù)值。我們對(duì)Q1和Q3之間50%的數(shù)據(jù)特別感興趣,它們是數(shù)據(jù)分散程度的一個(gè)度量。四分位距〔InterQuantileRange〕:Q1和Q3之間的差值。在R中,函數(shù)IQR()用來計(jì)算四分位距。>IQR(usedcars$price)數(shù)值型變量可視化-箱圖箱圖:一種對(duì)五數(shù)匯總的常用可視化方式,它以一種特定方式顯示數(shù)值型變量的中心和分散程度,通過它可很快了解變量的值域和偏度,或者它還可以和其他變量做比擬。R語言提供函數(shù)boxplot()繪制箱圖。>boxplot(usedcars$price,main=”BoxplotofUsedCarPrices”ylab=”Price($)”)>boxplot(usedcars$mileage,main=”BoxplotofUsedCarMileage”,ylab=”O(jiān)dometer(mi.)”)箱圖用水平線來表示五數(shù)匯總的值。箱圖中每個(gè)盒子的中間水平線從下向上依次代表Q1、Q2〔中位數(shù)〕和Q3。中位數(shù)用粗黑線表示,最小值和最大值用細(xì)線表示,通常僅允許細(xì)線延伸到最小為低于Q1的1.5倍IQR的最小值,或者延伸到最大為高于Q3的1.5倍IQR的最大值。任何超出這個(gè)臨界值的都認(rèn)為是異常值,用圓圈或點(diǎn)來表示。數(shù)值型變量可視化-直方圖直方圖〔histogram〕是另一種形象化描述數(shù)值型變量間差異的方式。它和箱圖相似的地方在于,它也把變量值按照預(yù)先設(shè)定的份數(shù)進(jìn)行分隔,或者說按照預(yù)先定義的容納變量值的分段進(jìn)行分隔。箱圖把數(shù)據(jù)分成4個(gè)局部,直方圖可以有相同寬度的任意數(shù)量的分段,分段可以包含不同數(shù)量的值。R語言用函數(shù)hist()繪制直方圖。>hist(usedcars$price,main=”HistogramofUsedCarPrices”,xlab=”Price($)”)>hist(usedcars$mileage,main=”HistogramofUsedCarMileage”,xlab=”O(jiān)dometer(mi.)”)直方圖是由一系列的豎條組成,其高度表示落在等長(zhǎng)的劃分?jǐn)?shù)據(jù)值的分段內(nèi)的數(shù)據(jù)值的個(gè)數(shù)或頻率。偏度〔skew〕:直方圖不對(duì)稱的程度。能快速識(shí)別偏度是直方圖作為數(shù)據(jù)探索工具的有點(diǎn)之一。了解數(shù)值型數(shù)據(jù)-均勻分布和正態(tài)分布變量的分布描述了一個(gè)值落在不同值域里的可能性大小。盡管有許多非正態(tài)分布的類型,但許多現(xiàn)象產(chǎn)生的數(shù)據(jù)都可以用正態(tài)分布來描述。衡量數(shù)據(jù)的分散程度-方差和標(biāo)準(zhǔn)差正態(tài)分布用兩個(gè)參數(shù)來定義:中心和分散程度。中心用均值來定義,分散程度通過標(biāo)準(zhǔn)差來測(cè)量。在R中獲得方差和標(biāo)準(zhǔn)差,可以用函數(shù)var()和函數(shù)sd()。>var(usedcars$price)[1]9749892>sd(usedcars$price)方差越大表示數(shù)據(jù)在均值周圍越分散,標(biāo)準(zhǔn)差表示平均來看每個(gè)值和均值相差多少。注意:方差定義公式給出的是總體方差〔除以n〕,而R內(nèi)置函數(shù)用的是樣本方差〔除以n-1〕。除非數(shù)據(jù)集很小,否那么這兩種結(jié)果的區(qū)別是很小的。規(guī)那么:正態(tài)分布中60%的值落在均值左右1個(gè)標(biāo)準(zhǔn)差的范圍內(nèi),而95%和99.7%的值各自落在均值左右2個(gè)和3個(gè)標(biāo)準(zhǔn)差的范圍內(nèi)。盡管68-95-99.7規(guī)那么僅僅局限與正態(tài)分布中,但這個(gè)根本準(zhǔn)那么能應(yīng)用到所有的數(shù)據(jù)中,數(shù)值落在均值的3個(gè)標(biāo)準(zhǔn)差以外是極為罕見的。探索分類變量只要變量的每一個(gè)值可以應(yīng)用到多個(gè)案例,盡管它可能是數(shù)值型的〔如int〕,根據(jù)需要這個(gè)變量可以看做是一個(gè)分類變量。與數(shù)值型數(shù)據(jù)相比,分類數(shù)據(jù)是用表格而不是匯總統(tǒng)計(jì)量來進(jìn)行檢測(cè)的。一元表:表示單個(gè)分類變量的表格。R中的函數(shù)table()為分類變量產(chǎn)生一元表。>table(usedcars$year)2000200120022003200420052006200720082009201020112012311132611144249161>table(usedcars$model)SESELSES782349一元表列知名義變量的不同類別和該類別的值的數(shù)量。R同時(shí)也能在table()函數(shù)產(chǎn)生的表格上直接應(yīng)用函數(shù)prop.table(),計(jì)算表格中格子的比例,如下所示:>model_table<-table(usedcars$model)>prop.table(model_table)SESELSES函數(shù)prop.table()的結(jié)果能與其他R函數(shù)相結(jié)合來轉(zhuǎn)換輸出結(jié)果,參加我們要保存一位小數(shù)的百分?jǐn)?shù)表示,如下所示:>color_table<-table(usedcars$color)>color_pct<-prop.table(color_table)*100#為轉(zhuǎn)換為百分?jǐn)?shù)乘以100>round(color_pct,digits=1)#四舍五入保存一位小數(shù)BlackBlue探索變量之間的關(guān)系變量之間關(guān)系的可視化-散點(diǎn)圖散點(diǎn)圖是一種可視化二變量之間關(guān)系的圖形,它是一個(gè)二維圖形,橫坐標(biāo)x是其中一個(gè)特征的值,縱坐標(biāo)y由另一個(gè)特征的值來標(biāo)識(shí),坐標(biāo)平面內(nèi)點(diǎn)的排放模式,揭示了兩個(gè)特征之間的內(nèi)在關(guān)系。按慣例規(guī)定,y變量是假定依賴于另一個(gè)變量的變量。R語言的函數(shù)plot()用來繪制散點(diǎn)圖。>plot(x=usedcars$mileage,y=usedcars$price,main=”ScatterplotofPricevs.Mileage”,xlab=”UsedCarOdometer(mi.)”,ylab=”UsedCarPrice($)”);#price和mileage間關(guān)系的散點(diǎn)圖散點(diǎn)圖中一條擬合直線,如是一條水平的線,或者看上去隨機(jī)分布的點(diǎn)集,證明兩個(gè)變量完全不相關(guān)。正相關(guān)看起來是一條向上傾斜的志向,負(fù)相關(guān)是一條向下傾斜的直線。檢驗(yàn)變量之間的關(guān)系-雙向交叉表雙向交叉表〔two-waycross-tabulation,也稱交叉表或者列聯(lián)表〕:與散點(diǎn)圖類似,觀察一個(gè)變量的值是如何隨著另一個(gè)的值而變化的。行是一個(gè)變量的水平,列是另一個(gè)變量的水平,單元格中的值表名落在特定行、列的單元格中值的數(shù)量。R中有多個(gè)函數(shù)可以生成交叉表,包括table()函數(shù)。由GregoryR.Warnes創(chuàng)立的gmodels添加包里的CrossTable()函數(shù)可能是用戶最喜歡用的函數(shù)。在二手車銷售廣告數(shù)據(jù)集中,我們真正感興趣的是汽車的顏色是否是保守的,而不是各種具體的顏色。為此,將9種顏色分為兩組:第一組包括保守的顏色:Black、Gray、Silver和White;第二組包括Blue、Gold、Green、Red和Yellow。創(chuàng)立一個(gè)二元指示變量〔常常稱為啞變量〕,根據(jù)我們的定義來表示汽車的顏色是否是保守的,如果是,指示變量的值就是1,否者值是0。>usedcars$conservative<-usedcars$color%in%c(“Black”,“Gray”,“Silver”,“White”)“%in%”操作符:根據(jù)左邊的值是否在右邊的向量中,為操作符左邊向量中的每一個(gè)值返回TRUE或者FALSE。簡(jiǎn)單地說,可以理解為“這輛二手車的顏色是在black、gray、silver和white這組中嗎?”>table(usedcars$conservative)TRUEFALSE9951上述輸出顯示,2/3的汽車有保守的顏色。觀察conservative〔保守顏色〕是如何隨著model變化而變化的。假設(shè)汽車的型號(hào)決定了顏色,所以把conservative作為因變量〔y〕。>CrossTable(x=usedcars$model,y=usedcars$conservative)表格中,我們最感興趣的是保守顏色汽車占每一種型號(hào)的行比例。行比例告訴我們0.654(65%)的SE汽車用保守的顏色,SEL汽車的這個(gè)比例是0.696(70%),SES汽車是0.653(65%)。這些值的差異相對(duì)來說是較小的,者暗示不同型號(hào)的汽車選擇的顏色類型沒有顯著的差異。可以在引用CrossTable()函數(shù)時(shí)增加一個(gè)參數(shù),指定chisq=TRUE來獲得卡方檢驗(yàn)結(jié)果。概率學(xué)習(xí)--樸素貝葉斯分類學(xué)習(xí)樸素貝葉斯是如何應(yīng)用時(shí),將學(xué)習(xí):用于樸素貝葉斯的根本概率原那么?;赗,用專門的方法、可視化和數(shù)據(jù)結(jié)構(gòu)分析文本數(shù)據(jù)。如何運(yùn)用樸素貝葉斯分類器建立短信過濾器并通過R實(shí)現(xiàn)。樸素貝葉斯〔NaiveBayes,NB〕算法之所以這樣命名的原因。頻率表與雙向交叉表相似,表的一個(gè)維度表示分類變量的水平,而另一個(gè)維度表示特征的水品。理解樸素貝葉斯18世紀(jì)的數(shù)學(xué)家托馬斯.貝葉斯創(chuàng)造了用于描述事件的概率以及如何根據(jù)附加信息修正概率的根本數(shù)學(xué)原理〔現(xiàn)在稱為貝葉斯方法〕。基于貝葉斯方法的分類器是利用訓(xùn)練數(shù)據(jù)并根據(jù)特征的取值來計(jì)算每個(gè)類別被觀察到的概率。當(dāng)分類器之后被應(yīng)用到無標(biāo)簽數(shù)據(jù)時(shí),分類器就會(huì)根據(jù)觀測(cè)到的概率來預(yù)測(cè)新的特征最有可能屬于哪個(gè)類。貝葉斯分類已用于以下方面:文本分類,比方垃圾郵件過濾、作者識(shí)別和主體分類等。在計(jì)算機(jī)網(wǎng)絡(luò)中進(jìn)行入侵檢測(cè)或者異常檢測(cè)。根據(jù)一組觀察到的病癥,診斷身體狀況。通常情況下,貝葉斯分類器最適用于解決這樣一類問題:在這類問題中,為了估計(jì)一個(gè)結(jié)果的概率,從眾多屬性中提取的信息應(yīng)該被同時(shí)考慮。貝葉斯方法利用了所有可以獲得的證據(jù)來巧妙地修正預(yù)測(cè)。如果有大量特征產(chǎn)生的影響較小,但將它們放在一起,它們的組合影響可能會(huì)相當(dāng)大。貝葉斯方法的根本概念相關(guān)事件之間的關(guān)系可以用貝葉斯定理來描述,如下面的公式所示。式中,P(B|A)稱為似然概率〔likelihood〕,P(A)稱為先驗(yàn)概率〔Posterior〕即無任何附加條件下的概率,P(B)稱為邊際似然概率〔marginallikelihood〕。例如,下面的頻率表記錄了單詞Viagra出現(xiàn)在垃圾郵件和非垃圾郵件中的次數(shù)。該表的水平維度表示垃圾郵件或者非垃圾郵件,垂直維度表示單詞Viagra是否出現(xiàn)。根據(jù)頻率表構(gòu)造的似然表如下面有圖所示。Viagra頻數(shù)Viagra頻數(shù)YesNo總計(jì)垃圾郵件41620非垃圾郵件17980總計(jì)595100Viagra似然YesNo總計(jì)垃圾郵件4/2016/2020非垃圾郵件1/2079/8080總計(jì)5/10095/100100根據(jù)似然表,計(jì)算后驗(yàn)概率P(垃圾郵件|Viagra),利用貝葉斯定義,有P(垃圾郵件|Viagra)=P(Viagra|垃圾郵件)×P(垃圾郵件)/P(Viagra)=(4/20)×因此,如果電子郵件含有單詞Viagra,那么這封電子郵件是垃圾郵件的概率是80%。這就是商業(yè)垃圾郵件過濾器的工作方式。樸素貝葉斯算法樸素貝葉斯算法描述應(yīng)用貝葉斯定理進(jìn)行分類的一個(gè)應(yīng)用。之所以這樣命名是因?yàn)樵撍惴▽?duì)數(shù)據(jù)有一對(duì)“簡(jiǎn)單”的假設(shè)。特別地,樸素貝葉斯假設(shè)數(shù)據(jù)集的所有特征都具有相同的重要性和獨(dú)立性,而在大多數(shù)的實(shí)際應(yīng)用中,這些假設(shè)是鮮有成立的。然而,在大多數(shù)情況下,當(dāng)違背這些假設(shè)時(shí),樸素貝葉斯依然可以很好地應(yīng)用。之所以這樣,一種解釋是:只要預(yù)測(cè)的分類值是準(zhǔn)確的,那么獲得精確的概率估計(jì)值并不重要。樸素貝葉斯分類利用樸素貝葉斯事件獨(dú)立性的假設(shè),根據(jù)P(A∩B)=P(A)P(B),可以大為降低計(jì)算所需資源的要求。本質(zhì)上講,在給定特征F1到Fn提供的證據(jù)的條件下,類C中水平為L(zhǎng)的概率等于每一條證據(jù)在類C水平L下的條件概率的乘積,再乘以類C的水平L的先驗(yàn)概率和尺度因子1/Z,尺度因子Z將把上述結(jié)果轉(zhuǎn)換為一個(gè)概率值:拉普拉斯估計(jì)對(duì)于類中一個(gè)或多個(gè)水平,如果一個(gè)事件從來沒有發(fā)生過,在樸素貝葉斯算法中,因?yàn)楦怕适窍喑说?,?的概率將會(huì)有效抵消后否決所有其它的證據(jù),這將會(huì)導(dǎo)致分類錯(cuò)誤。這個(gè)問題的解決涉及使用拉普拉斯估計(jì)〔Laplaceestimator〕方法,該方法的本質(zhì)是給頻率表中的每一個(gè)計(jì)數(shù)加上一個(gè)較小的數(shù),這樣就保證了每一類中每個(gè)特征發(fā)生的概率是非零的。在樸素貝葉斯算法中使用數(shù)值特征例子-基于貝葉斯算法的收集垃圾短信過濾分而治之-應(yīng)用決策樹和規(guī)那么進(jìn)行分類本章將學(xué)習(xí)以下知識(shí):每一種方法〔決策樹、規(guī)那么分類〕是采用什么策略將數(shù)據(jù)劃分成令人感興趣的類別的。決策樹和規(guī)那么分類的幾種實(shí)現(xiàn)方法,包括C5.0算法、1R算法和RIPPER算法。如何使用這些算法進(jìn)行現(xiàn)實(shí)世界的分類任務(wù),比方,確定高風(fēng)險(xiǎn)的銀行貸款、識(shí)別有毒的蘑菇。理解決策樹決策樹學(xué)習(xí)算法以樹形結(jié)構(gòu)建立模型,包含一些列邏輯決策,帶有說明根據(jù)某一屬性做出決定的決策節(jié)點(diǎn)。決策樹由葉節(jié)點(diǎn)〔終端節(jié)點(diǎn)〕終止,葉節(jié)點(diǎn)表示遵循決策組合的結(jié)果。決策樹本質(zhì)上是一個(gè)流程圖,特別適合應(yīng)用于由于法律因素需要透明化的分類機(jī)制以及為了便于決策需要共享成果的分類。事實(shí)上,決策樹可能是最廣泛使用的機(jī)器學(xué)習(xí)技術(shù)之一,它幾乎可以用于任何類型的數(shù)據(jù)建模,并且具有無與倫比的性能。分而治之決策樹的建立使用一種稱為遞歸劃分〔recursivepartitioning〕的探索法,這種方法通常稱為分而治之〔DivideandConquer〕,因?yàn)樗锰卣鞯闹祵?shù)據(jù)分解成具有相似類的較小的子集。如果一個(gè)節(jié)點(diǎn)停止,它可能具有以下情況:節(jié)點(diǎn)上所有〔幾乎所有〕的案例都屬于同一類。沒有剩余的特征來分辨案例之間的區(qū)別。決策樹已經(jīng)到達(dá)預(yù)先定義的大小限制。由于數(shù)據(jù)可以繼續(xù)劃分,直到在一個(gè)分區(qū)內(nèi)的特征沒有區(qū)別,所以決策樹容易對(duì)訓(xùn)練數(shù)據(jù)進(jìn)行過度擬合。決策樹的生成過程是針對(duì)輸入數(shù)據(jù)集,按照一定的劃分條件逐層分類,直至不可再分或不需再分,充分生成樹。具體的,先找到各個(gè)變量自身的最優(yōu)劃分,再比擬各變量間的最優(yōu)劃分,以差異最大者為節(jié)點(diǎn)分類變量,并采用其最優(yōu)劃分。樹的復(fù)雜度由葉節(jié)點(diǎn)的數(shù)目確定,為控制復(fù)雜度,通過剪枝過程對(duì)節(jié)點(diǎn)數(shù)進(jìn)行刪減。樹的復(fù)雜度太大,會(huì)造成數(shù)據(jù)的過擬合。樹的復(fù)雜度太大,會(huì)造成數(shù)據(jù)的過擬合。應(yīng)用最普遍的兩種決策樹算法是:CART(ClassificationandRegressionTrees)和C4.5(successorofID3)。CART算法既可以建立分類樹,也可以構(gòu)造回歸樹。它是許多集成分類算法的基分類器,如Boosting及RandomForests等都以此為根底。C4.5是ID3(Iterativedichotomiser3)的改良算法,解決了ID3只能用于離散型變量,且確定判定變量時(shí)偏向于選擇取值較多的變量這兩項(xiàng)缺陷。C5.0在運(yùn)行效率方面進(jìn)一步完善且多用于商業(yè)用途。決策樹算法R實(shí)現(xiàn),主要涉及4個(gè)軟件包,分別為rpart、rpart.plot、maptree及RWeka。其中rpart主要用于建立分類樹及相關(guān)遞歸劃分算法的實(shí)現(xiàn);rpart.plot專門用來對(duì)rpart模型繪制決策樹;maptree用來修剪、繪制不僅僅局限于rpart模型的樹型結(jié)構(gòu);RWeka包提供了R與Weka的連接,Weka中集合了用Java編寫的一系列機(jī)器學(xué)習(xí)算法。表R實(shí)現(xiàn)決策樹的主要軟件包和函數(shù)算法名稱軟件包核心函數(shù)CARTrpartrpart()、prune.rpart()、post()rpart.plot()maptreedraw.tree()RWekaJ48()rpart函數(shù)函數(shù)rpart()的根本格式為:rpart(formula,data,weights,subset,na.action=na.rpart,method,model=FALSE,x=FALSE,y=TRUE,parms,control,cost,...)其中,formula中放置想要建立模型的公式,即設(shè)置輸入/輸出變量,格式為y~x1+x2+...,當(dāng)輸出變量為除了y的所有變量時(shí),也可以用y~.來表示;data為待訓(xùn)練的數(shù)據(jù)集;subset可以選擇出data中假設(shè)干行樣本來建立模型。na.action用來處理缺失值,其默認(rèn)選擇為na.rpart,即僅剔除缺失y值,或缺失所有輸入變量的樣本數(shù)據(jù);method參數(shù)用于選擇決策樹的類型,包括anova、poisson、class和exp四種類型,在不進(jìn)行設(shè)置的默認(rèn)情況下,R會(huì)自行猜想,比方當(dāng)y為因子型變量時(shí),默認(rèn)取class。其中,anova對(duì)應(yīng)于我們所說的回歸樹,而class型那么為分類樹。control參數(shù)可參照rpart.control,即:rpart.control(minsplit=20,minbucket=round(minsplit/3),cp=0.01,maxcompete=4,maxsurrogate=5,usesurrogate=2,xval=10,surrogatestyle=0,maxdepth=30,...)其中,minsplit表示每個(gè)節(jié)點(diǎn)中所含樣本數(shù)的最小值,默認(rèn)值取20;minbucket那么表示每個(gè)葉節(jié)點(diǎn)中含樣本數(shù)的最小值;cp即復(fù)雜度參數(shù)(complexityparameter),假設(shè)取cp=0.03,那么說明在建模過程中僅保存可以使得模型擬合程度提升0.03及以上的節(jié)點(diǎn),該參數(shù)的作用在于可以通過剪去對(duì)模型奉獻(xiàn)不大的分支,提高算法效率;maxdepth可控制樹的高度。函數(shù)prune.rpart()可根據(jù)cp的值對(duì)決策樹進(jìn)行剪枝,即剪去cp值較小的不重要分之。其格式為prune(tree,cp,...),放入決策樹名稱及cp值即可。它們都是用來繪制分類樹/回歸樹的制圖函數(shù)。J48函數(shù)函數(shù)J48()是實(shí)現(xiàn)C4.5算法的核心函數(shù),其根本格式為:J48(formula,data,subset,na.action,control=Weka_control(),options=NULL)其中的formula放置于構(gòu)建模型的公式,data為建模數(shù)據(jù)集,na.action用于處理缺失數(shù)據(jù),而control那么是對(duì)樹的復(fù)雜度進(jìn)行控制的參數(shù),具體取值見下表:表J48()函數(shù)中control參數(shù)的局部取值及其含義參數(shù)名獲取全部取值:WOW(J48)U不對(duì)樹進(jìn)行剪枝,默認(rèn)是TRUECM對(duì)每個(gè)葉節(jié)點(diǎn)設(shè)置最小觀測(cè)樣本量,默認(rèn)值是2R按照錯(cuò)誤率遞減方式進(jìn)行剪枝,默認(rèn)為TRUEN設(shè)置按照錯(cuò)誤率遞減方式進(jìn)行剪枝時(shí),交互驗(yàn)證的折疊次數(shù),默認(rèn)值為3B每個(gè)節(jié)點(diǎn)僅分為兩個(gè)分支,即構(gòu)建二叉樹,默認(rèn)為TRUEC5.0決策樹算法是計(jì)算機(jī)科學(xué)家J.RossQuinlan為改良他之前的算法C4.5開發(fā)的新版本,C4.5本身是對(duì)他的ID3算法〔IterativeDichotomiser3,迭代二叉樹3代〕的一個(gè)改良。一個(gè)基于Java的開源的流行算法名為J48,可以代替C4.5算法,該算法包含在RWeka包中。C5.0、C4.5和J48算法之間的差異是很小的,這三種算法應(yīng)該認(rèn)為是同義的。C5.0算法已經(jīng)成為生成決策樹的行業(yè)標(biāo)準(zhǔn),通過它建立的決策樹一般都表現(xiàn)得與其他先進(jìn)模型幾乎一樣好,而且更容易理解和部署。該算法的缺點(diǎn)相對(duì)來說是較輕微的,而且在很大程度上可以防止。選擇最正確的分割決策時(shí)面臨的第一個(gè)挑戰(zhàn)就是需要確定根據(jù)哪個(gè)特征進(jìn)行分割。一般根據(jù)分區(qū)中主要包含來源與一個(gè)單一類的案例選擇特征分割數(shù)據(jù)。如果一組數(shù)據(jù)中只包含一個(gè)單一的類,那么這些類被認(rèn)為是純的。熵度量純度。樣本數(shù)據(jù)的熵表示分類值如何混雜在一起,最小值0表示樣本是完全同質(zhì)的,而1表示樣本凌亂的最大數(shù)量。熵的具體定義如下:在熵的公式中,對(duì)于給定的數(shù)據(jù)分割〔S〕,常數(shù)c表示類的水平數(shù),pi表示落入類的水平i中的特征值的比例。決策樹算法使用熵值來計(jì)算由每一個(gè)可能特征的分割所引起的同質(zhì)性〔均勻性〕變化,該計(jì)算稱為信息增益。對(duì)于特征F,信息增益的計(jì)算方法是分割前的數(shù)據(jù)分區(qū)〔S1〕的熵值減去由分割產(chǎn)生的數(shù)據(jù)分區(qū)〔S2〕的熵值,即:InfoGain(F)=Entropy(S1)-Enropy(S2)信息增益越高,根據(jù)某一特征分割后創(chuàng)立的分組越均衡,如果信息增益為零,那么根據(jù)該特征進(jìn)行分隔后的熵值不會(huì)減少。另一方面,最大信息增益等于分割前的熵值,這意味著分割后熵值為零,即決策結(jié)果是在完全同質(zhì)的分組中。注意:信息增益不是構(gòu)建決策樹的唯一分割標(biāo)準(zhǔn)。其他常用的標(biāo)準(zhǔn)有基尼系數(shù)、卡方統(tǒng)計(jì)量和增益比。修剪決策樹修剪決策樹是防止對(duì)訓(xùn)練數(shù)據(jù)的過度擬合,分為預(yù)剪枝決策樹法和后剪枝決策樹法。預(yù)剪枝決策樹法就是一旦決策樹到達(dá)一定數(shù)量的決策,或者決策節(jié)點(diǎn)僅含有少量的案例,就停止樹的增長(zhǎng),這也稱為提前停止法。該方法防止了做不必要的工作,是一個(gè)有吸引力的策略。然而,缺乏之處在于沒有方法知道決策樹是否會(huì)錯(cuò)過細(xì)微但重要的模式,這種模式只有在決策樹生長(zhǎng)到足夠大時(shí)才能學(xué)習(xí)到。后剪枝決策樹法是在一棵決策樹生長(zhǎng)得過大時(shí),根據(jù)節(jié)點(diǎn)處的錯(cuò)誤率使用修剪準(zhǔn)那么將決策樹減小到更適宜的大小。該方法比預(yù)剪枝法更有效。C5.0算法的優(yōu)點(diǎn)之一是它可以自動(dòng)修剪,該算法的總體策略就是事后修剪決策樹。它先生成一個(gè)過度擬合訓(xùn)練數(shù)據(jù)的大決策樹,然后刪除對(duì)分類誤差影響不大的節(jié)點(diǎn)和分枝,修剪的過程就是子樹提升或子樹替換。例子通過這個(gè)例子,將使用C5.0算法建立一個(gè)簡(jiǎn)單的信貸審批模型,同時(shí)調(diào)整模型的結(jié)果,從而使導(dǎo)致機(jī)構(gòu)財(cái)務(wù)損失的誤差最小化。第1步-收集數(shù)據(jù)credit.csv信貸數(shù)據(jù)集包含了1000個(gè)貸款案例,一個(gè)用來表示貸款特征和貸款申請(qǐng)者特征的數(shù)值特征與名義特征的組合,一個(gè)類變量表示貸款是否陷入違約。第2步-探索和準(zhǔn)備數(shù)據(jù)數(shù)據(jù)探索由于數(shù)據(jù)中的大多數(shù)特征為名義特征〔變量〕,所以在利用函數(shù)read.csv()導(dǎo)入數(shù)據(jù)時(shí),將忽略參數(shù)stringsAsFactors〔即使用默認(rèn)值TRUE〕。>credit<-read.csv(“”);>str(credit);較大的支票和儲(chǔ)蓄賬戶余額應(yīng)該與較小的貸款違約可能性相聯(lián)系。>table(credit$checking_balance);#支票賬戶余額<0DM>200DM1-200DMunknown27463269394>table(credit$savings_balance);#儲(chǔ)蓄賬戶余額<100DM>1000DM100-500DM500-1000DMunknown6034810363183有些貸款特征是數(shù)值型的變量。>summary(credit$months_loan_duration);#貸款期限Min.1stQu.MedianMean3rdQu.Max.>summary(credit$amount);#貸款金額Min.1stQu.MedianMean3rdQu.Max.250136623203271397218420貸款金額介于250~18420馬克之間,貸款期限為4~72個(gè)月,貸款期限的中位數(shù)為18個(gè)月,貸款金額的中位數(shù)為2320馬克。變量default表示貸款申請(qǐng)者是否未能符合約定的付款條件而陷入違約。所有申請(qǐng)貸款有30%陷入違約:>table(credit$default);#30%的貸款違約noyes700300數(shù)據(jù)準(zhǔn)備-創(chuàng)立隨機(jī)的訓(xùn)練數(shù)據(jù)集和測(cè)試數(shù)據(jù)集將數(shù)據(jù)分為兩局部:用來建立決策樹的訓(xùn)練數(shù)據(jù)集和用來評(píng)估模型性能的測(cè)試數(shù)據(jù)集。credit.csv數(shù)據(jù)集的數(shù)據(jù)已經(jīng)根據(jù)貸款的金額對(duì)數(shù)據(jù)進(jìn)行了排序,在劃分?jǐn)?shù)據(jù)前,需要通過隨機(jī)排列信貸數(shù)據(jù)框,以防止僅根據(jù)小額貸款建立模型,而基于大額貸款測(cè)試模型的錯(cuò)誤。隨機(jī)數(shù)的產(chǎn)生,可以使用函數(shù)runif(),該函數(shù)在默認(rèn)情況下產(chǎn)生0~1之間的隨機(jī)數(shù)序列。>set.seed(12345);#設(shè)置隨機(jī)種子,確保重復(fù)分析可得到相同的結(jié)果>credit_rand<-credit[order(runif(1000)),];#對(duì)信貸數(shù)據(jù)框隨機(jī)排序注意:order(c(0.25,0.5,0.75,0.1))返回的序列時(shí)4123。為了確認(rèn)得到的是相同的數(shù)據(jù),只是排序不同,我們?cè)趦蓚€(gè)數(shù)據(jù)框之間比擬特征amount:>summary(credit$amount);Min.1stQu.MedianMean3rdQu.Max.250136623203271397218420>summary(credit_rand$amount);Min.1stQu.MedianMean3rdQu.Max.250136623203271397218420可以使用head()函數(shù)來查看每一個(gè)數(shù)據(jù)框中的前幾個(gè)值:>head(credit$amount);[1]116959512096788248709055>head(credit_rand$amount);[1]119925761103402015011568雖然前幾個(gè)值不同,但由于主要統(tǒng)計(jì)量是相同的,所以這說明我們隨機(jī)排序的做法是正確的。>credit_train<-credit_rand[1:900,];#構(gòu)建訓(xùn)練數(shù)據(jù)集>credit_test<-credit_rand[901:1000,];#構(gòu)建測(cè)試數(shù)據(jù)集如果一切順利,在每一個(gè)數(shù)據(jù)集中,我們應(yīng)該有大約30%的違約貸款。據(jù)此檢查數(shù)據(jù)劃分是否平衡:>prop.table(table(credit_train$default));noyes>prop.table(table(credit_test$default));noyes第3步-基于數(shù)據(jù)訓(xùn)練模型使用C50添加包中的C5.0算法來訓(xùn)練決策樹模型。創(chuàng)立分類器:m<-C5.0(train,class,trials=1,costs=NULL)train:一個(gè)包含訓(xùn)練數(shù)據(jù)的數(shù)據(jù)框class:包含訓(xùn)練數(shù)據(jù)每一行的分類的一個(gè)因子向量trials:可選數(shù)值,用于控制自助法循環(huán)的次數(shù)〔默認(rèn)值為1〕,引入自適應(yīng)增強(qiáng)算法以提高模型性能,成為事實(shí)標(biāo)準(zhǔn)的數(shù)字取值10costs:可選矩陣,用于給出與各種類型錯(cuò)誤相對(duì)應(yīng)的本錢,用于提高模型某些方面的性能該函數(shù)返回一個(gè)能夠用于預(yù)測(cè)的C5.0模型對(duì)象。進(jìn)行預(yù)測(cè):p<-predict(m,test,type=”class”)m:有函數(shù)C5.0()訓(xùn)練的一個(gè)模型test:包含測(cè)試數(shù)據(jù)的數(shù)據(jù)框,與用來創(chuàng)立分類器的訓(xùn)練數(shù)據(jù)有同樣的特征type:取值“class”或者“prob”,標(biāo)識(shí)預(yù)測(cè)是類別值或者是原始的預(yù)測(cè)概率該函數(shù)返回一個(gè)向量,根據(jù)參數(shù)type的取值,該向量含有預(yù)測(cè)的類別值或者原始預(yù)測(cè)的概率值例子:credit_model<-C5.0(credit_train,loan_default)credit_prediction<-predit(credit_model,credit_test)可以通過輸入模型名稱來查看關(guān)于該決策樹的一些根本數(shù)據(jù):>credit_modelCall:C5.0.default(x=credit_train[-17],y=credit_train$default)ClassificationTreeNumberofsamples:900Numberofpredictors:16Treesize:67#說明有64個(gè)決策,決策樹夠大要查看決策,可以對(duì)模型調(diào)用summary()函數(shù):>summary(credit_model);C5.0[Release2.07GPLEdition]Classspecifiedbyattribute‘outcome’Decisiontree:checking_balance=unknown:no(358/44)checking_balancein{<0DM,>200DM,1-200DM}::...credit_historyin{perfect,verygood}::...dependents>1:yes(10/1):dependents<=1::..saving_balance=<100DM:yes(39/11)saving_balancein{>1000DM,500-1000DM,unknown}:no(8/1)saving_balance=100-500DM::..chedking_balance=<0DM:no(1)checking_balancein{>200DM,1-200DM}:yes(5/1)summary(credit_model)完整的輸出Call:C5.0.default(x=credit_train[-17],y=credit_train$default)C5.0[Release2.07GPLEdition] TueOct1317:36:202015Classspecifiedbyattribute`outcome'Decisiontree:checking_balancein{>200DM,unknown}:no(414/53)checking_balancein{<0DM,1-200DM}::...months_loan_duration<=11::...credit_historyin{critical,good,perfect,poor}:no(71/11):credit_history=verygood:yes(6/1)months_loan_duration>11::...savings_balancein{>1000DM,500-1000DM,unknown}::...checking_balance=1-200DM:no(52/9):checking_balance=<0DM:::...savings_balancein{>1000DM,500-1000DM}:no(8/1):savings_balance=unknown:::...credit_historyin{critical,perfect,poor}:no(3):credit_history=verygood:yes(2):credit_history=good:::...phone=no:yes(10/1):phone=yes:::...job=management:yes(2):jobin{skilled,unemployed,unskilled}:no(6/1)savings_balancein{<100DM,100-500DM}::...months_loan_duration>42:yes(35/5)months_loan_duration<=42::...percent_of_income<=3::...employment_duration=unemployed:::...dependents<=1:no(11/3)::dependents>1:yes(2):employment_duration=<1year:::...other_credit=bank:no(3)::other_credit=store:yes(1)::other_credit=none::::...job=management:no(2/1)::jobin{unemployed,unskilled}:yes(8/1)::job=skilled::::...age>28:no(5)::age<=28::::...amount<=3518:yes(7)::amount>3518:no(3):employment_duration=>7years:::...jobin{unemployed,unskilled}:no(3)::job=management::::...savings_balance=<100DM:no(7/2):::savings_balance=100-500DM:yes(1)::job=skilled::::...savings_balance=100-500DM:no(1)::savings_balance=<100DM::::...other_creditin{bank,store}:yes(4)::other_credit=none:[S1]:employment_duration=1-4years:::...amount>7721:yes(5)::amount<=7721::::...housing=other:yes(1)::housing=own:no(34/8)::housing=rent::::...years_at_residence<=3:no(5)::years_at_residence>3::::...credit_historyin{critical,good,perfect,:::poor}:yes(7/1)::credit_history=verygood:no(1):employment_duration=4-7years:::...savings_balance=100-500DM:no(8):savings_balance=<100DM:::...housingin{other,rent}:no(6):housing=own:::...purposein{car0,renovations}:yes(0):purposein{business,education}:no(4):purposein{car,furniture/appliances}:::...checking_balance=<0DM:yes(5):checking_balance=1-200DM:::...months_loan_duration>18:yes(2):months_loan_duration<=18:::...other_credit=bank:yes(1):other_creditin{none,:store}:no(3)percent_of_income>3::...credit_historyin{perfect,verygood}:yes(16/1)credit_historyin{critical,good,poor}::...purposein{business,car0}:no(11/3)purpose=education:yes(6)purpose=renovations::...years_at_residence<=3:yes(2)

溫馨提示

  • 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)論