以挑西瓜為例,聊一聊如何用機器學習解決實際業務

149965015858547400_a580x330.jpg
想用機器學習提升業務價值,在搭建平臺、處理數據、訓練算法之前,真正要做的第一步應該是什么?
本文會從幾個方面分析這個問題:
第一,機器學習是不是萬能良藥?我們首先需要想清楚,機器學習作為特別牛的技術,它能解決什么樣的問題。
第二,一個業務問題,可能有各種千奇百怪的坑,假設我們初步判定可以通過機器學習來解決他,那么應該通過怎樣的轉化,避開這些坑,把業務問題變成機器學習的問題。
第三,如果有一個好的可以轉化成機器學習的問題,我怎么去設計機器學習的開發節奏,估算它的投入產出比,如何分階段去推動問題的建模和應用。

這就是今天要介紹的,機器學習的MVP。

機器學習的最小可用產品

現在的互聯網技術,接受的一個概念是最小可用產品,MVP,就是開發團隊、設計團隊用最小的成本代價,最大程度去驗證產品的可行性。這個產品的可行性,是指這個需求是否真實存在,一個產品滿足需求的方式是不是對的。

機器學習也是一樣的,我們做機器學習的投入是長期的、持續的,帶來的收入和回報也是巨大的,在開始之前,我們一定會希望以比較低的成本知道:現在引入機器學習是否可以影響我們所面對的業務,產生價值的潛力有多大。

那么把一個業務真正用機器學習做之前,我們可以用兩步,做一個機器學習的 MVP:
第一步:我們要選擇正確的業務問題,并不是所有的問題都可以套在機器學習的框架里,有些適合機器學習解決,有些不適合機器學習解決。在任何的技術項目管理中,用差的方法解決好的問題,一定優于用好的方法解決錯誤的問題。
第二步:當我們找到一個機器學習可以解決的問題后,我如何通過最小的時間和人力代價,去證明機器學習可以解決它,帶來滿意的投入產出比。
選擇正確的問題:從分類器開始

首先我們看看機器學習擅長解決什么問題。我舉一個例子,就是周志華老師的西瓜書講的例子,它很經典,也很簡單,還很深刻,這個問題是說我要判斷一個西瓜是好的還是不好的。

這個問題的業務場景是什么呢,一個西瓜,我怎么在不交易、不打開的情況下,就知道它是好的還是不好的。如果我知道,我就可以用同樣的價錢買到更好的西瓜;而如果我是瓜商,有了一套標準之后,我就可以更好的管理我的貨品。

回到這個問題,一個西瓜是好的還是不好的,這是典型的機器學習二分類問題。首先我們要找到,判斷這個西瓜好不好有哪些可以用到的數據。我們不能把買賣西瓜之后的數據放進去分析,比如買了西瓜之后,我打開就知道好不好了,那么這個就沒有價值。

所以我必須在不破壞西瓜的前提下,這時候能用到的數據是西瓜的產地、西瓜的紋路、重量、比重、敲擊西瓜的聲音是渾濁還是清脆、西瓜皮的質感等等,這些不打開西瓜的情況就知道的數據。

剛剛我們的目標已經講得很清楚了,好的還是不好的,好的是 1,不好的是 0,甚至我還可以定義一個評分,0 到 1 之間的一個數,但總體而言我可以設定一個機器學習的目標,我們稱之為 Label。

選擇正確的問題:真實世界模型

這看起來是一個很簡單的場景,好像一旦我們具備了這樣的數據,就可以嘗試建立機器學習模型了。然而在現實中,當我們想用機器學習來解決實際問題時,也會這么簡單么?真實世界中往往是有很多陷阱的。這些陷阱可能有什么呢?
第一,西瓜好不好,是怎么定義的?是大?還是甜?皮厚不厚?瓤脆不脆?如果建立這個模型是為了西瓜的售賣,這些因素可能都會評價的因素之一,模型學習的樣本也都需要基于這個標準來建立。如果我們僅僅是基于西瓜大不大來定義樣本,而實際的應用場景是綜合判斷西瓜好不好,那么可能會得不到想要的好的結果。
第二,西瓜好不好,是以什么為標準的?是用科學方法和儀器測量的?還是專家評測?如果是后者,評測者是同一個人么?如果是不同的人,大家對好西瓜的判斷標準一樣么? 現實情況中,很可能是不一樣的,那就要想辦法消除Label的偏差。
第三,互聯網的場景下,往往是需要滿足所有人個性化的需求的 。有些人喜歡甜的西瓜,有些人喜歡脆的西瓜,那將問題定義為分辨好的西瓜是否還合適?因為每個人對好西瓜的定義不一樣,這個問題可能就轉化為了推薦一個西瓜給一個用戶,他(她)會不會喜歡。
第四,真實的應用環境是怎樣的?假設我們需要一個在線實時的西瓜分類器,拿到西瓜那一刻馬上判斷它好不好,那是不是有些當時不能馬上拿到的特征就不能用了?如果好瓜的判斷標準在不斷發生變化,或者瓜本身的特性在不斷變化,模型還需要能夠跟得上這個變化,基于新的數據和反饋做自我更新迭代,這就是我們搭建模型更新的方法。
可見,即便是簡單的問題,我們都需要思考一下業務的方方面面,理清哪些因素,邊際,個性化要素和基礎設施是要考慮進去的。

