Yellowbrick新手入門簡介:用于機器學(xué)習(xí)模型可視化的 Python庫
Yellowbrick 是一個新的 Python 庫,它擴展了 Scikit-Learn?API,將可視化合并到機器學(xué)習(xí)工作流程中。
Yellowbrick需要依賴諸多第三方庫,包括Scikit-Learn,Matplotlib,Numpy等等。
Yellowbrick 是一個開源的純 Python 項目,它通過可視化分析和診斷工具擴展了 Scikit-Learn。Yellowbrick API 還包裝了 matplotlib 以創(chuàng)建可發(fā)布的圖形和交互式數(shù)據(jù)探索,同時仍然允許開發(fā)人員對圖形進行細粒度控制。對于用戶來說,Yellowbrick 可以幫助評估機器學(xué)習(xí)模型的性能、穩(wěn)定性和預(yù)測價值,并協(xié)助診斷整個機器學(xué)習(xí)工作流程中的問題。
最近,大部分工作流程已通過網(wǎng)格搜索方法、標(biāo)準(zhǔn)化 API 和基于 GUI 的應(yīng)用程序?qū)崿F(xiàn)自動化。然而,在實踐中,人類的直覺和指導(dǎo)可以比詳盡的搜索更有效地磨練質(zhì)量模型。通過可視化模型選擇過程,數(shù)據(jù)科學(xué)家可以轉(zhuǎn)向最終的、可解釋的模型,并避免陷阱。
Yellowbrick 庫是一個用于機器學(xué)習(xí)的診斷可視化平臺,允許數(shù)據(jù)科學(xué)家引導(dǎo)模型選擇過程。Yellowbrick 使用新的核心對象擴展了 Scikit-Learn API:可視化工具。可視化工具允許視覺模型作為 Scikit-Learn Pipeline 流程的一部分進行擬合和轉(zhuǎn)換,從而在整個高維數(shù)據(jù)轉(zhuǎn)換過程中提供視覺診斷。
機器學(xué)習(xí)可視化將幫助我們了解機器學(xué)習(xí)結(jié)果并知道應(yīng)該采取哪些行動來改進模型。這就是 Yellowbrick 使命。
Yellowbrick讓我們可以更輕松地完成下面任務(wù):
1.選擇功能
2.調(diào)整超參數(shù)
3.解釋模型的得分
4.可視化文本數(shù)據(jù)
安裝
要安裝 Yellowbrick 庫,最簡單的方法是使用pip
以下命令:
使用Yellowbrick
Yellowbrick API 專門設(shè)計用于與 Scikit-Learn 完美配合。以下是 Scikit-Learn 和 Yellowbrick 的典型工作流程示例:
Yellowbrick的教程目錄如下,參考網(wǎng)址:
https://pythonhosted.org/yellowbrick/examples/examples.html

下圖是Yellowbrick的visualizer模塊流程圖

特征可視化
在此示例中,我們看到 Rank2D 如何使用特定指標(biāo)或算法對數(shù)據(jù)集中的每個特征進行成對比較,然后以左下三角圖的形式返回它們的排名:
擁有更多的功能并不總是等同于更好的模型。模型具有的特征越多,模型對方差引起的誤差越敏感。因此,我們希望選擇生成有效模型所需的最少特征。
消除特征的常見方法是消除對模型最不重要的特征。然后我們重新評估模型在交叉驗證期間是否確實表現(xiàn)更好。
特征重要性非常適合此任務(wù),因為它可以幫助我們可視化模型特征的相對重要性。

看來光是 DecisionTreeClassifier 最重要的特征,其次是 CO2、溫度。
考慮到我們的數(shù)據(jù)中沒有太多特征,我們不會消除濕度。但如果我們的模型中有很多特征,我們應(yīng)該消除對模型不重要的特征,以防止由于方差而產(chǎn)生錯誤。
下圖是其他yellowbrick特征可視化的例子

模型可視化
在此示例中,我們實例化一個 Scikit-Learn 分類器,然后使用 Yellowbrick 的 ROCAUC 類來可視化分類器的敏感性和特異性之間的權(quán)衡:

可視化數(shù)據(jù)
排名特點
數(shù)據(jù)中每對特征的相關(guān)性如何?特征的二維排序利用一次考慮特征對的排序算法。我們使用皮爾遜相關(guān)性進行評分來檢測共線性關(guān)系。

