Machine Learning最小可迭代產(chǎn)品No.75

報告各位首長,我參與的第二個項目順利上線啦~ 棒棒绊茧,又一次感覺自己做的東西是有價值的铝宵,這個項目是一個平臺類產(chǎn)品,專注于提高線下零售的實施效率华畏,希望后面的迭代會越來越好捉超。但是這個今天跟主題沒什么毛關(guān)系,今天要跟大家聊聊最近的一點小思考唯绍,關(guān)于Machine Learning 的最小化可行產(chǎn)品的設計,以及平臺化設計枝誊,應該是怎么樣的况芒。

我在公眾號后臺看到好多讀者大大都留言了 “MVP” 來獲取之前做的PPT了,但也很多大大希望我能好好講講這個PPT的內(nèi)容叶撒,以及背后設計的思想是怎樣的绝骚,今天終于有空跟大家細細捯飭捯飭。

什么叫MVP祠够?MVP(minimum viable product压汪,最小化可行產(chǎn)品)概念最早由埃里克·萊斯提出的。MVP的目的——更快的接觸客戶古瓤。按照常規(guī)的開發(fā)方式止剖,從調(diào)研、到設計落君、到開發(fā)再到推向市場穿香,會是一個漫長的過程,而且很難有人會保證成功率绎速。但當換一種方式皮获,以MVP進行小樣調(diào)研,快速進入市場纹冤、接觸客戶并得到反饋洒宝。透過反饋不斷修改原型购公,并進行不斷地的迭代開發(fā),極大減少了試錯成本雁歌。

那么問題來了宏浩,一個機器學習的 MVP 最小可行化產(chǎn)品,應該是怎樣的将宪?可以分兩個方面來看绘闷,一是技術(shù)的選型,二是產(chǎn)品的實施流程较坛。

關(guān)于技術(shù)的選型

機器學習其實是一門有非常多年歷史的學科印蔗,各種算法你可以手寫,現(xiàn)在市面上出現(xiàn)的層出不窮的機器學習框架也很多丑勤,在做 MVP 的時候要怎么去做決策华嘹?是自己寫一套框架以有利于自己對業(yè)務實施細節(jié)的把控?還是使用現(xiàn)有的框架法竞,去踩它們所擁有的坑耙厚?設計產(chǎn)品的實施流程的時候,應該怎么權(quán)衡岔霸,是按照常規(guī)的開發(fā)方式薛躬,從調(diào)研、到設計呆细、到開發(fā)再到推向市場型宝,一切都要 100% ready 再上線,還是有一個不是非常完美但是可控可迭代的產(chǎn)品流程作為快速接觸用戶絮爷,快速進行試錯的基礎趴酣?都需要決策者去細細抉擇。

在我看來坑夯,要做好 Machine Learning 的產(chǎn)品岖寞,當然可以自己去實現(xiàn)一套基礎可用的算法,這也并不是什么特別難的事情柜蜈。但我的建議是仗谆,在初期階段,抱現(xiàn)有技術(shù)的大腿淑履,能抱大腿就抱大腿胸私。為什么呢?因為現(xiàn)在機器學習庫比如 scikit-learn鳖谈、svmlib岁疼、xgboost、Tensorflow、Spark MLlib 這些現(xiàn)成的庫捷绒,能幫助我們快速試驗我們的想法瑰排,并且快速上手,這些庫幫我們實現(xiàn)了數(shù)據(jù)預處理暖侨,異常處理椭住,性能優(yōu)化等很多方面的問題,所以即使你們團隊有能力自己實現(xiàn)一套框架字逗,在初期驗證階段我還是建議直接抱現(xiàn)成技術(shù)的大腿【┲#現(xiàn)在也有很多 Java 實現(xiàn)的機器學習,我的唯一建議就是不要用葫掉,目前的業(yè)態(tài)我沒看到任何關(guān)于 Java 寫機器學習框架的潮流些举,基本都還是基于 Python 的。

Snip20171223_1.png

我簡單解釋一下這套框架俭厚。數(shù)據(jù)倉庫是基礎户魏,如果你連一點數(shù)據(jù)積累都沒有那其實可以先不考慮機器學習,從數(shù)據(jù)倉庫中可以使用一些規(guī)則引擎產(chǎn)生中 Low Leve 的特征挪挤。也可以使用 SparkStreaming 或者機器學習平臺進行準實時或?qū)崟r地計算一些 High Level 的特征(這里的 High 和 Low 指的是特征的抽象程度叼丑,并不是實用性或者效果)。

