首先申明一下,推薦演算法是個很大的話題,實際工程中也是很多策略交織在一起,所以本文主要是儘量通俗易懂的講清楚推薦演算法是個什麼東西,不追求深入、全面和絕對的精確!輕噴
以下內容分三部分:演算法的核心;演算法有多大用;實際工程中演算法怎麼工作的
1. 演算法的核心是什麼
推薦演算法的核心是基於歷史資訊尋找被推薦的東西(可能是人、物、資訊)與使用者的一種關聯性,進而去預測你下一步可能喜歡什麼,本質上還是基於統計學的一種推測(谷歌的深度學習除外)。
這裡有兩個關鍵點:歷史資訊;關聯性
歷史資訊也就是大家所說的標準化資料
關聯性也就是大家常說的演算法,他做的事情就是猜測你可能會喜歡怎樣的東西.要搞清楚這個問題,還是得回到人在不同的場景中會喜歡怎樣的東西,這個在不同的場景中差別比較大。舉兩個例子說明一下
對於微信朋友圈:使用者最關心的是我跟釋出者的親密度,其次是內容的質量和內容的釋出時間,這也就是Facebook智慧資訊流的雛形,根據跟釋出者的親密度,內容的質量和內容的新鮮程度的一個混排演算法。
對於美團外賣:使用者最關心的是這家餐廳好不好吃,價格貴不貴,有沒有優惠,配送時間長不長。至於我認不認識這家餐廳的老闆,這家餐廳開業時間就不是重點,所以演算法就可能是完全不一樣的思路。
不管Facebook資訊流還是美團外賣,核心還是得去理解使用者在你的產品中到底喜歡怎樣的東西,這個是基礎,演算法只是工具。
2. 演算法真的有那麼大效果嗎
這幾年今日頭條的成功,包括業內各種AI、人工智慧的吹,讓我們以為演算法無所不能,實際上演算法真的有這麼神奇嗎?
答案是沒有。。。
今日頭條的成功我認為主要還是靠對流量的理解,戰略和公司的運營、演算法、資料化思維形成的執行力。演算法在裡面只是一環
舉一個淘寶的例子,去淘寶的人從需求的強弱程度來看分三種:明確知道我要買啥的,知道我要買啥品類但具體買啥不知道,就是來逛的。
第一類演算法沒有增長點,我就要買個蘋果的iphoneX,你再怎麼推薦我也是買個蘋果X
第二類演算法的增長點一般,我要買個藍芽耳機,演算法處理的好能提高成單率,客單價,利潤,但也是有限的,因為使用者進來之前已經有了一些基本的預算之類的預設。
第三類是比較大的增量空間,因為第三類屬於激發性需求。就像你去商場聽導購一頓忽悠,買了本身不需要的東西。但是第三類的成單量本身的佔比並沒有那麼大。
所以綜合下來,演算法實際的效果也就是在完全沒有演算法的基礎上有1.1,1.2,1.3倍這樣的效果,這是由使用者的需求總量決定的。
當然我不是說演算法沒用,因為在同等成本結構的基礎上,你的轉化率哪怕比競爭對手高5%,那也是巨大的效率碾壓。我只是想說演算法沒有大家吹得那麼厲害,並不能直接決定一家公司的成敗,演算法只是一個輔助。
3. 水果店案例說明演算法在實際工程中的工作過程
在實際的商品類的推薦系統中,主要分三大塊:收集資料和整理(商品畫像、使用者畫像);演算法推薦;上線實驗及回收結果。
收集資料及整理
假設小明開了一個有3家分店的大型水果連鎖店,收集資料階段主要包括:
商品屬性資訊:小明將店內的每一個水果以及水果的資訊都記下來,甜的還是酸的,品質S還是A,有沒有損壞,性寒還是熱,單價貴不貴,有沒有優惠等等。這是商品的基本屬性資訊。
商品反饋資訊:銷量咋樣,停留率咋樣,停留轉化率咋樣,使用者的評價反饋咋樣。這個是基本的反饋資訊。
人的基本屬性:什麼人,什麼小區,穿著打扮咋樣,年齡多大,哪裡人
人的行為資訊:這次買了啥,下次買了啥,看了啥,諮詢過啥,買完之後反饋咋樣。
資料階段收集是一方面,最關鍵的是收集的資料是結構化的,是在使用者的購買決策中是有效的,比如說使用者中途出去抽了一根菸這種資訊就沒啥用。。。
演算法推薦
演算法階段關鍵的還是搞清楚使用者在不同的場景中會喜歡怎樣的水果。
我個人喜歡把商品推薦主幹演算法分為4個部分:質量評估,個性化,場景化,人工干預
質量評估:有些標準是存在絕對的好與壞的,水果是不是好的,價效比高不高,銷量好不好,優惠力度大不大,使用者反饋好不好這些是存在絕對的好與壞的,我相信沒人想買個爛蘋果。
個性化:有些東西是存在個體差異的,甜的還是酸的,進口的還是國產的,水果的品種是櫻桃還是芒果,性涼還是熱的,品質分級是S還是A(跟前面的爛沒爛兩個概念)。
舉個例子:一個金融白領可能喜歡的是甜的車釐子,進口的,品質S級的,優惠不敏感,客單價高;而小區的家庭主婦喜歡的可能是楊梅,品質還過得去的國產的就行,很在乎優惠,客單價適中的。那對於前一種使用者就可以推一些客單價高的,毛利高的進口產品,相應的也可以少設定優惠;對於後一種就應該推一些價效比高的,有折扣的清倉的商品。
場景化:不同的時間和地點會一定程度上影響使用者的消費決策,比如夏天大家喜歡吃西瓜,在醫院邊上香蕉好賣,中午的時候不帶皮可以直接吃的東西好賣因為大部分下午還要上班,晚上則需要處理的也賣的還可以。這個就是不同的場景帶來的影響
人工干預:演算法本身是不帶意志的,但是很多時候人會強加一些意志上去,比如說最近年底衝業績了,需要強推高毛利的商品了;比如這個櫻桃是合作方的,需要強推;比如有些東西快過期了,需要強推。這個時候就需要人工去做一些干預
演算法最後做的就是把裡面每一個環節打上一個分,最後再把這些因素去加總得到一個最後的結果呈現在使用者面前。但是這個分怎麼打?這個就涉及到演算法的價值觀
所謂演算法的價值觀,就是你希望演算法最終的結果是怎樣的,我是希望銷量最大化還是銷售額最大化還是利潤最大化。不同的目標帶來不同的結果。因為演算法只是為目標最大化負責的。
演算法在處理每一項得分的時候也挺簡單,簡單說就是,如果我的目標是銷量最大化,那有兩個特徵:優惠力度,評價,如果隨著優惠力度的提高購買轉化率急劇提升,那麼我認為優惠力度這個特徵權重就高,如果隨著評價的提升購買轉化率提升較慢,那麼我認為評價這個特徵的權重就一般。
這個過程並不複雜,演算法的優勢在於他能記錄更豐富的資訊(工程中特徵數量可能達到百萬級),處理海量的資料。這是演算法比人有優勢的地方
這個大概能支撐起一個演算法的框架,實際的應用中會在一個主幹演算法的基礎上去迭代很多小的策略。
下面舉幾個具體的細分迭代策略:
比如說買了芒果的使用者很大比例都買了櫻桃,那相應的會把買芒果的使用者列表中的櫻桃相應的往前提。這個就是大家常說的購物籃演算法
比如說同樣是國貿摩根大廈的使用者更喜歡進口水果,那對於一個摩根大廈的使用者他列表中的進口水果,高客單價水果需要往前提。這個類似協同過濾,通過找到跟你類似的人,再去看他們喜歡啥。
比如說你第一次買了榴蓮之後打了差評,以後就需要降低榴蓮及相關水果的權重。這個就是負反饋。
比如說你的列表中連續出現了3種葡萄,那這時候大概率是應該把他們打散一下,儘量一頁別出太多葡萄。這就是打散
比如當你在瀏覽的過程中點選了櫻桃,那根據購物籃原來喜歡買櫻桃的人也喜歡買芒果,那下一頁載入的時候需要動態的增加芒果的權重 — 這個是實時反饋
實驗及回收效果
個人認為快速的實驗迭代和效果回收是演算法高效率的關鍵,也是網際網路的核心。修路造橋錯了就是錯了,而網際網路產品這版效果不好下一版還能優化。演算法是將這種快速迭代推向了頂峰,同時幾十個實驗線上上AB測試,不需要發版,好不好馬上就能看出來。
AB測試的過程有點類似如果我有5家水果店,我要驗證新引進的櫻桃設定怎樣的價格能收益最大化,我可以5家店同時設定5種價格,賣一週看看結果。
實驗主要分兩個部分:實驗及效果回收
實驗就是在其它東西都一樣的情況下,留出一個不一樣的東西,然後觀察最後的結果,這樣比較好確定最後的結果差異就是由這個不一樣的東西帶來的。
效果回收主要是看資料和人去看實際推薦的結果,看資料需要覆蓋多一些的指標,因為很可能銷量好了毛利降了,或者毛利好了當天剩餘率升高了。
人工去看結果主要是一個二次確定的過程,比如在頭條裡面各種資料都很好,但是推出來的內容很低俗,或者這種資料好人看完之後憑經驗知道這不是長久之計,比如周圍就一家水果店你惡性提價。。
作者:s_crat