2017-10-30 1 views
0

ich ein DRF-Modell mit h2o flow erzeugt verwenden. Wenn frische Eingangsdaten gegen dieses Modell läuft (mit seiner MOJO in einem Java-Programm mit den EasyPredictModelWrapper), gibt es eine große Anzahl von UnknownCategoricalLevels (Prüfung mit den getUnknownCategoricalLevelsSeen() und getUnknownCategoricalLevelsSeenPerColumn()methods).Wie UnknownCategoricalLevels die Vertrauenswerte von H2O Modellvorhersagen beeinflusst

für Meine Abhilfe war nur die Prognosen zu verwenden, die eine Vorhersage Vertrauen über einer bestimmten Schwelle (etwa 0,90) hatte. Ie. Die vom Modell ausgewählte classProbability muss größer als der zu verwendende Schwellenwert sein.

Meine Fragen sind:

  1. Ist diese Lösung verquer (.. Also geht nicht tatsächlich/Abhilfe das Problem (zB unknownlevels wirken sich nicht auf tatsächlich die Klassenwahrscheinlichkeitswerte)) oder ist es ein gültig Workaround für das Problem?
  2. Gibt es eine bessere Möglichkeit, dieses Problem anzugehen?

Danke.

Antwort

0

Die unbekannte kategorische Ebene wird für diese Spalte als NA behandelt.

Ohne die Details Ihrer Daten zu kennen (einschließlich der Kosten von False Positives und False Negatives), würde ich nicht sagen, dass Sie Schwellenzeilen, die NA haben, anders als für Zeilen, die nicht haben. (Die NA ist bereits recht gut durch DRF behandelt.)

Notiere die eingebaute Schwelle max-F1 ist (nicht 0.5). Wenn Sie also den Schwellenwert für Zeilen mit unbekannten Werten ändern, ist dies relativ zu max-F1 (nicht 0,5). Die Verwendung Ihrer eigenen Schwelle ist sicherlich ein gültiger Ansatz.

Wenn Sie Ihre Bäume visualisieren möchten leichter sehen, wie die NAs verhalten, können Sie dies den Anweisungen folgen hier:

Es gibt auch andere Strategien für den Umgang mit Es kodiert Ihre kategorische Eingabespalte wie Ziel und behandelt eine NA als durchschnittlichen Zielwert. (Damit wird effektiv eine kategorische Variable in einen numerischen einen, sondern erfordert, dass Sie Vorprozess die Daten.)

+0

Nur für zusätzliche Klarstellung, wenn Sie * sagen: "Also, wenn Sie die Schwelle für die Zeilen mit unbekannten Werten ändern, ist es in Bezug auf max-F1 (nicht 0.5). "* Meinst du das, wenn ich das MOJO des Modells im Java-Code verwenden und einen benutzerdefinierten Schwellenwert (z. B. max_mean_perclass_accuracy) von t0 mit einer Zeile wie' return (p.classProbabilities [1 ]> = t0)? 1: 0; ', dann würde das Modell tatsächlich einen Schwellenwert von maxF1 + t0 verwenden oder nur, dass der Standardgrenzwert maxF1 ist? Vielen Dank. – lampShadesDrifter

+1

Ich habe das Wort "default" in "built-in" geändert. Der MOJO weiß nur, dass max-F1 eingebacken ist. Die vorhergesagte Klasse aus dem MOJO basiert auf max-F1. Sie müssen also Ihren eigenen Code schreiben, der p.classProbabilities [1] vergleicht, um einen anderen Schwellenwert für die Entscheidung über die vorhergesagte Klasse zu verwenden. – TomKraljevic

Verwandte Themen