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

下載本文檔

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

文檔簡介

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

提交評論