java lambdamart库,LambdaMART 之 lambda(示例代码)
LambdaMART 之 lambda
概念
LTR 排序學習主要用于對召回結果的精排,主流使用基于pair(文檔對標記)的 LambdaMART 算法,該算法由兩部分組成:lambda + MART(GBDT:梯度提升樹)。lambda是MART求解過程使用的梯度,其物理含義是一個待排序的文檔下一次迭代應該排序的方向(向上或者向下)和強度。
pair 文檔對標記法的思想主要體現在query對應文檔的 lambda 梯度計算,文檔計算得到的 lambda 值也是 GBDT 訓練的 label,依次擬合 lambda 殘差得到最優解。
LambdaMART 訓練流程:
1. 計算 deltaNDCG 以及 lambda
2. 以 lambda 作為 label訓練一棵 regression tree
3. 在 tree 的每個葉子節點通過預測的 regression lambda值還原得到gamma(最終得分)
4. 預測所有訓練集合值(+ learningRate*gamma),重新排序打分(每個query新的base ndcg),回到步驟 1 訓練新的樹
5. 模型 NDCG 評價指標沒有改進、或者達到收斂(迭代輪次、樹的棵數)則結束訓練
lambda 梯度的意義
排序問題評價指標一般有NDCG、ERR、MAP、MRR,但是這些指標特點是不平滑、不連續,無法求梯度,因此無法直接用梯度下降法求解。
lambda 梯度:
1. 可以進行求導,所有能用梯度下降法的模型都可以使用該梯度。
2. 重新定義了梯度,賦予排序問題需要的梯度的物理意義;lambda(i)表達了doc(i)上升或者下降的強度:
* lambda >0,越大:趨于上升的方向,力度也越大(lambda 絕對值表示力度)
* lambda <0,越小:趨于下降的方向,力度也越大
lambda 計算
step first 先計算 query ?的 NDCG:
1. 根據初始 label 排序計算 query 的 dcg:
2. 根據理想的 label 排序(從大到小),重新計算 query的 idcg(即排序后的 dcg 值)
3. 計算query初始的 NDCG(original) = dcg/idcg
step second:
1. 計算 doc(i) 的與其他 doc(j) 交換位置的 deltaNDCG:
deltaNDCG(i,j) = | NDCG(original) - NDCG(swap(i,j))|
2. 計算 lambda(i),涉及的計算公式:
: 該計算公式可以理解為所有正向lambda(i,j)與所有負向lambda(i,j)之和
概率公式為邏輯回歸函數,ρ可以理解為doci比docj差的概率:
ps:訓練過程中選取最小化平方誤差和的特征分裂節點
總結
以上是生活随笔為你收集整理的java lambdamart库,LambdaMART 之 lambda(示例代码)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php常用操作数组函数,PHP自带的几个
- 下一篇: java基本类型的面试,15、基本类型常