CTR模型介紹
點擊率(click-through rate, CTR)預估是搜尋平台的核心任務之一。它所解決的問題是:給定一個user和一個query,以及與該query所匹配的doc,預測這些doc曝光之後獲得點擊的機率。這個機率值可以用於排序指令碼中,用來提升搜尋效果,提升ctr等業務指標。
優勢/情境
為了更好的滿足使用者多情境、多樣化的搜尋排序業務需求,OpenSearch推出了CTR模型功能,可以實現個人化、千人千面的搜尋排序效果。
建立並訓練模型
建立行業模板,之後進入OpenSearch控制台頁面,左側導覽列選擇:搜尋演算法中心>排序配置>CTR預估模型,然後點擊建立按鈕:

建立CTR預估模型,填寫模型名稱,設定訓練欄位:

映射訓練欄位:(目前商品ID,和商品標題是必選項,其他欄位設定的越多,模型效果越好)

模型建立完成後,在CTR預估模型列表頁,找到剛建立的模型,在右側操作欄中點擊“訓練模型”:

開始訓練後,可在CTR預估模型詳情頁,可查看模型訓練進度:

訓練完成後,若模型狀態會變為可用狀態,即可進行使用(若模型狀態為不可用,請根據資料校正的完整度等級的升級條件進行調整,滿足要求後,第二天再訓練即可,若還有問題,可以提工單聯絡技術同學):

定時訓練周期建議設定為每天。
搜尋測試
建立一個cava類型的業務排序策略:

填寫策略名稱稱,應用範圍選取業務排序,類型選擇cava指令碼:

點擊添加檔案,將cava指令碼樣本貼到指令碼代碼中,點擊編譯,如提示編譯成功,點擊儲存、發布後即可進行
搜尋測試:


cava指令碼樣本如下:
package users.scorer;
import com.aliyun.opensearch.cava.framework.OpsScoreParams;
import com.aliyun.opensearch.cava.framework.OpsScorerInitParams;
import com.aliyun.opensearch.cava.framework.OpsRequest;
import com.aliyun.opensearch.cava.framework.OpsDoc;
import com.aliyun.opensearch.cava.features.algo.AlgoModel;
class BasicSimilarityScorer {
boolean init(OpsScorerInitParams params) {
return true;
}
double score(OpsScoreParams params) {
double score = 0;
return score;
}
};
class IntelligenceAlgorithmScorer {
AlgoModel _algoModel;
boolean init(OpsScorerInitParams params) {
//注意tf_checkpoint 為固定參數
_algoModel = AlgoModel.create(params, "tf_checkpoint","ctr", "這裡換成你的ctr模型名稱");
return true;
}
double score(OpsScoreParams params) {
OpsDoc doc = params.getDoc();
double modelScore = _algoModel.evaluate(params);
doc.trace("ctrModelScore: ", modelScore);
double score = modelScore + 700;
return score;
}
};進行搜尋測試:

注意:
second_rank_type 、second_rank_name 、raw_query 是必要參數,搜尋請求時必須配置;
如果行為資料以及查詢時都上傳了user_id 參數,模型的打分效果會更好;
CTR模型詳情頁說明
基本資料
可查看模型的建立時間、狀態、最後訓練開始時間以及最新版本狀態。

配置資訊
訓練欄位:點擊“映射訓練欄位”後,彈出映射訓練欄位選框,可以修改或刪除模型訓練欄位,修改訓練欄位後需重新訓練模型才會生效:

定時訓練:預設開啟並每天訓練一次,也可以編輯定時任務,自訂訓練周期。

資料校正
資料完整度狀態包含可用、資料異常;
完整度報告顯示當前應用的完整度等級,具體完整度等級可見:
資料完整度 | 介紹 | 晉陞條件 |
l0 | 表示資料完全不可用,缺少必要的核心欄位,資料量太少,後續的資料處理不能繼續進行 | l0-->l1:
|
l1 | 表示資料的核心欄位已經具備,滿足最基本的允入準則,但行為資料仍存在欄位缺失和資料量不足的問題,部分不依賴行為資料的最佳化可以進行,全面的最佳化還需要繼續解決行為資料的問題 | l1-->l2:
|
l2 | 表示資料品質滿足要求,後續的最佳化可以正常進行,但資料量較小,對最佳化的最終效果存在一定影響 | l2-->l3:
|
l3 | 表示資料品質和資料量達到合理的水平,具備了正常最佳化的前提條件 | l3-->l4:
|
l4 | 表示資料規模較大,資料量充足,達到千萬級,資料完整度水平較高 | l4-->l5:
|
l5 | 表示資料規模很大,資料量很充足,達到億級以上,具備深度最佳化的條件 |
ipv表示每次搜尋的點擊率,即bhv_type=click;
有上報曝光行為事件且數量大於ipv數量,表示bhv_type=expose的數量大於bhv_type=click的數量(補充:使用者有點擊某商品,說明該商品一定有曝光,此處該條行為資料需要上傳2次,即bhv_type=click和bhv_type=expose都需要上傳)
注意事項
現階段僅支援CTR模型在Cava外掛程式中使用;
現階段僅支援獨享叢集規格的執行個體建立CTR模型;
每個執行個體最多支援3個CTR模型;
訓練欄位越多,模型訓練效果越好;
訓練晉陞條件中的raw_query是搜尋請求時需要攜帶的參數,並且要求是獨立的、有召回結果的、非重複的查詢詞,具體用法可參考Java SDK 搜尋Demo;
相關API/SDK參考:演算法周邊。