1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        自動化機器學習入門指南,來了

        共 9078字,需瀏覽 19分鐘

         ·

        2020-12-17 22:03

        點擊上方數據管道”,選擇“置頂星標”公眾號

        干貨福利,第一時間送達


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

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


        ? AutoML的關鍵節(jié)點

        我們可以認識到AutoML大大降低了機器學習模型的開發(fā)門檻,但是我們還是需要了解這里面的原理的,這里涉及了機器學習的幾個關鍵節(jié)點的內容,需要我們特別關注。

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

        第二個就是自動化模型選擇,也叫Automated Model Selection,簡稱AMS,就是根據實際的數據來選擇合適的算法。因為大多數的算法都是有超參數的,這時候AutoML是需要進行自動化的超參數優(yōu)化的,英文叫做Hyperparameter Optimization,簡稱HPO,在學習中了解到這塊的知識研究還是蠻豐富的,主要有下面的一些方法:

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

        還有一個概念就是NAS,即Neural Architecture Search(神經網絡結構搜索),因為目前深度學習應用很廣泛了,很多時候是需要搭建一個深度神經網絡,這里面涉及的參數是真的多,按照傳統(tǒng)的超參數優(yōu)化的方法顯得十分吃力,所以也有了這個NAS的概念,而關于NAS的研究方法,主要有下面幾種:

        • 基于進化算法的超參數優(yōu)化 Evolutionary Algorithms
        • 基于元學習的超參數優(yōu)化 Meta Learning
        • 基于遷移學習的超參數優(yōu)化 Transfer Learning
        • 基于本地搜索的超參數優(yōu)化 Local Search
        • 基于強化學習的超參數優(yōu)化 Reinforcement Learning
        • 基于Network Morphism
        • 基于 Continuous Optimization優(yōu)化
        ?

        ? 市面上的AutoML產品

        目前AutoML工具我們可以從兩個途徑來進行獲取學習:

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

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

        名稱支持類型編程語言
        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學習框架——auto-sklearn介紹與入門

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

        二話不說,先在本地安裝一下這個包,直接pip install auto-sklearn走起,如果安裝失敗可能是因為缺少依賴項,可以試試:

        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的報錯,初步估計是DNS污染,可以查看相關攻略:https://github.com/hawtim/blog/issues/10

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

        相關學習傳送門:

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

        我們從上面官方文檔可以知道(可能需要番羽Q,所以我就把相關的example的code下載下來了,大家可以后臺回復“automl”獲?。?/span>,auto-sklearn的功能主要有下面的截圖所示,包括分類模型、回歸模型的構建,模型評估方法的支持等,涵蓋了我們主要的基礎建模需求。

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

        ? AutoSklearnClassifier(分類)

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

        參數的數量還是蠻多的,我們簡單介紹兩個Parameters:

        • time_left_for_this_task:int類型,默認3600秒
          時間限制是針對模型參數搜索的,我們可以通過加大這個值來增加模型訓練的時間,有更大的機會找到更好的模型。
        • per_run_time_limit:int類型, 默認值為參數time_left_for_this_task值的1/10
          這個時間限制是針對每次模型調用的,如果模型調用時間超出這個值,則會被直接終止擬合,可以適當加大這個值。

        簡單調用一下:

        #?導入相關包
        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')??#?忽略代碼警告

        #?導入手寫數字的數據集
        digits?=?load_digits()??#?加載數據集

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

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

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

        ? AutoSklearnRegressor(回歸)

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

        參數也是照樣很多,

        • time_left_for_this_task:int類型,和上面的分類API是一樣的參數
        • per_run_time_limit:int類型,和上面的分類API是一樣的參數
        • ensemble_size:int類型,默認是50
          從算法中選擇構建為集成模型的數量

        總結來說這兩個API的參數幾乎是一樣的,正所謂一份學習double享受,jeng!同樣的我們簡單地調用一下,這次我們用房價預測的數據集,這是一個很經典的回歸算法的數據集。

        #?導入相關包
        from?sklearn.datasets?import?load_boston
        from?autosklearn.regression?import?AutoSklearnRegressor

        #?導入數據集
        boston?=?load_boston()??#?加載數據集

        #?限制算法搜索最大時間,更快得到結果
        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方法

        我們評估一個機器學習模型的好壞需要量化的指標,而我們常用的幾個像準確率、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

        我們可以看出其實大多數的評估指標都涵蓋了,具體怎么用,建議可以去看看官方文檔看看例子~

        ? AutoDL學習框架——auto-keras介紹與入門

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

        towardsdatascience.com

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

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

        • 官方網站:https://autokeras.com/
        • GitHub地址:https://github.com/keras-team/autokeras

        安裝的話也是比較簡單,可以使用pip的方式進行安裝,不過目前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

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

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

        ? ImageClassifier(圖片分類)

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

        調用栗子:

        我們導入自帶的MNIST手寫字符分類數據集,樣本數據形狀為28x28的灰度圖像,已經轉為了numpy數組。

        #?導入相關包
        import?tensorflow?as?tf
        from?autokeras.image.image_supervised?import?ImageClassifier

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

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

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

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

        #?導入相關包
        import?pandas?as?pd
        from?autokeras.image.image_supervised?import?load_image_dataset

        #?讀取數據
        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")

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

        ? TextClassifier(文本分類)

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

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

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

        #?導入相關包
        import?pandas?as?pd
        from?sklearn.model_selection?import?train_test_split
        from?autokeras.text.text_supervised?import?TextClassifier

        #?導入數據
        reviews?=?pd.read_csv("imdb-reviews.csv")

        #?劃分數據集
        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
        #?獨熱編碼,因為auto-kearn要求輸入的為獨熱編碼后的數組
        y_train_?=?pd.get_dummies(y_train).values??
        y_test_?=?pd.get_dummies(y_test).values

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

        (我把相關的example的code下載下來了,大家可以后臺回復“automl”獲?。?/p>

        ?

        ? References

        • 自動化機器學習綜述——實驗樓
        • 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)

        瀏覽 31
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            无遮挡1000部免费视频软件 | 我爱avav色av爱avav亚洲 | 又粗又长顶的很深 | 日逼操| 国模私拍在线视频一区二区 | 激情国产在线观看 | 国产一级在线看 | 国产又粗又猛又爽又 | 91视频18| 一品道成人免费视频 |