22_ad_model_predict_auc.sh 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #!/bin/sh
  2. # 训练新模型,并使用后面的数据计算AUC,评估模型效果
  3. set -x
  4. begin_date=$1
  5. end_date=$2
  6. model_name=$3
  7. predict_dim=$4
  8. PROJECT_HOME=/root/zhaohp/20240723
  9. HADOOP=/opt/apps/HADOOP-COMMON/hadoop-common-current/bin/hadoop
  10. HDFS_TRAIN_DATE_PATH=/dw/recommend/model/33_ad_train_data_v4_idn1
  11. MODEL_PATH=${PROJECT_HOME}/model
  12. PREDICT_PATH=${PROJECT_HOME}/predict
  13. FM_TRAIN=/root/sunmingze/alphaFM/bin/fm_train
  14. FM_PREDICT=/root/sunmingze/alphaFM/bin/fm_predict
  15. train_date=$begin_date
  16. # 计算模型的AUC,从训练日期的后一天到参数的end_date
  17. predict_auc() {
  18. echo -e "\t==================== 开始预测 $train_date 模型 ===================="
  19. predict_date=$(date -d "$train_date +1 day" +%Y%m%d)
  20. predict_end_date=$(date -d "$end_date +1 day" +%Y%m%d)
  21. while [ "$predict_date" != "$predict_end_date" ]; do
  22. $HADOOP fs -text ${HDFS_TRAIN_DATE_PATH}/${predict_date}/* | ${FM_PREDICT} -m ${MODEL_PATH}/${model_name}_${train_date}.txt -dim ${predict_dim} -core 8 -out ${PREDICT_PATH}/${model_name}_${train_date}.txt
  23. auc=`cat ${PREDICT_PATH}/${model_name}_${train_date}.txt | /root/sunmingze/AUC/AUC`
  24. echo "模型训练日期: ${train_date}, 模型预测日期: ${predict_date}, AUC: ${auc}, 模型路径: ${MODEL_PATH}/${model_name}_${train_date}.txt"
  25. predict_date=$(date -d "$predict_date +1 day" +%Y%m%d)
  26. done
  27. echo -e "\n\t==================== 预测 $train_date 模型结束 ===================="
  28. }
  29. main() {
  30. # 增量训练模型
  31. while [ "$train_date" != "$end_date" ]; do
  32. echo "==================== 开始训练 $train_date 模型 ===================="
  33. predict_auc
  34. echo -e "==================== 训练 $train_date 模型结束 ==================== \n\n\n\n\n\n"
  35. train_date=$(date -d "$train_date +1 day" +%Y%m%d)
  36. done
  37. }
  38. main
  39. # nohup ./22_ad_model_predict_auc.sh 20240712 20240717 model_bkb8_v4_idn1 8 > logs/22_ad_model_predict_auc.log 2>&1 &