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