自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

自動化機器學(xué)習(xí)指南之四大成熟度模型

譯文
人工智能 機器學(xué)習(xí) 自動化
人工智能和機器學(xué)習(xí)的概念在數(shù)據(jù)科學(xué)界中已經(jīng)普遍流行。通過這些概念,過去許多需要人工完成的任務(wù),已經(jīng)能夠被更加高效且準(zhǔn)確的自動化方式所取代??梢哉f,隨著技術(shù)趨勢的變化,自動化機器學(xué)習(xí)在簡化人工操作的基礎(chǔ)上,既節(jié)省了時間又提高了效率。

【51CTO.com快譯】人工智能和機器學(xué)習(xí)的概念在數(shù)據(jù)科學(xué)界中已經(jīng)普遍流行。通過這些概念,過去許多需要人工完成的任務(wù),已經(jīng)能夠被更加高效且準(zhǔn)確的自動化方式所取代??梢哉f,隨著技術(shù)趨勢的變化,自動化機器學(xué)習(xí)在簡化人工操作的基礎(chǔ)上,既節(jié)省了時間又提高了效率。

自動化機器學(xué)習(xí):自動化訓(xùn)練過程

從概念上說,機器學(xué)習(xí)旨在通過對機器進行訓(xùn)練,通過處理現(xiàn)實數(shù)據(jù)的方式,提供預(yù)期的輸出。也就是說:它能夠讓機器從現(xiàn)有的數(shù)據(jù)(或經(jīng)驗)中得到一定程度的訓(xùn)練,在經(jīng)歷了一番完整的數(shù)據(jù)處理之后,進而生成更準(zhǔn)確的輸出。那么自動化機器學(xué)習(xí)(AutoML)的概念顯然是要使得整個過程徹底實現(xiàn)自動化。

自動化機器學(xué)習(xí)的成熟度模型

自動化機器學(xué)習(xí)的不同實現(xiàn)方式可以根據(jù)它們所對應(yīng)的成熟度,進行不同級別的分類。如下圖所示,模型成熟度越高,表示它對于自動化任務(wù)的支持就越好,當(dāng)然也就需要該模型能夠通過對于數(shù)據(jù)的集中訓(xùn)練,執(zhí)行更多的任務(wù)、提供更多的服務(wù)。

自動化機器學(xué)習(xí)指南之四大成熟度模型

1.超參數(shù)優(yōu)化

當(dāng)數(shù)據(jù)集被提交過來之后,自動化機器學(xué)習(xí)會根據(jù)上述成熟度模型,嘗試著去匹配各種既有的模型,例如:隨機森林、線性回歸等(一般使用的是結(jié)構(gòu)化的數(shù)據(jù))。同時,它會按需為那些應(yīng)用到數(shù)據(jù)上的每一種模型,去優(yōu)化超參數(shù)(hyperparamters)。此類優(yōu)化技術(shù)包括:手動搜索、隨機搜索、網(wǎng)格搜索等。

例如:Auto-sklearn使用貝葉斯模型進行超參數(shù)優(yōu)化,并且能夠提供所需的結(jié)果。不過,在該級別的成熟度模型中,自動化機器學(xué)習(xí)只能執(zhí)行有限的任務(wù),例如:交叉驗證、機器學(xué)習(xí)算法的選擇、超參數(shù)的優(yōu)化等。當(dāng)然,隨著成熟度水平的提高,自動化機器學(xué)習(xí)將會具有更多的功能,提供更出色的結(jié)果。

2. 一級以上的數(shù)據(jù)預(yù)處理

在第一級中,自動化機器學(xué)習(xí)需要用戶自行實現(xiàn)數(shù)據(jù)的預(yù)處理措施。但是,到了第二級,由于使用了更為成熟的模型,各種數(shù)據(jù)的預(yù)處理任務(wù)便可以由自動化本身來完成,并為進一步處理做好準(zhǔn)備。

通過搜索和了解列的類型,機器學(xué)習(xí)自身完全有能力將所有數(shù)據(jù)(包括一些空值數(shù)據(jù))轉(zhuǎn)換為常見的數(shù)值類型。當(dāng)然,此處并不包括對于數(shù)據(jù)的高級轉(zhuǎn)換與預(yù)處理,這些仍然需要數(shù)據(jù)科學(xué)家自行采取進一步的操作。

對于目標(biāo)任務(wù)而言,系統(tǒng)僅負(fù)責(zé)搜索和選擇適當(dāng)?shù)臋C器學(xué)習(xí)算法。例如:根據(jù)手頭的移動應(yīng)用開發(fā)任務(wù),設(shè)計自動化機器學(xué)習(xí)的算法與模型,通過對于數(shù)據(jù)的預(yù)處理,以得出所需的預(yù)算、時間、以及其他準(zhǔn)確的結(jié)果。

