0

Ich versuche, medizinischen Bericht basierend auf den im Bericht erwähnten Symptomen zu klassifizieren. Schritte, die ich mache, sindNeuronale Netzwerkleistungsoptimierung

1) extrahieren Symptome von jedem medizinischen Bericht. Erstellen

2) einen Satz von allen aus allen medizinischen Berichten extrahiert Symptome, insgesamt Begriffe so weit sind 3700.

3) Erstellen Sie eine Menge aller Krankheiten in diesen Entlassungsberichte diagnostiziert und erwähnt, insgesamt Begriffe so weit sind 1500.

4) Jetzt iteriere ich durch alle medizinischen Berichte und erstelle einen heißen Vektor für jeden Bericht und seine Diagnosen. Ich habe 5000 Dokumente.

Für Symptome, ich bekomme eine Matrix von 5000 X 3700 wo jede Zeile ein einzelnes Dokument darstellt und jede Spalte ein Symptom zeigen. Wenn Symptom in dem Dokument vorhanden ist, ist der Wert der Spalte ein, andernfalls wird der Wert Null ist Symptom ist

enter image description here

Für die Diagnose, ich bin immer eine Matrix von 5000 X 1500

enter image description here

I am using a backward propagating neural network for training. The network has 3700 input neurons, 1 hidden layer and 1500 output neurons. 

Der Code wird von hier http://jrmeyer.github.io/tutorial/2016/02/01/TensorFlow-Tutorial.html den Klassifikator für die Erstellung verwendet.

Das Problem ist, dass, egal wie sehr ich es trainieren (bisher hat ich mit 25.000 Epochen versucht), ich bin sehr schlechte Ergebnisse zu erzielen,

Ausgang hat eine maximalen Wahrscheinlichkeitswert (1) für mehr als 160 Etiketten während Ich habe für 5 Etiketten erwartet.

Gibt es irgendetwas, was ich falsch machen könnte, oder was soll ich tun, um die Ergebnisse zu verbessern?

Updates: Ich habe versucht, das Netzwerk mit minimalen Daten (100 Dokumente und 85000 Epochen) zu testen.

Das einzige Problem, das das Problem verursachen könnte, ist, dass von jedem Dokument maximal 15 - 20 Begriffe extrahiert werden, so dass der eine heiße Vektor zwanzig 1s und 3680 0s hat. Kann jemand vorschlagen, ob dies das Problem sein könnte?

Antwort

1

Es gibt nicht genug Details verstehen Sie Problem und Implementierung aber ein guter Ausgangspunkt, der Ihnen helfen wird zu verstehen, wenn Sie ein technischeres Problem haben (Bug, Netzwerkarchitektur, etc ...) oder ein Datenproblem ist Erstellen Sie synthetische Daten, von denen Sie wissen, dass sie zu Ihrem Modell passen (fälschen einige Krankheiten mit jeweils einer Reihe von Symptomen)

Wenn das Modell nicht die gewünschten Ergebnisse liefert, ist es wahrscheinlich ein technisches Problem. Wenn dies der Fall ist, ist es eher ein Datenproblem: Vielleicht sind Ihre Daten zu laut, oder das zugrundeliegende Modell ist komplizierter oder Sie haben nicht genug Daten.

+0

Vielen Dank für Ihre Antwort-, ich habe tatsächlich mit individuellen Daten von 1000 Dokumenten getestet. Außerdem habe ich die Frage auch aktualisiert. – Shahzeb

+0

können Sie die Struktur Ihres Netzwerks hinzufügen? –

+0

Ich habe den Code aus diesem Tutorial verwendet http://jrmeyer.github.io/tutorial/2016/02/01/TensorFlow-Tutorial.html Der einzige Nachteil ist, dass ich mehrere Etiketten anstelle von 2 Etiketten verwende. – Shahzeb

0

Hier sind die wenige Dinge, die Sie könnten versuchen, (obwohl diese nicht garantieren, um die Leistung zu erhöhen):

  1. Plot Lernkurven optimale Lernrate zu entscheiden, l2 Strafe usw.
  2. Generieren synthetische Daten
  3. die Tiefe Ihres Netzwerks erhöhen