<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          自動(dòng)化機(jī)器學(xué)習(xí)入門指南,來了

          共 9046字,需瀏覽 19分鐘

           ·

          2020-09-28 11:17

          之前的工作中也有多少接觸過這個(gè)AutoML(Automated Machine Learning)的概念,簡單來說就是把模型開發(fā)的標(biāo)準(zhǔn)過程模塊化,都交給一些自動(dòng)化的組件來完成,比如數(shù)據(jù)集的劃分、特征衍生、算法選擇、模型訓(xùn)練、調(diào)優(yōu)、部署以及后續(xù)的監(jiān)控,都“一條龍”地在AutoML實(shí)現(xiàn)。


          從Google Cloud繪制的AutoML的工作原理圖可以看出,我們使用者只需要給其提供數(shù)據(jù)源,以及好壞樣本(或者不需要),然后后面的一切都交給AutoML組件去完成。


          ? AutoML的關(guān)鍵節(jié)點(diǎn)

          我們可以認(rèn)識(shí)到AutoML大大降低了機(jī)器學(xué)習(xí)模型的開發(fā)門檻,但是我們還是需要了解這里面的原理的,這里涉及了機(jī)器學(xué)習(xí)的幾個(gè)關(guān)鍵節(jié)點(diǎn)的內(nèi)容,需要我們特別關(guān)注。

          其中最為重要的是自動(dòng)化特征工程了,一般縮寫為“Auto FE”,主要是包括了預(yù)處理、特征選擇、特征提取、元學(xué)習(xí)等等的操作,把每一個(gè)環(huán)節(jié)的處理邏輯寫到腳本里,結(jié)合一些策略讓邏輯更加科學(xué),結(jié)果更加合理。

          第二個(gè)就是自動(dòng)化模型選擇,也叫Automated Model Selection,簡稱AMS,就是根據(jù)實(shí)際的數(shù)據(jù)來選擇合適的算法。因?yàn)榇蠖鄶?shù)的算法都是有超參數(shù)的,這時(shí)候AutoML是需要進(jìn)行自動(dòng)化的超參數(shù)優(yōu)化的,英文叫做Hyperparameter Optimization,簡稱HPO,在學(xué)習(xí)中了解到這塊的知識(shí)研究還是蠻豐富的,主要有下面的一些方法:

          • 基于貝葉斯優(yōu)化的超參數(shù)優(yōu)化 Bayesian Optimization
          • 基于進(jìn)化算法的超參數(shù)優(yōu)化 Evolutionary Algorithms
          • 基于本地搜索的超參數(shù)優(yōu)化 Local Search
          • 基于隨機(jī)搜索的超參數(shù)優(yōu)化 Random Search
          • 基于粒子群優(yōu)化算法的超參數(shù)優(yōu)化 Particle Swarm Optimization
          • 基于元學(xué)習(xí)的超參數(shù)優(yōu)化 Meta Learning
          • 基于遷移學(xué)習(xí)的超參數(shù)優(yōu)化 Transfer Learning

          還有一個(gè)概念就是NAS,即Neural Architecture Search(神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)搜索),因?yàn)槟壳吧疃葘W(xué)習(xí)應(yīng)用很廣泛了,很多時(shí)候是需要搭建一個(gè)深度神經(jīng)網(wǎng)絡(luò),這里面涉及的參數(shù)是真的多,按照傳統(tǒng)的超參數(shù)優(yōu)化的方法顯得十分吃力,所以也有了這個(gè)NAS的概念,而關(guān)于NAS的研究方法,主要有下面幾種:

          • 基于進(jìn)化算法的超參數(shù)優(yōu)化 Evolutionary Algorithms
          • 基于元學(xué)習(xí)的超參數(shù)優(yōu)化 Meta Learning
          • 基于遷移學(xué)習(xí)的超參數(shù)優(yōu)化 Transfer Learning
          • 基于本地搜索的超參數(shù)優(yōu)化 Local Search
          • 基于強(qiáng)化學(xué)習(xí)的超參數(shù)優(yōu)化 Reinforcement Learning
          • 基于Network Morphism
          • 基于 Continuous Optimization優(yōu)化
          ?

          ? 市面上的AutoML產(chǎn)品

          目前AutoML工具我們可以從兩個(gè)途徑來進(jìn)行獲取學(xué)習(xí):

          • 開源框架:如Auto-Keras、Auto-sklearn等開源工具
          • 商業(yè)服務(wù):如Google Cloud、Microsoft Azure等

          從Awesome-AutoML-Papers(https://github.com/hibayesian/awesome-automl-papers#projects)里有一張AutoML工具的對(duì)比圖,大家可以瀏覽一波。

          名稱支持類型編程語言
          AdaNetNASPython
          AdvisorHPOPython
          AMLAHPO, NASPython
          ATMHPOPython
          AugerHPOPython
          Auto-KerasNASPython
          AutoML VisionNASPython
          AutoML Video Intelligence
          Python
          AutoML Natural LanguageNASPython
          AutoML TranslationNASPython
          AutoML TablesAutoFE, HPOPython
          auto-sklearnHPOPython
          auto_mlHPOPython
          BayesianOptimizationHPOPython
          BayesOptHPOC++
          cometHPOPython
          DataRobotHPOPython
          DEvolNASPython
          Driverless AIAutoFEPython
          FAR-HOHPOPython
          H2O AutoMLHPOPython, R, Java, Scala
          HpBandSterHPOPython
          HyperBandHPOPython
          HyperoptHPOPython
          Hyperopt-sklearnHPOPython
          Hyperparameter HunterHPOPython
          KatibHPOPython
          MateLabsHPOPython
          MilanoHPOPython
          MLJARHPOPython
          nasbotNASPython
          neptuneHPOPython
          NNIHPO, NASPython
          OptunityHPOPython
          R2.aiHPO------
          RBFOptHPOPython
          RoBOHPOPython
          Scikit-OptimizeHPOPython
          SigOptHPOPython
          SMAC3HPOPython
          TPOTAutoFE, HPOPython
          TransmogrifAIHPOScala
          TuneHPOPython
          XcessivHPOPython
          SmartMLHPOR
          ?

          ? AutoML學(xué)習(xí)框架——auto-sklearn介紹與入門

          這里會(huì)簡單地講一下auto-sklearn的框架,讓大家對(duì)這個(gè)學(xué)習(xí)框架有一定的了解,接下來就會(huì)拿官方的栗子來說明一下怎么使用,然后羅列一下這個(gè)auto-sklearn可以做什么內(nèi)容,讓大家對(duì)這個(gè)框架的功能有一定的了解。

          二話不說,先在本地安裝一下這個(gè)包,直接pip install auto-sklearn走起,如果安裝失敗可能是因?yàn)槿鄙僖蕾図?xiàng),可以試試:

          curl?https://raw.githubusercontent.com/automl/auto-sklearn/master/requirements.txt?|?xargs?-n?1?-L?1?pip?install

          如果出現(xiàn)Failed to connect to raw.githubusercontent.com port 443: Connection refused的報(bào)錯(cuò),初步估計(jì)是DNS污染,可以查看相關(guān)攻略:https://github.com/hawtim/blog/issues/10

          如果安裝失敗,可以按照官網(wǎng)網(wǎng)站的指導(dǎo)再試試:https://automl.github.io/auto-sklearn/master/installation.html

          相關(guān)學(xué)習(xí)傳送門:

          • auto-sklearn官方文檔(https://automl.github.io/auto-sklearn/master/api.html
          • auto-sklearn官方示例(https://automl.github.io/auto-sklearn/master/examples/index.html
          ?

          我們從上面官方文檔可以知道(可能需要番羽Q,所以我就把相關(guān)的example的code下載下來了,大家可以后臺(tái)回復(fù)“automl”獲取),auto-sklearn的功能主要有下面的截圖所示,包括分類模型、回歸模型的構(gòu)建,模型評(píng)估方法的支持等,涵蓋了我們主要的基礎(chǔ)建模需求。

          auto-sklearn顧名思義應(yīng)該是和我們常用的scikit-learn有一定的關(guān)系,確實(shí)對(duì)的,auto-sklearn就是基于scikit-learn進(jìn)行開發(fā)的自動(dòng)化機(jī)器學(xué)習(xí)庫,所以如果我們熟悉scikit-learn的使用,那么對(duì)于這個(gè)auto-sklearn就很好理解了的,不熟悉其實(shí)也沒有關(guān)系,也蠻簡單的,后續(xù)我拿一些小栗子來說明一下,主要圍繞兩個(gè)核心的分類接口和回歸接口API:AutoSklearnClassifierAutoSklearnRegressor

          ? AutoSklearnClassifier(分類)

          我們直接在官方文檔里看下這個(gè)API的參數(shù),如下圖所示:

          參數(shù)的數(shù)量還是蠻多的,我們簡單介紹兩個(gè)Parameters:

          • time_left_for_this_task:int類型,默認(rèn)3600秒
            時(shí)間限制是針對(duì)模型參數(shù)搜索的,我們可以通過加大這個(gè)值來增加模型訓(xùn)練的時(shí)間,有更大的機(jī)會(huì)找到更好的模型。
          • per_run_time_limit:int類型, 默認(rèn)值為參數(shù)time_left_for_this_task值的1/10
            這個(gè)時(shí)間限制是針對(duì)每次模型調(diào)用的,如果模型調(diào)用時(shí)間超出這個(gè)值,則會(huì)被直接終止擬合,可以適當(dāng)加大這個(gè)值。

          簡單調(diào)用一下:

          #?導(dǎo)入相關(guān)包
          import?numpy?as?np
          from?sklearn.datasets?import?load_digits
          from?sklearn.model_selection?import?train_test_split
          import?warnings
          from?autosklearn.classification?import?AutoSklearnClassifier
          warnings.filterwarnings('ignore')??#?忽略代碼警告

          #?導(dǎo)入手寫數(shù)字的數(shù)據(jù)集
          digits?=?load_digits()??#?加載數(shù)據(jù)集

          #?劃分?jǐn)?shù)據(jù)集為訓(xùn)練集和測試集
          X_train,?X_test,?y_train,?y_test?=?train_test_split(
          ????digits.data,?digits.target,?test_size=0.3,?random_state=42)??#?切分?jǐn)?shù)據(jù)集

          #?調(diào)用Auto-sklearn
          #?限制算法搜索最大時(shí)間,更快得到結(jié)果
          auto_model?=?AutoSklearnClassifier(
          ????time_left_for_this_task=120,?per_run_time_limit=10)

          #?訓(xùn)練模型
          auto_model.fit(X_train,?y_train)??
          #?用測試集評(píng)估模型效果
          auto_model.score(X_test,?y_test)

          ? AutoSklearnRegressor(回歸)

          我們繼續(xù)看官方文檔里的API參數(shù),如下圖所示:

          參數(shù)也是照樣很多,

          • time_left_for_this_task:int類型,和上面的分類API是一樣的參數(shù)
          • per_run_time_limit:int類型,和上面的分類API是一樣的參數(shù)
          • ensemble_size:int類型,默認(rèn)是50
            從算法中選擇構(gòu)建為集成模型的數(shù)量

          總結(jié)來說這兩個(gè)API的參數(shù)幾乎是一樣的,正所謂一份學(xué)習(xí)double享受,jeng!同樣的我們簡單地調(diào)用一下,這次我們用房價(jià)預(yù)測的數(shù)據(jù)集,這是一個(gè)很經(jīng)典的回歸算法的數(shù)據(jù)集。

          #?導(dǎo)入相關(guān)包
          from?sklearn.datasets?import?load_boston
          from?autosklearn.regression?import?AutoSklearnRegressor

          #?導(dǎo)入數(shù)據(jù)集
          boston?=?load_boston()??#?加載數(shù)據(jù)集

          #?限制算法搜索最大時(shí)間,更快得到結(jié)果
          auto_model?=?AutoSklearnRegressor(
          ????time_left_for_this_task=120,?per_run_time_limit=10)
          auto_model.fit(boston.data,?boston.target)

          #?查看模型效果,用R方來看
          auto_model.score(boston.data,?boston.target)

          ? Auto-sklearn支持的Metrics方法

          我們?cè)u(píng)估一個(gè)機(jī)器學(xué)習(xí)模型的好壞需要量化的指標(biāo),而我們常用的幾個(gè)像準(zhǔn)確率、AUC、ROC、f1等等,在這里是否也支持呢?我們可以看看:

          print("Available?CLASSIFICATION?metrics?autosklearn.metrics.*:")
          print("\t*"?+?"\n\t*".join(autosklearn.metrics.CLASSIFICATION_METRICS))

          print("Available?REGRESSION?autosklearn.metrics.*:")
          print("\t*"?+?"\n\t*".join(autosklearn.metrics.REGRESSION_METRICS))
          Available?CLASSIFICATION?metrics?autosklearn.metrics.*:
          ????????*accuracy
          ????????*balanced_accuracy
          ????????*roc_auc
          ????????*average_precision
          ????????*log_loss
          ????????*precision
          ????????*precision_macro
          ????????*precision_micro
          ????????*precision_samples
          ????????*precision_weighted
          ????????*recall
          ????????*recall_macro
          ????????*recall_micro
          ????????*recall_samples
          ????????*recall_weighted
          ????????*f1
          ????????*f1_macro
          ????????*f1_micro
          ????????*f1_samples
          ????????*f1_weighted
          Available?REGRESSION?autosklearn.metrics.*:
          ????????*r2
          ????????*mean_squared_error
          ????????*mean_absolute_error
          ????????*median_absolute_error

          我們可以看出其實(shí)大多數(shù)的評(píng)估指標(biāo)都涵蓋了,具體怎么用,建議可以去看看官方文檔看看例子~

          ?

          ? AutoDL學(xué)習(xí)框架——auto-keras介紹與入門

          介紹完了機(jī)器學(xué)習(xí)框架的原理以及其中一個(gè)產(chǎn)品的簡單使用,順便也介紹下深度學(xué)習(xí)的自動(dòng)化機(jī)器學(xué)習(xí)框架,深度學(xué)習(xí)在近幾年十分大熱,神經(jīng)網(wǎng)絡(luò)在很多時(shí)候的表現(xiàn)也是讓人吃驚,確實(shí)也很有必要去了解一下。

          towardsdatascience.com

          可以從上圖看出目前最流行的深度學(xué)習(xí)框架有TensorFlow、Keras和PyTorch,今天我們不展開這些框架的學(xué)習(xí),篇幅有限也不好展開(主要是我也不熟哈哈哈),我們今天就來講講Auto-Keras的簡單使用,畢竟今天的主要還是自動(dòng)化機(jī)器學(xué)習(xí)。

          Auto-Keras框架是由DATA Lab開發(fā)的,由Keras官方團(tuán)隊(duì)維護(hù)。它主要提供了神經(jīng)結(jié)構(gòu)搜索(NAS)和超參數(shù)自動(dòng)優(yōu)化(HPO),其后端依賴于scikit-learn、TensorFlow和PyTorch,我們還是把一些常用的地址貼一下:

          • 官方網(wǎng)站:https://autokeras.com/
          • GitHub地址:https://github.com/keras-team/autokeras

          安裝的話也是比較簡單,可以使用pip的方式進(jìn)行安裝,不過目前AutoKeras只支持Python >= 3.5 and TensorFlow >= 2.3.0

          pip3?install?git+https://github.com/keras-team/keras-tuner.git@1.0.2rc1
          pip3?install?autokeras

          我們從官網(wǎng)文檔里可以看出主要是支持圖片分類、圖片生成、文本分類、文本生成等,算是涵蓋了計(jì)算機(jī)視覺和自然語言處理的常用應(yīng)用場景了。

          import?sys
          sys.path.append("autokeras")??#?鏈接到?Auto-Keras?庫

          ? ImageClassifier(圖片分類)

          同樣的,我們可以看看官方文檔:

          調(diào)用栗子:

          我們導(dǎo)入自帶的MNIST手寫字符分類數(shù)據(jù)集,樣本數(shù)據(jù)形狀為28x28的灰度圖像,已經(jīng)轉(zhuǎn)為了numpy數(shù)組。

          #?導(dǎo)入相關(guān)包
          import?tensorflow?as?tf
          from?autokeras.image.image_supervised?import?ImageClassifier

          #?加載數(shù)據(jù)集
          (X_train,?y_train),?(X_test,?y_test)?=?tf.keras.datasets.mnist.load_data()

          #?實(shí)例化模型,verbose=True?輸出訓(xùn)練過程參數(shù)
          clf?=?ImageClassifier(verbose=True)??
          #?訓(xùn)練模型,最大時(shí)間設(shè)為?30?分鐘
          clf.fit(X_train,?y_train,?time_limit=30?*?60)??
          #?評(píng)估模型
          clf.evaluate(X_test,?y_test)??

          那如果是針對(duì)那些數(shù)據(jù)集本身是圖片的呢,又可以如何操作?也可以參考下面的例子:

          #?下載圖片數(shù)據(jù)
          !wget?-nc?"https://labfile.oss.aliyuncs.com/courses/1357/load_raw_image_data.zip"
          !unzip?-o?"load_raw_image_data.zip"??#?解壓數(shù)據(jù)

          #?導(dǎo)入相關(guān)包
          import?pandas?as?pd
          from?autokeras.image.image_supervised?import?load_image_dataset

          #?讀取數(shù)據(jù)
          X_train,?y_train?=?load_image_dataset(
          ???????="load_raw_image/train/label.csv",?images_path="load_raw_image/train")
          X_test,?y_test?=?load_image_dataset(
          ????csv_file_path="load_raw_image/test/label.csv",?images_path="load_raw_image/test")

          #?實(shí)例化模型,verbose=True?輸出訓(xùn)練過程參數(shù)
          clf?=?ImageClassifier(verbose=True)??
          #?訓(xùn)練模型,最大時(shí)間設(shè)為?30?分鐘
          clf.fit(X_train,?y_train,?time_limit=30?*?60)??
          #?評(píng)估模型
          clf.evaluate(X_test,?y_test)??

          ? TextClassifier(文本分類)

          同樣的,我們可以看看官方文檔:

          NLP有十分豐富的應(yīng)用,比如文本分類、情感分析、機(jī)器翻譯、智能問答等,在Auto-Keras中也有類似的APIs可以用,我們拿其中一個(gè)文本分類預(yù)測來看看。

          #?下載數(shù)據(jù)集(關(guān)于電影影評(píng)的積極與消極情緒的識(shí)別)
          !wget?-nc?"https://labfile.oss.aliyuncs.com/courses/1357/imdb-reviews.zip"
          !unzip?-o?"imdb-reviews.zip"

          #?導(dǎo)入相關(guān)包
          import?pandas?as?pd
          from?sklearn.model_selection?import?train_test_split
          from?autokeras.text.text_supervised?import?TextClassifier

          #?導(dǎo)入數(shù)據(jù)
          reviews?=?pd.read_csv("imdb-reviews.csv")

          #?劃分?jǐn)?shù)據(jù)集
          X_train,?X_test,?y_train,?y_test?=?train_test_split(
          ????reviews['text'],?reviews['sentiment'],?test_size=0.1)
          X_train.shape,?X_test.shape,?y_train.shape,?y_test.shape
          #?獨(dú)熱編碼,因?yàn)閍uto-kearn要求輸入的為獨(dú)熱編碼后的數(shù)組
          y_train_?=?pd.get_dummies(y_train).values??
          y_test_?=?pd.get_dummies(y_test).values

          #?實(shí)例化模型,verbose=True?輸出訓(xùn)練過程參數(shù)
          clf?=?TextClassifier(verbose=True)??
          clf.fit(X_train,?y_train,?time_limit=30?*?60)?
          #?評(píng)估模型
          clf.evaluate(X_test,?y_test)?

          (我把相關(guān)的example的code下載下來了,大家可以后臺(tái)回復(fù)“automl”獲取)

          ?

          ? References

          • 自動(dòng)化機(jī)器學(xué)習(xí)綜述——實(shí)驗(yàn)樓
          • Awesome-AutoML-Papers(https://github.com/hibayesian/awesome-automl-papers)
          • auto-sklearn官方文檔(https://automl.github.io/auto-sklearn/master/api.html)
          • auto-sklearn官方示例(https://automl.github.io/auto-sklearn/master/examples/index.html)
          • 解決DNS污染的問題(https://github.com/hawtim/blog/issues/10)
          瀏覽 134
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  人妻免费视频 | 大香蕉伊人婷婷 | 国产性无码 | 大鸡八操逼视频免费试试看 | 欧美精品成人a在线观看hd |