Modellutvärdering

Förutsäga CTR med maskininlärning i Python

Kevin Huo

Instructor

Precision och recall

  • Precision: ROI på annonskostnader via klick

    • Låg precision ger litet påtagligt ROI på klick
  • Recall: når rätt målgrupp

    • Låg recall innebär missade ROI-möjligheter
  • Det kan vara klokt att vikta de två olika

    • Företag bryr sig troligen mer om att undvika låg precision än låg recall
Förutsäga CTR med maskininlärning i Python

F-beta-score

$$F_\beta = (1+\beta^2)\cdot\frac{\text{precision}\cdot\text{recall}}{(\beta^2 \cdot \text{precision}) + \text{recall}}$$

  • Betakoefficient: representerar den relativa viktningen av de två måtten

    • Beta mellan 0 och 1 innebär att precision minskas och därmed viktas mer, medan beta > 1 innebär att precision ökas och därmed viktas mindre
  • Finns i sklearn via: fbeta_score(y_true, y_pred, beta=beta)

    • y_true är sanna målvärden och y_pred de predikterade målvärdena
Förutsäga CTR med maskininlärning i Python

AUC för ROC-kurvan kontra precision

roc_auc = roc_auc_score(y_test, y_score[:, 1])

fpr = 1 - tn / (tn + fp)
precision = tp / (tp + fp)
  • Obalanserad datamängd: fpr kan vara lågt även när precision är lågt.
  • Antag att vi har 100 TN, 10 TP och 10 FP.
fpr = 1 - 100 / (100 + 10) = 0.091
precision = tp / (tp + fp) = 0.5
  • Lågt FPR kan ge hög AUC för ROC-kurvan trots att precision är lågt! Det är därför viktigt att titta på båda måtten, tillsammans med F-beta score
Förutsäga CTR med maskininlärning i Python

ROI på annonskostnader

  • Samma idé som tidigare: en kostnad c och en avkastning r
total_return = tp * r
total_spent = (tp + fp) * cost
roi = total_return / total_spent 
    = (tp) / (tp + fp) * (r / cost) 
    = precision * (r / cost)
Förutsäga CTR med maskininlärning i Python

Nu kör vi en övning!

Förutsäga CTR med maskininlärning i Python

Preparing Video For Download...