中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
5行代碼使Scikit-Learn參數(shù)學(xué)習(xí)速度提高5倍

作者|Michael Chau
編譯|VK
來源|Towards Data Science

大家都知道Scikit-Learn——它是數(shù)據(jù)科學(xué)家基本都知道的產(chǎn)品,提供了幾十種易于使用的機器學(xué)習(xí)算法。它還提供了兩種現(xiàn)成的技術(shù)來解決超參數(shù)調(diào)整問題:網(wǎng)格搜索(GridSearchCV)和隨機搜索(RandomizedSearchCV)。

這兩種技術(shù)都是找到正確的超參數(shù)配置的強力方法,但是這是一個昂貴和耗時的過程!

如果想加快這個過程呢

在這篇博客文章中,我們介紹了tune-sklearn(https://github.com/ray-project/tune-sklearn),它使得在使用Scikit-Learn API的同時更容易利用這些新算法。

Tune sklearn是Scikit Learn模型選擇模塊的一個替代品,采用了先進的超參數(shù)調(diào)整技術(shù)(貝葉斯優(yōu)化、早期停止、分布式執(zhí)行)——這些技術(shù)比網(wǎng)格搜索和隨機搜索提供了顯著的加速!

以下是tune sklearn提供的功能:

  • 與Scikit Learn API的一致性:tune sklearn是GridSearchCV和RandomizedSearchCV的一個替換,因此你只需要在標(biāo)準(zhǔn)Scikit Learn腳本中更改不到5行即可使用API。

  • 現(xiàn)代超參數(shù)調(diào)整技術(shù):tune-sklearn允許你通過簡單地切換幾個參數(shù),就可以輕松地利用貝葉斯優(yōu)化、超空間和其他優(yōu)化技術(shù)。

  • 框架支持:tune-sklearn主要用于調(diào)優(yōu)Scikit-Learn模型,但它也支持并為許多其他具有Scikit-Learn框架提供示例,例如Skorch (Pytorch)、KerasClassifiers(Keras)和XGBoostClassifiers(XGBoost)。

  • 分布式:Tune sklearn利用Ray Tune,一個分布式超參數(shù)調(diào)優(yōu)庫,高效透明地并行化多核甚至多臺機器上的交叉驗證。

Tune sklearn也很快。為了看到這一點,我們在標(biāo)準(zhǔn)的超參數(shù)掃描上,將tune sklearn(啟用早期停止)與本機Scikit Learn進行基準(zhǔn)測試。在我們的基準(zhǔn)測試中,我們可以看到普通筆記本電腦和48個CPU核心的大型工作站的顯著性能差異。

對于更大的基準(zhǔn)48核計算機,Scikit Learn花了20分鐘在大小為40000的數(shù)據(jù)集上搜索75個超參數(shù)集。Tune sklearn只花了3.5分鐘,并且以最小影響性能的方式執(zhí)行。

第一個圖:在個人雙核i5 8gb ram筆記本電腦上,搜索6個超參集。第二個圖:在一臺48核250gb ram的大型計算機上,搜索75個超參集。

注意:對于較小的數(shù)據(jù)集(10000個或更少的數(shù)據(jù)點),在試圖應(yīng)用早期停止時,可能會犧牲準(zhǔn)確性。我們預(yù)計這不會對用戶產(chǎn)生影響,因為該庫旨在用大型數(shù)據(jù)集加速大型訓(xùn)練任務(wù)。

簡單的60秒漫游

運行pip install tune-sklearn ray[tune]開始下面章節(jié)的示例代碼。

讓我們來看看它是如何工作的。

Hyperparam set 2是一組沒有希望的超參數(shù),它將被tune的早期停止機制檢測到,并提前停止以避免浪費訓(xùn)練時間和資源。

TuneGridSearchCV示例

首先,只需更改import語句即可獲得Tune的網(wǎng)格搜索交叉:

# from sklearn.model_selection import GridSearchCV
from tune_sklearn import TuneGridSearchCV

從這里開始,我們將像在Scikit Learn的接口風(fēng)格中繼續(xù)!讓我們使用一個“虛擬”自定義分類數(shù)據(jù)集和一個SGD分類程序來對數(shù)據(jù)進行分類。

我們選擇SGDClassifier是因為它有一個partial_fit的 API,這使得它能夠停止擬合特定超參數(shù)配置的數(shù)據(jù)。如果估計器不支持早期停止,我們將回到并行網(wǎng)格搜索。

# 導(dǎo)入其他庫
import numpy as np
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.linear_model import SGDClassifier

# 設(shè)置訓(xùn)練集和驗證集
X, y = make_classification(n_samples=11000, n_features=1000, n_informative=50, 
                           n_redundant=0, n_classes=10, class_sep=2.5)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=1000)