有了特征庫扛门,就可以基于這個特征庫鸠信,使用scikit-learn、 xgboost论寨、Tensorflow星立、Spark MLlib 等框架進行模型訓練并把模型保存下來。然后再使用 SparkStreaming政基、django 或者 redis 對外提供服務。這套簡簡單單的架構(gòu)有什么好處闹啦?最大的好處就是這套框架實現(xiàn)了最基礎的數(shù)據(jù)處理沮明、模型訓練以及服務提供的能力,完美滿足機器學習所需要的方方面面窍奋,在我看來是一個基礎可用的框架荐健。拆箱即用,老少咸宜琳袄,誰用誰知道江场。

關(guān)于產(chǎn)品的實施流程

最小可行化產(chǎn)品的要點,對小規(guī)模窖逗、有質(zhì)量址否、已標注的數(shù)據(jù)進行訓練。為什么呢碎紊?從經(jīng)驗上來看佑附,數(shù)據(jù)量并不是越多越好樊诺,特征也不是越多越好,一個數(shù)據(jù)集即使只有幾萬條數(shù)據(jù)音同,但是質(zhì)量很高词爬,標注度也很好,其實更適合于產(chǎn)品初次實施的試驗权均。原因有兩點顿膨,一是訓練時間不長,可以多嘗試尋找最優(yōu)模型叽赊。二是質(zhì)量高恋沃、已標注的的數(shù)據(jù)最終表現(xiàn)效果一般會比質(zhì)量低或者無標注要好很多。

根據(jù)很多資料蛇尚,總結(jié)的一個比較可行的流程如下芽唇。

Snip20171223_2.png

MVP 最重要的速度就是快速落地,而上面這個流程可以幫助我們進行快速的落地和快速的迭代取劫。

○ 明確需求:明確本次機器學習產(chǎn)品的需求匆笤,是對點擊率進行預測,還是對客戶留存率進行預測谱邪,這個要預先明確下來炮捧,這是最最重要的第一步。但是這個階段要細化到可實際操作的需求惦银,有的需求很粗可能工程師無法細化咆课,也無法拆分,更無法量化扯俱。比如需求就是提高客戶體驗书蚪,完全沒有可量化的東西,要更加細化迅栅,明確什么樣才算提高客戶體驗殊校。

○ 特征量化:需求明確下來了,要對可能影響需求的特征或者屬性進行量化读存,這個步驟也很重要为流。比如說影響客戶留存率的可能有距離上次登錄時間,這是一個無法量化的東西让簿。我們可以量化成敬察,近兩天是否登錄,近一周是否登錄尔当,近一個月是否登錄莲祸,這樣量化的東西。

○ 目標量化:跟特征量化思路一樣。

○ 特征清洗:對已經(jīng)量化的特征進行清洗虫给,比如去除無效字段藤抡,對特征進行離散化等特征工程的東西。也包括使用一些基礎的模型比如線性回歸抹估,xgboost等模型進行特征重要度的篩選缠黍,作為一個 pipline ,最終得到模型可用的數(shù)據(jù)集药蜻。

○ 模型選型:進行模型的選擇瓷式,比如連續(xù)型目標變量可以拍腦袋用線性回歸,離散型目標變量可以拍腦袋用 Logistic 回歸语泽,用 GBDT 或者 xgboost 也是一個很好的選擇贸典,總之就是不斷嘗試,選一個比較合適的模型踱卵。

○ 模型訓練:選好模型之后就針對數(shù)據(jù)進行訓練廊驼,看看效果怎么樣,效果不好就回到特征或者模型選型重新再來一次惋砂。

○ 線下驗證:訓練好模型之后妒挎,在線下對生產(chǎn)環(huán)境產(chǎn)生的新數(shù)據(jù)進行驗證,看看是不是跟訓練效果差不多西饵,看看是差之毫厘酝掩,還是謬之千里。

○ 模型上線:效果還過得去眷柔,就將模型部署上線期虾,是騾子是馬拉出來跑跑看,最好一開始引入比較小的流量驯嘱。