選擇正確的問題:業務問題的本來面貌

我們從西瓜還原到業務,任何一個業務能不能做機器學習,我們要看三個要素。

第一,這個業務的目標值是什么,它不一定是唯一的,但一定有主次。這個目標是否可以量化、收集反饋、客觀觀測的。什么叫客觀觀測,我說甜和你說甜,這個事情就可能不客觀,那有沒有一個客觀的東西可以反饋。

第二,樣本應該如何構造,樣本不應該違反因果關系,y=f(x),x一定是我們業務場景中所能知道的信息。在西瓜的問題,就是打開西瓜之前我們能知道的信息,才可以作為x。同時,樣本應該符合業務場景的真實情況,假設我們的業務是摸黑挑西瓜,我們看不見西瓜長什么樣,我們只能敲,那西瓜的顏色就不能作為特征。

第三,樣本的每一行代表什么意思,每一行應該代表西瓜的每次測量,然后才是選擇哪些數據作為x,這些我們已經講得很清楚。

當西瓜的問題說完后,我們來看看真實的業務問題是怎樣的。

1.點擊率預估

比如說我們看到的推薦系統問題——點擊率預估。

一個推薦系統的目標是什么?它的終極目標一定是用戶體驗,但這個目標很虛幻,我們要把它量化,變成一系列可以測量的數據,比如說點擊、觀看時長、購買、好評等,這些就是y。
然后我們看有哪些x,這些x代表的是我做出推薦排序的一瞬間,當客戶請求時,在那個瞬間我知道的事情。我能知道客戶的屬性、特征,我能知道內容特征、上下文特征,但不知道最終這個內容是否有被展現和點擊。我可以知道內容在這一瞬間之前被點擊了多少次,但一定不是這個瞬間之后被點擊了多少次,因為這樣就穿越了。
有了y和x,就可以構造樣本了。我的樣本比如說,我給用戶展現了 10 條推薦的內容,這個的反饋可能是點擊和觀看,那么每一次的樣本展現就是一個樣本。

這里我們可以思考一個有趣的問題,當我們思考不同的特征對問題的影響時,比如說我們把展現作為一個樣本,一個避免不了的問題是,我怎么知道這個內容是否被用戶看到。

一種做法是我不去想這件事情,那么模型可能就是有偏的,比如說你認為這個樣本沒有被點擊,但也有可能是沒有被看到,但最理想的是把推薦到用戶手機屏幕上的作為一條樣本。

退一步,還有一個辦法,就是把展現的位置補充回來,作為一個特征。然后請求的時候雖然沒有這個特征,但是這個特征吸收了位置對于展現和反饋的偏差。

2.簡歷匹配
再舉一個場景的例子 —— 簡歷匹配。簡歷匹配是什么意思?它其實想預測的是,我給企業推薦了一個簡歷,這個人有沒有被企業聘用,這看起來是個簡單的機器學習問題。但是回到業務場景思考,這個問題有沒有這么簡單?對于內容推薦來說,用戶有沒有點擊這個內容,點擊后看多久,都是用戶單方面的選擇。
但是簡歷有兩個選擇,第一個選擇是企業通過面試、簡歷的選擇,判斷這個人是否適合企業。第二個選擇是應聘者,他會不會去企業面試,而即便拿到了企業的offer,會不會被打動加入企業。

所以這就變成了多點、雙向的問題,在這樣的情況下,就需要對問題進行拆解。我們可以不直接做個人被企業招聘的事情,而是分開來做,比如說企業會不會邀請這個人去面試,以及這個人會不會接受企業的面試邀請,這樣就能把問題做的更好。

解決正確的問題:小結

總結一下我們剛剛所介紹的MVP第一步:做機器學習,首先不是著急去建機器學習的模型,而是認真思考這件事情的業務場景到底是怎么樣的。

總結下來一個機器學習能解決的業務問題,有這么幾個點:

第一它是否能轉化成分類/回歸的問題

第二目標是否是容易獲取、客觀無偏差的數據。

第三是問題的預測目標,因果關系是什么,因果關系越簡單越好,如果是多因多果,或者說描述“因”的相關信息不方便獲取,那是否可以拆分成多個模型。特征往往是因的數據,或者是一些不是直接原因的數據,只要它不破壞這個因果關系。

第四是我們剛剛沒具體去描述的, 就是這個問題是不是一個真的業務需求。

一個真的業務需求是指,在我們用機器學習做出預測后,業務能否可以根據這個預測結果而受到影響?這個影響點是否足夠清晰、有效?因為業務人員會用對業務影響的結果來評估我們項目的效果,如果我們預測的結果并沒有有效影響業務,即使這個模型再好,也不會發揮作用。

比如說推薦系統,我預測了新的點擊率后,可以按照點擊率倒排來影響業務結果。但如果是游戲呢?如果我們預測這個人明天有30%的幾率付費,我該如何影響到他,我能不能影響他?

