基於深度學習模型Wide&Deep的推薦
本實驗選用資料為UCI開源資料集,僅用於學習,請勿商用)
Wide&Deep推薦演算法出自一篇論文《Wide&Deep Learning for RecommenderSystems》,Wide&Deep由兩部分組成,分別是Wide和Deep。先來說wide,表示的是generalized的推薦系統,傳統的推薦系統都是通過線性演算法基於離散特徵來做推薦的。Wide推薦通常是這樣的:系統通過獲得使用者的購物日誌資料,包括使用者點選哪些商品,購買過哪些商品,然後通過one-hot編碼的方式構成離散特徵或者通過對業務的理解衍生出一些特徵,並進行計算,類似於本系列文章第二篇。這種wide推薦方式有非常多的好處,比如對於大規模的稀疏資料有很好的效果,而且模型的解釋性很強。什麼叫模型的解釋性呢?以邏輯迴歸為例,每個特徵都對應模型中的一個權重值,每個特徵的權重值的大小跟這個特徵對結果的影響是有關的。那麼wide方式同樣有很多缺點,比如我們一直強調的,特徵衍生需要很多人為操作,需要專家經驗,另外這種推薦只對使用者操作過的商品有效。
接著講下deep,這裡的deep表示的是通過深度學習學習出來的一些向量,這些向量是隱性特徵,往往是沒有明確可解釋性的。這些向量也可以作為特徵的一部分參與到訓練中。通過deep方式產生的特徵會有以下好處,其一可以擬補人為提取特徵造成的人力思考維度的限制,試想下一個人可以輕易的思考出二階乘法的結果,如果是五階呢?其二這部分特徵是深度學習框架自動生成的,無需人力干預。
既然Wide和Deep演算法各有千秋,那如果可以將兩種演算法作為組合,那麼一定可以生成更有效的推薦場景的模型,本文就介紹如何在PAI-DSW上實現基於Wide&Deep的預測。
一、業務場景描述
本節使用的是PAI-DSW雲端深度學習訓練平臺和PAI-EAS模型服務平臺,使用的是一份開源的基於人的各種背景的統計資料,解決的問題是基於人的各種基礎資料預測每個人收入是否會超過50K。
本實驗的全部程式碼和資料已經內建於PAI-DSW,只要開啟DSW就可以安裝下方的教程執行實驗。
二、資料集介紹
資料來源:引用UCI開源資料來源,https://archive.ics.uci.edu/ml/datasets/Census+Income
具體特徵欄位如下:
欄位名 | 含義 | 型別 | 描述 |
---|---|---|---|
age | 物件年齡 | double | 物件的年齡大小 |
workclass | 工作性質 | string | 自由職業者、私企、企業人員、政府工作者、無業遊民等 |
fnlwgt | 連續資料 | double | – |
education | 學歷 | string | 學士、說是、博士、11th、10th、1s-4th等等 |
education-num | 教育年限 | double | 教育年限 |
marital-status | 婚姻狀況 | string | 單身、未婚、離異等等 |
occupation | 職業 | string | 工程師、農民、銷售等等 |
relatonship | 家庭角色 | string | 妻子、父親、沒家庭等等 |
race | 人種 | string | 亞裔、白人、黑人等等 |
sex | 性別 | string | 女性、男性 |
capital-gain | 連續資料 | double | – |
capital-loss | 連續資料 | double | – |
hours-per-week | 連續資料 | double | – |
native-country | 祖籍國家 | string | 美國、哥倫比亞、英格蘭、加拿大等等 |
目標欄位:income是否超過50k
三、資料探索流程
首先進入PAI-DSW,找到左側的Demo資料夾,下載Wide&Deep資料集及程式碼包。
(1)工程描述
首先看下整個工程,
- 包含一個census_data資料夾,裡面包含一個訓練資料和一個測試資料
- official資料夾是一個工具包
- census_main.py為訓練指令碼
(2)訓練模型
開啟一個terminal環境,執行
python census_main.py --export_dir wide_deep_saved_model
wide_deep_saved_model為輸出模型所在的資料夾,訓練完在檔案目錄下會找到相應檔案,開啟後可以看到checkpoint:
把這個checkpoint的號記住。
(3)模型預測
現在已經生成了模型的checkpoint輸出,接下來進入terminal,執行以下指令碼:
saved_model_cli run --dir wide_deep_saved_model/${模型checkpoint號碼}/ --tag_set serve --signature_def="predict" --input_examples=`${預測資料}`
根據本文的案例可以執行以下指令碼拿到預測結果:
saved_model_cli run --dir wide_deep_saved_model/1542168326/ --tag_set serve --signature_def="predict" --input_examples=`examples=[{"age":[46.], "education_num":[10.], "capital_gain":[7688.], "capital_loss":[0.], "hours_per_week":[38.]}, {"age":[24.], "education_num":[13.], "capital_gain":[0.], "capital_loss":[0.], "hours_per_week":[50.]}]`
輸入了兩條預測資料,最終拿到預測結果:
輸入了兩條預測資料,可以得到預測輸出,第一條預測結果為1,第二條結果為0,可以通過output key probabilities判斷(注:矩陣第一行對應第一個預測結果,第二列0.9599956>第一列0.04000434,所以第一個預測結果是1。同理第二個預測結果是0)。
可以通過程式碼official/wide_deep/census_dataset.py來看具體的特徵工程的特徵和目標值的構建,目標列>50k時目標值為1,目標列<50k時目標值為0。
於是預測結果第一條的人的預測收入為>50k,預測結果第二條的人的預測收入<50k。
(4)模型線上部署
生成的模型是Tensorflow的標準模型格式,可以通過PAI-EAS將模型部署成Http服務供呼叫。
後續流程可以參考線上預測文件:https://help.aliyun.com/document_detail/92917.html
部署成線上服務之後,這樣就可以做到模型跟使用者自身的業務結合,完成PAI模型訓練和業務應用的打通。
相關文章
- 《推薦系統》-Wide&DeepIDE
- 基於深度學習的圖書管理推薦系統(附python程式碼)深度學習Python
- 問題解決:構建基於深度學習架構的推薦系統!深度學習架構
- Spotify 每週推薦功能:基於機器學習的音樂推薦機器學習
- 基於Keras和Gunicorn+Flask部署深度學習模型KerasFlask深度學習模型
- 機器學習/深度學習書單推薦及學習方法機器學習深度學習
- 構建基於深度學習神經網路協同過濾模型(NCF)的影片推薦系統(Python3.10/Tensorflow2.11)深度學習神經網路模型Python
- 基於Theano的深度學習框架keras及配合SVM訓練模型深度學習框架Keras模型
- 【推薦】最常用的Python機器學習及深度學習庫合集!Python機器學習深度學習
- 關於深度學習的8大免費必讀經典書目推薦!深度學習
- 用深度學習打造自己的音樂推薦系統深度學習
- 基於pytorch的深度學習實戰PyTorch深度學習
- 基於TensorFlow的深度學習實戰深度學習
- 在表格中基於樹的模型與深度學習優劣對比模型深度學習
- 實戰 | 基於深度學習模型VGG的影象識別(附程式碼)深度學習模型
- 基於物件特徵的推薦物件特徵
- 深度學習模型深度學習模型
- 學習Django的推薦Django
- 【機器學習基礎】關於深度學習的Tips機器學習深度學習
- 推薦閱讀《Tensorflow:實戰Google深度學習框架》Go深度學習框架
- 深度學習實驗資料集網站推薦深度學習網站
- 《Tensorflow:實戰Google深度學習框架》圖書推薦Go深度學習框架
- 推薦系統實踐 0x09 基於圖的模型模型
- 深度學習之雙DNN排序模型:線上知識蒸餾在愛奇藝推薦的實踐深度學習DNN排序模型
- 深度學習|基於MobileNet的多目標跟蹤深度學習演算法深度學習演算法
- 深度學習中的Normalization模型深度學習ORM模型
- 推薦閱讀《21個專案玩轉深度學習》深度學習
- 深度學習在推薦系統中的應用綜述(最全)深度學習
- 《深度學習案例精粹:基於TensorFlow與Keras》案例集用於深度學習訓練深度學習Keras
- 基於深度學習的醫學影像配準學習筆記2深度學習筆記
- Analytic Zoo的深度學習對MasterCard的推薦AI服務的優化深度學習ASTAI優化
- RecSys提前看 | 深度學習在推薦系統中的最新應用深度學習
- YouTube深度學習推薦系統的十大工程問題深度學習
- 解決日常“書荒”:深度學習書籍推薦瞭解下!深度學習
- Docker部署深度學習模型Docker深度學習模型
- 基於深度學習的單通道語音增強深度學習
- 基於TensorFlow Serving的深度學習線上預估深度學習
- 基於深度學習的影像超解析度重建深度學習