在機器學習領域中,可視化并不僅僅用來制作漂亮的報表。項目的各個階段都大量使用可視化技術(shù)。 在開始一項新任務時,通過可視化手段探索數(shù)據(jù)往往是任務的第一步。我們通過圖表匯總數(shù)據(jù),放棄無關(guān)緊要的細節(jié)。相比直接閱讀許多行原始數(shù)據(jù),可視化能更好地幫助人類把握數(shù)據(jù)的要點。令人驚嘆的是,僅僅通過可視化工具創(chuàng)建一些看上去再簡單不過的圖表,就能獲得大量洞見。 接著,在分析模型表現(xiàn)和模型報告的結(jié)果時,我們也常常使用可視化。有時候,為了理解復雜的模型,我們需要將高維空間映射為視覺上更直觀的二維或三維圖形。 總而言之,可視化是一個相對快捷的從數(shù)據(jù)中獲取新知的手段。因此,學習這一極為重要的技術(shù),并將其納入你的日常機器學習工具箱,是至關(guān)重要的。 本文將使用 概覽
下面的材料以Jupyter notebook的形式查看效果最佳。如果你克隆了本教程的代碼倉庫,你也可以在本地運行。 1. 數(shù)據(jù)集首先初始化環(huán)境:
在第一篇文章中,我們使用的是某電信運營商的客戶離網(wǎng)率數(shù)據(jù)。這里我們?nèi)耘f使用這個數(shù)據(jù)集。
數(shù)據(jù)集的特征: 2. 單變量可視化單變量(univariate)分析一次只關(guān)注一個變量。當我們獨立地分析一個特征時,我們通常最關(guān)心的是該特征的值的分布,而忽略數(shù)據(jù)集中的其他變量。 下面我們將考慮不同統(tǒng)計類型的變量,以及相應的可視化工具。 2.1 數(shù)量特征數(shù)量特征(quantitative feature)的值為有序數(shù)值。這些值可能是離散的,例如整數(shù),也可能是連續(xù)的,例如實數(shù),通常用于表示技術(shù)和度量。 直方圖和密度圖 最簡單的查看數(shù)值變量分布的方法是使用
直方圖依照相等的范圍將值分組為柱。直方圖的形狀可能包含了數(shù)據(jù)分布的線索:高斯、指數(shù),等等。當分布基本上很有規(guī)律,但有一些異常值時,你也可以通過直方圖辨認出形狀的歪斜之處。當你使用預設某一特定分布類型(通常是高斯)的機器學習方法時,知道特征值的分布是非常重要的。 在以上圖形中,我們看到變量Total day minutes(每日通話時長)呈正態(tài)分布(譯者注:正態(tài)分布即高斯分布),而Total intl calls(總國際呼叫數(shù))顯著右傾(它右側(cè)的尾巴更長)。 除了直方圖,理解分布的另一個(經(jīng)常更清楚的)方法是密度圖(density plots),也叫(更正式的名稱)核密度圖(Kernel Density Plots)。它們可以看成是直方圖平滑過的版本。相比直方圖,它們的主要優(yōu)勢是不依賴于柱的尺寸。讓我們?yōu)樯厦鎯蓚€變量創(chuàng)建密度圖:
我們也可以使用
這里直方圖的柱形的高度已經(jīng)歸一過了,表示的是密度而不是樣本數(shù)。 箱形圖 箱形圖(box plot)是另一種有用的可視化圖形。使用
箱形圖的主要組成部分是箱子(box)(顯然,這是它被稱為箱形圖的原因),須(whisker)和一些單獨的數(shù)據(jù)點(離群值)。 箱子顯示了分布的四分位距;它的長度由25%(Q1,下四分位數(shù))和75%(Q3,上司分位數(shù))決定。箱中的水平線表示中位數(shù)(50%)。 從箱子處延伸出來的線被稱為須。它們表示數(shù)據(jù)點的總體散布,具體而言,是位于區(qū)間(Q1 - 1.5xIQR, Q3 + 1.5xIQR)的數(shù)據(jù)點,其中IQR = Q3 - Q1,也就是四分位距。 離群值是須之外的數(shù)據(jù)點,它們作為單獨的數(shù)據(jù)點,沿著中軸繪制。 我們可以看到,在我們的數(shù)據(jù)中,大量的國際呼叫是相當少見的。 提琴形圖 我們最后考慮的分布圖形是提琴形圖(violin plot)。 下圖左側(cè)是箱形圖,右側(cè)是提琴形圖。
箱形圖和提琴形圖的區(qū)別是,箱形圖顯示了單獨樣本的特定統(tǒng)計數(shù)據(jù),而提琴形圖聚焦于平滑后的整體分布。 describe() 圖形工具之外,我們可以使用
2.2 類別和二元特征類別特征(categorical features take)具有固定數(shù)目的值。每個值將一個觀測數(shù)據(jù)分配到相應的組,這些組稱為類別(category)。類別反映了樣本的某個定性屬性。二元(binary)變量是一個重要的類別變量的特例,其中類別的可能值正好為2. 如果類別變量的值具有順序,稱為有序(ordinal)類別變量。 頻率表 讓我們查看下數(shù)據(jù)集的分類平滑:目標變量離網(wǎng)率的分布。首先,我們使用
默認情況下,頻率由高到低排列。 在我們的例子中,數(shù)據(jù)是失衡的,也就是說,數(shù)據(jù)集中忠實客戶和不忠實客戶的比例并不相等。只有一小部分的客戶取消了他們的電信服務訂閱。我們將在以后的文章中看到,這一事實可能暗示衡量分類表現(xiàn)時存在一些限制,以后我們可能額外懲罰我們的模型在預測少數(shù)“離網(wǎng)”分類時所犯的錯誤。 條形圖 頻率表的圖形化表示是條形圖。創(chuàng)建條形圖最簡單的方法是使用
盡管條形圖和上面提到的直方圖看起來很像,它們是不一樣的:
左側(cè)的圖形生動地顯示了目標變量的失衡性。右側(cè)Customer service calls(客服呼叫數(shù))的條形圖暗示了大部分客戶最多打了2-3個客服電話就解決了他們的問題。不過,既然我們想要預測少數(shù)分類,我們可能對少數(shù)不滿意的客戶的表現(xiàn)更感興趣。很可能條形圖的尾巴包含了大部分的離網(wǎng)客戶。目前這只是假想,讓我們來看一些更有趣、更強大的可視化技術(shù)。 3. 多變量可視化多變量(multivariate)圖形讓我們得以在單張圖像中查看兩個以上變量的聯(lián)系。和單變量圖形一樣,可視化的類型取決于將要分析的變量的類型。 3.1 數(shù)量——數(shù)量我們先來看看數(shù)量變量之間的相互作用。 相關(guān)矩陣 讓我們看下數(shù)據(jù)集中的數(shù)值變量的相關(guān)性。這一信息很重要,因為有一些機器學習算法(比如,線性回歸和邏輯回歸)不能很好地處理高度相關(guān)的輸入變量。 首先,我們使用
從上圖我們可以看到,Total day charge(日話費總額)直接基于電話的分鐘數(shù)計算得到(Total day minutes),這樣的變量有4個。這4個變量稱為因變量(dependent variable),可以直接去除,因為它們并不貢獻任何額外信息。讓我們?nèi)サ羲鼈儯?/span>
散點圖 散點圖(scatter plot)將兩個數(shù)值變量的值顯示為二位空間中的笛卡爾坐標(Cartesian coordinate)。還有三維的散點圖。 讓我們試下
我們得到了兩個正態(tài)分布變量的散點圖,這張圖沒什么意思。看起來這兩個變量并不相關(guān),因為類似橢圓的形狀和軸是對齊的。
這個基本上是我們之前討論過的核密度圖的雙變量版本。 散點圖矩陣 在某些情形下,我們可能想要繪制如下所示的散點圖矩陣(scatterplot matrix)。它的對角線包含變量的分布,而每對變量的散點圖填充了矩陣的其余部分。
有時候,這樣的可視化可能幫我們從數(shù)據(jù)中得出一些結(jié)論。 3.2 數(shù)量——類別在這一小節(jié)中,讓我們的圖形更有趣一點。我們將嘗試從數(shù)值和類別特征的相互作用中得到離網(wǎng)預測的新洞見。 更具體地,讓我看看輸入變量和目標變量離網(wǎng)的關(guān)系。 先前我們了解了散點圖。散點圖中的數(shù)據(jù)點可以通過色彩或尺寸進行編碼,以便在同一張圖像中包括第三個類別變量的值。我們可以通過之前的
看起來占少數(shù)的不忠實客戶偏向右上角;也就是傾向于在白天和夜間打更多電話的客戶。但這不是非常明顯,我們也不會基于這一圖形下任何確定的結(jié)論。 現(xiàn)在,讓我們創(chuàng)建箱形圖,以可視化兩個互斥分組中的數(shù)值變量分布的統(tǒng)計數(shù)據(jù):忠實客戶(
從這一圖表中,我們可以看到,兩組之間分歧最大的分布是這三個變量:Total day minutes(日通話分鐘數(shù))、Customer service calls(客服呼叫數(shù))、Number vmail messages(語音郵件數(shù))。在后續(xù)的課程中,我們將學習如何使用隨機森林(Random Forest)或梯度提升(Gradient Boosting)來判定特征對分類的重要性;那時我們將看到,前兩個特征對于離網(wǎng)預測而言確實非常重要。 讓我們分別看下忠實客戶和不忠實客戶的日通話分鐘數(shù)。我們將創(chuàng)建箱形圖和提琴形圖。
在這一情形下,提琴形圖并沒有提供關(guān)于數(shù)據(jù)的額外信息,因為箱形圖已經(jīng)告訴了我們一切:不忠實客戶傾向于打更多的電話。 一個有趣的觀察:平均而言,終止他們的協(xié)議的客戶是通訊服務更活躍的用戶。也許他們對話費不滿意,所以預防離網(wǎng)的一個可能措施是降低通話費率。公司需要進行額外的經(jīng)濟分析,以查明這樣的措施是否有利。 當我們想要一次分析兩個類別維度下的數(shù)量變量時,可以用
從上圖我們可以總結(jié)出,從4次呼叫開始,Total day minutes(日通話分鐘數(shù))可能不再是客戶離網(wǎng)的主要因素。也許,除了我們之前猜測的話費,有些客戶因為其他問題對服務不滿意,或許這導致了日通話分鐘數(shù)較少。 3.3 類別——類別正如我們之前提到的,變量Customer service calls(客服呼叫數(shù))的唯一值極少,因此,既可以看成數(shù)值變量,也可以看成有序類別變量。我們已經(jīng)通過計數(shù)圖(countc plot)查看過它的分布了。現(xiàn)在我們感興趣的是這一有序特征和目標變量Churn(離網(wǎng))之間的關(guān)系。 讓我們再一次使用計數(shù)圖看下客服呼叫數(shù)的分布。這次,我們同時傳入
觀察:呼叫客服達到4次以上后,離網(wǎng)率顯著增加了。 現(xiàn)在讓我們看下Churn(離網(wǎng))和二元特征International plan(國際套餐)、Voice mail plan(語音郵件套餐)的關(guān)系。
觀察:開通國際套餐后,離網(wǎng)率會高很多;使用國際套餐是一個強烈的特征。我們在語音郵件套餐上沒有觀察到相同的效應。 列聯(lián)表 除了使用圖形進行類別分析之外,還可以使用統(tǒng)計學的傳統(tǒng)工具:列聯(lián)表(contingency table),又稱為交叉制表(cross tabulation),使用表格形式表示多個類別變量的頻率分布。特別地,它讓我們可以通過查看一列或一行來得知某個變量在另一變量的作用下的分布。 讓我們通過交叉制表看看Churn(離網(wǎng))和類別變量State(州)的關(guān)系:
State(州)的不同值很多:51. 我們看到每個周只有少量數(shù)據(jù)點——每個州只有3到17個客戶拋棄了運營商。讓我們暫時忽略這一點,計算每個州的離網(wǎng)率,由高到低排列:
乍看起來,新澤西和加利福尼亞的離網(wǎng)率超過了25%,夏威夷和阿拉斯加的離網(wǎng)率則不到6%. 然而,這些結(jié)論是基于極少的樣本得出的,我們的觀察可能僅僅是這一特定數(shù)據(jù)集的性質(zhì)。我們可以通過Matthews和Cramer相關(guān)性假說確認這一點,不過這個超出了這篇文章的范圍。 4. 全數(shù)據(jù)集4.1 幼稚方法上面我們查看了數(shù)據(jù)集的不同刻面(facet),猜測感興趣的特征,每次選擇其中的一小部分進行可視化。我們一次僅僅處理兩到三個變量,能比較容易地觀察到數(shù)據(jù)的結(jié)構(gòu)和關(guān)系。但是,如果我們想一下子顯示所有特征呢?如何確保最終的可視化仍然是可解釋的? 我們可以為整個數(shù)據(jù)集使用 4.2 降維大多數(shù)現(xiàn)實世界的數(shù)據(jù)集有很多特征,有時有上萬個特征。每一個特征都可以被看成數(shù)據(jù)點空間的一維。因此,我們經(jīng)常需要處理高維數(shù)據(jù)集,可視化整個高維數(shù)據(jù)集相當難。 為了從整體上查看一個數(shù)據(jù)集,我們需要在不損失很多數(shù)據(jù)信息的前提下,降低用于可視化的維度。這一任務稱為降維(dimensionality reduction)。降維是一個無監(jiān)督學習(unsupervised learning)問題,因為我們需要在不借助任何監(jiān)督輸入的前提下,從數(shù)據(jù)自身得到新的低維特征。 主成分分析(Principal Component Analysis, PCA)是一個著名的降維方法,我們會在之后的課程中討論它。主成分分析有一個限制,它是線性(linear)算法,因而對數(shù)據(jù)有某些特定的限制。 有許多非線性方法,統(tǒng)稱流形學習(Manifold Learning)。最著名的流形學習方法之一是t-SNE。 4.3 t-SNE讓我們?yōu)殡x網(wǎng)數(shù)據(jù)創(chuàng)建一個t-SNE表示。 這一方法的名字看起來很復雜,有些嚇人:t分布隨機近鄰嵌入(t-distributed Stohastic Neighbor Embedding)。它的數(shù)學也很令人印象深刻(我們不會在這里深究數(shù)學,勇敢的讀者可以閱讀Laurens van der Maaten和Geoffrey Hinton在JMLR上發(fā)表的原論文)。它的基本思路很簡單:為高維特征空間在二維平面(或三維超平面,不過基本上總是使用二維空間)上尋找一個投影,使得在原本的n維空間中相距很遠的數(shù)據(jù)點在屏幕上同樣相距較遠。而原本相近的點在平面上仍然相近。 本質(zhì)上,近鄰嵌入尋找保留了樣本的鄰居關(guān)系的新的維度較低的數(shù)據(jù)表示。 現(xiàn)在讓我們做些練習。首先,加載類:
我們?nèi)コ?strong>State(州)和離網(wǎng)(Churn)變量,然后用
我們同樣需要歸一化數(shù)據(jù)。我們從每個變量中減去均值,然后除以標準差。這些都可以使用
現(xiàn)在可以構(gòu)建t-SNE表示了:
然后可視化它的圖形:
讓我們根據(jù)離網(wǎng)情況給t-SNE表示加上色彩(綠色表示忠實用戶,紅色表示不忠實用戶)。
我們可以看到,離網(wǎng)的客戶集中在低維特征空間的一小部分區(qū)域。 為了更好地理解這一圖像,我們可以使用剩下的兩個二元特征給圖像著色:International plan(國際套餐)和Voice mail plan(語音郵件套餐)。綠色代表相應的二元特征是正值。
現(xiàn)在很清楚了,許多退訂的不滿意客戶集中在西南聚類(表示開通了國際套餐但沒有開通語音郵件套餐)。 最后,讓我們了解下t-SNE的缺陷:
偶爾,t-SNE可以讓你從數(shù)據(jù)中得到非常好的直覺。下面的論文展示了一個這樣的例子:Visualizing MNIST(可視化MNIST)。 有時t-SNE真的能夠幫助你更好地理解數(shù)據(jù),有時t-SNE能夠幫助你畫出圣誕樹玩具 :-) 5. 作業(yè)二第二次作業(yè)將分析心血管疾病數(shù)據(jù)集??寺〗坛虃}庫,在本地編輯這個Jupyter notebook(你需要填充缺失的Python代碼),并在這個Google表單中選擇正確答案(提交表單之后,在截止日期之前,仍然可以編輯你的回答)。請保持電子郵件地址和之前的課程與作業(yè)中登記的一致。 截止日期: February 18, 23:59 CET 6. 相關(guān)資源
|
|
來自: LibraryPKU > 《機器學習》