所以你一定要思考,你的預測結果會怎么在業務中使用,這個使用會不會對業務產生提升。如果你發現提升本身是很難的,那這本身就是個偽需求。然后你還需要思考,現在沒有用機器學習的業務,它是用了什么方法和數據,現在的方法和數據有什么缺陷,哪些是機器學習可以幫到的。

當以上的問題都有清晰的回答后,這時候你就可以提出一個好的問題了。這時候你就成功 80% 了,而剩下的問題都相對簡單了。

機器學習的投入

這就是我們MVP的第二步:在可控的人力、金錢投入下,構建一個有效的機器學習模型。

那什么是可控呢?1-3人月的投入,更多就會風險太高。我們會期望獲得什么提升?Case by case,不同的業務不一樣,有些業務比如說廣告,1%的收入就是好幾百萬,而有些問題可能要提升好幾倍才有商業價值。

在機器學習成本分配中,最大比例在機器學習本身,調參、特征工程、模型評估、模型上線這些工程的事情占了大量的時間,而問題的定義、數據的采集占的時間非常小,我們認為這是有問題的。

我們認為一個機器學習的項目,無論通過合作還是使用第三方平臺的方式,應該把大錢花在采集好的數據,定義好的問題上去,甚至這要超過一半的時間。而另一半的時間,才是真正做機器學習模型的時間。

降低數據的成本

那我們怎么降低數據的成本呢?我給大家一些思考。

第一,除非必要,只使用采集好的數據。因為數據采集是一個有成本的事情,當一個公司的體系越復雜,它采集數據的成本就越高,所以除非這個數據采集起來很輕松,或者已經有了,你才會去考慮。

第二,如果你要開發新的數據,首先要考慮的是成本。開發新的數據源是有風險的。機器學習最怕的是說不清楚這是算法的問題,還是數據問題,還是問題定義的問題,所以讓 MVP 環節中能出問題的環節越少越好。

前面我們介紹了問題定義的問題如何避免,而算法一般是不太容易出問題的,除非用錯,而數據其實是很容易出問題的,所以我們盡量用簡單、可靠、成熟的數據。

第三,我們講到在建模的過程中,盡量使用成熟的工具。真正在數據處理,特征計算,和算法訓練的這些過程中,大量的工作是可標準化,甚至可以用算法自動優化的,大量的坑其實也是可總結,或者說可以在產品引導中避免的。我們一直在研發的第四范式先知建模平臺,就是在努力將建模過程中的know-how封裝到產品中,讓用戶操作更簡單,而且少踩坑,更有效的獲得好模型。

總結一下,這一步總的思想是,能不制造新的風險點,就不制造風險點,能降低不確定性就降低不確定性。

如何Review機器學習的模型?

好了,做好了前面介紹的兩步,我們已經有了機器學習的MVP,機器學習對業務的影響已經初見結論,如果業務有明顯提升,那么祝賀你,找到了新的價值增長點,優化后一定還會有更大的提升潛力;而如果效果不明顯,我們這里再給大家一些關于如何review,如何檢查MVP的建議:
首先要 Review 問題的方向是不是對的,模型的效果是否符合預期,模型的優化目標是否有明顯的變化,比如優化的目標是西瓜好不好,優化之后是不是買到的西瓜好的變多了。
如果不是,那就是這個問題沒有解決。那還會有什么原因?是不是指定了錯誤的目標,用在了錯誤的環境,或者數據有問題。其實說白了,要么是目標有錯,要么是模型用錯,要么是數據有問題,基于這 3 點來檢查。

在現實業務中,解決了一個問題,有時也會帶來新的問題。比如說新聞推薦的系統,現在點擊的人多了,那么是不是由于推薦,新聞變得更加娛樂化了,是不是新聞的點擊變得更集中化了,這可能并不是業務上非常希望的,需要繼續想辦法來優化。
第二步是 Review 數據,這些數據里面哪些起了關鍵作用,哪些數據是經驗上認為會有作用的,但實際上沒有的。那么重新檢查這些數據,看是不是數據質量的問題,使得沒有發揮應該發揮的作用。還可以看下一步我們可以引入哪些新的數據,數據最好一批一批引入,我加入一批,一次性開發結束。
第三步,當我 Review 上面的事情后,我要制定下一步的方案,往往是我會有新的、更多的數據。我也可能會調整目標,有可能是目標錯了要改,也可能是增加目標,原來一個目標不夠了,我要加入好幾個新的指標,使模型變得更平衡。還有就是在工程上,看性能能不能優化等。

0 個評論

要回復文章請先登錄注冊

北京快3开奖软件 免费下载天星山西麻将 澳洲幸运10简介 极速快乐十分免费计划 幸运飞艇直播在哪看 北京赛车pk拾论坛 捕鱼大师单机 大乐透现场 澳洲幸运8开奖公告 比特币计算结果实际意义 双色球复式投注 第015期特码资料 快中彩走势图 冰球突破豪华版大奖 博九备用网址 香港六合彩一百38期提示 多乐彩电子走势图