○ 特征清洗:一般來說镶苞,線下做了怎樣的數(shù)據(jù)清洗,線上也要做同樣的數(shù)據(jù)清洗鞠评。

○ 模型預測:使用訓練好的模型對線上數(shù)據(jù)進行預測茂蚓。

○ 結(jié)果應用:將模型預測的結(jié)果進行應用到規(guī)則引擎進行評分或者拒絕等。

○ 運行監(jiān)控:對模型產(chǎn)生的數(shù)據(jù)進行監(jiān)控谢澈,看看是否有異常煌贴。并對應用模型的前后進行比較御板,評估是否停用模型锥忿。并加入到下一次的迭代需求中。

至此怠肋,一個完整的機器學習產(chǎn)品流程已經(jīng)形成了一個閉環(huán)敬鬓,參照這個流程可以比較快速地進行機器學習產(chǎn)品的落地。下面我舉個比較簡單的栗子來闡述上線這個流程,假如我們要上線一個模型钉答,主要做貸款產(chǎn)品的客戶動用率預測础芍,以此來給銷售人員給客戶介紹產(chǎn)品的時候?qū)τ诮佑|頻率和接觸深度的把控提供數(shù)據(jù)上的支持,流程是長下面這樣的数尿。

  1. 與業(yè)務同事討論本次需求的目標是什么,這里來說就是動用率預測仑性。
  2. 選出可能有影響的特征,比如年齡右蹦、性別诊杆、近三個月是否動用等。
  3. 選擇是否動用作為目標何陆,動用為1晨汹,未動用為0。
  4. 對樣本進行篩選贷盲,缺失值補全淘这,并利用先驗知識去掉明顯不符合常理的數(shù)據(jù)
  5. 直接丟個邏輯回歸」剩看訓練集和測試集铝穷,討論出一個精準度即可。
  6. 丟上線去跑跑看球及,看看結(jié)果如何氧骤,暫時不接入關(guān)鍵流程中即可。

一切盡在掌握中吃引,總結(jié)一下今天的內(nèi)容筹陵。

  1. MVP的目的是更快的接觸客戶。
  2. 盡量使用現(xiàn)成的 Python 或者 Spark 框架镊尺。
  3. 用比較輕量的流程進行機器學習產(chǎn)品開發(fā)朦佩。
  4. 應用到生產(chǎn)上,快速迭代庐氮。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末语稠,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子弄砍,更是在濱河造成了極大的恐慌仙畦,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件音婶,死亡現(xiàn)場離奇詭異慨畸,居然都是意外死亡,警方通過查閱死者的電腦和手機衣式,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進店門寸士,熙熙樓的掌柜王于貴愁眉苦臉地迎上來檐什,“玉大人,你說我怎么就攤上這事弱卡∧苏” “怎么了?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵婶博,是天一觀的道長瓮具。 經(jīng)常有香客問我,道長凡人,這世上最難降的妖魔是什么搭综? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮划栓,結(jié)果婚禮上兑巾,老公的妹妹穿的比我還像新娘。我一直安慰自己忠荞,他們只是感情好蒋歌,可當我...
    茶點故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著委煤,像睡著了一般堂油。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上碧绞,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天府框,我揣著相機與錄音,去河邊找鬼讥邻。 笑死迫靖,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的兴使。 我是一名探鬼主播系宜,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼发魄!你這毒婦竟也來了盹牧?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤励幼,失蹤者是張志新(化名)和其女友劉穎汰寓,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體苹粟,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡有滑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了六水。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片俺孙。...
    茶點故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖掷贾,靈堂內(nèi)的尸體忽然破棺而出睛榄,到底是詐尸還是另有隱情,我是刑警寧澤想帅,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布场靴,位于F島的核電站,受9級特大地震影響港准,放射性物質(zhì)發(fā)生泄漏旨剥。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一浅缸、第九天 我趴在偏房一處隱蔽的房頂上張望轨帜。 院中可真熱鬧,春花似錦衩椒、人聲如沸蚌父。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽苟弛。三九已至,卻和暖如春阁将,著一層夾襖步出監(jiān)牢的瞬間膏秫,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工做盅, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留缤削,地道東北人。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓吹榴,卻偏偏與公主長得像僻他,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子腊尚,可洞房花燭夜當晚...
    茶點故事閱讀 44,611評論 2 353

推薦閱讀更多精彩內(nèi)容