丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號安全和更好的產(chǎn)品體驗,強烈建議使用更快更安全的瀏覽器
此為臨時鏈接,僅用于文章預覽,將在時失效
人工智能開發(fā)者 正文
發(fā)私信給skura
發(fā)送

0

Scikit-learn 核心開發(fā)人員專訪:建立機器學習工作流最容易犯這2點錯誤

本文作者: skura 2019-11-25 18:14
導語:Scikit learn的開發(fā)者分享了3種實用的ML技術(shù)

本文是一篇對 Scikit-learn 開發(fā)者的專訪,原載于 towardsdatascience,AI 開發(fā)者編譯整理,采訪內(nèi)容如下文。

Scikit-learn 核心開發(fā)人員專訪:建立機器學習工作流最容易犯這2點錯誤

采訪者:Haebichan Jung,TowardsDataScience 網(wǎng)站項目負責人。舊金山 Recurly 的數(shù)據(jù)科學家。

受訪者:Andreas Muller,Scikit learn 的核心開發(fā)人員,書籍《Python 機器學習入門》的作者,哥倫比亞大學數(shù)據(jù)科學研究所的科學家、講師。

Haebichan Jung:開源社區(qū)是如何維護 Scikit-learn 的?結(jié)構(gòu)化的庫的工作流程和所有權(quán)是怎么樣的?

Andreas Muller:首先是用戶。大多數(shù)對 Scikit-learn 有貢獻的人最開始都是用戶。如果你不使用這個軟件包,你就沒有動力去做這件事情。

其次,大多數(shù)偉大的貢獻都是由人們的用例驅(qū)動的。有些版本是我為 Scikit-learn 編寫的,因為我想使用它們。這些通常是最好的版本。你不想迎合軟件太具體的用例,你不想在功能上加標簽。

第三,對于像 Scikit-learn 那樣復雜的東西,你不想一開始就添加一些新的大功能。很多人都有他們最喜歡的模型,他們想通過將其添加到 Scikit-learn 中來開始他們的貢獻。但是,現(xiàn)在將一個模型添加到 Scikit-learn 需要大約一年的時間。所以我真的建議從小事做起。我本人是從文檔的排版開始的。改進文檔總是受歡迎的。還有很多關(guān)于問題追蹤的東西。

Haebichan Jung:在機器學習工作流中實現(xiàn) Scikit-learn 的那些人中,你看到了哪些常見的錯誤或低效的事情?

Andreas Muller:一般來說,與 Scikit-learn 和機器學習相關(guān)的常見錯誤有兩種。

1.對于 Scikit 學習,每個人都可能在使用管道。如果你不使用管道,那你可能有些地方做錯了。2 年前,我們引入了列轉(zhuǎn)換器,它允許你處理具有連續(xù)和分類變量的數(shù)據(jù),或者處理其他類型 One-Hot 編碼器時,一切都很好。

2。我在機器學習中看到的一個常見錯誤是沒有對度量標準給予足夠的關(guān)注。Scikit-learn 將精度用作默認度量。但一旦你有了一個不平衡的數(shù)據(jù),準確度是一個可怕的指標。你真的應(yīng)該考慮使用其他指標。我們不會改變默認的度量標準,因為準確性被廣泛使用,而且有如此清楚的解釋。但是,在機器學習中,查看其他度量并為你的用例考慮是否使用它們是最常見的問題。

Scikit-learn 核心開發(fā)人員專訪:建立機器學習工作流最容易犯這2點錯誤

什么是管道?如果它不準確,還有什么其他指標更適合機器學習?

在 Scikit-learn 中,每個 ML 模型都封裝在一個稱為「估計器」的簡單 python 類中。通常在機器學習過程中,你可能會有一個帶有一系列預處理步驟的分類器。管道允許你封裝所有預處理步驟、特征選擇、縮放、變量編碼等,以及通常在單個估計器中具有的最終監(jiān)督模型。