# 從SGDClassifier調(diào)優(yōu)的示例參數(shù)
parameters = {
   'alpha': [1e-4, 1e-1, 1],
   'epsilon':[0.01, 0.1]
}

如你所見,這里的設(shè)置正是你為Scikit Learn所做的設(shè)置!現(xiàn)在,讓我們試著擬合一個模型。

tune_search = TuneGridSearchCV(
    SGDClassifier(),
    parameters,
    early_stopping=True,
    max_iters=10
)
import time # 比較擬合時間
start = time.time()
tune_search.fit(X_train, y_train)
end = time.time()
print("Tune Fit Time:", end - start)
pred = tune_search.predict(X_test)
accuracy = np.count_nonzero(np.array(pred) == np.array(y_test)) / len(pred)
print("Tune Accuracy:", accuracy)

請注意我們在上面介紹的細微差別:

  1. 一個新的early_stopping變量,以及

  2. max_iters參數(shù)

early_stopping決定何時停止,MedianStoppingRule 是一個很好的默認設(shè)置,但是請參閱Tune的關(guān)于調(diào)度器的文檔,以獲得可供選擇的完整列表:https://docs.ray.io/en/master/tune-schedulers.html

max_iters是給定的超參數(shù)集可以運行的最大迭代次數(shù);如果提前停止搜索超參數(shù)集,則可以運行較少的迭代。

請嘗試將其與GridSearchCV進行比較

from sklearn.model_selection import GridSearchCV
# n_jobs=-1 使用所有內(nèi)核
sklearn_search = GridSearchCV(
   SGDClassifier(),
   parameters,
   n_jobs=-1
)

start = time.time()
sklearn_search.fit(X_train, y_train)
end = time.time()
print("Sklearn Fit Time:", end - start)
pred = sklearn_search.predict(X_test)
accuracy = np.count_nonzero(np.array(pred) == np.array(y_test)) / len(pred)
print("Sklearn Accuracy:", accuracy)

TuneSearchCV貝葉斯優(yōu)化示例

除了網(wǎng)格搜索接口之外,tunesklearn還提供了一個接口TuneSearchCV,用于從超參數(shù)分布中進行采樣。

此外,只需幾行代碼更改,就可以輕松地對TuneSearchCV中的發(fā)行版啟用貝葉斯優(yōu)化。

運行pip install scikit-optimize以嘗試以下示例:

from tune_sklearn import TuneSearchCV

# 其他導(dǎo)入
import scipy
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.linear_model import SGDClassifier

# 設(shè)置訓(xùn)練集和驗證集
X, y = make_classification(n_samples=11000, n_features=1000, n_informative=50, 
                           n_redundant=0, n_classes=10, class_sep=2.5)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=1000)

# 從SGDClassifier調(diào)優(yōu)的示例參數(shù)
# 注意,如果需要貝葉斯優(yōu)化,則使用元組
param_dists = {
   'alpha': (1e-4, 1e-1),
   'epsilon': (1e-2, 1e-1)
}

tune_search = TuneSearchCV(SGDClassifier(),
   param_distributions=param_dists,
   n_iter=2,
   early_stopping=True,
   max_iters=10,
   search_optimization="bayesian"
)

tune_search.fit(X_train, y_train)
print(tune_search.best_params_) 

第17、18和26行是為啟用貝葉斯優(yōu)化而更改的代碼行

如你所見,將tunesklearn集成到現(xiàn)有代碼中非常簡單。你可以看看更詳細的例子:https://github.com/ray-project/tune-sklearn。

另外請看一看Ray對joblib的替代,它允許用戶在多個節(jié)點(而不僅僅是一個節(jié)點)上并行化訓(xùn)練,從而進一步加快了訓(xùn)練速度。

文檔和示例

注意:從導(dǎo)入ray.tune如鏈接文檔所示,僅在nightly Ray wheels上可用,不久將在pip上提供

原文鏈接:https://towardsdatascience.com/5x-faster-scikit-learn-parameter-tuning-in-5-lines-of-code-be6bdd21833c

歡迎關(guān)注磐創(chuàng)AI博客站:
http://panchuang.net/

sklearn機器學(xué)習(xí)中文官方文檔:
http://sklearn123.com/

歡迎關(guān)注磐創(chuàng)博客資源匯總站:
http://docs.panchuang.net/

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
KNN算法的python實現(xiàn)--基于scikit_learn
【機器學(xué)習(xí)】機器學(xué)習(xí)神器Scikit-Learn保姆級入門教程
Python遇見機器學(xué)習(xí) ---- k近鄰(kNN)算法
機器學(xué)習(xí)系列:(二)線性回歸
行業(yè)前沿:AutoML會成為機器學(xué)習(xí)世界的主流嗎?
【深度好文】一個框架解決幾乎所有機器學(xué)習(xí)問題
更多類似文章 >>
生活服務(wù)
熱點新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服