日常生活中,推薦工作都是怎樣開展的呢?推薦來源於經驗。假設現在有人需要你基於現實生活中的資料立刻作出推薦,你會怎樣做呢?首先,我們會感覺自己得像智慧顧問一樣聰明。其次,我們做的已經超出人類的能力範圍了。因此,我們的目標就是建立智慧軟體,讓它為我們提供值得信賴的推薦系統。
當我們訪問亞馬遜、Netflix、IMDb等許多網站時,我們的潛意識裡已經接觸到了一些推薦系統了。顯然,這些都已經成為了網路營銷(網上推送產品)不可分割的一部分。我們在此做進一步瞭解。
本文中筆者通過生活中的例子向大家解釋了推薦系統的工作原理,目的就是讓大家看到推薦系統的使用範圍不限於網路營銷,各行各業都在應用。同時,我們也將通過R語言中的實際操作來了解它的型別。“推薦引擎”和“推薦系統”這兩個術語在此可以互換,希望大家理解。
如今各行各業都在充分運用獨具本行業特色的推薦系統。我們以銀行業為例進行說明。
X銀行想使用其交易資訊向其現有的信用卡和借記卡使用者提供定製服務。本次分析的最終狀態如下:
Z客戶走進了一家必勝客。他用X銀行卡進行支付。根據過去的交易資訊,銀行X瞭解到Z客戶喜歡在吃完披薩之後再吃一個冰淇淋。通過在必勝客的交易資訊,銀行對客戶進行定位。接著,銀行系統發現客戶所在位置附近有5家冰淇淋店,其中3家與銀行有合作關係。
有意思的點就在這裡。與冰淇淋店的交易如下:
商店1:銀行利潤——$2,客戶消費$10,客戶回應率——20%
商店2:銀行利潤——$2,客戶消費$10,客戶回應率——20%
商店3:銀行利潤——$5,客戶消費$12,客戶回應率——20%
商店4:銀行利潤——$6,客戶消費$12,客戶回應率——20%
商店5:銀行利潤——$4,客戶消費$11,客戶回應率——20%
我們假設標價與冰淇淋對客戶的吸引程度成比例。因此,客戶會糾結於是多花點錢滿足自己的願望呢,還是買價錢較低的冰淇淋。X銀行希望客戶去商店3、4 或5(利潤更高)。如果店家提供合理的折扣客戶的回應率就會增加。假設折扣數都取整。目前,期望值為:
期望值=20%*{2 + 2 + 5 + 6 + 4 } = $ 19/5 = $3.8
通過打折可以增加期望值。商店3、4和5 的回應率變化如下:
商店3 :$1的折扣使回應率提高5%,$2的折扣使回應率提高7.5%,$3的折扣使回應率提高10%
商店4 :$1的折扣使回應率提高25%,$2的折扣使回應率提高30%,$3的折扣使回應率提高35%,$4的折扣使回應率提高80%
商店5:不管打什麼折扣,回應率都沒有變化
面對競爭商家,銀行無法同時給出多種折扣選擇。大家要假設提高一家商店回應率就會導致對其他商店的回應率同等數量的下降。針對這一具有啟發意義的案例計算如下——在商店4進行$2折扣的促銷。
期望值=50%/4 * (2 + 2 + 5 + 4) + 50% * 5 = $ 13/8 + $2.5 = $1.6 + $2.5 = $4.1
思考寶盒:還有其他使銀行利潤更高的好方法嗎?筆者很有興趣瞭解!
大家看到了嗎?做推薦並不是僅通過提取資料、寫程式碼就能完成的。相反,做推薦需要具有數學(顯然)、邏輯思維和使用程式語言的天分。相信我,第三點其實是最簡單的。有點自信了嗎?大家開始吧。
前面的例子相信應該已經給了大家一個很好的思路。這時候就需要使思路更加清晰。我們來理解下推薦引擎在剛才的例子中可以發揮什麼作用(X銀行):
- 它能發現顧客在購物之後仍有興趣光顧的店家或購買的產品。
- 可以在向客戶推薦許多產品時估計利潤與損失。基於客戶的情況作出以客戶為中心或以產品為中心的推薦。你可能希望對其他銀行也希望爭取到的高價值客戶,提供最上乘的服務。
- 通過向客戶提供極具吸引的折扣可以增強與客戶的聯絡。也許客戶本來也要購買這個商品,但是另有折扣的話,銀行對他們的吸引力可能更大。
根據行業不同,我們廣義上一般可以把推薦引擎分為兩類。在此想通過例項幫助大家更容易地理解。
筆者根據應用的行業背景和適用行業的因素對這些演算法做了解釋。
正如名字所示,這些演算法是基於鮮明的商品背景。一旦收集到了商品背景層面的資訊,就可以試著尋找類似的商品並進行推薦。例如在YouTube上,你可以看到對視訊按照型別、語言和主演進行分類,基於這些資訊我們可以找到類似(相關)的視訊。一旦找到了類似的視訊就可以把它們推薦給只看了同類中一個視訊的客戶。這種演算法常見於網上視訊頻道、網上歌曲商店等。如果商品/物品可以按照一些維度進行分類,這種背景級的資訊就很容易獲取。
這種演算法最為常見,因為它不依賴於任何附加的資訊。你需要的只是該行業的交易級資訊。例如像亞馬遜這樣的電子商務公司和美國運通這樣的銀行多使用這種演算法進行店家和產品推薦。更近一步來看,協同過濾演算法包括以下型別:
- 使用者-使用者協同過濾:
這裡我們發現每位客戶的類似客戶,並對首位客戶的類似客戶過去已選擇的產品進行打折。該種演算法很有效,不過需要很多時間和資源,因為需要計算每個成對客戶的資訊。因此,對於平臺來說,如果沒有一個相應強大的系統,這種演算法就難以執行。
- 物品-物品協同過濾:
該演算法非常類似於前面的演算法,不過區別就是這次找的不是類似的客戶,而是嘗試尋找類似的物品。一旦我們類似的物品後,就可以輕易向從商店裡買過任何一種商品的顧客推薦類似商品。這種演算法對資源的需求遠遠少於使用者-使用者協同過濾,因此對於新客戶來說,這種演算法需要的時間比使用者-使用者協同需要的時間少很多,因為我們不需要客戶間的所有相似點。由於產品數量固定,產品-產品相似矩陣也是固定的。
- 其他較簡單的演算法:
也有其他的方法例如市場籃子分析,一般來說它沒有其他演算法預測性高。
這是一個很好的問題!我們要知道效能標準是由商業目標主要驅動的。一般來說,以下三個效能指標是大家考慮要優化的:
- 基於利潤價值:
如果你的總體目標是使用推薦引擎來增加利潤/收入標準,那麼評估標準應該是隨著每個推薦級別收入/利潤/銷售呈遞增收趨勢。每個級別都應有不可違背的秩序,平均收入/利潤/銷售應在折扣成本內高於預期利潤。
- 基於回應率:
如果目標僅僅是激發客戶熱情,或使客戶探索新產品/店家,本標準可能會很有幫助。在此大家需要記錄每個級別的客戶回應率。
- 基於交易數量:
有時你會對客戶的活動很感興趣,對於大量活動,客戶需進行更大數量的交易。因此,我們根據推薦級別記錄交易數量。
- 其他標準:
也有一些其他你可能感興趣的標準例如滿意率或呼叫服務中心的電話數量等。這些標準使用次數不多,因為它們基本上只能提供樣本,不能提供整個方案的結果。
我們來學習一下建立推薦系統的實際技巧。這裡我展示了建立物品關聯的合作過濾推薦系統的過程。資料只包括兩列,稱為個人店家和個人客戶。編碼易於理解,以下是程式程式碼。
推薦引擎如今已經變得非常普遍了,因為它們可以應用到各行業的最常見的一種商業案例。代替這些推薦引擎並非易事,因為它們可以同時預測多種物品/店家。分類演算法因輸出數值可變而難以吸收這麼多的類別。
本文,我們瞭解了銀行系統推薦系統的使用。我們同時也考察了用R語言執行推薦系統。毫無疑問,它們運用於各行各業,共同目標就是提高客戶體驗。