Bitte verzeih mir mein gebrochenes Englisch. Dies ist der Code.Was bedeutet dieser Codeabschnitt für die Berechnung von auc in ctr-Vorhersage?
def scoreClickAUC(num_clicks, num_impressions, predicted_ctr):
"""
Calculates the area under the ROC curve (AUC) for click rates
Parameters
----------
num_clicks : a list containing the number of clicks
num_impressions : a list containing the number of impressions
predicted_ctr : a list containing the predicted click-through rates
Returns
-------
auc : the area under the ROC curve (AUC) for click rates
"""
i_sorted = sorted(range(len(predicted_ctr)),key=lambda i: predicted_ctr[i],
reverse=True)
auc_temp = 0.0
click_sum = 0.0
old_click_sum = 0.0
no_click = 0.0
no_click_sum = 0.0
# treat all instances with the same predicted_ctr as coming from the
# same bucket
last_ctr = predicted_ctr[i_sorted[0]] + 1.0
for i in range(len(predicted_ctr)):
if last_ctr != predicted_ctr[i_sorted[i]]:
auc_temp += (click_sum+old_click_sum) * no_click/2.0
old_click_sum = click_sum
no_click = 0.0
last_ctr = predicted_ctr[i_sorted[i]]
no_click += num_impressions[i_sorted[i]] - num_clicks[i_sorted[i]]
no_click_sum += num_impressions[i_sorted[i]] - num_clicks[i_sorted[i]]
click_sum += num_clicks[i_sorted[i]]
auc_temp += (click_sum+old_click_sum) * no_click/2.0
auc = auc_temp/(click_sum * no_click_sum)
return auc
Ich bin verwirrt mit der Bedeutung des Absatzes "(click_sum + old_click_sum) * no_click/2.0" .please mir zu helfen.
Es bedeutet, nehmen Sie den Durchschnitt des aktuellen Wertes von 'click_sum' und seinen vorherigen Wert (von der vorherigen' i' Schleife), und multiplizieren Sie dann den Durchschnitt mit 'no_click'. Beantwortet das deine Frage? Wenn nicht, bitte klären Sie durch Aktualisierung Ihrer Frage, um genauer zu sein :) – elfan
Danke für Ihren Kommentar. Aber warum die Summe von "(click_sum + old_click_sum) * no_click/2.0" über "(click_sum * no_click_sum)" bekommen auc? Ich bin verwirrt. –