Hyperopt-sklearnscikit-learn 的參數(shù)優(yōu)化工具
Hyperopt-sklearn是基于scikit-learn項目的一個子集,其全稱是:Hyper-parameter optimization for scikit-learn,即針對scikit-learn項目的超級參數(shù)優(yōu)化工具。由于scikit-learn是基于Python的機(jī)器學(xué)習(xí)開源框架,因此Hyperopt-sklearn也基于Python語言。
Hyperopt-sklearn的文檔稱:對于開發(fā)者而言,針對不同的訓(xùn)練數(shù)據(jù)挑選一個合適的分類器(classifier)通常是困難的。而且即使選好了分類器,后面的參數(shù)調(diào)試過程也相當(dāng)乏味和耗時。更嚴(yán)重的是,還有許多情況是開發(fā)者好不容易調(diào)試好了選定的分類器,卻發(fā)現(xiàn)一開始的選擇本身就是錯誤的,這本身就浪費(fèi)了大量的精力和時間。針對該問題,Hyperopt-sklearn提供了一種解決方案。
Hyperopt-sklearn支持各種不同的搜索算法(包括隨機(jī)搜索、Tree of Parzen Estimators、Annealing等),可以搜索所有支持的分類器(KNeightborsClassifier、KNeightborsClassifier、SGDClassifier等)或者在給定的分類器下搜索所有可能的參數(shù)配置,并評估最優(yōu)選擇。并且Hyperopt-sklearn還支持多種預(yù)處理流程,包括TfidfVectorizer,Normalzier和OneHotEncoder等。
那么Hyperopt-sklearn的實際效果究竟如何?下表分別展示了使用scikit-learn默認(rèn)參數(shù)和Hyperopt-sklearn優(yōu)化參數(shù)運(yùn)行的分類器的F-score分?jǐn)?shù),數(shù)據(jù)源來自20個不同的新聞組稿件。可以看到,經(jīng)過優(yōu)化的分類器的平均得分都要高于默認(rèn)參數(shù)的情況。
另外,Hyperopt-sklearn的編碼量也很小,并且維護(hù)團(tuán)隊還提供了豐富的參考樣例。
