《机器学习与R语言(原书第2版)》一2.3 探索和理解数据
本節(jié)書(shū)摘來(lái)自華章出版社《機(jī)器學(xué)習(xí)與R語(yǔ)言(原書(shū)第2版)》一書(shū)中的第2章,第2.3節(jié),美] 布雷特·蘭茨(Brett Lantz) 著,李洪成 許金煒 李艦 譯更多章節(jié)內(nèi)容可以訪問(wèn)云棲社區(qū)“華章計(jì)算機(jī)”公眾號(hào)查看。
2.3 探索和理解數(shù)據(jù)
在收集數(shù)據(jù)并把它們載入R數(shù)據(jù)結(jié)構(gòu)以后,機(jī)器學(xué)習(xí)的下一個(gè)步驟是仔細(xì)檢查數(shù)據(jù)。在這個(gè)步驟中,你將開(kāi)始探索數(shù)據(jù)的特征和案例,并且找到數(shù)據(jù)的獨(dú)特之處。你對(duì)數(shù)據(jù)的理解越深刻,你將會(huì)更好地讓機(jī)器學(xué)習(xí)模型匹配你的學(xué)習(xí)問(wèn)題。
理解數(shù)據(jù)探索的最好方法就是通過(guò)例子。在本節(jié)中,我們將探索usedcars.csv數(shù)據(jù)集,它包含在流行的美國(guó)網(wǎng)站上最近發(fā)布的關(guān)于二手車(chē)打折銷(xiāo)售廣告的真實(shí)數(shù)據(jù)。
usedcars.csv數(shù)據(jù)集能在Packt出版社網(wǎng)站的本書(shū)支持頁(yè)面上下載。如果你要和例子一起操作,一定要確保這個(gè)文件下載且保存在你的R工作目錄中。
因?yàn)閿?shù)據(jù)集存儲(chǔ)為CSV形式,所以我們能用read.csv()函數(shù)把數(shù)據(jù)載入R數(shù)據(jù)框中:
有了usedcars數(shù)據(jù)框,現(xiàn)在我們將擔(dān)任數(shù)據(jù)科學(xué)家的角色,任務(wù)是理解二手車(chē)數(shù)據(jù)。盡管數(shù)據(jù)探索是一個(gè)不確定的過(guò)程,但可以把這個(gè)步驟想象成一個(gè)調(diào)查過(guò)程,在這個(gè)步驟中回答關(guān)于數(shù)據(jù)的問(wèn)題。具體的問(wèn)題可能會(huì)因任務(wù)的不同而有所不同,但問(wèn)題的類(lèi)型一般是相似的。不管數(shù)據(jù)集的大小,你應(yīng)該能把這個(gè)調(diào)查的基本步驟應(yīng)用到任何你感興趣的數(shù)據(jù)集中。
2.3.1 探索數(shù)據(jù)的結(jié)構(gòu)
調(diào)查一個(gè)新數(shù)據(jù)集的第一個(gè)問(wèn)題應(yīng)該是數(shù)據(jù)是怎么組織的。如果你足夠幸運(yùn),數(shù)據(jù)源會(huì)提供一個(gè)數(shù)據(jù)字典,它是一個(gè)描述數(shù)據(jù)特征的文檔。在我們的例子里,二手車(chē)數(shù)據(jù)并不包含這個(gè)文件,所以我們需要?jiǎng)?chuàng)建我們自己的數(shù)據(jù)字典。
函數(shù)str()提供了一個(gè)顯示數(shù)據(jù)框、向量和列表這樣的R數(shù)據(jù)結(jié)構(gòu)的方法。這個(gè)函數(shù)可以用來(lái)創(chuàng)建數(shù)據(jù)字典的基本輪廓:
使用這樣一條簡(jiǎn)單的命令,我們就知道了關(guān)于數(shù)據(jù)集的大量信息。語(yǔ)句150 obs告訴我們數(shù)據(jù)包含150個(gè)觀測(cè)值,這是數(shù)據(jù)包含150個(gè)記錄或例子的另一種說(shuō)法。觀測(cè)值的數(shù)量一般簡(jiǎn)寫(xiě)為n。因?yàn)槲覀冎罃?shù)據(jù)描述的是二手車(chē),所以現(xiàn)在可以認(rèn)為供銷(xiāo)售的車(chē)有n=150輛。
語(yǔ)句6 variables指的是數(shù)據(jù)中記錄了6個(gè)特征。這些特征根據(jù)名稱(chēng)排列成獨(dú)立的行。查看特征color所在的那一行,我們注意到一些額外的信息:
在變量名的后面,chr告訴我們這個(gè)特征是字符型的。在這個(gè)數(shù)據(jù)集中,3個(gè)變量是字符型,另外3個(gè)注明是int,表明是整數(shù)型。盡管這個(gè)數(shù)據(jù)集僅包含整數(shù)型和字符型,但當(dāng)使用非整數(shù)型數(shù)據(jù)時(shí),你還可能碰到數(shù)值型num。所有因子都列為factor型。在每個(gè)變量類(lèi)型的后面,R給出這個(gè)特征的最前面的幾個(gè)值。值"Yellow"、"Gray"、"Silver"和"Gray"是color特征的前4個(gè)值。
根據(jù)相關(guān)領(lǐng)域知識(shí),特征名稱(chēng)和特征值可以使我們對(duì)變量所代表的含義做出假定。變量year可能指汽車(chē)制造的時(shí)間,也可能指汽車(chē)廣告貼出的時(shí)間。接下來(lái)我們將更加仔細(xì)地調(diào)查這個(gè)特征,因?yàn)檫@4個(gè)案例值(2011 2011 2011 2011)適用于上述任何一個(gè)可能性。變量model、price、mileage、color和transmission極有可能指的是銷(xiāo)售汽車(chē)的特征。
盡管數(shù)據(jù)似乎被賦予了有內(nèi)在含義的變量名,但實(shí)際應(yīng)用中并不是所有的數(shù)據(jù)都是這樣的。有時(shí)候,數(shù)據(jù)集的特征可能是沒(méi)有具體含義的名稱(chēng)、代號(hào)或者像V1這樣的簡(jiǎn)單數(shù)字。通過(guò)進(jìn)一步調(diào)查,確定特征名稱(chēng)確切代表的含義是必不可少的。然而,即使特征名稱(chēng)有具體的含義,也要謹(jǐn)慎檢查提供給你的標(biāo)簽含義的正確性。我們繼續(xù)進(jìn)行下面的分析。
2.3.2 探索數(shù)值變量
為了調(diào)查二手車(chē)數(shù)據(jù)中的數(shù)值變量,我們將使用一組普遍使用的描述數(shù)值的指標(biāo),它們稱(chēng)為匯總統(tǒng)計(jì)量。summary()函數(shù)給出了幾個(gè)常用的匯總統(tǒng)計(jì)量。我們看看二手車(chē)數(shù)據(jù)中的year特征:
即使你對(duì)匯總統(tǒng)計(jì)量不熟悉,你也能從summary()函數(shù)輸出結(jié)果的標(biāo)題中猜出一些?,F(xiàn)在先不管特征year所代表的具體含義,事實(shí)上,當(dāng)我們看到諸如2000、2008以及2009這樣的數(shù)字時(shí),我們相信變量year表示汽車(chē)制造的時(shí)間而不是汽車(chē)廣告打出的時(shí)間,因?yàn)槲覀冎榔?chē)是最近才掛牌出售的。
我們也能使用summary()函數(shù)同時(shí)得到多個(gè)數(shù)值變量的匯總統(tǒng)計(jì)量:
summary()函數(shù)提供的6個(gè)匯總統(tǒng)計(jì)量是探索數(shù)據(jù)簡(jiǎn)單但強(qiáng)大的工具。匯總統(tǒng)計(jì)量可以分為兩種類(lèi)型:數(shù)據(jù)的中心測(cè)度和分散程度測(cè)度。
1.測(cè)量中心趨勢(shì)—平均數(shù)和中位數(shù)中心趨勢(shì)測(cè)度是這樣一類(lèi)統(tǒng)計(jì)量,它們用來(lái)標(biāo)識(shí)一組數(shù)據(jù)的中間值。你應(yīng)該已經(jīng)熟悉常用的一個(gè)測(cè)量中心趨勢(shì)的指標(biāo)—平均數(shù)。在一般使用中,當(dāng)一個(gè)數(shù)被認(rèn)為是平均數(shù)時(shí),它落在數(shù)據(jù)的兩個(gè)極值之間的某個(gè)位置。一個(gè)中等學(xué)生的成績(jī)可能落在他的同學(xué)成績(jī)的中間;一個(gè)平均體重不會(huì)是特別重或者特別輕。平均數(shù)是具有代表性的,它和組里的其他值不會(huì)差得太多。你可以把它設(shè)想成一個(gè)所有其他值用來(lái)進(jìn)行參照的值。
在統(tǒng)計(jì)學(xué)中,平均數(shù)也叫作均值,它定義為所有值的總和除以值的個(gè)數(shù)。例如,要想計(jì)算收入分別是$36 000、$44 000和$56 000的3個(gè)人的平均收入,我們可以如下計(jì)算:
R也提供一個(gè)mean()函數(shù),它能計(jì)算數(shù)值向量的均值:
這組人的平均收入是$45 333.33。從概念上來(lái)說(shuō),你可以想象這個(gè)值是,如果所有收入平等分給每一個(gè)人,每個(gè)人應(yīng)該得到的收入。
回憶先前的summary()函數(shù)的輸出,它列出了變量price和mileage的平均值。price的平均值為12 962,mileage的平均值為44 261,這表明數(shù)據(jù)集中具有代表性的二手車(chē)的價(jià)格應(yīng)該標(biāo)為$12 962,里程表的讀數(shù)為44 261。這些告訴我們數(shù)據(jù)的什么信息呢?因?yàn)槠骄鶅r(jià)格相對(duì)偏低,所以可以預(yù)料我們數(shù)據(jù)中包括經(jīng)濟(jì)型汽車(chē)。當(dāng)然,數(shù)據(jù)中也有可能包括新型的豪華汽車(chē),有著高里程數(shù),但是相對(duì)較低的平均里程數(shù)的統(tǒng)計(jì)數(shù)據(jù)并不提供支持這個(gè)假設(shè)的證據(jù)。另一方面,數(shù)據(jù)并沒(méi)有提供證據(jù)讓我們忽略這個(gè)可能性。所以,在進(jìn)一步檢驗(yàn)數(shù)據(jù)時(shí)我們要留意這一點(diǎn)。
盡管到目前為止,均值是最普遍引用的測(cè)量數(shù)據(jù)集中心的統(tǒng)計(jì)量,但它不一定是最合適的。另一個(gè)普遍使用的衡量中心趨勢(shì)的指標(biāo)是中位數(shù),它位于有序的值列表的中間。和均值一樣,R提供了函數(shù)median()來(lái)獲得這個(gè)值,可以把它應(yīng)用到工資數(shù)據(jù)中,如下所示:
因?yàn)橹虚g值是44 000,所以收入的中位數(shù)是$44 000。
如果數(shù)據(jù)集有偶數(shù)個(gè)值,那么就沒(méi)有最中間值。在這種情況下,一般是計(jì)算按順序排列的值列表最中間的兩個(gè)值的平均值作為中位數(shù)。例如,1,2,3,4的中位數(shù)是2.5。
乍一看,好像中位數(shù)和均值是很類(lèi)似的度量。肯定的是,均值$45 333.33和中位數(shù)$44 000并沒(méi)有太大的區(qū)別。為什么會(huì)有這兩種中心趨勢(shì)呢?這是由于落在值域兩端的值對(duì)均值和中位數(shù)的影響是不同的。尤其是均值,它對(duì)異常值,或者那些對(duì)大多數(shù)數(shù)據(jù)而言異常高或低的值,是非常敏感的。因?yàn)榫祵?duì)異常值是非常敏感的,所以它很容易受到那一小部分極端值的影響而改變大小。
再回憶summary()函數(shù)輸出的二手車(chē)數(shù)據(jù)集的中位數(shù)。盡管price的均值和中位數(shù)非常相似(相差大約5%),但mileage的均值和中位數(shù)就非常不同。對(duì)于mileage來(lái)說(shuō),均值44 261比中位數(shù)36 385大了超過(guò)20%。因?yàn)榫当戎形粩?shù)對(duì)極端值更敏感,所以均值比中位數(shù)大很多這個(gè)事實(shí),令我們懷疑數(shù)據(jù)集中的一些二手車(chē)有極高的mileage值。為了進(jìn)一步調(diào)查這一點(diǎn),我們需要在分析中應(yīng)用一些額外的匯總統(tǒng)計(jì)量。
2.測(cè)量數(shù)據(jù)分散程度—四分位數(shù)和五數(shù)匯總
測(cè)量數(shù)據(jù)的均值和中位數(shù)給我們一個(gè)迅速概括數(shù)據(jù)的方法,但是這些中心測(cè)度在數(shù)值的大小是否具有多樣性方面給我們提供了很少的信息。為了測(cè)量這種多樣性,我們需要應(yīng)用另一種匯總統(tǒng)計(jì)量,它們是與數(shù)據(jù)的分散程度相關(guān)的,或者說(shuō)它們是與數(shù)據(jù)之間“空隙”的緊密或者松弛有關(guān)系的。知道了數(shù)據(jù)之間的差異,就對(duì)數(shù)據(jù)的最大值和最小值有了了解,同時(shí)也會(huì)對(duì)大多數(shù)值是否接近均值和中位數(shù)有了了解。
五數(shù)匯總是一組5個(gè)統(tǒng)計(jì)量,它們大致描述一個(gè)數(shù)據(jù)集的差異。所有的5個(gè)統(tǒng)計(jì)量包含在函數(shù)summary()的輸出結(jié)果中。按順序排列,它們是:
1)最小值(Min.)。
2)第一四分位數(shù),或Q1(1st Qu.)。
3)中位數(shù),或Q2(Median)。
4)第三四分位數(shù),或Q3(3rd Qu.)。
5)最大值(Max.)。
如你預(yù)期的那樣,最小值和最大值是數(shù)據(jù)集中能發(fā)現(xiàn)的最極端的兩個(gè)值,分別表示數(shù)據(jù)的最小值和最大值。R提供了函數(shù)min()和函數(shù)max()來(lái)分別計(jì)算數(shù)據(jù)向量中的最小值和最大值。
最小值和最大值的差值稱(chēng)為極差。在R中,range()函數(shù)同時(shí)返回最小值和最大值。把range()函數(shù)和差值函數(shù)diff()相結(jié)合,你能夠用一條命令來(lái)檢驗(yàn)數(shù)據(jù)的極差:
第一四分位數(shù)和第三四分位數(shù)(即Q1和Q3)指的是有1/4的值小于Q1和有1/4的值大于Q3。它們和中位數(shù)(Q2)一起,3個(gè)四分位數(shù)把一個(gè)數(shù)據(jù)集分成4部分,每一部分都有相同數(shù)量的值。
四分位數(shù)是分位數(shù)的一種特殊類(lèi)型,分位數(shù)把數(shù)據(jù)分為相等數(shù)量的數(shù)值。除了四分位數(shù)外,普遍使用的分位數(shù)包括三分位數(shù)(分成3部分)、五分位數(shù)(分成5部分)、十分位數(shù)(分成10部分)和百分位數(shù)(分成100部分)。
百分位數(shù)通常用來(lái)給數(shù)據(jù)進(jìn)行等級(jí)評(píng)定。例如,一個(gè)學(xué)生的考試成績(jī)排列在百分位數(shù)的第99分位數(shù),說(shuō)明他表現(xiàn)得比其他99%的測(cè)試者好。
我們對(duì)Q1和Q3之間的50%的數(shù)據(jù)特別感興趣,因?yàn)樗鼈兙褪菙?shù)據(jù)分散程度的一個(gè)測(cè)度。Q1和Q3之間的差稱(chēng)為四分位距(Inter Quartile Range,IQR),可以用函數(shù)IQR()來(lái)計(jì)算,例如:
我們也能從summary()輸出的usedcars$price變量的結(jié)果來(lái)手動(dòng)計(jì)算這個(gè)值,即計(jì)算14 904-10 995=3909。我們計(jì)算的值與IQR()輸出結(jié)果之間有差別,這是因?yàn)镽自動(dòng)對(duì)summary()輸出結(jié)果進(jìn)行四舍五入。
quantile()函數(shù)提供了穩(wěn)健的工具來(lái)給出一組值的分位數(shù)。默認(rèn)情況下,quantile()函數(shù)返回五數(shù)匯總的值。把這個(gè)函數(shù)應(yīng)用到二手車(chē)數(shù)據(jù)中,將產(chǎn)生與前面一樣的統(tǒng)計(jì)量:
當(dāng)計(jì)算分位數(shù)時(shí),有很多種方法處理并列數(shù)值和沒(méi)有中間值的數(shù)據(jù)集。通過(guò)指定type參數(shù),quantile()函數(shù)能夠在9個(gè)不同算法之間選擇計(jì)算分位數(shù)的方法。如果你的項(xiàng)目要求一個(gè)精確定義的分位數(shù),使用?quantile命令來(lái)閱讀該函數(shù)的幫助文件是很重要的。
如果我們指定另一個(gè)probs參數(shù),它用一個(gè)向量來(lái)表示分割點(diǎn),我們能就得到任意的分位數(shù),比如第1和第99的百分位數(shù)可以按如下方式求得:
序列函數(shù)seq()用來(lái)產(chǎn)生由等間距大小的值構(gòu)成的向量。這個(gè)函數(shù)使得獲得其他分位數(shù)變得很容易,比如要想輸出五分位數(shù)(5個(gè)組),可以使用如下所示的命令:
由于理解了五數(shù)匯總,所以我們重新檢查對(duì)二手車(chē)數(shù)據(jù)應(yīng)用函數(shù)summary()的輸出結(jié)果。對(duì)變量price,最小值是$3800、最大值是$21 992。有趣的是,最小值和Q1之間的差是$7000,與Q3和最大值的差是一樣的。然而,Q1和中位數(shù)的差,以及中位數(shù)和Q3的差大約是$2000。這就表明上、下25%的值的分布比中間50%的值更分散,似乎中心周?chē)闹稻奂酶泳o密。沒(méi)有意外的是,我們從變量mileage也看到了相似的趨勢(shì)。在本章后面你將學(xué)到,這個(gè)分散模式非常普遍,此時(shí)稱(chēng)數(shù)據(jù)為“正態(tài)”分布。
mileage變量的分散程度同時(shí)也呈現(xiàn)了另一個(gè)有趣的性質(zhì):Q3和最大值之間的差遠(yuǎn)大于最小值和Q1之間的差。換句話說(shuō),較大的值比較小的值更分散。
這個(gè)發(fā)現(xiàn)解釋了均值遠(yuǎn)大于中位數(shù)的原因。因?yàn)榫祵?duì)極端值更敏感,所以均值會(huì)被極端大的值拉高,而中位數(shù)則相比變化不大。這是一個(gè)很重要的性質(zhì),當(dāng)數(shù)據(jù)可視化地呈現(xiàn)出來(lái)時(shí)就更顯而易見(jiàn)。
3.數(shù)值變量的可視化—箱圖
可視化數(shù)值變量對(duì)診斷數(shù)據(jù)問(wèn)題是有幫助的。一種對(duì)五數(shù)匯總的常用可視化方式是箱圖(或者稱(chēng)為箱須圖)。箱圖以一種特定方式顯示數(shù)值變量的中心和分散程度,這種方式使你能很快了解變量的值域和偏度,或者它還可以和其他變量進(jìn)行比較。
下面觀察二手車(chē)數(shù)據(jù)的變量price和變量mileage的箱圖。要想得到一個(gè)變量的箱圖,可以使用函數(shù)boxplot()。我們也將指定一些其他參數(shù)—main和ylab,它們分別為圖形加一個(gè)標(biāo)題和為y軸(即垂直軸)加一個(gè)標(biāo)簽。創(chuàng)建變量price和變量mileage箱圖的命令是:
R將產(chǎn)生下面的圖形:
箱圖使用水平線和點(diǎn)來(lái)表示五數(shù)匯總值。在每個(gè)圖的中間,構(gòu)成盒子的水平線從下向上,依次代表Q1、Q2(中位數(shù))和Q3。中位數(shù)用粗黑線表示,對(duì)于變量price,這條線在垂直軸上的縱坐標(biāo)是$13 592;對(duì)于變量mileage,這條線的垂直坐標(biāo)是36 385。
在如上圖所示的簡(jiǎn)單箱圖中,箱圖的寬度是任意的,它不能說(shuō)明任何數(shù)據(jù)特征。為了滿足更加復(fù)雜分析的需要,用盒子的形狀和尺寸,對(duì)多組數(shù)據(jù)進(jìn)行比較是可能的。要想知道更多關(guān)于箱圖的這種特征的信息,可以通過(guò)?boxplot命令,查詢(xún)R中boxplot()函數(shù)的幫助文件中的notch和varwidth選項(xiàng)。
最小值和最大值是用細(xì)線(whisker)來(lái)表示的,就是在盒子下面和上面的細(xì)線。然而,通常僅允許細(xì)線延伸到最小為低于Q1的1.5倍IQR的最小值,或者延伸到最大為高于Q3的1.5倍IQR的最大值。任何超出這個(gè)臨界值的值都認(rèn)為是異常值,并且用圓圈或者點(diǎn)來(lái)表示。例如,變量price的IQR是3909,Q1是10995,Q3是14904。因此異常值是任何小于10 995-1.5×3909=5131.5或者大于14 904+1.5×3909=20 767.5的值。
箱圖在高端和低端都會(huì)出現(xiàn)這類(lèi)異常值。在mileage的箱圖中,在低端沒(méi)有這樣的異常值,所以底部的細(xì)線延伸到最小值4867。在高端,我們看到了幾個(gè)比100 000英里大的異常值。那些異常值就可以解釋我們前面探索中所發(fā)現(xiàn)的問(wèn)題,即解釋了均值遠(yuǎn)大于中位數(shù)。
4.數(shù)值變量可視化—直方圖
直方圖(histogram)是另一種形象化描述數(shù)值變量間差異的方式。它和箱圖相似的地方在于,它也把變量值按照預(yù)先設(shè)定的份數(shù)進(jìn)行分隔,或者說(shuō)按照預(yù)先定義的容納變量值的分段進(jìn)行分隔。兩者的相似性就是這些。一方面,箱圖要求4部分?jǐn)?shù)據(jù)的每部分必須包含相同數(shù)量的值,根據(jù)需要分段也可以變寬或變窄。另一方面,直方圖可以有相同寬度的任意數(shù)量的分段,但是分段可以包含不同數(shù)量的值。
可以用函數(shù)hist()為二手車(chē)數(shù)據(jù)的變量price和mileage繪制直方圖。就像我們繪制箱圖時(shí)那樣,可以用參數(shù)main來(lái)指定圖形的標(biāo)題,用參數(shù)xlab標(biāo)記x軸。繪制直方圖的命令如下:
產(chǎn)生的直方圖如下圖所示。
直方圖是由一系列的豎條組成,其高度表示落在等長(zhǎng)的劃分?jǐn)?shù)據(jù)值的分段內(nèi)的數(shù)據(jù)值的個(gè)數(shù)或頻率。分割每一個(gè)豎條的垂直線,就像橫坐標(biāo)的標(biāo)簽一樣,表明分段內(nèi)值的起始點(diǎn)和終點(diǎn)。
你可能注意到前面的直方圖中有不同數(shù)量的豎條。這是因?yàn)閔ist()函數(shù)試圖為給定的變量范圍找出合理數(shù)量的豎條。如果你想重寫(xiě)這里的默認(rèn)值,使用參數(shù)breaks。設(shè)置breaks = 10將創(chuàng)建等寬度的10個(gè)豎條,設(shè)置參數(shù)breaks為一個(gè)向量,如c(5000, 10000, 15000, 20000)將以給出的特定值為分隔點(diǎn)來(lái)創(chuàng)建豎條。
在變量price的直方圖上,10個(gè)豎條中的每一個(gè)都表示范圍為$2000的分段,這些分段的范圍是從$2000開(kāi)始,到$14 000結(jié)束。直方圖中間最高的豎條代表的分段范圍為$12 000~$14 000,頻率是50。因?yàn)槲覀冎罃?shù)據(jù)中有150輛汽車(chē),其中1/3汽車(chē)的價(jià)格是為$12 000~$14 000。接近90輛汽車(chē)(超過(guò)一半)的報(bào)價(jià)為$12 000~$16 000。
變量mileage的直方圖包括8個(gè)豎條,它表明每個(gè)分段長(zhǎng)度都是20 000英里,值域從0開(kāi)始,到160 000英里結(jié)束。與變量price的直方圖不一樣,在變量mileage的直方圖中,最高的豎條不在數(shù)據(jù)的中心,而是在直方圖的左側(cè)。這個(gè)最高豎條所在的分段中有70輛車(chē),里程表的范圍為20 000~40 000英里。
你可能也注意到了兩個(gè)直方圖的形狀有一點(diǎn)不同。似乎二手車(chē)price的圖形趨向于平均分布在中心的兩側(cè),而汽車(chē)mileage的圖形則偏到了左側(cè)。這個(gè)性質(zhì)稱(chēng)為偏度(skew),具體來(lái)說(shuō)是右偏,因?yàn)榕c低端的值(右側(cè))相比高端的值(右側(cè))更加分散。如下圖所示,偏斜數(shù)據(jù)的直方圖看上去偏到了一邊。
能在數(shù)據(jù)中快速診斷出這類(lèi)模式是直方圖作為數(shù)據(jù)探索工具的優(yōu)點(diǎn)之一。在我們檢驗(yàn)其他數(shù)值數(shù)據(jù)模型的模式時(shí),這個(gè)優(yōu)點(diǎn)將更為重要。
5.了解數(shù)值數(shù)據(jù)—均勻分布和正態(tài)分布
描述數(shù)據(jù)的中心和分散程度的直方圖、箱圖和統(tǒng)計(jì)量都提供了檢驗(yàn)變量分布的方法。變量的分布描述了一個(gè)值落在不同值域中的可能性大小。
如果所有值都是等可能發(fā)生的,這個(gè)分布就稱(chēng)為均勻分布,例如,記錄投擲一個(gè)均勻的六邊形骰子所得結(jié)果的數(shù)據(jù)集。容易用直方圖來(lái)檢測(cè)一個(gè)均勻分布,因?yàn)槠渲狈綀D的豎條大致有一樣的高度。當(dāng)用直方圖來(lái)可視化數(shù)據(jù)時(shí),它可能如下圖所示。
需要注意的重要一點(diǎn)是,并非所有的隨機(jī)事件都服從均勻分布。例如,擲一個(gè)六邊重量不同的魔術(shù)骰子,將使得某些數(shù)字發(fā)生的概率比其他的大。每一次擲骰子會(huì)產(chǎn)生一個(gè)隨機(jī)數(shù)字,但6個(gè)數(shù)字出現(xiàn)的概率不相等。
例如,回到前面的二手車(chē)數(shù)據(jù)。很明顯,這個(gè)數(shù)據(jù)不是均勻分布的,因?yàn)橛行┲得黠@比其他值發(fā)生的可能性更大。事實(shí)上,在變量price的直方圖上,可以看出中心值兩邊的值,偏離中心越遠(yuǎn),發(fā)生的頻率就越小,這就是一個(gè)鐘形的數(shù)據(jù)分布。這個(gè)特征在現(xiàn)實(shí)世界的數(shù)據(jù)中非常普遍,它成為所謂的正態(tài)分布的標(biāo)志性特征。鐘形曲線的典型形狀如下圖所示。
盡管有許多非正態(tài)分布的類(lèi)型,但許多現(xiàn)象產(chǎn)生的數(shù)據(jù)都可以用正態(tài)分布來(lái)描述。因此,正態(tài)分布的性質(zhì)已被研究得很透徹了。
6.測(cè)量數(shù)據(jù)的分散程度—方差和標(biāo)準(zhǔn)差
分布使我們能夠用少量的參數(shù)來(lái)描述大量值的特性。描述現(xiàn)實(shí)生活中大量數(shù)據(jù)的正態(tài)分布,可以用兩個(gè)參數(shù)來(lái)定義:中心和分散程度。正態(tài)分布的中心可以用均值來(lái)定義,正如我們?cè)谇懊媸褂玫哪菢?。分散程度通過(guò)一種稱(chēng)為標(biāo)準(zhǔn)差的統(tǒng)計(jì)量來(lái)測(cè)量。
為了計(jì)算標(biāo)準(zhǔn)差,我們必須先獲得方差,方差定義為每一個(gè)值與均值之間的差的平方的均值。用數(shù)學(xué)符號(hào)表示,一組具有n個(gè)值的變量x的方差可以通過(guò)下面的公式定義。希臘字母表示數(shù)值的均值,方差用希臘字母的平方來(lái)表示:
標(biāo)準(zhǔn)差就是方差的平方根,用來(lái)表示,如下所示:
要想在R中獲得方差和標(biāo)準(zhǔn)差,可以應(yīng)用函數(shù)var()和函數(shù)sd()。例如,計(jì)算變量price與變量mileage的方差與標(biāo)準(zhǔn)差,如下所示:
當(dāng)我們解釋方差時(shí),方差越大表示數(shù)據(jù)在均值周?chē)椒稚?。?biāo)準(zhǔn)差表示平均來(lái)看每個(gè)值與均值相差多少。
如果你用上面的公式手動(dòng)計(jì)算這些統(tǒng)計(jì)量,你得出的結(jié)果將會(huì)與R的內(nèi)置函數(shù)得出的結(jié)果略有不同。這是因?yàn)樯厦娴墓浇o出的是總體方差(除以n),而R內(nèi)置函數(shù)用的是樣本方差(除以n-1)。除非數(shù)據(jù)集很小,否則這兩種結(jié)果的區(qū)別是很小的。
在假設(shè)數(shù)據(jù)服從正態(tài)分布的條件下,標(biāo)準(zhǔn)差能用來(lái)快速地估計(jì)一個(gè)給定值有多大程度的偏大或者偏小。68-95-99.7規(guī)則說(shuō)明在正態(tài)分布中68%的值落在均值左右1個(gè)標(biāo)準(zhǔn)差的范圍內(nèi),而95%和99.7%的值分別落在均值左右2個(gè)和3個(gè)標(biāo)準(zhǔn)差的范圍內(nèi)。這個(gè)規(guī)則可以由下圖來(lái)說(shuō)明。
把這個(gè)知識(shí)應(yīng)用到二手車(chē)數(shù)據(jù)中,我們知道變量price的均值和標(biāo)準(zhǔn)差分別為$12 962和$3122,假設(shè)price數(shù)據(jù)是正態(tài)分布,該數(shù)據(jù)中大約有68%的車(chē)的廣告價(jià)格為$12 962-$3122=$9840到$12 962+$3122=$16 804。
盡管?chē)?yán)格地說(shuō),68-95-99.7規(guī)則僅僅局限于正態(tài)分布中,但是這個(gè)基本準(zhǔn)則能應(yīng)用到所有的數(shù)據(jù)中,數(shù)值落在均值的3個(gè)標(biāo)準(zhǔn)差以外是極端罕見(jiàn)的事件。
2.3.3 探索分類(lèi)變量
我們記得二手車(chē)數(shù)據(jù)集有3個(gè)分類(lèi)變量:model、color和transmission。因?yàn)樵谳d入數(shù)據(jù)時(shí),我們使用了stringsAsFactors = FALSE參數(shù),所以R把它們作為字符變量而不是自動(dòng)把它們轉(zhuǎn)化成factor類(lèi)型。此外,我們可能考慮把year看作分類(lèi)變量。盡管把它作為數(shù)值(int)向量載入的,但是每一個(gè)year值是一個(gè)類(lèi)別,該類(lèi)別可以應(yīng)用到多輛汽車(chē)上。
與數(shù)值數(shù)據(jù)相比,分類(lèi)數(shù)據(jù)是用表格而不是匯總統(tǒng)計(jì)量來(lái)探索的。表示單個(gè)分類(lèi)變量的表格稱(chēng)為一元表。函數(shù)table()能用來(lái)產(chǎn)生二手車(chē)數(shù)據(jù)的一元表:
table()的輸出列出了名義變量的不同類(lèi)別和屬于該類(lèi)別的值的數(shù)量。由于我們知道數(shù)據(jù)集有150個(gè)二手車(chē)數(shù)據(jù),所以我們能確定其中大約有1/3是在2010年制造的,因?yàn)?9/150=0.327。
R也能在table()函數(shù)產(chǎn)生的表格上應(yīng)用函數(shù)prop.table(),直接計(jì)算表格比例,如下所示:
函數(shù)prop.table()的結(jié)果能與其他R函數(shù)相結(jié)合來(lái)轉(zhuǎn)換輸出的結(jié)果。假設(shè)我們想要把結(jié)果用保留一位小數(shù)的百分?jǐn)?shù)來(lái)表示,就可以把各個(gè)比例值乘以100,再用round()函數(shù)并指定digits = 1來(lái)實(shí)現(xiàn),如下所示:
盡管它包含的信息和prop.table()函數(shù)默認(rèn)的輸出結(jié)果一樣,但是相對(duì)來(lái)說(shuō)這樣更容易閱讀。結(jié)果顯示Black(黑色)是最普遍的顏色,因?yàn)樵趶V告列出的所有汽車(chē)中將近有1/4(23.3%)是Black(黑色)的。Silver(銀灰色)與之接近,排在第二位,有21.3%;Red(紅色)是第三,有16.7%。
衡量中心趨勢(shì)—眾數(shù)
在統(tǒng)計(jì)術(shù)語(yǔ)中,一個(gè)特征(即變量)的眾數(shù)是指出現(xiàn)最頻繁的那個(gè)值。與均值和中位數(shù)一樣,眾數(shù)是另一個(gè)測(cè)量中心趨勢(shì)的統(tǒng)計(jì)量。它通常應(yīng)用在分類(lèi)數(shù)據(jù)中,因?yàn)榫岛椭形粩?shù)并不是為名義變量定義的。
例如,在二手車(chē)數(shù)據(jù)中,year變量的眾數(shù)是2010,而model和color的眾數(shù)分別為SE和Black。一個(gè)變量可能有多個(gè)眾數(shù);只有一個(gè)眾數(shù)的變量是單峰的,有兩個(gè)眾數(shù)的變量為雙峰的。有多個(gè)眾數(shù)的數(shù)據(jù)通常稱(chēng)為多峰的。
盡管你可能猜測(cè)能用mode()函數(shù)得到眾數(shù),但是R卻是用這個(gè)函數(shù)得出變量的類(lèi)型(如數(shù)值型,列表等),而不是統(tǒng)計(jì)量眾數(shù)。相反,為了找到統(tǒng)計(jì)量眾數(shù),只需要查看表格輸出結(jié)果中具有最大值的類(lèi)別即可。
眾數(shù)是從定性的角度來(lái)了解數(shù)據(jù)集中的重要值。然大多數(shù)。例如,盡管Black是二手車(chē)變量color的眾數(shù),但是Black僅占所有列出汽車(chē)的1/4。
考慮眾數(shù)時(shí)最好把它和其他的類(lèi)別聯(lián)系起來(lái)。是否有一個(gè)類(lèi)別占主導(dǎo)地位,或者多個(gè)類(lèi)別占主導(dǎo)地位?據(jù)此,我們可能會(huì)問(wèn):最常見(jiàn)的值告訴我們被測(cè)量變量的哪些信息。如果Black和Silver是最普遍使用的二手車(chē)顏色,那么我們可以假設(shè)數(shù)據(jù)是從奢華汽車(chē)中得來(lái)的,這類(lèi)汽車(chē)趨向于銷(xiāo)售更加保守的顏色;或者它們也可能是經(jīng)濟(jì)型汽車(chē),這類(lèi)汽車(chē)有更少可供選擇的顏色。在我們進(jìn)一步檢驗(yàn)這些數(shù)據(jù)時(shí),我們要記住這些問(wèn)題。
把眾數(shù)考慮成最普遍的值,使得我們能夠把統(tǒng)計(jì)量眾數(shù)的概念應(yīng)用到數(shù)值數(shù)據(jù)。嚴(yán)格地說(shuō),連續(xù)變量是不可能有眾數(shù)的,因?yàn)闆](méi)有兩個(gè)值可能是重復(fù)的。然而,如果我們把眾數(shù)考慮成直方圖中最高的那個(gè)豎條,就能夠討論如變量price和變量mileage的眾數(shù)。當(dāng)探索數(shù)值數(shù)據(jù)時(shí),考慮眾數(shù)是很有幫助的,特別要檢驗(yàn)數(shù)據(jù)是否為多峰的。
2.3.4 探索變量之間的關(guān)系
到目前為止,我們一次只檢驗(yàn)一個(gè)變量,只計(jì)算單變量統(tǒng)計(jì)量。在我們的研究過(guò)程中,我們列舉了當(dāng)時(shí)尚不能回答的一些問(wèn)題:
price數(shù)據(jù)有沒(méi)有暗示我們只檢驗(yàn)了經(jīng)濟(jì)類(lèi)的汽車(chē),還是檢驗(yàn)的數(shù)據(jù)中也包括高里程的奢華汽車(chē)呢?
model和color數(shù)據(jù)之間的關(guān)系,提供了關(guān)于我們所檢驗(yàn)的汽車(chē)類(lèi)型的洞察嗎?
這類(lèi)問(wèn)題能通過(guò)關(guān)注二變量關(guān)系,即考慮兩個(gè)變量之間的關(guān)系來(lái)進(jìn)行處理。超過(guò)兩個(gè)變量之間的關(guān)系稱(chēng)為多變量關(guān)系。下面從二變量的情況開(kāi)始討論。
1.變量之間關(guān)系的可視化—散點(diǎn)圖
散點(diǎn)圖是一種可視化二變量之間關(guān)系的圖形。它是一個(gè)二維圖形,將點(diǎn)畫(huà)在坐標(biāo)平面中,該坐標(biāo)平面的橫坐標(biāo)x是其中一個(gè)特征的值,縱坐標(biāo)y由另一個(gè)特征的值來(lái)標(biāo)識(shí)。坐標(biāo)平面上點(diǎn)的排放模式,揭示了兩個(gè)特征之間的內(nèi)在關(guān)系。
為了回答變量price和mileage之間的關(guān)系,下面來(lái)分析一個(gè)散點(diǎn)圖。我們將使用plot()函數(shù)以及在前面繪圖中用過(guò)的標(biāo)記圖形的參數(shù)main、xlab和ylab。
為了使用plot()函數(shù),我們需要指定x向量和y向量,它們含有圖形中點(diǎn)子位置的值。盡管無(wú)論用哪個(gè)變量來(lái)表示x坐標(biāo)和y坐標(biāo),結(jié)論都是一樣的,但是慣例規(guī)定,y變量是假定依賴(lài)于另一個(gè)變量的變量(因此稱(chēng)為因變量)。因?yàn)槔锍瘫淼淖x數(shù)不能被賣(mài)家修改,所以它不可能由汽車(chē)的價(jià)格決定。相反,我們假設(shè)price是由里程表的里程數(shù)(mileage)決定的。因此,我們將把price作為y坐標(biāo),或者稱(chēng)因變量。
繪制散點(diǎn)圖的全部命令如下:
這將產(chǎn)生下面的散點(diǎn)圖:
使用散點(diǎn)圖,我們可以了解二手車(chē)的價(jià)格和里程表的讀數(shù)之間的一個(gè)清晰關(guān)系。為了研究這張圖,我們觀察當(dāng)x軸變量的值增加時(shí),y軸變量的值是如何改變的。在這個(gè)例子中,當(dāng)mileage值增加時(shí),price值變得越來(lái)越低。如果你曾經(jīng)賣(mài)過(guò)或者買(mǎi)過(guò)二手車(chē),這一點(diǎn)不難得到。
一個(gè)更有趣的發(fā)現(xiàn)可能是,除了125 000英里和$14 000所構(gòu)成的一個(gè)異常點(diǎn)以外,有很少一部分汽車(chē)同時(shí)有很高的price和很高的mileage。缺少更多這樣的點(diǎn),就提供了證據(jù)來(lái)支持下列結(jié)論:數(shù)據(jù)中不可能包含高里程的奢華汽車(chē)。數(shù)據(jù)中所有貴的汽車(chē),特別是那些$17 500以上的汽車(chē),看上去都有超低的里程數(shù),這暗示我們可能看到的是一類(lèi)全新的賣(mài)價(jià)為$20 000的汽車(chē)。
變量price和變量mileage之間的關(guān)系是負(fù)相關(guān)的,因?yàn)樯Ⅻc(diǎn)圖是一條向下傾斜的直線。正相關(guān)看起來(lái)是形成一條向上傾斜的直線。一條水平的線,或者一個(gè)看上去隨機(jī)分布的點(diǎn)集,證明兩個(gè)變量完全不相關(guān)。兩個(gè)變量之間線性關(guān)系的強(qiáng)弱是通過(guò)統(tǒng)計(jì)量相關(guān)系數(shù)來(lái)測(cè)量的。相關(guān)系數(shù)在第6章中詳細(xì)討論,第6章將學(xué)習(xí)如何使用回歸方法建立線性關(guān)系。
注意不是所有的關(guān)聯(lián)都形成直線。有時(shí),點(diǎn)會(huì)形成一個(gè)U形或者V形;有時(shí),關(guān)聯(lián)模式看上去隨著x變量或者y變量的增加而變?nèi)趸蛘咦儚?qiáng)。這樣的模式說(shuō)明兩個(gè)變量之間的關(guān)系不是線性的。
2.檢驗(yàn)變量之間的關(guān)系—雙向交叉表
為了檢驗(yàn)兩個(gè)名義變量之間的關(guān)系,使用雙向交叉表(two-way cross-tabulation,也稱(chēng)為交叉表或者列聯(lián)表)。交叉表和散點(diǎn)圖相類(lèi)似,它允許你觀察一個(gè)變量的值是如何隨著另一個(gè)值的變化而變化的。雙向交叉表的格式是:行是一個(gè)變量的水平,列是另一個(gè)變量的水平。每個(gè)表格的單元格中的值用來(lái)表明落在特定行、列的單元格中的值的數(shù)量。
為了回答我們關(guān)于model和color之間關(guān)系的問(wèn)題,我們觀察一個(gè)交叉表。R中的多個(gè)函數(shù)都能生成雙向表,包括table()函數(shù),我們也可以把table()函數(shù)用在單向表中。由Gregory R. Warnes創(chuàng)建的gmodels添加包中的CrossTable()函數(shù)可能是用戶最喜歡用的函數(shù),因?yàn)樗谝粋€(gè)表格中提供了行、列和邊際百分比,省去了我們要自己組合這些數(shù)據(jù)的麻煩。要想安裝gmodels添加包,輸入:
在安裝了添加包后,僅需要輸入命令library(gmodels)載入該添加包。在每次用到CrossTable()函數(shù)時(shí),你需要在R系統(tǒng)中載入這個(gè)添加包。
在我們繼續(xù)分析以前,讓我們通過(guò)減少color變量中水平的數(shù)量來(lái)簡(jiǎn)化我們的任務(wù)。這個(gè)變量有9個(gè)水平,但是我們并不是真的需要如此詳細(xì)。我們真正感興趣的是汽車(chē)的顏色是否是保守的。為此,我們把9種顏色分為兩組:第一組包括保守的顏色:Black、Gray、Silver和White;第二組包括Blue、Gold、Green、Red和Yellow。我們創(chuàng)建一個(gè)二元指示變量(常常稱(chēng)為啞變量),根據(jù)我們的定義來(lái)表示汽車(chē)的顏色是否是保守的。如果是保守的顏色,指示變量的值就是1,否則值為0。
這里,你可能注意到一個(gè)新的命令:%in%運(yùn)算符,它根據(jù)左邊的值是否在右邊的向量中,為運(yùn)算符左邊向量中的每一個(gè)值返回TRUE或者FALSE。簡(jiǎn)單地說(shuō),你可以理解為“這輛二手車(chē)的顏色是在black、gray、silver和white這組中嗎?”
觀察由table()得到的我們新建變量的輸出結(jié)果,我們看到2/3的汽車(chē)有保守的顏色,而1/3的汽車(chē)沒(méi)有保守的顏色:
現(xiàn)在,讓我們看看交叉表中conservative(保守)顏色汽車(chē)的比例是如何隨著model變化而變化的。因?yàn)槲覀兗僭O(shè)汽車(chē)的型號(hào)決定了顏色的選擇,所以我們把conservative作為因變量(y)。CrossTable()命令的應(yīng)用如下:
由此產(chǎn)生了下面的表格:
CrossTable()的輸出中包含了大量數(shù)據(jù)。最上面的一張圖(標(biāo)示為Cell Contents)說(shuō)明如何解釋每一個(gè)值。表格的行表示了二手車(chē)的3個(gè)型號(hào):SE、SEL和SES(再加上額外的一行用來(lái)表示所有型號(hào)的匯總)。表格的列表示汽車(chē)的顏色是否是保守的(加上額外的一列表示對(duì)所有兩種顏色求和)。每個(gè)格子中的第一個(gè)值表示那個(gè)型號(hào)和那個(gè)顏色的汽車(chē)的數(shù)量。比例分別表示這個(gè)格子的卡方統(tǒng)計(jì)量,以及在行、列和整個(gè)表格中占的比例。
在表格中,我們最感興趣的是保守顏色汽車(chē)占每一種型號(hào)的行比例。行比例告訴我們0.654(65%)的SE汽車(chē)用保守的顏色,SEL汽車(chē)的這個(gè)比例是0.696(70%),SES汽車(chē)是0.653(65%)。這些數(shù)值的差異相對(duì)來(lái)說(shuō)是較小的,這暗示不同型號(hào)的汽車(chē)選擇的顏色類(lèi)型沒(méi)有顯著的差異。
卡方值指出了在兩個(gè)變量中每個(gè)單元格在皮爾森卡方獨(dú)立性檢驗(yàn)中的貢獻(xiàn)。這個(gè)檢驗(yàn)測(cè)量了表格中每個(gè)單元格內(nèi)數(shù)量的不同只是由于偶然的可能性有多大。如果概率值是非常低的,那么就提供了充足的證據(jù)表明這兩個(gè)變量是相關(guān)的。
你能在引用CrossTable()函數(shù)時(shí)增加一個(gè)額外的參數(shù),指定chisq = TRUE來(lái)獲得卡方檢驗(yàn)的結(jié)果。在這個(gè)案例中,概率值是93%,暗示單元格內(nèi)數(shù)量的變化很可能僅僅是由于偶然,而不是在model和color之間真的存在關(guān)聯(lián)。
總結(jié)
以上是生活随笔為你收集整理的《机器学习与R语言(原书第2版)》一2.3 探索和理解数据的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 《CCNA ICND2(200-101)
- 下一篇: Linux有问必答:如何为在Linux中