評分寬和深度推薦
本文說明如何使用 Azure 機器學習 設計工具中的 Wide 和 Deep Recommender 元件,根據 Google 的 Wide 和深度學習,根據定型的建議模型建立預測。
Wide 和 Deep 推薦工具可以產生兩種不同的預測:
建立后一種預測時,您可以在生產模式或評估模式中操作。
生產模式 會考慮所有使用者或專案,而且通常用於 Web 服務。 您可以為新使用者建立分數,而不只是訓練期間看到的使用者。
評估模式 會在一組可評估的使用者或項目上運作,而且通常會在實驗期間使用。
如需Wide和Deep recommender及其基礎理論的詳細資訊,請參閱相關研究論文: Wide and Deep Learning for Recommender Systems。
如何設定「寬分」和「深度推薦」
此元件支援不同類型的建議,每個建議都有不同的需求。 按兩下您擁有之資料類型的連結,以及您想要建立的建議類型。
預測評等
當您預測評等時,模型會根據定型數據,計算指定使用者對特定項目的反應。 因此,評分的輸入數據必須同時提供使用者和要評分的專案。
將定型的Wide和Deep建議模型新增至您的實驗,並將其聯機至 已定型的Wide和Deep建議模型。 您必須使用 定型 Wide 和 Deep Recommender 來建立模型。
推薦預測種類:選取 [評等預測]。 不需要進一步的參數。
新增您想要進行預測的數據,並將其連線至 數據集以評分。
若要預測評等,輸入數據集必須包含用戶專案組。
數據集可以包含第一個和第二個數據行中用戶專案組的選擇性第三欄評等,但在預測期間會忽略第三個數據行。
(選擇性)。 如果您有使用者功能的數據集,請將其連線至 使用者功能。
使用者功能的數據集應該在第一個數據行中包含使用者標識碼。 其餘數據行應包含可描述用戶特徵的值,例如其性別、喜好設定、位置等。
已對訓練數據集中已評分專案的使用者功能,因為已在訓練期間學習,所以 分數寬和深度推薦會忽略。 因此,事先篩選您的數據集,只 包含非啟動使用者,或未評等任何項目的使用者。
警告
如果模型未使用使用者功能來定型,則無法在評分期間引進使用者功能。
如果您有專案功能的數據集,您可以將它連線到 專案功能。
專案特徵數據集必須包含第一個數據行中的專案標識碼。 其餘數據行應該包含描述項目特徵的值。
定型數據集中評分專案的功能會忽略 分數寬和深度推薦, 因為它們已在訓練期間學習。 因此,請將評分數據集限制為 冷啟動專案,或任何使用者未評分的專案。
警告
如果模型未使用專案功能來定型,則無法在評分期間引進專案功能。
執行實驗。
評分預測的結果
輸出數據集包含三個數據行,其中包含使用者、專案,以及每個輸入使用者和專案的預測評等。
此外,評分期間會套用下列變更:
- 對於數值使用者或專案功能數據行,遺漏值會自動取代 為其非遺漏定型集值的平均值 。 針對類別特徵,遺漏的值會取代為與此功能任何可能值以外的相同類別值。
- 不會將任何轉譯套用至特徵值,以維持其疏疏性。
建議專案
若要建議使用者的專案,您可以提供使用者和專案清單作為輸入。 在此數據中,模型會使用現有專案和用戶的知識來產生可能吸引每個用戶的項目清單。 您可以自定義傳回的建議數目,並設定前一個建議數目的臨界值,以便產生建議。
將定型的Wide和Deep建議模型新增至您的實驗,並將其聯機至 已定型的Wide和Deep建議模型。 您必須使用 定型 Wide 和 Deep Recommender 來建立模型。
若要建議指定使用者清單的專案,請將 [推薦預測類型] 設定為 [項目建議]。
建議的項目選取:選擇下列其中一個值,指出您是否在生產環境或模型評估中使用評分元件:
- 從評分專案 (用於模型評估):如果您要開發或測試模型,請選取此選項。 此選項會啟用 評估模式,而且元件只會從已評等輸入數據集中的專案提出建議。
- 從 [所有專案]:如果您要設定實驗以用於 Web 服務或生產環境,請選取此選項。 此選項會啟用 生產模式,元件會從訓練期間看到的所有專案提出建議。
- 從 [未分級的專案] [建議新專案給使用者]:如果您想要讓元件只從尚未分級的定型數據集中的專案提出建議,請選取此選項。
新增您要進行預測的數據集,並將它連線至 數據集以評分。
如果您選擇 [從所有專案] 選項,輸入數據集應該包含一個和只有一個數據行,其中包含要提出建議的使用者標識符。
數據集可以包含額外的兩個專案標識碼和評等數據行,但忽略這兩個數據行。
如果您選擇 [ 從評分專案] 選項 (用於模型評估),輸入數據集應該包含 用戶專案組。 第一個數據行應該包含 使用者 標識碼。 第二個數據行應該包含對應的 專案 標識碼。
數據集可以包含第三個用戶專案評等數據行,但會忽略此數據行。
針對 [從未分級的專案] (若要向使用者建議新專案),輸入數據集應該包含用戶專案組。 第一個數據行應該包含使用者標識碼。 第二個數據行應該包含對應的專案標識碼。
數據集可以包含第三個用戶專案評等數據行,但會忽略此數據行。
(選擇性)。 如果您有使用者功能的數據集,請將其連線至使用者功能。
使用者功能數據集中的第一個數據行應該包含使用者標識碼。 其餘數據行應包含可描述用戶特徵的值,例如其性別、喜好設定、位置等。
評分寬和深度推薦會忽略已評分項目的使用者功能,因為這些功能已在訓練期間學習。 因此,您可以事先篩選數據集,只 包含冷啟動使用者,或未評等任何項目的使用者。
警告
如果模型未使用使用者功能來定型,則無法在評分期間使用套用功能。
(選擇性)如果您有專案功能的數據集,您可以將它連線到專案功能。
專案功能數據集中的第一個數據行必須包含專案標識碼。 其餘數據行應該包含描述項目特徵的值。
評分寬和深度推薦會忽略評分專案的功能,因為這些功能已在定型期間學習。 因此,您可以將評分數據集限制為 冷啟動專案,或未由任何使用者評等專案。
警告
如果模型未使用專案功能來定型,則評分時請勿使用專案功能。
建議給用戶的項目數目上限:輸入每個使用者要傳回的項目數。 根據預設,建議使用5個專案。
每個使用者的建議集區大小下限:輸入值,指出需要多少個先前的建議。 根據預設,此參數會設定為 2,這表示至少兩個其他使用者必須建議專案。
只有在評估模式中評分時,才應該使用此選項。 如果您選取 [從所有專案] 或 [從未分級的專案] (向使用者建議新專案),則無法使用此選項。
針對 [ 從未分級的專案] (若要向使用者建議新專案),請使用名為 Training Data 的第三個輸入埠來移除已從預測結果中評分的專案。
若要套用此篩選,請將原始定型數據集連接到輸入埠。
執行實驗。
項目建議的結果
評分寬和深度推薦所傳回的評分數據集會列出每個用戶的建議專案。
- 第一個數據行包含使用者識別碼。
- 系統會根據您為 [要建議給用戶的項目數目上限] 設定的值,產生一些額外的數據行。 每個數據行都包含建議的專案(依標識符)。 建議會依用戶專案親和性排序,且專案具有最高親和性放在數據行專案 1 中。
技術注意事項
本節包含使用Wide和Deep推薦來建立預測的一些常見問題的解答。
冷啟動用戶和建議
一般而言,若要建立建議, 「分數寬」和「深度推薦」 元件需要您定型模型時所使用的相同輸入,包括使用者標識符。 這是因為演算法需要知道該演算法是否已在訓練期間瞭解此使用者的相關內容。
不過,對於新使用者,您可能沒有使用者標識碼,只有某些使用者功能,例如年齡、性別等等。
您仍然可以將不熟悉您系統的使用者建立建議,方法是將其當作 冷啟動用戶來處理。 對於這類使用者,建議演算法不會使用過去的歷程記錄或先前的評等,而只會使用使用者功能。
基於預測目的,冷啟動用戶會定義為標識元尚未用於定型的使用者。 若要確保標識碼與定型中使用的標識碼不符,您可以建立新的標識碼。 例如,您可能會在指定的範圍內產生隨機標識碼,或事先為冷啟動使用者配置一系列識別符。
不過,如果您沒有任何共同作業篩選數據,例如使用者功能的向量,則最好使用分類或回歸學習模組。
Wide 和 Deep 建議工具的生產使用
如果您已試驗 Wide 和 Deep recommender,然後將模型移至生產環境,請在評估模式和生產模式中使用推薦工具時注意這些主要差異:
根據定義,評估需要針對測試集中的基礎真相進行驗證的預測。 因此,當您評估推薦程式時,它必須只預測測試集中已評等的專案。 這必然會限制預測的可能值。
不過,當您操作模型時,通常會變更預測模式,根據所有可能的專案提出建議,以取得最佳預測。 對於其中許多預測,沒有對應的基礎真相,因此建議的正確性無法以與實驗期間相同的方式進行驗證。
如果您未在生產環境中提供使用者標識碼,而且只提供特徵向量,您可能會得到所有可能使用者的所有建議響應清單。 請務必提供使用者標識碼。
若要限制傳回的建議數目,您也可以指定每位用戶傳回的項目數目上限。