Eingabedaten:
-> Merkmale des T-Shirts (Farbe, Logo usw.)
-> Gewinnspanne
Ich habe einen zufälligen Wald auf den obigen und Y trainiert und eine angemessene Genauigkeit bei den Testdaten erreicht. Also habe ich
.
Nun möchte ich dh die Wahrscheinlichkeitsverteilung von X Merkmalen, da ich so viel Gewinnmarge erwarte.
Wie mache ich das mit einer zufälligen Gesamtstruktur (oder einem anderen diskriminierenden Modell)?
Ein Vorschlag für mich könnte sein, mit einem generativen Modell anstatt mit einem diskriminierenden Modell zu beginnen. Mein Verständnis ist jedoch, dass generative Modelle im Allgemeinen eine Menge Daten zum Trainieren erfordern, es sei denn, dies macht einige sehr restriktive Annahmen wie die bedingte Unabhängigkeit von im Fall von Naive Bayes?
Ein anderer Vorschlag könnte sein, einfach und Y zu wechseln und ein diskriminierendes Modell zu trainieren. Jetzt wird X Gewinnspanne sein und Y wird Merkmale von at shirt sein. P ( Y | X ) gibt mir direkt die Wahrscheinlichkeitsverteilung der T-Shirt-Merkmale bei einer angestrebten Gewinnspanne. Aber dieser Ansatz scheint mir nicht richtig zu sein, da ich X immer als zufällige Variablen und Y als Wirkung gesehen habe.
Soweit ich gehört habe, wurde eine ähnliche Frage für die Wirkstoffentdeckung gestellt und es wurden Algorithmen entwickelt, die neue Wirkstoffkandidaten mit hohem Erfolg hervorbringen. Kann mich jemand auf Literatur in diesem Bereich hinweisen?
Aktualisieren:
Ich habe über kommen diese und diese , die Gespräche über GANs für die Wirkstoffforschung eingesetzt. Generative gegnerische Netzwerke scheinen gut zu meiner Problemstellung zu passen, deshalb habe ich darüber gelesen. Ich habe jedoch verstanden, dass GAN unbeaufsichtigt Samples generiert. Sie versuchen, eine Stichprobe zu erstellen, bei der zuerst die zugrunde liegende Verteilung von X erfasst und dann eine Stichprobe aus dieser Verteilung erstellt wird. Aber ich interessiere mich für X | Y. X und Y sind oben definiert. Sollte ich etwas anderes als GANs erkunden? Irgendwelche Hinweise bitte?
Zusatzfrage:
Stellen Sie sich vor, ich habe eine GAN-Schulung, die gelernt hat, wie man T-Shirts herstellt (Ausgabebeispiel Xs). Wie kann ich die Top 5 Shirts für ein gegebenes Y bekommen?
Antworten:
Diese Antwort wurde gegenüber der ursprünglichen Form erheblich geändert. Die Fehler meiner ursprünglichen Antwort werden unten erläutert. Wenn Sie jedoch ungefähr sehen möchten, wie diese Antwort aussah, bevor ich die große Bearbeitung vorgenommen habe, schauen Sie sich das folgende Notizbuch an: https://nbviewer.jupyter.org/github /dmarx/data_generation_demo/blob/54be78fb5b68218971d2568f1680b4f783c0a79a/demo.ipynb
Maximum-Likelihood-Schätzung
... und warum es hier nicht funktioniert
In meiner ursprünglichen Antwort schlug ich vor, MCMC zu verwenden, um eine Maximum-Likelihood-Schätzung durchzuführen. Im Allgemeinen ist MLE ein guter Ansatz, um die "optimalen" Lösungen für bedingte Wahrscheinlichkeiten zu finden, aber wir haben hier ein Problem: Da wir ein Unterscheidungsmodell (in diesem Fall eine zufällige Gesamtstruktur) verwenden, werden unsere Wahrscheinlichkeiten relativ zu Entscheidungsgrenzen berechnet . Es ist eigentlich nicht sinnvoll, über eine "optimale" Lösung für ein solches Modell zu sprechen, da das Modell, sobald wir uns weit genug von der Klassengrenze entfernt haben, nur eine für alles vorhersagt. Wenn wir genügend Klassen haben, sind einige von ihnen möglicherweise vollständig "umgeben". In diesem Fall ist dies kein Problem, aber Klassen an der Grenze unserer Daten werden durch Werte "maximiert", die nicht unbedingt machbar sind.
Um dies zu demonstrieren, werde ich einen praktischen Code nutzen, den Sie hier finden. Er enthält die
GenerativeSampler
Klasse, die Code aus meiner ursprünglichen Antwort umschließt, zusätzlichen Code für diese bessere Lösung und einige zusätzliche Funktionen, mit denen ich herumgespielt habe (einige davon funktionieren) , einige, die es nicht tun), auf die ich hier wahrscheinlich nicht eingehen werde.In dieser Visualisierung sind die x die realen Daten, und die Klasse, an der wir interessiert sind, ist grün. Die linienverbundenen Punkte sind die Proben, die wir gezeichnet haben, und ihre Farbe entspricht der Reihenfolge, in der sie abgetastet wurden, wobei ihre "verdünnte" Sequenzposition durch das Farbbalkenetikett auf der rechten Seite angegeben wird.
Wie Sie sehen können, ist der Sampler ziemlich schnell von den Daten abgewichen und hängt dann im Grunde genommen ziemlich weit von den Werten des Feature-Space entfernt, die realen Beobachtungen entsprechen. Dies ist eindeutig ein Problem.
Eine Möglichkeit, die wir betrügen können, besteht darin, unsere Vorschlagsfunktion so zu ändern, dass nur Features Werte annehmen können, die wir tatsächlich in den Daten beobachtet haben. Versuchen wir das und sehen, wie sich das Verhalten unseres Ergebnisses ändert.
Geben Sie die Bayes-Regel ein
Nachdem Sie mich dazu gebracht hatten, mit der Mathematik hier weniger handgewellt zu sein, spielte ich eine ganze Menge damit herum (daher baue ich das
GenerativeSampler
Ding) und stieß auf die Probleme, die ich oben dargelegt hatte . Ich fühlte mich wirklich sehr, sehr dumm, als ich diese Erkenntnis machte, aber offensichtlich fordern Sie, dass Sie eine Anwendung der Bayes-Regel fordern, und ich entschuldige mich dafür, dass ich früher abgewiesen habe.Wenn Sie mit der Bayes-Regel nicht vertraut sind, sieht sie folgendermaßen aus:
In vielen Anwendungen ist der Nenner eine Konstante, die als Skalierungsterm fungiert, um sicherzustellen, dass der Zähler auf 1 integriert wird. Daher wird die Regel häufig folgendermaßen angepasst:
Oder im Klartext: "Der hintere Teil ist proportional zu den früheren Zeiten der Wahrscheinlichkeit".
Ähnlich aussehend? Wie wäre es jetzt:
Ja, genau daran haben wir früher gearbeitet, indem wir eine Schätzung für die MLE erstellt haben, die in der beobachteten Verteilung der Daten verankert ist. Ich habe noch nie über die Bayes-Regel auf diese Weise nachgedacht, aber es macht Sinn. Vielen Dank, dass Sie mir die Gelegenheit gegeben haben, diese neue Perspektive zu entdecken.
Nachdem wir diese Erkenntnis gewonnen haben, dass wir einen Prior für die Daten einfügen müssen, lassen Sie uns dies tun, indem wir eine Standard-KDE anpassen und sehen, wie dies unser Ergebnis verändert.
Und da haben Sie es: Das große schwarze 'X' ist unsere MAP-Schätzung (diese Konturen sind die KDE des Seitenzahns).
quelle
Ein Weg, um vorwärts zu kommen, könnte sein:
Erstellen Sie ein vorwärts gerichtetes neuronales Netzwerk, das bei gegebenem Y (wahrscheinlich möchten Sie es normalisieren) das X vorhersagt. Die Ausgabe des Modells (der letzten Schicht) wäre also eine Reihe von Softmax-Neuronen für jedes Merkmal. Wenn das Merkmal 1 (z. B. Farbe) 4 Optionen hat, wenden Sie den Softmax auf vier Neuronen an und machen dasselbe für jedes Merkmal.
Dann könnte Ihre Verlustfunktion die Summe (oder eine lineare Kombination, wenn Sie es vorziehen) der Kreuzentropie für jedes Merkmal sein.
quelle