根據(jù)數(shù)據(jù),濕度與相對濕度密切相關(guān)。光與溫度密切相關(guān)。這是有道理的,因為這些功能通常是齊頭并進的。
類別平衡
分類模型面臨的最大挑戰(zhàn)之一是訓(xùn)練數(shù)據(jù)中類別的不平衡。對于不平衡的類別,我們的高 f1 分數(shù)可能不是一個好的評估分數(shù),因為分類器可以簡單地猜出所有大多數(shù)類別獲得高分。
因此,可視化類別的分布非常重要。我們可以利用ClassBalance
條形圖來可視化類別的分布。

看起來未占用的數(shù)據(jù)比已占用的數(shù)據(jù)多得多。知道了這一點,我們可以利用多種技術(shù)來處理類別不平衡,例如分層抽樣、加權(quán)以獲得更多信息的結(jié)果。
可視化模型的結(jié)果
現(xiàn)在我們回到這個問題:98% 的 f1 分數(shù)到底意味著什么?f1 分數(shù)的增加是否會為您的公司帶來更多利潤?
Yellowbrick 提供了多種工具,可用于可視化分類問題的結(jié)果。其中一些您可能聽說過或沒有聽說過,這對于解釋您的模型非常有幫助。
混淆矩陣
空缺類別中錯誤預(yù)測的百分比是多少?占領(lǐng)階層中錯誤預(yù)測的百分比是多少?混淆矩陣幫助我們回答這個問題。

看起來占領(lǐng)階層的錯誤預(yù)測比例更高;因此,我們可以嘗試增加占用類中正確預(yù)測的數(shù)量來提高分數(shù)。
這是yellowbrick其它模型得分可視化例子。

我們?nèi)绾胃倪M模型?
現(xiàn)在我們了解了模型的性能,我們?nèi)绾胃倪M模型呢?為了改進我們的模型,我們可能想要
防止我們的模型擬合不足或過度擬合
找到對估算器來說最重要的特征
我們將探索 Yellowbrick 提供的工具來幫助我們弄清楚如何改進我們的模型
驗證曲線
一個模型可以有許多超參數(shù)。我們可以選擇準(zhǔn)確預(yù)測訓(xùn)練數(shù)據(jù)的超參數(shù)。找到最佳超參數(shù)的好方法是通過網(wǎng)格搜索選擇這些參數(shù)的組合。
但我們?nèi)绾沃肋@些超參數(shù)也能準(zhǔn)確預(yù)測測試數(shù)據(jù)呢?繪制單個超參數(shù)對訓(xùn)練和測試數(shù)據(jù)的影響非常有用,以確定估計器對于某些超參數(shù)值是否欠擬合或過擬合。
驗證曲線可以幫助我們找到最佳點,低于或高于此超參數(shù)的值將導(dǎo)致數(shù)據(jù)擬合不足或過度擬合。

從圖中我們可以看出,雖然最大深度數(shù)越高,訓(xùn)練得分越高,但交叉驗證得分也越低。這是有道理的,因為決策樹越深,就越容易過度擬合。
因此,最佳點將是交叉驗證分數(shù)不降低的地方,即 1。
學(xué)習(xí)曲線
更多的數(shù)據(jù)會帶來更好的模型性能嗎?并非總是如此,估計器可能對方差引起的誤差更敏感。這就是學(xué)習(xí)曲線有用的時候。
學(xué)習(xí)?曲線顯示了具有不同數(shù)量訓(xùn)練樣本的估計器的訓(xùn)練分數(shù)與交叉驗證測試分數(shù)之間的關(guān)系。

從圖中我們可以看到,大約 8700 個訓(xùn)練實例的數(shù)量導(dǎo)致了最佳的 f1 分數(shù)。訓(xùn)練實例數(shù)量越多,f1 分數(shù)越低。
Yellowbrick使用還有很多,不局限上述介紹。下圖是Yellowbrick展示隨著模型搜索空間變大,時間以指數(shù)級增長。

下圖是Yellowbrick展示超參空間搜索


結(jié)論
恭喜!您剛剛學(xué)習(xí)了如何創(chuàng)建繪圖來幫助您解釋模型的結(jié)果。能夠了解您的機器學(xué)習(xí)結(jié)果將使您更容易找到提高其性能的后續(xù)步驟。歡迎大家收藏課程《從0到1 Python數(shù)據(jù)科學(xué)之旅》,課程有大量數(shù)據(jù)科學(xué)建模實際案例,大家掃一掃下面二維碼,記得收藏課程。

我們公司提供一對一機器學(xué)習(xí)模型定制服務(wù),用于企業(yè)建模,論文定制服務(wù),提供公司正規(guī)發(fā)票。

版權(quán)聲明:文章來自公眾號(python風(fēng)控模型),未經(jīng)許可,不得抄襲。遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。