通過對于數(shù)據(jù)的預(yù)處理,自動化機器學(xué)習(xí)系統(tǒng)能夠構(gòu)建并實現(xiàn)特征選擇、降低維度、數(shù)據(jù)壓縮等功能,進而無縫地執(zhí)行各項訓(xùn)練任務(wù)。

3.找到合適的機器學(xué)習(xí)架構(gòu)

上述第一、二級自動化機器學(xué)習(xí)系統(tǒng),顯然無法根據(jù)數(shù)據(jù)的性質(zhì),主動發(fā)現(xiàn)合適的機器學(xué)習(xí)架構(gòu),并通過執(zhí)行,以確保出色的輸出。而在第三級中,以AutoKeras為代表的開源式自動化機器學(xué)習(xí)庫,實現(xiàn)了神經(jīng)架構(gòu)搜索(NAS,neural architecture search,請參見:https://en.wikipedia.org/wiki/Neural_architecture_search)。該流行架構(gòu)能夠有效地在圖像、語音或文本上實施機器學(xué)習(xí)算法。

因此,數(shù)據(jù)科學(xué)家可以使用不同的神經(jīng)架構(gòu)搜索算法,來增強對于自動化機器學(xué)習(xí)的支持與經(jīng)驗積累。在實際應(yīng)用中,自動駕駛汽車、自動化消費服務(wù)等領(lǐng)域都采用了第三級的自動化機器學(xué)習(xí)系統(tǒng)。

4.相關(guān)領(lǐng)域知識的使用

為了能夠提供準(zhǔn)確的機器學(xué)習(xí)系統(tǒng)輸出,深入地了解數(shù)據(jù),特別是數(shù)據(jù)的范圍和承載的系統(tǒng)是非常必要的。只有使用相關(guān)領(lǐng)域的知識,并時刻參照所有必需考慮的標(biāo)準(zhǔn),才能實現(xiàn)復(fù)雜的人工智能的效果。

可見,針對現(xiàn)有相關(guān)領(lǐng)域的知識儲備和在實際場景中的使用,無疑會提高最終結(jié)果的準(zhǔn)確性。與此同時,準(zhǔn)確性的提高也會驅(qū)動出色的預(yù)測能力,并為自動化機器學(xué)習(xí)的各項任務(wù)提供全面的支持。因此,這個級別的成熟度模型注重的是:通過增加背景領(lǐng)域的相關(guān)知識,憑借具有明確結(jié)果導(dǎo)向(result-oriented)的記錄,來提高自動化機器學(xué)習(xí)系統(tǒng)的準(zhǔn)確性。

自動化機器學(xué)習(xí)的實例

從事數(shù)據(jù)科學(xué)研究的人員可以根據(jù)實際應(yīng)用場景的需求,使用各種工具和軟件庫來開發(fā)自動化的流程、以及具有精準(zhǔn)輸出的機器學(xué)習(xí)系統(tǒng)。

自動化機器學(xué)習(xí)的開源庫

目前,業(yè)界有著很多種類的開源庫,能夠支持和滿足開發(fā)人員在其系統(tǒng)中實現(xiàn)各種自動化的機器學(xué)習(xí)需求。

1. AutoKeras

該軟件庫在GitHub上可供開發(fā)人員免費使用。由Data Lab開發(fā)的AutoKeras,旨在提供對于所有深度學(xué)習(xí)(deep learning)工具的訪問,進而增強深度學(xué)習(xí)模型的整體能力。如下代碼是AutoKeras的應(yīng)用示例: 

  1. import autokeras as ak 
  2. clf = ak.ImageClassifier() 
  3. clf.fit(x_train, y_train) 
  4. results = clf.predict(x_test) 

Python源代碼鏈接:https://github.com/jhfjhfj1/autokeras

2. MLBox

MLBox是另一種使用Python編寫的開源庫。它能夠更快、更輕松地開發(fā)出自動化機器學(xué)習(xí)的各種函數(shù),其中包含了可用于數(shù)據(jù)預(yù)處理、清理、以及格式化等功能。如下代碼示例展示了在導(dǎo)入數(shù)據(jù)之后,如何進行數(shù)據(jù)預(yù)處理的過程:

  1. from mlbox.preprocessing import * 
  2. from mlbox.optimisation import * 
  3. from mlbox.prediction import * 
  4. paths = ["../input/train.csv","../input/test.csv"
  5. target_name = "Survived" 
  6. rd = Reader(sep = ","
  7. df = rd.train_test_split(paths, target_name) #reading and preprocessing (dates, ...) 

Python源代碼鏈接:https://www.kaggle.com/axelderomblay/running-mlbox-auto-ml-package-on-titanic

3. Auto-sklearn

Auto-sklearn是另一種開源的自動化機器學(xué)習(xí)支持庫。它通過選擇適當(dāng)?shù)臋C器學(xué)習(xí)算法,來研究數(shù)據(jù)的模型和需求。它消除了用戶端對于超參數(shù)處理的要求,進而能夠自行開展處理工作。如下代碼是在數(shù)據(jù)集上實現(xiàn)Auto-sklearn的應(yīng)用示例:

  1. import autosklearn.classification 
  2. import sklearn.model_selection 
  3. import sklearn.datasets 
  4. import sklearn.metrics 
  5. X, y = sklearn.datasets.load_digits(return_X_y=True
  6. X_train, X_test, y_train, y_test = \ 
  7. sklearn.model_selection.train_test_split(X, y, random_state=1) 
  8. automl = autosklearn.classification.AutoSklearnClassifier() 
  9. automl.fit(X_train, y_train) 
  10. y_hat = automl.predict(X_test) 
  11. print("Accuracy score", sklearn.metrics.accuracy_score(y_test, y_h 

Python源代碼鏈接:https://自動化機器學(xué)習(xí).github.io/auto-sklearn/master/

自動化機器學(xué)習(xí)工具

如下工具雖然是為商業(yè)用途而發(fā)布的,但是它們不但得到了廣泛地使用,而且保證了自動化機器學(xué)習(xí)的輸出質(zhì)量。

DataRobot

DataRobot是第一款支持自動化機器學(xué)習(xí)的工具。它提供了一個能夠?qū)崿F(xiàn)人工智能的先進平臺,在協(xié)助用戶解決各項問題的同時,用戶可以不必過于擔(dān)心其執(zhí)行過程,而能夠輕松地獲取所需的結(jié)果。DataRobot API不但支持預(yù)測,而且能夠使機器通過選擇適當(dāng)?shù)姆椒?,來實現(xiàn)自動化處理,并提供輸出結(jié)果。

如下代碼是DataRobot API的一個應(yīng)用示例。它使用數(shù)據(jù)集來預(yù)測30天之內(nèi)各家醫(yī)院的患者可能再次入院的幾率。 

  1. import datarobot as dr  
  2. import pandas as pd  
  3. pd.options.display.max_columns = 1000  
  4. import numpy as np  
  5. import time  
  6. import matplotlib.pyplot as plt  
  7. from jupyterthemes import jtplot  
  8. # currently installed theme will be used to set plot style if no arguments provided  
  9. jtplot.style()  
  10. get_ipython().magic('matplotlib inline' 
  11. load input data  
  12. df = pd.read_csv('../demo_data/10kDiabetes.csv' 
  13. # initialize datarobot client instance  
  14. dr.Client(config_path='/Users/benjamin.miller/.config/datarobot/my_drconfig.yaml' 
  15. create 100 samples with replacement from the original 10K diabetes dataset 
  16. samples = []  
  17. for i in range(100):  
  18. samples.append(df.sample(10000, replace=True))  
  19. # loop through each sample dataframe  
  20. for i, s in enumerate(samples):  
  21. # initialize project  
  22. project = dr.Project.start  
  23.  
  24. project_name='API_Test_{}'.format(i+20),  
  25. sourcedata=s,  
  26. target='readmitted' 
  27. worker_count=2  
  28.  
  29. # get all projects  
  30. projects = []  
  31. for project in dr.Project.list():  
  32. if "API_Test" in project.project_name:  
  33. projects.append(project)  
  34. # *For each project...*  
  35. # Make predictions on the original dataset using the most accurate model  
  36. # initialize list of all predictions for consolidating results  
  37. bootstrap_predictions = []  
  38. # loop through each relevant project to get predictions on original input dataset  
  39. for project in projects:  
  40. # get best performing model  
  41. model = dr.Model.get(project=project.id, model_id=project.get_models()[0].id)  
  42. # upload dataset  
  43. new_data = project.upload_dataset(df) 
  44. # start a predict job  
  45. predict_job = model.request_predictions(new_data.id)  
  46. # get job status every 5 seconds and move on once 'inprogress'  
  47. for i in range(100):  
  48. time.sleep(5) 
  49. try:  
  50. job_status = dr.PredictJob.get(  
  51. project_id=project.id,  
  52. predict_job_id=predict_job.id  
  53. ).status  
  54. except: # normally the job_status would produce an error when it is completed 
  55. break  
  56. # now the predictions are finished  
  57. predictions = dr.PredictJob.get_predictions( 
  58. project_id=project.id, 
  59. predict_job_id=predict_job.id 
  60.  
  61. # extract row ids and positive probabilities for all records and set to dictionary  
  62. pred_dict = {k: v for k, v in zip(predictions.row_id, predictions.positive_probability)} 
  63. # append prediction dictionary to bootstrap predictions 
  64. bootstrap_predictions.append(pred_dict)  
  65. # combine all predictions into single dataframe with keys as ids  
  66. # each record is a row, each column is a set of predictions pertaining to  
  67. # a model created from a bootstrapped dataset  
  68. df_predictions = pd.DataFrame(bootstrap_predictions).T  
  69. add mean predictions for each observation in df_predictions  
  70. df_predictions['mean'] = df_predictions.mean(axis=1)  
  71. # place each record into equal sized probability groups using the mean  
  72. df_predictions['probability_group'] = pd.qcut(df_predictions['mean'], 10)  
  73. # aggregate all predictions for each probability group  
  74. d = {} # dictionary to contain {Interval(probability_group): array([predictions])}  
  75. for pg in set(df_predictions.probability_group):  
  76. # combine all predictions for a given group  
  77. frame = df_predictions[df_predictions.probability_group == pg].iloc[:, 0:100]  
  78. d[str(pg)] = frame.as_matrix().flatten()  
  79. create dataframe from all probability group predictions  
  80. df_pg = pd.DataFrame(d)  
  81. create boxplots in order of increasing probability ranges 
  82. props = dict(boxes='slategray', medians='black', whiskers='slategray'
  83. viz = df_pg.plot.box(color=props, figsize=(15,7), patch_artist=True, rot=45) 
  84. grid = viz.grid(False, axis='x'
  85. ylab = viz.set_ylabel('Readmission Probability'
  86. xlab = viz.set_xlabel('Mean Prediction Probability Ranges'
  87. title = viz.set_title( 
  88. label='Expected Prediction Distributions by Readmission Prediction Range'
  89. fontsize=18 

Python源代碼鏈接:https://blog.datarobot.com/estimation-of-prediction-distributions-using-datarobot

H2O.ai

另一款支持人工智能的服務(wù)平臺工具是H2O。它主要被用于完成諸如:無人駕駛的AI結(jié)果輸出等方面的機器學(xué)習(xí)任務(wù)。

總結(jié)

除了上述提到的工具和軟件庫,市場上也有著諸如:Google AutoML(https://cloud.google.com/automl/)等其他商業(yè)類型的解決方案。它們在實現(xiàn)機器學(xué)習(xí)相關(guān)概念的同時,推動了自動化數(shù)據(jù)的訓(xùn)練,并能夠提供出色的結(jié)果與預(yù)測。如今,隨著自動化機器學(xué)習(xí)效果的凸顯,人工智能技術(shù)也得到了不斷地增強,越來越多的企業(yè)都能夠從此類系統(tǒng)的輸出結(jié)果中持續(xù)受益。

原文標(biāo)題:A Beginner's Guide to Automated Machine Learning: 4 Maturity Models to Understand,作者:Manoj Rupareliya

【51CTO譯稿,合作站點轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】

 

責(zé)任編輯:龐桂玉 來源: 51CTO
相關(guān)推薦

2022-05-26 00:15:02

數(shù)據(jù)成熟度模型

2024-01-10 08:25:52

性能工程性能建模成熟度模型

2011-02-22 10:46:34

ITIL服務(wù)管理

2023-06-06 10:45:00

2021-07-31 22:37:45

DevOps 模型云廠商

2013-01-06 10:44:43

微軟Windows 8云計算

2014-10-27 12:34:50

JMP

2023-09-16 17:03:59

DevOps文檔

2022-01-11 10:52:51

數(shù)據(jù)成熟度數(shù)據(jù)數(shù)據(jù)分析

2009-01-12 17:39:19

SOA面向服務(wù)的架構(gòu)SOA部署

2014-05-26 10:56:46

持續(xù)交付

2010-07-29 09:31:28

Flex編程模型

2022-05-24 14:26:11

云原生數(shù)據(jù)庫云架構(gòu)

2023-11-30 11:54:40

網(wǎng)絡(luò)安全企業(yè)

2024-09-03 15:05:03

2017-10-25 13:20:43

軟件安全模型

2022-06-02 00:13:39

數(shù)據(jù)安全成熟度模型

2022-03-25 08:28:05

敏捷團隊敏捷

2017-01-05 15:38:33

機器學(xué)習(xí)開源框架

2015-05-26 10:02:14

數(shù)據(jù)分析成熟度模型
點贊
收藏

51CTO技術(shù)棧公眾號