TensorFlow, TFX, TFMA: точность не соответствует TP + TN / num_samples - PullRequest
0 голосов
/ 11 октября 2019

Я работаю с этим интерактивным конвейером TFX https://github.com/tensorflow/tfx/blob/master/tfx/examples/chicago_taxi_pipeline/taxi_pipeline_interactive.ipynb и применяю его к своим собственным данным.

Я не понимаю, как вычисляется точность. Когда я запускаю tfma.view.render_slicing_metrics(tfma_result), я получаю точность 0,39 по 58 оценочным записям. Я также получаю FN = 0, FP = 43, TN = 10 и TP = 5. Точность должна быть 15/58 = 0,26. Я добавил еще один показатель точности (my_acc ниже), и в нем говорится, что точность равна 0,91.

Что я делаю не так? Вот код, который добавляет метрики к оценщику:

def add_confusion_matrix(estimator: tf.estimator.Estimator) -> tf.estimator.Estimator:
    def my_fp(labels, predictions):
        metric = tf.metrics.false_positives(labels, predictions['logistic'])
        return {'my_fp':metric}
    def my_tp(labels, predictions):
        metric = tf.metrics.true_positives(labels, predictions['logistic'])
        return {'my_tp':metric}
    def my_fn(labels, predictions):
        metric = tf.metrics.false_negatives(labels, predictions['logistic'])
        return {'my_fn':metric}
    def my_tn(labels, predictions):
        metric = tf.metrics.true_negatives(labels, predictions['logistic'])
        return {'my_tn':metric}
    def my_acc(labels, predictions):
        metric = tf.metrics.accuracy(labels, predictions['logistic'])
        return {'my_acc':metric}
    estimator = tf.estimator.add_metrics(estimator, my_fp)
    estimator = tf.estimator.add_metrics(estimator, my_tp)
    estimator = tf.estimator.add_metrics(estimator, my_fn)
    estimator = tf.estimator.add_metrics(estimator, my_tn)
    estimator = tf.estimator.add_metrics(estimator, my_acc)
    return estimator

Если я использую predictions['class_ids'], тогда моя точность (my_acc) соответствует (tp + tn) / num, но все равно не соответствуетстандартная точность, которая исходит из оценки. Weird.

...