如果說去年“機器換人”的輿論來自車間的機器人手,那今年在全球范圍內揮舞起“自動化”大棒的,就成了機器學習。上月,李飛飛發布面向商業公司的機器學習庫AutoML,技術門檻之低,讓不少工程師擔憂不已。一波未平,8月月初,美國德州農工大學開源Auto Keras,同樣的功能,但是完全免費。而今天,軟件巨頭Salesforce也入場了,他們帶來的TransmogrifAI,才可能是真正的AutoML“殺手”。
以下內容來自Salesforce Einstein數據科學高級總監Shubha Nabar:
在過去十年中,盡管機器學習取得了巨大進步,但構建可用的機器學習系統卻依然是件難事。三年前,當我們著手把機器學習功能部署到Salesforce平臺時,大家才發現,原來構建企業級機器學習系統更加困難。為了解決這個問題,我們開發了TransmogrifAI(發音為trans-mog-ri-phi)——一種用于處理結構化數據的端到端自動化機器學習庫,它也是現在Einstein平臺優化功能的一個工具。
今天,我們把這個項目分享給開源社區。未來,數據科學家和開發人員可以用它快速大規模地構建機器學習解決方案。
TransmogrifAI GitHub:github.com/salesforce/TransmogrifAI
當數據科學家在為商業產品構建機器學習功能時,他們通常會關注易于理解的樣本和數據集。相比之下,企業擁有的數據和樣本是多樣化的,這種多樣性使構建企業級機器學習系統成了一項挑戰。在Salesforce,我們的客戶可能希望預測一系列結果——從客戶流失、銷售預測、潛在用戶轉化,到數字廣告點擊、網購、報價接受、設備故障和延遲付款等,
對于企業客戶來說,他們的數據是保密的、不可共享的,這兩點至關重要。這意味著我們必須針對客戶,用給定的數據樣本構建機器學習模型。同時,構建全局模型絕對沒有意義,因為每個企業都獨立無二,他們有不同的商業模式,也有各自的經營規模和業務渠道,用機器學習的術語講,就是有不同的偏差。
為了讓機器學習真正為客戶服務,我們要做的就是構建和部署上千個用不同數據樣本訓練得到的個性化機器學習模型!而如果不想聘請大批數據科學家,實現這一目標的唯一方法就是自動化。
TransmogrifAI工作流程
通常情況下,如果要構建性能良好的機器學習模型,它需要的研究量和開發量是相當可觀的。數據準備、特征工程、模型訓練……這些繁瑣過程需要不斷迭代,為了得到成熟的模型,數據科學家們可能要耗費數周乃至數月的時間。
TransmogrifAI是一個基于Scala和SparkML構建的庫,它能承擔這個過程中的部分工作。只需幾行代碼,數據科學家就可以自動完成數據清理、特征工程和模型選擇,然后訓練出一個高性能模型,進行進一步探索和迭代。
它封裝了機器學習過程的五個主要步驟:
特征推斷(Feature Inference)
數據是所有機器學習管道的第一步。數據科學家先收集所有相關數據,再進行整平操作,添加、聚合不同數據源,從中提取可能有助于預測的原始信號。這之后,提取得到的信號會被放進靈活的數據結構中,也就是DataFrame,方便后續操作。雖然這些數據結構簡單且易于操作,但其中還是存在一些錯誤,可能會對下游造成影響,比如存在類型錯誤和空值錯誤。
TransmogrifAI可以幫助解決這類問題。它允許用戶為其數據指定類型,自動把原始預測變量和響應信號提取為“特征”。除了原始類型,TransmogrifAI的支持面更豐富、更細化,地理位置、電話號碼、郵政編碼……凡是數據科學家可能頻繁遇到的,它都能進行區分。
事實上,即便用戶沒有指定,TransmogrifAI也可以自行推斷。例如,當它檢測到數據中的文本特征其實是分類特征時,它會記錄這個錯誤并進行適當處理。不用等到運行時再報錯,數據科學家在編譯時就能找出大多數錯誤。
自動化特征工程(Transmogrification)
雖然找到正確的類型有助于數據推理和減少對下游的不良影響,但最終所有特征都是要被轉換成數字表示的。只有這樣,機器學習算法才能尋找并利用其中的規律。這個過程被稱為特征工程。
舉個例子,我們該怎么把美國的各個州(如CA, NY, TX等)轉成數字?一種方法是把每個州映射為1到50之間的數字,因為美國一共有50個州。但這種編碼方法的缺點在于沒有保留州與州之間地理位置上的關系。那么如果我們計算州中心點到美國中心點的距離,并以此為編碼依據呢?這確實可以解決之前提到的問題,但它同樣無法反映東西南北位置。
所以特征工程的方法有無數種,但是找出正確的一種十分不容易。
TransmogrifAI可以幫數據科學家自動化這個惱人的過程。它為自己支持的所有特征類型提供了無數種編碼技術,能做到不僅把數據轉成算法可用的格式,還能優化轉換,使機器學習算法更容易從數據中學習。例如,同樣是年齡數字特征,它能根據特定問題(時尚行業、金融理財)把它們轉成最合適的年齡段。
盡管TransmogrifAI已經具備了上述強大能力,但考慮到特征工程是一場無窮無盡的“博弈”,它也支持用戶自定義和擴展默認值。
自動化特征驗證(Feature Validation)
特征工程可能導致數據維度出現爆炸性增長,而高維數據往往會讓模型出現差錯!其中最典型的是模型過擬合,另一個容易被忽視但影響巨大的問題是數據泄露。
假設我們手頭有一個包含交易信息的數據集,任務是預測最終的交易金額,而數據集上一個條目叫“已結算交易金額”,這是完成交易后才能統計到的信息。如果我們不慎把這個信息也放進訓練集里,模型就會發現它的“可參考性”極強,最后成為一個測試時精度極高,實踐時一無所用的廢品。
事實上,在Salesforce業務中,這種后見之明的偏見尤其成問題,因為大部分客戶的數據很復雜,平時也是自動填充的,這使得數據科學家很容易混淆因果關系。
TransgmogrifAI包含執行自動特征驗證的算法,可以刪除幾乎沒有預測能力的特征——隨著時間的推移而使用的特征,表現出零方差的特征,或者在訓練樣本中的分布與預測時的分布存在顯著不同的特征。在處理含有偏差的高維數據時,這些算法會用一系列基于特征類型的統計測試,結合特征譜系來檢測和排除偏差。
自動化模型選擇(Model Selection)
完成所有關于數據預處理的工作后,數據科學家就該把機器學習算法應用于準備好的數據以構建預測模型。如果是手動完成,他們往往需要嘗試許多不同的算法,并找到合適的參數設置。這是個耗時的工程。
TransmogrifAI的模型選擇器可以在數據上運行多種算法,并比較它們的平均驗證錯誤,從中挑出最佳算法。除此之外,它還能通過適當地對數據進行采樣并重新校準預測以匹配真實的先驗,自動處理不平衡數據的問題,進一步提高模型性能。
超參數優化(Hyperparameter Optimization)
上述自動化步驟的基礎都涉及超參數優化,它幾乎無處不在。而就是這么一個耗時久、任務量重、讓數據科學家望而生畏的操作,它背后的技術原理卻不難,可以直接看成一個高性能模型和一個隨機數生成器模型。這個任務,TransmogrifAI可以代勞。、
賦予每個人使用ML技術的權利
總的來看,現在TransmogrifAI在Salesforce內部已經成功把訓練模型所需的總時間從幾周、幾個月縮短到了幾個小時。而封裝所有這些復雜操作的代碼卻非常簡單,只需短短幾行就能搞定:
// 讀取交易數據
val dealData = DataReaders.Simple.csvCase[Deal](path = pathToData).readDataset().toDF()
// 提取原始信號,預測特征
val (isClosed, predictors) = FeatureBuilder.fromDataFrame[RealNN](dealData, response = "isClosed")
// 自動化特征工程
val featureVector = predictors.transmogrify()
// 自動化特征驗證
val cleanFeatures = survived.sanityCheck(featureVector, removeBadFeatures = true)
// 自動化模型選擇
val (pred, raw, prob) = BinaryClassificationModelSelector().setInput(isClosed, cleanFeatures).getOutput()
// 設置工作流程,訓練模型
val model = newOpWorkflow().setInputDataset(dealData).setResultFeatures(pred).train()
這意味著TransmogrifAI已經成為一個變革。
在我們眼里,這種自動化水平的工具對開發面向企業的機器學習系統至關重要,因此我們也相信,隨著機器學習在各行各業的應用場景不斷拓寬,對運營方式產生巨大影響,未來企業對機器學習系統的需求會不斷增大,而那時,TransmogrifAI這樣的自動化機器學習庫可以幫助他們實現目標,實現轉變。
-
AI
+關注
關注
87文章
31155瀏覽量
269500 -
機器學習
+關注
關注
66文章
8425瀏覽量
132776
原文標題:又一個AutoML庫:Salesforce開源TransmogrifAI
文章出處:【微信號:jqr_AI,微信公眾號:論智】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論