所以你有一個對象來完成你所有的工作。它非常方便,能夠使編寫錯誤的代碼出現(xiàn)的更少,因為它可以確保你正的訓練集和測試集是一致的。最后,你應(yīng)該使用交叉驗證或網(wǎng)格搜索 CV。在這種情況下,重要的是所有的預處理都在交叉驗證循環(huán)中進行。如果在交叉驗證循環(huán)之外進行功能選擇,可能會發(fā)生非常糟糕的事情。但在你的管道中,你知道一切都在交叉驗證循環(huán)中。

Scikit-learn 核心開發(fā)人員專訪:建立機器學習工作流最容易犯這2點錯誤

Andreas Muller 哥倫比亞系列講座

對于度量,它們通常在二進制分類中被忽略。在二進制分類中,精度取決于你的目標是什么。我喜歡看 ROC 曲線下的面積和平均精度。這些是某種細粒度的度量。我也喜歡看精確召回曲線(AUPRC)。這些指標的意義在于,它們不依賴于你應(yīng)用的決策閾值,因為它們是排名指標。所以你需要決定在哪里設(shè)置閾值來表示「在什么概率下我說是 1 類還是 0 類?」。

你可以研究的其他指標是 F1 指標或平均召回率/精確度,這些也很有趣。

Haebichan Jung:Scikit-learn 包中是否有其他工具或功能讓你覺得使用不足或被低估?

Andreas Muller:有一個功能還沒被充分利用,因為它還是很新的,它就是 Hist 梯度增強。這是 LightGBM 的根的實現(xiàn),因此比以前的梯度增強實現(xiàn)快得多。它比 XGBoost 稍快,比 LightGBM 稍慢。目前它還不能支持缺失值的處理,但這個功能將很快在 2 周后的下一個版本中發(fā)布。它也不支持分類變量,這個功能將在明年春天左右發(fā)布。

Scikit-learn 核心開發(fā)人員專訪:建立機器學習工作流最容易犯這2點錯誤

Haebichan Jung:你提到 LightGBM 很有意思,因為越來越多基于 python 的 ML 庫正在發(fā)布,比如 Catboost,還有像 Pythorch 這樣的深度學習框架。你覺得這些在 ML 領(lǐng)域成長的玩家怎么樣?這種現(xiàn)象是競爭的反應(yīng)嗎?

Andreas Muller:我認為在大多數(shù)情況下,多元化是好的。其中大多數(shù)框架提供了類似于 Scikit-learn 的接口,因此與我們的包兼容。由于 Scikit-learn 的應(yīng)用非常廣泛,所以開發(fā)速度很慢。我們可以看到,XGBoost 和 LightGBM 對人們來說非常有價值。因此,我們希望每個人都知道這一點,我們希望包括在 Scikit-learn 中的包能夠接觸到更廣泛的受眾。

對于深度學習庫來說,一部分原因是它們可以更快地移動,因為我們移動得太慢了。當然還有兩件事需要注意:

1.與谷歌或 Facebook 相比,我們的資源真的很少,所以和那些公司的工程師競爭是沒有意義的。我認為 Keras 真的很酷,我沒有理由在 Scikit-learn 中重新實現(xiàn)這樣的東西。

2.技術(shù)原因?,F(xiàn)在,要在不同的平臺上無縫地實現(xiàn) GPU 支持仍然很困難。你可以在 Tensorflow 中看到這一點。Tensorflow 上有不同的版本,針對不同的架構(gòu)進行編譯,你必須自己編譯。我們不會在 Scikit-learn 增加這么多麻煩。

Haebichan Jung:你在哥倫比亞大學關(guān)于不平衡數(shù)據(jù)的講座中說過,這個問題有兩個主要的解決方案:1)在改變數(shù)據(jù)后建立模型(欠采樣/過采樣)和 2)改變模型(訓練程序本身)。每種策略的優(yōu)缺點是什么,尤其是在 Scikit-learn 方面?

Andreas Muller:我想從你的問題中退一步,再次提到最重要的是指標以及你如何評估它。你的目標是什么?你的目標絕不是精確,也絕不是 ROC-AUC。這不是你做應(yīng)用的目的。你應(yīng)該考慮在應(yīng)用程序的上下文中生成特定結(jié)果意味著什么。

