02_ad_model_update_test.sh 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. #!/bin/sh
  2. set -x
  3. export PATH=$SPARK_HOME/bin:$PATH
  4. export HADOOP_CONF_DIR=/etc/taihao-apps/hadoop-conf
  5. export JAVA_HOME=/usr/lib/jvm/java-1.8.0
  6. sh_path=$(cd $(dirname $0); pwd)
  7. source ${sh_path}/00_common.sh
  8. # 评测结果保存路径,后续需要根据此文件评估是否要更新模型
  9. predict_analyse_file_path=/root/zhaohp/XGB/predict_analyse_file/20241105_351_1000_analyse.txt
  10. # 保存模型评估的分析结果
  11. old_incr_rate_avg=0
  12. new_incr_rate_avg=0
  13. top10_msg=""
  14. calc_model_predict() {
  15. local count=0
  16. local max_line=10
  17. local old_total_diff=0
  18. local new_total_diff=0
  19. top10_msg="| CID | 老模型相对真实CTCVR的变化 | 新模型相对真实CTCVR的变化 |"
  20. top10_msg+=" \n| ---- | --------- | -------- |"
  21. while read -r line && [ ${count} -lt ${max_line} ]; do
  22. # 使用 ! 取反判断,只有当行中不包含 "cid" 时才执行继续的逻辑
  23. if [[ "${line}" == *"cid"* ]]; then
  24. continue
  25. fi
  26. read -a numbers <<< "${line}"
  27. # 分数分别保存
  28. real_score_map[${numbers[0]}]=${numbers[3]}
  29. old_score_map[${numbers[0]}]=${numbers[6]}
  30. new_score_map[${numbers[0]}]=${numbers[7]}
  31. # 拼接Top10详情的飞书消息
  32. top10_msg="${top10_msg} \n| ${numbers[0]} | ${numbers[6]} | ${numbers[7]} | "
  33. # 计算top10相对误差绝对值的均值
  34. old_abs_score=$( echo "${numbers[6]} * ((${numbers[6]} >= 0) * 2 - 1)" | bc -l )
  35. new_abs_score=$( echo "${numbers[7]} * ((${numbers[7]} >= 0) * 2 - 1)" | bc -l )
  36. old_total_diff=$( echo "${old_total_diff} + ${old_abs_score}" | bc -l )
  37. new_total_diff=$( echo "${new_total_diff} + ${new_abs_score}" | bc -l )
  38. count=$((${count} + 1))
  39. done < "${predict_analyse_file_path}"
  40. old_incr_rate_avg=$( echo "scale=6; ${old_total_diff} / ${count}" | bc -l )
  41. new_incr_rate_avg=$( echo "scale=6; ${new_total_diff} / ${count}" | bc -l )
  42. echo "老模型Top10差异平均值: ${old_incr_rate_avg}"
  43. echo "新模型Top10差异平均值: ${new_incr_rate_avg}"
  44. echo "新老模型分数对比: "
  45. for cid in "${!new_score_map[@]}"; do
  46. echo "\t CID: $cid, 老模型分数: ${old_score_map[$cid]}, 新模型分数: ${new_score_map[$cid]}"
  47. done
  48. }
  49. calc_model_predict