1.如何成為一個IDO?
要成為一個IDO(insight-driven organization),前提是要有數(shù)據(jù)以及操作和分析數(shù)據(jù)的工具;然后還要有一定經驗的數(shù)據(jù)分析師或數(shù)據(jù)科學家;最后需要找到一種技術或者方法,在公司實施洞察力驅動的決策過程。
機器學習是能極大限度發(fā)揮數(shù)據(jù)優(yōu)勢的技術。機器學習流程是先運用數(shù)據(jù)訓練預測模型,訓練成功之后再處理與數(shù)據(jù)相關的問題。其中,人工神經網(wǎng)絡是很有效的技術,它的設計構思來自現(xiàn)階段我們對人腦工作方式的理解??紤]到我們現(xiàn)階段擁有的巨大計算資源,它能通過大量數(shù)據(jù)訓練產生讓人難以置信的模型。
企業(yè)能用各種自助化軟件和腳本完成不同的任務,來規(guī)避人為錯誤的情況。同樣,你也完全能基于數(shù)據(jù)進行決策來規(guī)避當中的人為錯誤。
2.為什么企業(yè)在采用AI方面進展緩慢?
運用AI或機器學習來處理數(shù)據(jù)的企業(yè)僅是少數(shù)。美國人口普查局指出,截至2020年,只有不到10%的美國企業(yè)采用了機器學習。
采用機器學習的困難包括:
AI在取代人類之前還有大量工作沒有完成。首先是很多企業(yè)缺少且請不起專業(yè)人員。數(shù)據(jù)科學家在這一領域備受推崇,但他們的雇傭成本也是極高的。
缺少可用數(shù)據(jù)、數(shù)據(jù)安全性以及耗時的機器學習算法實現(xiàn)。
企業(yè)很難創(chuàng)造一個環(huán)境,來讓數(shù)據(jù)及其優(yōu)勢得到發(fā)揮。這種環(huán)境需要相應的工具、過程和策略。
3.機器學習的推廣只有自動機器學習工具是不夠的
自動機器學習平臺雖然有著很光明的未來,但其覆蓋面現(xiàn)階段還相當有限,同時關于自動機器學習能否很快取代數(shù)據(jù)科學家的說法也有爭論。
如果想要在公司成功部署自動機器學習,自助機器學習工具確實是至關重要的,但過程、方法和策略也必須重視。自助機器學習平臺只是工具,大多數(shù)機器學習專家認為這是不夠的。
4.分解機器學習過程
任何機器學習進程都從數(shù)據(jù)開始。我們普遍認為,數(shù)據(jù)準備是機器學習過程中最重要的環(huán)節(jié),建模部分只是整個數(shù)據(jù)管道的一部分,同時通過自助機器學習工具得到簡化。完整的工作流仍需要大量的工作來轉換數(shù)據(jù)并將其提供給模型。數(shù)據(jù)準備和數(shù)據(jù)轉換可謂工作中最耗時、最令人不愉快的部分。
另外,用于訓練機器學習模型的業(yè)務數(shù)據(jù)也會定期更新。因此,它要求企業(yè)構建能夠掌握復雜的工具和流程的復雜ETL管道,因此確保機器學習流程的連續(xù)和實時性也是一項具有挑戰(zhàn)性的任務。
5.將機器學習與應用程序集成
假設現(xiàn)在我們已經構建了機器學習模型,然后需要將其部署。經典的部署方法將其視為應用層組件,如下圖所示:
它的輸入是數(shù)據(jù),輸出是我們得到的預測。通過集成這些應用程序的API來運用機器學習模型的輸出。僅從開發(fā)者的角度來看,這一切似乎很容易,但在考慮流程時就不是那么回事了。在一個龐大的組織中,與業(yè)務應用程序的任何集成和維護都相當麻煩。即使公司精通技術,任何代碼更改請求都必須通過多級部門的特定審查和測試流程。這會對靈活性產生負面影響,并增加整個工作流的復雜性。
如果在測試各種概念和想法方面有足夠的靈活性,那么基于機器學習的決策就會容易得多,因此我們會更喜歡具有自助服務功能的產品。
6.自助機器學習/智能數(shù)據(jù)庫?
正如我們上面看到的,數(shù)據(jù)是機器學習進程的核心,現(xiàn)有的機器學習工具獲取數(shù)據(jù)并返回預測結果,而這些預測也是數(shù)據(jù)的形式。
現(xiàn)在問題來了:
為什么我們要把機器學習作為一個獨立的應用程序,并在機器學習模型、應用程序和數(shù)據(jù)庫之間實現(xiàn)復雜的集成呢?
為什么不讓機器學習成為數(shù)據(jù)庫的核心功能呢?
為什么不讓機器學習模型通過標準的數(shù)據(jù)庫語法(如SQL)可用呢?
讓我們分析上述問題及其面臨的挑戰(zhàn),來找到機器學習解決方案。
挑戰(zhàn)#1:復雜的數(shù)據(jù)集成和ETL管道
維護機器學習模型和數(shù)據(jù)庫之間的復雜數(shù)據(jù)集成和ETL管道,是機器學習流程面臨的最大挑戰(zhàn)之一。
SQL是極佳的數(shù)據(jù)操作工具,所以我們能通過將機器學習模型引入數(shù)據(jù)層來解決這個問題。換句話說,機器學習模型將在數(shù)據(jù)庫中學習并返回預測。
挑戰(zhàn)#2:機器學習模型與應用程序的集成
通過API將機器學習模型與業(yè)務應用程序集成是面臨的另一個挑戰(zhàn)。
業(yè)務應用程序和BI工具與數(shù)據(jù)庫緊密耦合。因此,如果自助機器學習工具成為數(shù)據(jù)庫的一部分,我們就能用標準SQL語法進行預測。接下來,機器學習模型和業(yè)務應用程序之間不再需要API集成,因為模型駐留在數(shù)據(jù)庫中。
解決方案:在數(shù)據(jù)庫中嵌入自助機器學習
在數(shù)據(jù)庫中嵌入自助機器學習工具會帶來很多好處,比如:
任何運用數(shù)據(jù)并了解SQL的人(數(shù)據(jù)分析師或數(shù)據(jù)科學家)都能利用機器學習的力量。
軟件開發(fā)人員能更有效地將機器學習嵌入到業(yè)務工具和應用程序中。
數(shù)據(jù)和模型之間以及模型和業(yè)務應用程序之間不需要復雜的集成。
這樣一來,上述相對復雜的集成圖表變更如下:
它看起來更簡單,也使機器學習過程更流暢高效。
7.如何實現(xiàn)自助式機器學習將模型作為虛擬數(shù)據(jù)庫表
找到解決方案的下一步是來實施它。
為此,我們運用了一個叫做AI Tables的結構。它以虛擬表的形式將機器學習引入數(shù)據(jù)平臺。它能像其他數(shù)據(jù)庫表一樣創(chuàng)建,然后向應用程序、BI工具和DB客戶端開放。我們通過簡單地查詢數(shù)據(jù)來進行預測。
AI Tables最初由MindsDB開發(fā),能作為開源或托管云服務運用。他們集成了傳統(tǒng)的SQL和NoSQL數(shù)據(jù)庫,如Kafka和Redis。
8.運用AI Tables
AI Tables的概念使我們能夠在數(shù)據(jù)庫中執(zhí)行機器學習過程,這樣機器學習過程的所有步驟(即數(shù)據(jù)準備、模型訓練和預測)都能通過數(shù)據(jù)庫進行。
訓練AI Tables
首先,用戶要根據(jù)自己的需求創(chuàng)建一個AI Table,它類似于一個機器學習模型,包含了與源表的列等價的特征;然后通過自助機器學習引擎自助完成剩余的建模任務。后文還將舉例說明。
做預測
一旦創(chuàng)建了AI Table,它不需要任何進一步的部署就能用了。要進行預測,只需要在AI Table上運行一個標準SQL查詢。
你能逐個或分批地進行預測。AI Tables能處理很多復雜的機器學習任務,如多元時間序列、檢測異常等。
9.AI Tables工作示例
對于零售商來說,在適當?shù)臅r間保證產品都有適當?shù)膸齑媸且豁棌碗s的任務。當需求增長時,供給隨之增加。基于這些數(shù)據(jù)和機器學習,我們能預測給定的產品在給定的日期應該有多少庫存,來為零售商帶來更多收益。
首先你需要跟蹤以下信息,建立一張AI Table:
產品售出日期(date_of_sale)
產品售出店鋪(shop)
具體售出產品(product_code)
產品售出數(shù)量(amount)
如下圖所示:
(1)訓練AI Tables
要創(chuàng)建和訓練AI Tables,你首先要允許MindsDB訪問數(shù)據(jù)。詳細說明可參考MindsDB文檔( MindsDB documentation)。
AI Tables就像機器學習模型,需要運用歷史數(shù)據(jù)來訓練它們。
下面運用一個簡單的SQL命令,訓練一個AITable:
讓我們分析這個查詢:
運用MindsDB中的CREATE PREDICTOR語句。
根據(jù)歷史數(shù)據(jù)定義源數(shù)據(jù)庫。
根據(jù)歷史數(shù)據(jù)表(historical_table)訓練AI Table,所選列(column_1和column_2)是用來進行預測的特征。
自助機器學習自動完成剩下的建模任務。
MindsDB會識別每一列的數(shù)據(jù)類型,對其進行歸一化和編碼,并構建和訓練機器學習模型。
同時,你能看到每個預測的總體準確率和置信度,并估計哪些列(特征)對結果更重要。
在數(shù)據(jù)庫中,我們經常需要處理涉及高基數(shù)的多元時間序列數(shù)據(jù)的任務。如果運用傳統(tǒng)的方法,需要相當大的力氣來創(chuàng)建這樣的機器學習模型。我們需要對數(shù)據(jù)進行分組,并根據(jù)給定的時間、日期或時間戳數(shù)據(jù)字段對其進行排序。
例如,我們預測五金店賣出的錘子數(shù)量。那么,數(shù)據(jù)按商店和產品分組,并對每個不同的商店和產品組合作出預測。這就給我們帶來了為每個組創(chuàng)建時間序列模型的問題。
這聽起來工程浩大,但MindsDB提供了運用GROUP BY語句創(chuàng)建單個機器學習模型,來一次性訓練多元時間序列數(shù)據(jù)的方法。讓我們看看僅運用一個SQL命令是如何完成的:
創(chuàng)建的stock_forecaster預測器能預測某個特定商店未來將銷售多少商品。數(shù)據(jù)按銷售日期排序,并按商店分組。所以我們能為每個商店預測銷售金額。
(2)批量預測
通過運用下面的查詢將銷售數(shù)據(jù)表與預測器連接起來,JOIN操作將預測的數(shù)量添加到記錄中,因此我們能一次性獲得很多記錄的批量預測。
如想了解更多關于在BI工具中分析和可視化預測的知識,請查看這篇文章。
(3)實際運用
傳統(tǒng)方法將機器學習模型視為獨立的應用程序,需要維護到數(shù)據(jù)庫的ETL管道和到業(yè)務應用程序的API集成。自助機器學習工具盡管使建模部分變得輕松而直接,但完整的機器學習工作流也仍然需要經驗豐富的專家管理。其實數(shù)據(jù)庫已經是數(shù)據(jù)準備的優(yōu)選工具,因此將機器學習引入到數(shù)據(jù)庫而非將數(shù)據(jù)引入機器學習中是更有意義的。由于自助機器學習工具駐留在數(shù)據(jù)庫中,來自MindsDB的AI Tables構造能夠為數(shù)據(jù)從業(yè)者提供自助自助機器學習并讓機器學習工作流得以簡化。