데이터 테이블 수식을 사용하여 모든 수준의 계수 (C1)에서 sum_logloss (아래 참조)를 계산하려고합니다. 그러나 그 결과는 내가 기대하는 바가 아니다. 다음은 내가 얻은 결과와 왜 다른 sum_logloss를 결과로 기대하는지 보여주는 작은 예제입니다.R data.table를 사용하여 계수의 수준에서 변수로 열을 사용하는 수식을 계산합니다.
LogLoss <- function(actual, predicted, eps=0.00001) {
predicted <- pmin(pmax(predicted, eps), 1-eps)
-1/length(actual)*(sum(actual*log(predicted)+(1-actual)*log(1-predicted)))
}
# THIS RETURNS TOTAL LOGLOSS
TotalLogLossVector <- function(actual_vector, predicted_vector) {
sum(mapply(LogLoss, actual_vector, predicted_vector))
}
df = data.frame(C1=c(1,1,2,2,1), C2=c(4,5,4,5,5), click=c(1,0,0,1,1))
df <- data.table(df)
df
C1 C2 click
1: 1 4 1
2: 1 5 0
3: 2 4 0
4: 2 5 1
5: 1 5 1
df[,list(mean_CTR=mean(click),count=.N, sum_logloss=TotalLogLossVector(click,rep(mean_CTR,.N))),by=C1]
C1 mean_CTR count sum_logloss
1: 1 0.6666667 3 3.663061
2: 2 0.5000000 2 1.928626
LogLoss(1,0.6666667)
[1] 0.4054651
LogLoss(0,0.6666667)
[1] 1.098612
TotalLogLossVector(c(1,0,1), c(0.6666667,0.6666667,0.6666667))
[1] 1.909543
그래서 2 * LogLoss (1,0.6666667) + 1 * LogLoss (0,0.6666667) = 1.909543, 그리고 3.663061되어야 C1 = 1 sum_logloss.
투손, 나는 당신이 data.table 태그 아래에 몇 가지 대답을 수락하지 않은 것을 참조하십시오 : [질문] (http://stackoverflow.com/q/24997556/ 559784), [Q2] (http://stackoverflow.com/q/23760455/559784), [Q3] (http://stackoverflow.com/q/23474094/559784), [Q4] (http : // stackoverflow .com/q/23471316/559784). 나는 당신이 따라 한 어떤 이슈도 보지 못합니다. 당신이 받아들이지 않은 특별한 이유가 있습니까? 또한 아콘의 대답을 제거한 것처럼 보입니다 ... 궁금합니다. – Arun
@Arun 네, 저의 경우, 종종 답이 맞는지 다시 확인하고 때로는 돌아와서 확인하는 시간이 필요하지 않습니다. – tucson
투손, 알겠습니다. 좋습니다. 그렇지만 후속 조치를 통해 질문에 대답 할 수 있다면 정말 좋을 것입니다. 고맙습니다. 감사합니다. – Arun