機器學習被廣泛的應用於推薦、風控等場景。經典的機器學習建模數據是由特徵列和單一目標列構成的,比如要做廣告的CTR預測,其實模型關心的是一個廣告曝光後是否會被點擊,這是一個單一目標場景的建模過程。但是在實際應用場景中,往往有時候會出現“既要也要”的情況,比如推薦一個視頻給客戶,推薦引擎不光希望客戶可以點擊這個視頻,更希望客戶可以長時間光看,這就成了一個多目標建模的情況。
單目標建模在很多情況下是有侷限的,以新聞推薦爲例,如果只通過新聞是否點擊來評估模型好壞,那麼推送一些吸引眼球的沒有內涵的新聞往往可以提升點擊,比如推送《八旬老漢偷窺兒媳婦洗澡》,但是這種推薦是沒有靈魂的。多目標推薦會更好的幫助模型去理解用戶。比如在美拍視頻中,需要考慮點擊率、播放、關注、時長等四個因素。
那麼多目標推薦要怎麼做呢?目前在中文網站上很難找到相關文獻,於是我去到國外的網站看了下Multi-label Classification相關的介紹,大體可以通過以下方法去做實現多目標建模。爲了更好地說明,這裏模擬一份數據:
用戶 |
特徵1 |
特徵2 |
特徵3 |
目標1 |
目標2 |
A |
32 |
523 |
234 |
0 |
1 |
B |
124 |
463 |
46 |
1 |
0 |
C |
42 |
352 |
64 |
1 |
1 |
方法一:將多目標問題轉化成單目標問題
以上面的問題爲例,假設目標1和目標2的正例都是“1”,則轉化成單目標建模邏輯的時候可以把目標1和目標2都是“1”的情況標爲“1”,其它情況標爲“0”。案例數據變爲下面的形式:
用戶 |
特徵1 |
特徵2 |
特徵3 |
目標 |
A |
32 |
523 |
234 |
0 |
B |
124 |
463 |
46 |
0 |
C |
42 |
352 |
64 |
1 |
這種方法比較暴力並且好實現,但是問題就是減少了很多數據間的信息。
方法二:將多目標問題轉化成多分類問題
轉化成多分類問題的好處是可以保留所有的信息,給業務系統更多選擇。比如一個系統有兩個推薦評估目標分別是點擊和時長,但是某用戶沒有匹配到點擊和時長都不錯的內容。這時候轉換成多分類問題的好處就體現出來了,在沒有兩個目標都符合的方案情況下,可以從其它符合的類別中選擇一個推送給客戶。
轉化成多分類問題後,樣例數據變爲下面的形式:
用戶 |
特徵1 |
特徵2 |
特徵3 |
目標 |
A |
32 |
523 |
234 |
0 |
B |
124 |
463 |
46 |
1 |
C |
42 |
352 |
64 |
2 |
- 目標值爲0對應原始目標1=“0”,目標2=“1”
- 目標值爲1對應原始目標1=“1”,目標2=“0”
- 目標值2對應原始目標1=“1”,目標2=“1”
方法三:將多目標問題轉化成多組模型的形式
多組模型的模式是最精確地模式,但是也是計算量最大的模式。比如樣例數據有兩個評估指標,可以分別對兩個評估指標進行建模。
訓練數據1:
用戶 |
特徵1 |
特徵2 |
特徵3 |
目標1 |
A |
32 |
523 |
234 |
0 |
B |
124 |
463 |
46 |
1 |
C |
42 |
352 |
64 |
1 |
訓練數據2:
用戶 |
特徵1 |
特徵2 |
特徵3 |
目標2 |
A |
32 |
523 |
234 |
1 |
B |
124 |
463 |
46 |
0 |
C |
42 |
352 |
64 |
1 |
這樣的話會分別針對目標1和目標2生成兩個分類模型。實際預測的時候,每個樣本需要調用兩次模型分別拿到對應兩個目標的分類結果,假如樣本1對應的兩份結果分別是“0.65”和”0.21”,把這兩個結果組合起來就是最終的預測結果,是向量[0.65,0.21]。以此類推,計算所有樣本的預測向量,再通過向量具體判斷用戶的意向。
總結
隨着推薦系統的普及,多目標建模一定會變成業內普遍的需求,希望這篇文章可以給有需要的同學更多地幫助。
參考:https://en.wikipedia.org/wiki/Multi-label_classification