2 votos

¿Qué indica un valor de logloss negativo?

Estoy usando la función logloss de Python proporcionada aquí y obtengo resultados de -2.99 cuando uso un algoritmo de aprendizaje automático en mi conjunto de datos. ¿Qué significa eso? ¿Las predicciones del algoritmo son malas (o) buenas? ¿Qué tan buenos o malos son?

Este es el código que estoy usando. (También soy nuevo en Python, ¿tal vez mis entradas a la función están totalmente equivocadas?)

    dataset = pd.read_csv('../training.csv')

    cols = dataset[dataset.columns]
    cols.drop(['tobepredicted'], axis=1, inplace=True)
    cols.drop('ID', axis=1, inplace=True)
    features = cols.columns

    target = dataset['tobepredicted']
    train = dataset[features]
    cfr = SVR(C=100, kernel="poly", degree=3)

    #Validación cruzada simple de K-Fold. 5 divisiones.
    cv = cross_validation.KFold(len(train), n_folds=5)

    N = len(dataset)
    l = range(N)

    results = []
    for traincv, testcv in cv:
        trainLen = len(traincv)
        shuffle(l)
        probas = cfr.fit(train.ix[l[:trainLen]], target.ix[l[:trainLen]]).predict(train.ix[l[trainLen:]])
        results.append(llfun(target.ix[l[trainLen:]], probas))
    #imprimir la media de los resultados validados cruzadamente
    print "Resultados: " + str(np.array(results).mean())

1 votos

La fórmula a la que enlazas nunca puede ser negativa cuando se suministra una entrada válida, ¿cómo estás obteniendo $-2.99$?

0 votos

¿Te diste cuenta de que la ecuación tiene un signo menos?

2voto

AdamSane Puntos 1825

La contribución del punto $i$ a la probabilidad es $\mathcal{L}_i = p{_i}^{y_i} (1-p_i)^{1-{y_i}}$ que es tanto $p_i$ o $1-p_i$, ambos son probabilidades, por lo tanto, como máximo pueden ser $1$ y en situaciones prácticas de interés casi siempre son menores que $1$ (y mayores que $0, naturalmente).

Consecuentemente $\log(\mathcal{L}_i)\leq 0$. Una suma de números no positivos también es no positiva, por lo tanto $-\sum_i \log(\mathcal{L}_i)$ debe ser no negativa. Para que pueda ser negativa, se requeriría que un punto contribuya a una probabilidad mayor que $1$ pero esto no es posible con el Bernoulli.

(es decir, como mencionó whuber, nunca puede ser negativo; el signo negativo aplicado a un logaritmo de probabilidad de Bernoulli hace que el resultado sea no negativo)

0voto

Allen Puntos 11

Scikit implementa métricas de esta manera para que cuanto mayor sea mejor (es decir, para maximizar el puntaje). GridSearchCV siempre intenta maximizar los puntajes.

http://scikit-learn.org/stable/modules/generated/sklearn.grid_search.GridSearchCV.html

0 votos

¡Bienvenido a nuestro sitio! ¿Podría incluir una explicación de cómo este comentario aborda la pregunta sobre lo que significa la pérdida y si es buena o mala? (No está claro cómo aborda esos problemas.)

0 votos

¿Significa que +100 es bueno y -2.99 es muy malo? ¿Debería probar un algoritmo diferente al SVR para ver si obtengo un puntaje de un número positivo alto y elegir el algoritmo que dé el número positivo más alto como el mejor algoritmo para predecir valores en este conjunto de datos?

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X