常年混跡於網絡,相信你對各大網站和應用的「個性化推薦」系統已經再熟悉不過了。html
不過!!這一切都必須基於一個前提:這些推薦系統真的能充分了解你的喜愛,並準確推薦你真的會喜歡須要的東西!要想作到這一點可並不容易。回想一下本身的實際體驗,是否有不少時候,這些推薦系統的推薦並不合你口味的,甚至是毫無必要的,例如在你購買一款很耐用的大件產品後,反而會密集推送更多同類產品……算法
對商家來講,若是推薦系統提供的推薦內容準確率低,此類推薦可能影響用戶情緒,致使用戶參與度下降,最終引起業務營收損失。所以不少企業會編寫自定義代碼解決此類問題,即經過代碼將個性化系統針對每位用戶存儲在數據庫內的數據進行比較,藉此提供更爲準確的推薦內容,同時刪除推薦中用戶已經購買過的條目。但老實說,這一實現過程至關耗時且極易出錯。數據庫
Amazon Personalize 是一種客戶體驗個性化服務,能夠幫助開發人員經過 Amazon.com 使用的機器學習技術來構建應用程序,從而提供實時個性化推薦,而無需 ML 專業知識。api
藉助 Amazon Personalize,開發人員能夠輕鬆構建可以提供普遍的個性化體驗的應用程序,包括特定產品推薦、個性化的產品重排序和定製直銷。Amazon Personalize 是一項徹底託管型機器學習服務,超越了嚴格的基於靜態規則的推薦系統,而且能夠訓練、調整和部署定製的ML模型,以跨行業(如零售、媒體和娛樂)向客戶提供高度定製的建議。安全
最近,Amazon Personalize 服務正式迎來「推薦過濾器」(Recommendation Filters)功能。推薦過濾器可對用戶已經購買的產品、以往觀看過的視頻以及消費過的其餘數字內容進行過濾與推薦,藉此提升個性化推薦結果的準確率。網絡
基於 Amazon 公司過去20多年的個性化經驗,Amazon Personalize 使用戶可以經過個性化產品、內容推薦以及更具針對性的宣傳促銷活動提升客戶參與度。在機器學習技術的加持下,Amazon Personalize 將爲網站與應用程序生成質量更高的推薦。機器學習
更重要的是,無需任何機器學習經驗,開發人員便可直接使用簡單 API,經過數次單擊輕鬆構建起復雜的個性化功能。Amazon Personalize 將負責處理並檢查您的數據,肯定其中有意義的內容,自動選擇正確的機器學習算法,並根據數據完成自定義模型的訓練與優化。全部數據都將通過加密,在保障隱私與安全的同時,保證數據僅被用於爲用戶生成推薦。學習
推薦過濾器的設置與使用很是簡單。首先,咱們可使用 Amazon Personalize 控制檯或 API 經過 Amazon Personalize專用的 DSL(領域特定語言)建立過濾器。接下來就可使用 GetRecommendations 或 GetPersonalizedRanking API,或者經過批量推理做業以批量形式生成推薦內容。測試
本文將引導你們逐步完成在 Amazon Personalize 中設置及使用推薦過濾器的完整流程。優化
要定義及使用過濾器,咱們首先須要設置如下Personalize資源。在完成本文中的演練以前,你們須要在Amazon Personalize控制檯中按照控制檯入門指南中的說明進行操做:
{ "type": "record", "name": "Interactions", "namespace": "com.amazonaws.concierge.schema", "fields": [ { "name": "ITEM_ID", "type": "string" }, { "name": "USER_ID", "type": "string" }, { "name": "TIMESTAMP", "type": "long" }, { "name": "EVENT_TYPE", "type": "string" }, { "name": "EVENT_VALUE", "type": [ "null", "float" ] } ], "version": "1.0" }
至此咱們已經完成了 Amazon Personalize 資源的設置,接下來是對過濾器進行定義與測試。
Amazon Personalize 使用本身的領域特定語言(即過濾器表達式)以肯定須要在一組推薦中排除或包含的條目。過濾器表達式的做用域爲數據集組;你們只能使用該表達式過濾處於同一數據集組範圍內的促銷活動或解決方案版本(批量推薦)。Amazon Personalize 可以根據用戶的交互歷史記錄實現條目過濾,如下爲過濾器表達式的部分示例。
EXCLUDE itemId WHERE INTERACTIONS.event_type in ("Purchase")
EXCLUDE itemId WHERE INTERACTIONS.event_type in ("View","Click","Download")
EXCLUDE itemId WHERE INTERACTIONS.event_type in ("*")
咱們能夠對交互數據集中所包含的任意事件類型進行過濾。關於更多詳細信息,請參閱數據集與 Schema。關於過濾器定義 DSL 的更多詳細信息,請參閱相關說明文檔。
咱們可使用以前提到的 DSL 在 Amazon Personalize 控制檯上建立過濾器。要建立過濾器,請完成如下操做步驟:
建立過濾器後,咱們將進入包含過濾器詳細信息的頁面。在這裏,你們能夠查看關於過濾器的更多細節信息,包括過濾器ARN以及所建立的對應過濾器表達式。你們也能夠在此頁面上刪除過濾器,或者經過摘要頁面建立更多過濾器。
咱們還能夠經過Amazon Personalize中的createFilter API建立過濾器。關於更多詳細信息,請參閱相關說明文檔。
Amazon Personalize 控制檯可幫助用戶從 Campaigns 頁面中實時檢查實時推薦。在此頁面中,你們能夠在檢索用戶推薦的同時應用過濾器。爲此,請導航至 Campaign 選項卡;該數據集應與建立過濾器時使用的數據集相同。然後,咱們能夠測試應用過濾條件並觀察對推薦結果的影響。
如下截屏所示,爲未使用過濾器時的推薦結果。
從 Interactions 數據集處,你們能夠看到該用戶以往購買過的一些推薦條目。Interactions 數據集中包含如下數據點:
USER_ID,ITEM_ID,EVENT_TYPE,TIMESTAMP 1,2657,Purchase,964983426 1,2985,Purchase,964983034
以上數據片斷所示,表明 UserId 1已經購買過推薦內容中的第三與第四項條目。
如下截屏所示,爲在使用預約義過濾器從推薦中刪除先前購買過的條目以後,給出的推薦結果。
結果代表,過濾器已經從推薦內容中刪除了先前購買過的條目(條目 ID 2657與2985);過濾器將刪除與該用戶的事件類型 Purchase 交互過的條目。
要經過控制檯將過濾器應用於批量推薦,請參照實時推薦的相同過程。但請注意在 Create batch inference job 頁面上選擇過濾器名稱,以將先前建立的過濾器應用於本次批量推薦。
咱們也能夠將 FilterArn 做爲附加及可選參數添加至 GetRecommendations調用當中,經過 SDK 或者 API 將過濾器應用於實時推薦。使用 filterArn 做爲參數鍵,並將 filterArn 做爲其值字符串。FilterArn是 CreateFilter API 調用所返回的一條惟一標識鍵。咱們還能夠在過濾器的詳細信息頁面上找到過濾器的 ARN。
如下示例代碼爲 GetRecommendations API 的請求正文,此請求正文負責將過濾器應用於推薦結果:
{ "campaignArn": "arn:aws:personalize:us-west-2:000000000000:campaign/test-campaign", "userId": "1", "itemId": "1", "numResults": 5, "filterArn": "arn:aws:personalize:us-west-2:000000000000:filter/test-filter" }
若要在使用 SDK 時將過濾器應用於批量推薦,請在請求正文中提交 filterArn 做爲可選參數。使用 filterArn 做爲參數鍵,並將 filterArn 做爲其值字符串。
Amazon Personalize 中的推薦過濾器可幫助用戶根據業務需求對推薦內容進行微調,且咱們無需分神設計任何後處理邏輯。關於經過 Amazon Personalize 優化用戶體驗的更多詳細信息,請參閱 Amazon Personalize 是什麼?