一個(gè)自動(dòng)化解決數(shù)據(jù)科學(xué)問(wèn)題的python工具

機(jī)器學(xué)習(xí)經(jīng)常被吹捧為:

A field of study that gives computers the ability to learn without being explicitly programmed.

盡管這是一個(gè)常見(jiàn)的說(shuō)法,在這個(gè)領(lǐng)域工作的人都知道設(shè)計(jì)有效的機(jī)器學(xué)習(xí)系統(tǒng)是一個(gè)乏味的過(guò)程,通常需要對(duì)機(jī)器學(xué)習(xí)算法有相當(dāng)?shù)慕?jīng)驗(yàn),問(wèn)題領(lǐng)域的專業(yè)知識(shí),以及蠻力搜索來(lái)完成。因此,與機(jī)器學(xué)習(xí)愛(ài)好者試圖讓我們相信的相反,機(jī)器學(xué)習(xí)仍然需要大量的編程。

在本文中,我們要經(jīng)歷機(jī)器學(xué)習(xí)流程(pipline)設(shè)計(jì)中三個(gè)乏味的過(guò)程,但卻如此重要。之后,我們將演示工具來(lái)遍歷之前的過(guò)程,來(lái)體現(xiàn)智能自動(dòng)化的機(jī)器學(xué)習(xí)流程設(shè)計(jì),這樣我們就可以花時(shí)間在數(shù)據(jù)科學(xué)的更有趣的方面。

模型超參數(shù)的優(yōu)化是很重要的

機(jī)器學(xué)習(xí)中最乏味的部分就是調(diào)整超參數(shù)(簡(jiǎn)稱調(diào)參)。

支持向量機(jī)要求我們選擇理想的內(nèi)核,內(nèi)核的參數(shù),和懲罰參數(shù)c .人工神經(jīng)網(wǎng)絡(luò)需要我們調(diào)整隱藏層的數(shù)量,隱藏節(jié)點(diǎn)的數(shù)量,以及更多的超參數(shù)。甚至隨機(jī)森林也需要我們調(diào)整的樹(shù)的數(shù)量以使得結(jié)果最好。

所有這些超參數(shù)可以對(duì)模型的效果產(chǎn)生重大影響。例如,我們使用MNIST手寫(xiě)的數(shù)字?jǐn)?shù)據(jù)集來(lái)說(shuō)明:

如果我們使用隨機(jī)森林分類器(scikit-learn 默認(rèn)的 10個(gè)樹(shù)作為參數(shù)):

其交叉驗(yàn)證效果達(dá)到了94.7%,如果我們將參數(shù)調(diào)整到100棵樹(shù),效果會(huì)怎么樣呢?

這樣一個(gè)小變化,我們將交叉驗(yàn)證精度的平均值從94.7%提高到了96.9%。如果我們的模型為美國(guó)郵政服務(wù),那么這個(gè)小改善可以轉(zhuǎn)化為成千上萬(wàn)的附加數(shù)字分類正確。

因此不要使用默認(rèn)設(shè)置。超參數(shù)的調(diào)整對(duì)每個(gè)機(jī)器學(xué)習(xí)項(xiàng)目至關(guān)重要。

模型選擇是重要的

我們都希望喜歡的模型很好地運(yùn)用在每個(gè)機(jī)器學(xué)習(xí)問(wèn)題中,但是不同的模型更適合不同的問(wèn)題。

例如,我們?cè)谝粋€(gè)信號(hào)處理問(wèn)題時(shí),我們需要對(duì)時(shí)間序列中的“山”或“谷”進(jìn)行分類:

我們應(yīng)用“tuned”隨機(jī)森林來(lái)解決問(wèn)題:

然后我們會(huì)發(fā)現(xiàn)隨機(jī)森林并不適合這樣的信號(hào)處理任務(wù),其交叉驗(yàn)證的精度平均水平才僅61.8%.

如果我們嘗試不同的模型,例如邏輯回歸,會(huì)怎么樣呢?