一旦有了這個目標,你就可以定義度量,嘗試不同的方法來最大化這些度量。重采樣非常吸引人的地方在于,你經(jīng)??梢話伋龃罅繑?shù)據(jù),卻不會真正影響結(jié)果。如果你有 1:1000+ 的比率,你不想把它低估到 1:1,那么你可以設(shè)置成 1:100 或 1:10,你可以得到完全相同的結(jié)果。這樣你的數(shù)據(jù)集減少了 100 倍。

「你的目標絕不是精確,也絕不是 ROC-AUC。這不是你做應(yīng)用的目的。你應(yīng)該考慮在應(yīng)用程序的上下文中生成特定結(jié)果意味著什么?!?br/>

所以如果你有大量的數(shù)據(jù)并且計算不是問題的話,欠采樣是更有效地得到類似結(jié)果的方法。相反,我并沒有真正看到人們在實踐中使用 SMOTE,這就是合成數(shù)據(jù)生成。人們經(jīng)常提到它,但我有點懷疑。

在改變模型方面,類權(quán)重是人們經(jīng)常使用且會有幫助的。類權(quán)重實際上改變了損失函數(shù),這樣就好像對少數(shù)類進行了過采樣。所以你使用了所有的樣本,但是給了少數(shù)類更多的權(quán)重。這是人們發(fā)現(xiàn)的有用的東西。但是,這更像是嘗試不同的東西,并且你有正確的度量來衡量哪個解決方案最適合你的問題。

Scikit-learn 核心開發(fā)人員專訪:建立機器學習工作流最容易犯這2點錯誤

來自 Andreas Muller 的哥倫比亞系列講座

Haebichan Jung:有趣的是,你是以這種方式提到 SMOTE。在我的公司,我們一直在試驗 SMOTE。但就實際結(jié)果而言,在 AUC 或其他方面并沒有什么大的好處。而且,因為我正在創(chuàng)建所有這些合成數(shù)據(jù),它大大減慢了我的管道線。所以我想問你,你自己的懷疑是從哪里來的?

Andreas Muller:因為我和每個人說的都和你說的一模一樣。

Haebichan Jung:那你覺得這是為什么?

Andreas Muller:對我來說,機器學習中的很多東西都是經(jīng)驗性的。如果你在很多數(shù)據(jù)集上嘗試它,但它對你沒有幫助,那么它就是沒有幫助。很難說為什么梯度增強效果很好。我想大多數(shù)人都相信梯度增強效果很好,但我不認為有人能正確解釋為什么梯度增強比支持向量機更有效。我認為沒有人能用簡潔或有意義的方式來解釋。

就 SMOTE 而言,我認為發(fā)生了兩件事:

1.我認為 SMOTE 對數(shù)據(jù)的分布做出了假設(shè)。所以 A)要么假設(shè)相鄰樣本之間的直線是錯誤的; B)如果樣本太遠,并且中間有其他類的樣本,那么情況可能會打破。

2.可能是添加這些合成樣本實際上對你感興趣的模型類沒有幫助。

實際上,我和一個合作者有一個計劃,要寫一篇關(guān)于廣泛基準的論文。正如你所說,為什么要嘗試使用 SMOTE?因為這是在驗證的文獻中提出的方法,但在實踐中,人們發(fā)現(xiàn)它并沒有多大作用。

關(guān)于完整的采訪,請觀看 YouTube 上的其他視頻,Andreas 將深入解讀解Scikit-learn 包:https://www.youtube.com/watch?v=6RSQIHAVzuo 

via:https://towardsdatascience.com/want-to-truly-master-scikit-learn-2-essential-tips-from-the-official-developer-himself-dada6ff56b99 

雷鋒網(wǎng)雷鋒網(wǎng)雷鋒網(wǎng)

雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。

Scikit-learn 核心開發(fā)人員專訪:建立機器學習工作流最容易犯這2點錯誤

分享:
相關(guān)文章
當月熱門文章
最新文章
請?zhí)顚懮暾埲速Y料
姓名
電話
郵箱
微信號
作品鏈接
個人簡介
為了您的賬戶安全,請驗證郵箱
您的郵箱還未驗證,完成可獲20積分喲!
請驗證您的郵箱
立即驗證
完善賬號信息
您的賬號已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
立即設(shè)置 以后再說