|
@@ -4,7 +4,6 @@ package com.tzld.piaoquan.ad.engine.service.score;
|
|
import com.tzld.piaoquan.ad.engine.commons.score.BaseLRModelScorer;
|
|
import com.tzld.piaoquan.ad.engine.commons.score.BaseLRModelScorer;
|
|
import com.tzld.piaoquan.ad.engine.commons.score.ScoreParam;
|
|
import com.tzld.piaoquan.ad.engine.commons.score.ScoreParam;
|
|
import com.tzld.piaoquan.ad.engine.commons.score.ScorerConfigInfo;
|
|
import com.tzld.piaoquan.ad.engine.commons.score.ScorerConfigInfo;
|
|
-import com.tzld.piaoquan.ad.engine.commons.score.model.CvrAdjustingModel;
|
|
|
|
import com.tzld.piaoquan.ad.engine.commons.score.model.LRModel;
|
|
import com.tzld.piaoquan.ad.engine.commons.score.model.LRModel;
|
|
import com.tzld.piaoquan.recommend.feature.domain.ad.base.*;
|
|
import com.tzld.piaoquan.recommend.feature.domain.ad.base.*;
|
|
import com.tzld.piaoquan.recommend.feature.domain.ad.feature.VlogAdCtrLRFeatureExtractor;
|
|
import com.tzld.piaoquan.recommend.feature.domain.ad.feature.VlogAdCtrLRFeatureExtractor;
|
|
@@ -15,7 +14,6 @@ import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
-import java.util.Collections;
|
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
import java.util.Objects;
|
|
import java.util.Objects;
|
|
import java.util.concurrent.*;
|
|
import java.util.concurrent.*;
|
|
@@ -33,30 +31,10 @@ public class VlogAdCvrLRScorer extends BaseLRModelScorer {
|
|
private static final int enterFeedsScoreRatio = 10;
|
|
private static final int enterFeedsScoreRatio = 10;
|
|
private static final int enterFeedsScoreNum = 20;
|
|
private static final int enterFeedsScoreNum = 20;
|
|
|
|
|
|
- // 校准策略数据的OSS文件路径
|
|
|
|
- public static final String OSS_FILE_PATH = "ad_cvr_model/cvr_adjusting_strategy_coefficient.txt";
|
|
|
|
-
|
|
|
|
-
|
|
|
|
public VlogAdCvrLRScorer(ScorerConfigInfo configInfo) {
|
|
public VlogAdCvrLRScorer(ScorerConfigInfo configInfo) {
|
|
super(configInfo);
|
|
super(configInfo);
|
|
}
|
|
}
|
|
|
|
|
|
- /**
|
|
|
|
- * 因CVR有校验策略,除了加载CVR自己的Model外还需要加载校准策略的数据Model
|
|
|
|
- * <br />
|
|
|
|
- * 故在此重写loadModel方法,加载校验策略的Model
|
|
|
|
- */
|
|
|
|
- @Override
|
|
|
|
- public void loadModel() {
|
|
|
|
- super.loadModel();
|
|
|
|
- try {
|
|
|
|
- modelManager.registerModel(OSS_FILE_PATH, OSS_FILE_PATH, CvrAdjustingModel.class);
|
|
|
|
- } catch (
|
|
|
|
- Exception e) {
|
|
|
|
- LOGGER.error("加载校准策略数据异常: ", e);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
@Override
|
|
@Override
|
|
public List<AdRankItem> scoring(final ScoreParam param,
|
|
public List<AdRankItem> scoring(final ScoreParam param,
|
|
final UserAdFeature userFeature,
|
|
final UserAdFeature userFeature,
|
|
@@ -90,10 +68,8 @@ public class VlogAdCvrLRScorer extends BaseLRModelScorer {
|
|
UserAdBytesFeature userInfoBytes = null;
|
|
UserAdBytesFeature userInfoBytes = null;
|
|
userInfoBytes = new UserAdBytesFeature(user);
|
|
userInfoBytes = new UserAdBytesFeature(user);
|
|
|
|
|
|
- CvrAdjustingModel adjustingModel = (CvrAdjustingModel) modelManager.getModel(OSS_FILE_PATH);
|
|
|
|
-
|
|
|
|
// 所有都参与打分,按照cvr排序
|
|
// 所有都参与打分,按照cvr排序
|
|
- multipleScore(items, userInfoBytes, requestContext, model, adjustingModel);
|
|
|
|
|
|
+ multipleScore(items, userInfoBytes, requestContext, model);
|
|
|
|
|
|
// debug log
|
|
// debug log
|
|
if (LOGGER.isDebugEnabled()) {
|
|
if (LOGGER.isDebugEnabled()) {
|
|
@@ -115,8 +91,7 @@ public class VlogAdCvrLRScorer extends BaseLRModelScorer {
|
|
public double calcScore(final LRModel lrModel,
|
|
public double calcScore(final LRModel lrModel,
|
|
final AdRankItem item,
|
|
final AdRankItem item,
|
|
final UserAdBytesFeature userInfoBytes,
|
|
final UserAdBytesFeature userInfoBytes,
|
|
- final AdRequestContext requestContext,
|
|
|
|
- final CvrAdjustingModel adjustingModel) {
|
|
|
|
|
|
+ final AdRequestContext requestContext) {
|
|
|
|
|
|
LRSamples lrSamples = null;
|
|
LRSamples lrSamples = null;
|
|
VlogAdCtrLRFeatureExtractor bytesFeatureExtractor;
|
|
VlogAdCtrLRFeatureExtractor bytesFeatureExtractor;
|
|
@@ -137,14 +112,6 @@ public class VlogAdCvrLRScorer extends BaseLRModelScorer {
|
|
try {
|
|
try {
|
|
pro = lrModel.score(lrSamples);
|
|
pro = lrModel.score(lrSamples);
|
|
|
|
|
|
- // CVR校准
|
|
|
|
- Double coef = adjustingModel.getAdjustingCoefficien(pro);
|
|
|
|
- if (Objects.nonNull(coef)) {
|
|
|
|
- LOGGER.info("[VlogAdCvrLRScorer.cvr adjusting] before: {}", pro);
|
|
|
|
- pro = pro / coef;
|
|
|
|
- LOGGER.info("[VlogAdCvrLRScorer.cvr adjusting] after: {}, coef: {}", pro, coef);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
LOGGER.error("score error for doc={} exception={}", new Object[]{
|
|
LOGGER.error("score error for doc={} exception={}", new Object[]{
|
|
item.getAdId(), ExceptionUtils.getFullStackTrace(e)});
|
|
item.getAdId(), ExceptionUtils.getFullStackTrace(e)});
|
|
@@ -167,8 +134,7 @@ public class VlogAdCvrLRScorer extends BaseLRModelScorer {
|
|
private void multipleScore(final List<AdRankItem> items,
|
|
private void multipleScore(final List<AdRankItem> items,
|
|
final UserAdBytesFeature userInfoBytes,
|
|
final UserAdBytesFeature userInfoBytes,
|
|
final AdRequestContext requestContext,
|
|
final AdRequestContext requestContext,
|
|
- final LRModel model,
|
|
|
|
- final CvrAdjustingModel adjustingModel) {
|
|
|
|
|
|
+ final LRModel model) {
|
|
|
|
|
|
List<Callable<Object>> calls = new ArrayList<Callable<Object>>();
|
|
List<Callable<Object>> calls = new ArrayList<Callable<Object>>();
|
|
for (int index = 0; index < items.size(); index++) {
|
|
for (int index = 0; index < items.size(); index++) {
|
|
@@ -178,7 +144,7 @@ public class VlogAdCvrLRScorer extends BaseLRModelScorer {
|
|
@Override
|
|
@Override
|
|
public Object call() throws Exception {
|
|
public Object call() throws Exception {
|
|
try {
|
|
try {
|
|
- calcScore(model, items.get(fIndex), userInfoBytes, requestContext, adjustingModel);
|
|
|
|
|
|
+ calcScore(model, items.get(fIndex), userInfoBytes, requestContext);
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
LOGGER.error("ctr exception: [{}] [{}]", items.get(fIndex).adId, ExceptionUtils.getFullStackTrace(e));
|
|
LOGGER.error("ctr exception: [{}] [{}]", items.get(fIndex).adId, ExceptionUtils.getFullStackTrace(e));
|
|
}
|
|
}
|