我們會(huì)發(fā)現(xiàn)邏輯回歸非常適合這個(gè)信號(hào)處理任務(wù),并且很容易達(dá)到近100%交叉驗(yàn)證精度同時(shí)又沒(méi)有任何超參數(shù)調(diào)優(yōu)。

因此對(duì)工作中的機(jī)器學(xué)習(xí)任務(wù)嘗試各種不同的機(jī)器學(xué)習(xí)模型。嘗試——調(diào)參-不同的機(jī)器學(xué)習(xí)模型盡管乏味但確是機(jī)器學(xué)習(xí)流程設(shè)計(jì)中至關(guān)重要的一步。

特征預(yù)處理是非常重要的

正如前面的兩個(gè)例子中我們所看到的,機(jī)器學(xué)習(xí)模型的性能也受特征形式的影響。因此機(jī)器學(xué)習(xí)流程中的特征預(yù)處理,就是通過(guò)重塑特征的方式使數(shù)據(jù)集更容易被模型分類。

例如,我們用之前“山”或“谷”的一個(gè)更難一點(diǎn)的版本(加了噪聲)來(lái)說(shuō)明:

我們使用一個(gè)'tuned'的隨機(jī)森林模型來(lái)解決這個(gè)問(wèn)題:

我們?cè)俅伟l(fā)現(xiàn)其交叉驗(yàn)證的平均值只有57.8%,令人失望。

然而,如果我們先通過(guò)主成分分析來(lái)降噪,

我們會(huì)發(fā)現(xiàn)其結(jié)果驚人的提高到94%。

總結(jié):為您的數(shù)據(jù)探索各種特征的表示方法。機(jī)器學(xué)習(xí)不同于人類,特征表示對(duì)我們可能有意義而對(duì)機(jī)器沒(méi)有意義。

利用TPOT 自動(dòng)化解決數(shù)據(jù)分析

總結(jié)一下我們目前學(xué)到的關(guān)于有效的機(jī)器學(xué)習(xí)系統(tǒng)設(shè)計(jì),我們應(yīng)該:

同時(shí)我們也考慮下面幾點(diǎn):

這就是為什么設(shè)計(jì)有效的機(jī)器學(xué)習(xí)系統(tǒng)如此乏味。這也是為什么我和我的合作者TPOT創(chuàng)建一個(gè)開(kāi)源的Python工具,智能自動(dòng)化的處理整個(gè)過(guò)程。

如果您的數(shù)據(jù)集與scikit-learn兼容,那么TPOT會(huì)自動(dòng)優(yōu)化的進(jìn)行一系列特征預(yù)處理器和模型測(cè)試,最大化數(shù)據(jù)集上的交叉驗(yàn)證精度。例如,如果我們希望TPOT解決帶擾動(dòng)的“山”和“谷”的分類問(wèn)題:

根據(jù)你使用的電腦,一般10 generations的 TPOT大概要5分鐘。這期間你可以做任何你想做的事情,放松一下。

經(jīng)過(guò)5分鐘的優(yōu)化,TPOT會(huì)發(fā)現(xiàn)一種達(dá)到96%的交叉驗(yàn)證準(zhǔn)確性,比我們之前手動(dòng)創(chuàng)建的流程更好!

如果我們想知道它具體是什么,TPOT可以自動(dòng)化的導(dǎo)出具體的 scikit-learn 代碼:使用 export() 命令

其具體結(jié)果如下:

它告訴我們一個(gè) tuned logistic 回歸也許是這個(gè)問(wèn)題的最優(yōu)模型。

我們?cè)O(shè)計(jì)TPOT是一個(gè)銜接完整的機(jī)器學(xué)習(xí)系統(tǒng),可以作為一個(gè)替代任何您目前正在使用的scikit-learn的工作流模型。

如果TPOT聽(tīng)起來(lái)像你所苦苦尋找的工具,下面幾個(gè)連接也許對(duì)你十分有用:

和往常一樣,有問(wèn)題請(qǐng)隨時(shí)聯(lián)系

原文地址:http://www.randalolson.com/2016/05/08/tpot-a-python-tool-for-automating-data-science/

原文作者:Randy Olson

翻譯: lan

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容