以挑西瓜為例,聊一聊如何用機器學(xué)習(xí)解決實際業(yè)務(wù)
想用機器學(xué)習(xí)提升業(yè)務(wù)價值,在搭建平臺、處理數(shù)據(jù)、訓(xùn)練算法之前,真正要做的第一步應(yīng)該是什么?
本文會從幾個方面分析這個問題:
這就是今天要介紹的,機器學(xué)習(xí)的MVP。
機器學(xué)習(xí)的最小可用產(chǎn)品
現(xiàn)在的互聯(lián)網(wǎng)技術(shù),接受的一個概念是最小可用產(chǎn)品,MVP,就是開發(fā)團隊、設(shè)計團隊用最小的成本代價,最大程度去驗證產(chǎn)品的可行性。這個產(chǎn)品的可行性,是指這個需求是否真實存在,一個產(chǎn)品滿足需求的方式是不是對的。
機器學(xué)習(xí)也是一樣的,我們做機器學(xué)習(xí)的投入是長期的、持續(xù)的,帶來的收入和回報也是巨大的,在開始之前,我們一定會希望以比較低的成本知道:現(xiàn)在引入機器學(xué)習(xí)是否可以影響我們所面對的業(yè)務(wù),產(chǎn)生價值的潛力有多大。
那么把一個業(yè)務(wù)真正用機器學(xué)習(xí)做之前,我們可以用兩步,做一個機器學(xué)習(xí)的 MVP:
首先我們看看機器學(xué)習(xí)擅長解決什么問題。我舉一個例子,就是周志華老師的西瓜書講的例子,它很經(jīng)典,也很簡單,還很深刻,這個問題是說我要判斷一個西瓜是好的還是不好的。
這個問題的業(yè)務(wù)場景是什么呢,一個西瓜,我怎么在不交易、不打開的情況下,就知道它是好的還是不好的。如果我知道,我就可以用同樣的價錢買到更好的西瓜;而如果我是瓜商,有了一套標(biāo)準(zhǔn)之后,我就可以更好的管理我的貨品。
回到這個問題,一個西瓜是好的還是不好的,這是典型的機器學(xué)習(xí)二分類問題。首先我們要找到,判斷這個西瓜好不好有哪些可以用到的數(shù)據(jù)。我們不能把買賣西瓜之后的數(shù)據(jù)放進去分析,比如買了西瓜之后,我打開就知道好不好了,那么這個就沒有價值。
所以我必須在不破壞西瓜的前提下,這時候能用到的數(shù)據(jù)是西瓜的產(chǎn)地、西瓜的紋路、重量、比重、敲擊西瓜的聲音是渾濁還是清脆、西瓜皮的質(zhì)感等等,這些不打開西瓜的情況就知道的數(shù)據(jù)。
剛剛我們的目標(biāo)已經(jīng)講得很清楚了,好的還是不好的,好的是 1,不好的是 0,甚至我還可以定義一個評分,0 到 1 之間的一個數(shù),但總體而言我可以設(shè)定一個機器學(xué)習(xí)的目標(biāo),我們稱之為 Label。
選擇正確的問題:真實世界模型
這看起來是一個很簡單的場景,好像一旦我們具備了這樣的數(shù)據(jù),就可以嘗試建立機器學(xué)習(xí)模型了。然而在現(xiàn)實中,當(dāng)我們想用機器學(xué)習(xí)來解決實際問題時,也會這么簡單么?真實世界中往往是有很多陷阱的。這些陷阱可能有什么呢?
選擇正確的問題:業(yè)務(wù)問題的本來面貌
我們從西瓜還原到業(yè)務(wù),任何一個業(yè)務(wù)能不能做機器學(xué)習(xí),我們要看三個要素。
第一,這個業(yè)務(wù)的目標(biāo)值是什么,它不一定是唯一的,但一定有主次。這個目標(biāo)是否可以量化、收集反饋、客觀觀測的。什么叫客觀觀測,我說甜和你說甜,這個事情就可能不客觀,那有沒有一個客觀的東西可以反饋。
第二,樣本應(yīng)該如何構(gòu)造,樣本不應(yīng)該違反因果關(guān)系,y=f(x),x一定是我們業(yè)務(wù)場景中所能知道的信息。在西瓜的問題,就是打開西瓜之前我們能知道的信息,才可以作為x。同時,樣本應(yīng)該符合業(yè)務(wù)場景的真實情況,假設(shè)我們的業(yè)務(wù)是摸黑挑西瓜,我們看不見西瓜長什么樣,我們只能敲,那西瓜的顏色就不能作為特征。
第三,樣本的每一行代表什么意思,每一行應(yīng)該代表西瓜的每次測量,然后才是選擇哪些數(shù)據(jù)作為x,這些我們已經(jīng)講得很清楚。
當(dāng)西瓜的問題說完后,我們來看看真實的業(yè)務(wù)問題是怎樣的。
1.點擊率預(yù)估
比如說我們看到的推薦系統(tǒng)問題——點擊率預(yù)估。
一個推薦系統(tǒng)的目標(biāo)是什么?它的終極目標(biāo)一定是用戶體驗,但這個目標(biāo)很虛幻,我們要把它量化,變成一系列可以測量的數(shù)據(jù),比如說點擊、觀看時長、購買、好評等,這些就是y。
這里我們可以思考一個有趣的問題,當(dāng)我們思考不同的特征對問題的影響時,比如說我們把展現(xiàn)作為一個樣本,一個避免不了的問題是,我怎么知道這個內(nèi)容是否被用戶看到。
一種做法是我不去想這件事情,那么模型可能就是有偏的,比如說你認(rèn)為這個樣本沒有被點擊,但也有可能是沒有被看到,但最理想的是把推薦到用戶手機屏幕上的作為一條樣本。
退一步,還有一個辦法,就是把展現(xiàn)的位置補充回來,作為一個特征。然后請求的時候雖然沒有這個特征,但是這個特征吸收了位置對于展現(xiàn)和反饋的偏差。
2.簡歷匹配
所以這就變成了多點、雙向的問題,在這樣的情況下,就需要對問題進行拆解。我們可以不直接做個人被企業(yè)招聘的事情,而是分開來做,比如說企業(yè)會不會邀請這個人去面試,以及這個人會不會接受企業(yè)的面試邀請,這樣就能把問題做的更好。
解決正確的問題:小結(jié)
總結(jié)一下我們剛剛所介紹的MVP第一步:做機器學(xué)習(xí),首先不是著急去建機器學(xué)習(xí)的模型,而是認(rèn)真思考這件事情的業(yè)務(wù)場景到底是怎么樣的。
總結(jié)下來一個機器學(xué)習(xí)能解決的業(yè)務(wù)問題,有這么幾個點:
第一它是否能轉(zhuǎn)化成分類/回歸的問題
第二目標(biāo)是否是容易獲取、客觀無偏差的數(shù)據(jù)。
第三是問題的預(yù)測目標(biāo),因果關(guān)系是什么,因果關(guān)系越簡單越好,如果是多因多果,或者說描述“因”的相關(guān)信息不方便獲取,那是否可以拆分成多個模型。特征往往是因的數(shù)據(jù),或者是一些不是直接原因的數(shù)據(jù),只要它不破壞這個因果關(guān)系。
第四是我們剛剛沒具體去描述的, 就是這個問題是不是一個真的業(yè)務(wù)需求。
一個真的業(yè)務(wù)需求是指,在我們用機器學(xué)習(xí)做出預(yù)測后,業(yè)務(wù)能否可以根據(jù)這個預(yù)測結(jié)果而受到影響?這個影響點是否足夠清晰、有效?因為業(yè)務(wù)人員會用對業(yè)務(wù)影響的結(jié)果來評估我們項目的效果,如果我們預(yù)測的結(jié)果并沒有有效影響業(yè)務(wù),即使這個模型再好,也不會發(fā)揮作用。
比如說推薦系統(tǒng),我預(yù)測了新的點擊率后,可以按照點擊率倒排來影響業(yè)務(wù)結(jié)果。但如果是游戲呢?如果我們預(yù)測這個人明天有30%的幾率付費,我該如何影響到他,我能不能影響他?
所以你一定要思考,你的預(yù)測結(jié)果會怎么在業(yè)務(wù)中使用,這個使用會不會對業(yè)務(wù)產(chǎn)生提升。如果你發(fā)現(xiàn)提升本身是很難的,那這本身就是個偽需求。然后你還需要思考,現(xiàn)在沒有用機器學(xué)習(xí)的業(yè)務(wù),它是用了什么方法和數(shù)據(jù),現(xiàn)在的方法和數(shù)據(jù)有什么缺陷,哪些是機器學(xué)習(xí)可以幫到的。
當(dāng)以上的問題都有清晰的回答后,這時候你就可以提出一個好的問題了。這時候你就成功 80% 了,而剩下的問題都相對簡單了。
機器學(xué)習(xí)的投入
這就是我們MVP的第二步:在可控的人力、金錢投入下,構(gòu)建一個有效的機器學(xué)習(xí)模型。
那什么是可控呢?1-3人月的投入,更多就會風(fēng)險太高。我們會期望獲得什么提升?Case by case,不同的業(yè)務(wù)不一樣,有些業(yè)務(wù)比如說廣告,1%的收入就是好幾百萬,而有些問題可能要提升好幾倍才有商業(yè)價值。
在機器學(xué)習(xí)成本分配中,最大比例在機器學(xué)習(xí)本身,調(diào)參、特征工程、模型評估、模型上線這些工程的事情占了大量的時間,而問題的定義、數(shù)據(jù)的采集占的時間非常小,我們認(rèn)為這是有問題的。
我們認(rèn)為一個機器學(xué)習(xí)的項目,無論通過合作還是使用第三方平臺的方式,應(yīng)該把大錢花在采集好的數(shù)據(jù),定義好的問題上去,甚至這要超過一半的時間。而另一半的時間,才是真正做機器學(xué)習(xí)模型的時間。
降低數(shù)據(jù)的成本
那我們怎么降低數(shù)據(jù)的成本呢?我給大家一些思考。
第一,除非必要,只使用采集好的數(shù)據(jù)。因為數(shù)據(jù)采集是一個有成本的事情,當(dāng)一個公司的體系越復(fù)雜,它采集數(shù)據(jù)的成本就越高,所以除非這個數(shù)據(jù)采集起來很輕松,或者已經(jīng)有了,你才會去考慮。
第二,如果你要開發(fā)新的數(shù)據(jù),首先要考慮的是成本。開發(fā)新的數(shù)據(jù)源是有風(fēng)險的。機器學(xué)習(xí)最怕的是說不清楚這是算法的問題,還是數(shù)據(jù)問題,還是問題定義的問題,所以讓 MVP 環(huán)節(jié)中能出問題的環(huán)節(jié)越少越好。
前面我們介紹了問題定義的問題如何避免,而算法一般是不太容易出問題的,除非用錯,而數(shù)據(jù)其實是很容易出問題的,所以我們盡量用簡單、可靠、成熟的數(shù)據(jù)。
第三,我們講到在建模的過程中,盡量使用成熟的工具。真正在數(shù)據(jù)處理,特征計算,和算法訓(xùn)練的這些過程中,大量的工作是可標(biāo)準(zhǔn)化,甚至可以用算法自動優(yōu)化的,大量的坑其實也是可總結(jié),或者說可以在產(chǎn)品引導(dǎo)中避免的。我們一直在研發(fā)的第四范式先知建模平臺,就是在努力將建模過程中的know-how封裝到產(chǎn)品中,讓用戶操作更簡單,而且少踩坑,更有效的獲得好模型。
總結(jié)一下,這一步總的思想是,能不制造新的風(fēng)險點,就不制造風(fēng)險點,能降低不確定性就降低不確定性。
如何Review機器學(xué)習(xí)的模型?
好了,做好了前面介紹的兩步,我們已經(jīng)有了機器學(xué)習(xí)的MVP,機器學(xué)習(xí)對業(yè)務(wù)的影響已經(jīng)初見結(jié)論,如果業(yè)務(wù)有明顯提升,那么祝賀你,找到了新的價值增長點,優(yōu)化后一定還會有更大的提升潛力;而如果效果不明顯,我們這里再給大家一些關(guān)于如何review,如何檢查MVP的建議:
在現(xiàn)實業(yè)務(wù)中,解決了一個問題,有時也會帶來新的問題。比如說新聞推薦的系統(tǒng),現(xiàn)在點擊的人多了,那么是不是由于推薦,新聞變得更加娛樂化了,是不是新聞的點擊變得更集中化了,這可能并不是業(yè)務(wù)上非常希望的,需要繼續(xù)想辦法來優(yōu)化。
本文會從幾個方面分析這個問題:
第一,機器學(xué)習(xí)是不是萬能良藥?我們首先需要想清楚,機器學(xué)習(xí)作為特別牛的技術(shù),它能解決什么樣的問題。
第二,一個業(yè)務(wù)問題,可能有各種千奇百怪的坑,假設(shè)我們初步判定可以通過機器學(xué)習(xí)來解決他,那么應(yīng)該通過怎樣的轉(zhuǎn)化,避開這些坑,把業(yè)務(wù)問題變成機器學(xué)習(xí)的問題。
第三,如果有一個好的可以轉(zhuǎn)化成機器學(xué)習(xí)的問題,我怎么去設(shè)計機器學(xué)習(xí)的開發(fā)節(jié)奏,估算它的投入產(chǎn)出比,如何分階段去推動問題的建模和應(yīng)用。
這就是今天要介紹的,機器學(xué)習(xí)的MVP。
機器學(xué)習(xí)的最小可用產(chǎn)品
現(xiàn)在的互聯(lián)網(wǎng)技術(shù),接受的一個概念是最小可用產(chǎn)品,MVP,就是開發(fā)團隊、設(shè)計團隊用最小的成本代價,最大程度去驗證產(chǎn)品的可行性。這個產(chǎn)品的可行性,是指這個需求是否真實存在,一個產(chǎn)品滿足需求的方式是不是對的。
機器學(xué)習(xí)也是一樣的,我們做機器學(xué)習(xí)的投入是長期的、持續(xù)的,帶來的收入和回報也是巨大的,在開始之前,我們一定會希望以比較低的成本知道:現(xiàn)在引入機器學(xué)習(xí)是否可以影響我們所面對的業(yè)務(wù),產(chǎn)生價值的潛力有多大。
那么把一個業(yè)務(wù)真正用機器學(xué)習(xí)做之前,我們可以用兩步,做一個機器學(xué)習(xí)的 MVP:
第一步:我們要選擇正確的業(yè)務(wù)問題,并不是所有的問題都可以套在機器學(xué)習(xí)的框架里,有些適合機器學(xué)習(xí)解決,有些不適合機器學(xué)習(xí)解決。在任何的技術(shù)項目管理中,用差的方法解決好的問題,一定優(yōu)于用好的方法解決錯誤的問題。選擇正確的問題:從分類器開始
第二步:當(dāng)我們找到一個機器學(xué)習(xí)可以解決的問題后,我如何通過最小的時間和人力代價,去證明機器學(xué)習(xí)可以解決它,帶來滿意的投入產(chǎn)出比。
首先我們看看機器學(xué)習(xí)擅長解決什么問題。我舉一個例子,就是周志華老師的西瓜書講的例子,它很經(jīng)典,也很簡單,還很深刻,這個問題是說我要判斷一個西瓜是好的還是不好的。
這個問題的業(yè)務(wù)場景是什么呢,一個西瓜,我怎么在不交易、不打開的情況下,就知道它是好的還是不好的。如果我知道,我就可以用同樣的價錢買到更好的西瓜;而如果我是瓜商,有了一套標(biāo)準(zhǔn)之后,我就可以更好的管理我的貨品。
回到這個問題,一個西瓜是好的還是不好的,這是典型的機器學(xué)習(xí)二分類問題。首先我們要找到,判斷這個西瓜好不好有哪些可以用到的數(shù)據(jù)。我們不能把買賣西瓜之后的數(shù)據(jù)放進去分析,比如買了西瓜之后,我打開就知道好不好了,那么這個就沒有價值。
所以我必須在不破壞西瓜的前提下,這時候能用到的數(shù)據(jù)是西瓜的產(chǎn)地、西瓜的紋路、重量、比重、敲擊西瓜的聲音是渾濁還是清脆、西瓜皮的質(zhì)感等等,這些不打開西瓜的情況就知道的數(shù)據(jù)。
剛剛我們的目標(biāo)已經(jīng)講得很清楚了,好的還是不好的,好的是 1,不好的是 0,甚至我還可以定義一個評分,0 到 1 之間的一個數(shù),但總體而言我可以設(shè)定一個機器學(xué)習(xí)的目標(biāo),我們稱之為 Label。
選擇正確的問題:真實世界模型
這看起來是一個很簡單的場景,好像一旦我們具備了這樣的數(shù)據(jù),就可以嘗試建立機器學(xué)習(xí)模型了。然而在現(xiàn)實中,當(dāng)我們想用機器學(xué)習(xí)來解決實際問題時,也會這么簡單么?真實世界中往往是有很多陷阱的。這些陷阱可能有什么呢?
第一,西瓜好不好,是怎么定義的?是大?還是甜?皮厚不厚?瓤脆不脆?如果建立這個模型是為了西瓜的售賣,這些因素可能都會評價的因素之一,模型學(xué)習(xí)的樣本也都需要基于這個標(biāo)準(zhǔn)來建立。如果我們僅僅是基于西瓜大不大來定義樣本,而實際的應(yīng)用場景是綜合判斷西瓜好不好,那么可能會得不到想要的好的結(jié)果。可見,即便是簡單的問題,我們都需要思考一下業(yè)務(wù)的方方面面,理清哪些因素,邊際,個性化要素和基礎(chǔ)設(shè)施是要考慮進去的。
第二,西瓜好不好,是以什么為標(biāo)準(zhǔn)的?是用科學(xué)方法和儀器測量的?還是專家評測?如果是后者,評測者是同一個人么?如果是不同的人,大家對好西瓜的判斷標(biāo)準(zhǔn)一樣么? 現(xiàn)實情況中,很可能是不一樣的,那就要想辦法消除Label的偏差。
第三,互聯(lián)網(wǎng)的場景下,往往是需要滿足所有人個性化的需求的 。有些人喜歡甜的西瓜,有些人喜歡脆的西瓜,那將問題定義為分辨好的西瓜是否還合適?因為每個人對好西瓜的定義不一樣,這個問題可能就轉(zhuǎn)化為了推薦一個西瓜給一個用戶,他(她)會不會喜歡。
第四,真實的應(yīng)用環(huán)境是怎樣的?假設(shè)我們需要一個在線實時的西瓜分類器,拿到西瓜那一刻馬上判斷它好不好,那是不是有些當(dāng)時不能馬上拿到的特征就不能用了?如果好瓜的判斷標(biāo)準(zhǔn)在不斷發(fā)生變化,或者瓜本身的特性在不斷變化,模型還需要能夠跟得上這個變化,基于新的數(shù)據(jù)和反饋做自我更新迭代,這就是我們搭建模型更新的方法。
選擇正確的問題:業(yè)務(wù)問題的本來面貌
我們從西瓜還原到業(yè)務(wù),任何一個業(yè)務(wù)能不能做機器學(xué)習(xí),我們要看三個要素。
第一,這個業(yè)務(wù)的目標(biāo)值是什么,它不一定是唯一的,但一定有主次。這個目標(biāo)是否可以量化、收集反饋、客觀觀測的。什么叫客觀觀測,我說甜和你說甜,這個事情就可能不客觀,那有沒有一個客觀的東西可以反饋。
第二,樣本應(yīng)該如何構(gòu)造,樣本不應(yīng)該違反因果關(guān)系,y=f(x),x一定是我們業(yè)務(wù)場景中所能知道的信息。在西瓜的問題,就是打開西瓜之前我們能知道的信息,才可以作為x。同時,樣本應(yīng)該符合業(yè)務(wù)場景的真實情況,假設(shè)我們的業(yè)務(wù)是摸黑挑西瓜,我們看不見西瓜長什么樣,我們只能敲,那西瓜的顏色就不能作為特征。
第三,樣本的每一行代表什么意思,每一行應(yīng)該代表西瓜的每次測量,然后才是選擇哪些數(shù)據(jù)作為x,這些我們已經(jīng)講得很清楚。
當(dāng)西瓜的問題說完后,我們來看看真實的業(yè)務(wù)問題是怎樣的。
1.點擊率預(yù)估
比如說我們看到的推薦系統(tǒng)問題——點擊率預(yù)估。
一個推薦系統(tǒng)的目標(biāo)是什么?它的終極目標(biāo)一定是用戶體驗,但這個目標(biāo)很虛幻,我們要把它量化,變成一系列可以測量的數(shù)據(jù),比如說點擊、觀看時長、購買、好評等,這些就是y。
然后我們看有哪些x,這些x代表的是我做出推薦排序的一瞬間,當(dāng)客戶請求時,在那個瞬間我知道的事情。我能知道客戶的屬性、特征,我能知道內(nèi)容特征、上下文特征,但不知道最終這個內(nèi)容是否有被展現(xiàn)和點擊。我可以知道內(nèi)容在這一瞬間之前被點擊了多少次,但一定不是這個瞬間之后被點擊了多少次,因為這樣就穿越了。有了y和x,就可以構(gòu)造樣本了。我的樣本比如說,我給用戶展現(xiàn)了 10 條推薦的內(nèi)容,這個的反饋可能是點擊和觀看,那么每一次的樣本展現(xiàn)就是一個樣本。
這里我們可以思考一個有趣的問題,當(dāng)我們思考不同的特征對問題的影響時,比如說我們把展現(xiàn)作為一個樣本,一個避免不了的問題是,我怎么知道這個內(nèi)容是否被用戶看到。
一種做法是我不去想這件事情,那么模型可能就是有偏的,比如說你認(rèn)為這個樣本沒有被點擊,但也有可能是沒有被看到,但最理想的是把推薦到用戶手機屏幕上的作為一條樣本。
退一步,還有一個辦法,就是把展現(xiàn)的位置補充回來,作為一個特征。然后請求的時候雖然沒有這個特征,但是這個特征吸收了位置對于展現(xiàn)和反饋的偏差。
2.簡歷匹配
再舉一個場景的例子 —— 簡歷匹配。簡歷匹配是什么意思?它其實想預(yù)測的是,我給企業(yè)推薦了一個簡歷,這個人有沒有被企業(yè)聘用,這看起來是個簡單的機器學(xué)習(xí)問題。但是回到業(yè)務(wù)場景思考,這個問題有沒有這么簡單?對于內(nèi)容推薦來說,用戶有沒有點擊這個內(nèi)容,點擊后看多久,都是用戶單方面的選擇。但是簡歷有兩個選擇,第一個選擇是企業(yè)通過面試、簡歷的選擇,判斷這個人是否適合企業(yè)。第二個選擇是應(yīng)聘者,他會不會去企業(yè)面試,而即便拿到了企業(yè)的offer,會不會被打動加入企業(yè)。
所以這就變成了多點、雙向的問題,在這樣的情況下,就需要對問題進行拆解。我們可以不直接做個人被企業(yè)招聘的事情,而是分開來做,比如說企業(yè)會不會邀請這個人去面試,以及這個人會不會接受企業(yè)的面試邀請,這樣就能把問題做的更好。
解決正確的問題:小結(jié)
總結(jié)一下我們剛剛所介紹的MVP第一步:做機器學(xué)習(xí),首先不是著急去建機器學(xué)習(xí)的模型,而是認(rèn)真思考這件事情的業(yè)務(wù)場景到底是怎么樣的。
總結(jié)下來一個機器學(xué)習(xí)能解決的業(yè)務(wù)問題,有這么幾個點:
第一它是否能轉(zhuǎn)化成分類/回歸的問題
第二目標(biāo)是否是容易獲取、客觀無偏差的數(shù)據(jù)。
第三是問題的預(yù)測目標(biāo),因果關(guān)系是什么,因果關(guān)系越簡單越好,如果是多因多果,或者說描述“因”的相關(guān)信息不方便獲取,那是否可以拆分成多個模型。特征往往是因的數(shù)據(jù),或者是一些不是直接原因的數(shù)據(jù),只要它不破壞這個因果關(guān)系。
第四是我們剛剛沒具體去描述的, 就是這個問題是不是一個真的業(yè)務(wù)需求。
一個真的業(yè)務(wù)需求是指,在我們用機器學(xué)習(xí)做出預(yù)測后,業(yè)務(wù)能否可以根據(jù)這個預(yù)測結(jié)果而受到影響?這個影響點是否足夠清晰、有效?因為業(yè)務(wù)人員會用對業(yè)務(wù)影響的結(jié)果來評估我們項目的效果,如果我們預(yù)測的結(jié)果并沒有有效影響業(yè)務(wù),即使這個模型再好,也不會發(fā)揮作用。
比如說推薦系統(tǒng),我預(yù)測了新的點擊率后,可以按照點擊率倒排來影響業(yè)務(wù)結(jié)果。但如果是游戲呢?如果我們預(yù)測這個人明天有30%的幾率付費,我該如何影響到他,我能不能影響他?
所以你一定要思考,你的預(yù)測結(jié)果會怎么在業(yè)務(wù)中使用,這個使用會不會對業(yè)務(wù)產(chǎn)生提升。如果你發(fā)現(xiàn)提升本身是很難的,那這本身就是個偽需求。然后你還需要思考,現(xiàn)在沒有用機器學(xué)習(xí)的業(yè)務(wù),它是用了什么方法和數(shù)據(jù),現(xiàn)在的方法和數(shù)據(jù)有什么缺陷,哪些是機器學(xué)習(xí)可以幫到的。
當(dāng)以上的問題都有清晰的回答后,這時候你就可以提出一個好的問題了。這時候你就成功 80% 了,而剩下的問題都相對簡單了。
機器學(xué)習(xí)的投入
這就是我們MVP的第二步:在可控的人力、金錢投入下,構(gòu)建一個有效的機器學(xué)習(xí)模型。
那什么是可控呢?1-3人月的投入,更多就會風(fēng)險太高。我們會期望獲得什么提升?Case by case,不同的業(yè)務(wù)不一樣,有些業(yè)務(wù)比如說廣告,1%的收入就是好幾百萬,而有些問題可能要提升好幾倍才有商業(yè)價值。
在機器學(xué)習(xí)成本分配中,最大比例在機器學(xué)習(xí)本身,調(diào)參、特征工程、模型評估、模型上線這些工程的事情占了大量的時間,而問題的定義、數(shù)據(jù)的采集占的時間非常小,我們認(rèn)為這是有問題的。
我們認(rèn)為一個機器學(xué)習(xí)的項目,無論通過合作還是使用第三方平臺的方式,應(yīng)該把大錢花在采集好的數(shù)據(jù),定義好的問題上去,甚至這要超過一半的時間。而另一半的時間,才是真正做機器學(xué)習(xí)模型的時間。
降低數(shù)據(jù)的成本
那我們怎么降低數(shù)據(jù)的成本呢?我給大家一些思考。
第一,除非必要,只使用采集好的數(shù)據(jù)。因為數(shù)據(jù)采集是一個有成本的事情,當(dāng)一個公司的體系越復(fù)雜,它采集數(shù)據(jù)的成本就越高,所以除非這個數(shù)據(jù)采集起來很輕松,或者已經(jīng)有了,你才會去考慮。
第二,如果你要開發(fā)新的數(shù)據(jù),首先要考慮的是成本。開發(fā)新的數(shù)據(jù)源是有風(fēng)險的。機器學(xué)習(xí)最怕的是說不清楚這是算法的問題,還是數(shù)據(jù)問題,還是問題定義的問題,所以讓 MVP 環(huán)節(jié)中能出問題的環(huán)節(jié)越少越好。
前面我們介紹了問題定義的問題如何避免,而算法一般是不太容易出問題的,除非用錯,而數(shù)據(jù)其實是很容易出問題的,所以我們盡量用簡單、可靠、成熟的數(shù)據(jù)。
第三,我們講到在建模的過程中,盡量使用成熟的工具。真正在數(shù)據(jù)處理,特征計算,和算法訓(xùn)練的這些過程中,大量的工作是可標(biāo)準(zhǔn)化,甚至可以用算法自動優(yōu)化的,大量的坑其實也是可總結(jié),或者說可以在產(chǎn)品引導(dǎo)中避免的。我們一直在研發(fā)的第四范式先知建模平臺,就是在努力將建模過程中的know-how封裝到產(chǎn)品中,讓用戶操作更簡單,而且少踩坑,更有效的獲得好模型。
總結(jié)一下,這一步總的思想是,能不制造新的風(fēng)險點,就不制造風(fēng)險點,能降低不確定性就降低不確定性。
如何Review機器學(xué)習(xí)的模型?
好了,做好了前面介紹的兩步,我們已經(jīng)有了機器學(xué)習(xí)的MVP,機器學(xué)習(xí)對業(yè)務(wù)的影響已經(jīng)初見結(jié)論,如果業(yè)務(wù)有明顯提升,那么祝賀你,找到了新的價值增長點,優(yōu)化后一定還會有更大的提升潛力;而如果效果不明顯,我們這里再給大家一些關(guān)于如何review,如何檢查MVP的建議:
首先要 Review 問題的方向是不是對的,模型的效果是否符合預(yù)期,模型的優(yōu)化目標(biāo)是否有明顯的變化,比如優(yōu)化的目標(biāo)是西瓜好不好,優(yōu)化之后是不是買到的西瓜好的變多了。如果不是,那就是這個問題沒有解決。那還會有什么原因?是不是指定了錯誤的目標(biāo),用在了錯誤的環(huán)境,或者數(shù)據(jù)有問題。其實說白了,要么是目標(biāo)有錯,要么是模型用錯,要么是數(shù)據(jù)有問題,基于這 3 點來檢查。
在現(xiàn)實業(yè)務(wù)中,解決了一個問題,有時也會帶來新的問題。比如說新聞推薦的系統(tǒng),現(xiàn)在點擊的人多了,那么是不是由于推薦,新聞變得更加娛樂化了,是不是新聞的點擊變得更集中化了,這可能并不是業(yè)務(wù)上非常希望的,需要繼續(xù)想辦法來優(yōu)化。
第二步是 Review 數(shù)據(jù),這些數(shù)據(jù)里面哪些起了關(guān)鍵作用,哪些數(shù)據(jù)是經(jīng)驗上認(rèn)為會有作用的,但實際上沒有的。那么重新檢查這些數(shù)據(jù),看是不是數(shù)據(jù)質(zhì)量的問題,使得沒有發(fā)揮應(yīng)該發(fā)揮的作用。還可以看下一步我們可以引入哪些新的數(shù)據(jù),數(shù)據(jù)最好一批一批引入,我加入一批,一次性開發(fā)結(jié)束。
第三步,當(dāng)我 Review 上面的事情后,我要制定下一步的方案,往往是我會有新的、更多的數(shù)據(jù)。我也可能會調(diào)整目標(biāo),有可能是目標(biāo)錯了要改,也可能是增加目標(biāo),原來一個目標(biāo)不夠了,我要加入好幾個新的指標(biāo),使模型變得更平衡。還有就是在工程上,看性能能不能優(yōu)化等。