Modellieren von relativen Beitragsdifferenzen

Sie haben ein bestimmtes Projekt zu bearbeiten und wissen nicht, wie Sie an die Aufgabe heran gehen sollen? Sie sind sich nicht sicher, ob Ihr Netzentwurf zu Ihrem Problem passt oder ob es da Optimierungsmöglichkeiten gibt? Ist es überhaupt sinnvoll an Ihre Daten mit einem NN basierten Ansatz heranzugehen? Ist MemBrain das richtige Werkzeug für Ihr Problem und Ihre Infrastruktur?

Hier ist der richtige Platz für diese Art von Fragen.
Post Reply
vrenili
Posts: 4
Joined: Thu 12. Jan 2017, 11:29

Modellieren von relativen Beitragsdifferenzen

Post by vrenili »

Hallo,

ich beschäftige mich gerade mit der Untersuchung, ob Neuronale Netze evtl. die Beitragsabstände zwischen unterschiedlichen Anbietern abschätzen können. Etwas konkreter:

Aktuell ist es für Strom- oder auch Versicherungskunden dank verschiedener Online-Portale möglich, zu seinem eingegebenen Profil die verschiedenen Beiträge der unterschiedlichen Anbieter sortiert angezeigt zu bekommen.

Nun ist es ja für den Anbieter zum einen durchaus interessant zu wissen, wie weit er den Tarif maximal absenken muss, um in einem speziellen Profil gerade so auf Platz 1 zu landen.
Andersherum wäre es natürlich auch mindestens genau so interessant zu wissen, wie weit er ein Profil was schon auf Platz 1 liegt im Beitrag erhöhen kann, dass er gerade so noch günstiger als der Konkurrenzanbieter mit seinem Beitrag auf Platz 2 ist.
Ich versuche also einen "Beitragsoptimierer" aus Marktkonkurrenz-Sicht zu erstellen.

Da mir aktuell nur Daten vorliegen, bei welchen der interessierte Anbieter schlechter als Rang 1 liegt, interessiert momentan auch nur der erste Fall (wie weit muss der Anbieter seinen Beitrag absenken um auf Platz 1 zu landen):

Nun gibt es da verschiedenen Ansätze:
Zum einen kann ich direkt versuchen pro Profil den Konkurrenz-Beitrag auf Platz 1 zu simulieren, um anschließend meinen Beitrag entsprechend anzupassen.
Oder ich gehe hin und berechne direkt die notwendige prozentuale Absenkung, damit ich genau diesen Beitrag erziele.

Ich möchte gerne den zweiten Weg gehen, also mir von einem Neuronalen Netz direkt die notwendige prozentuale Absenkung simulieren lassen.

Dazu habe ich in dem vorliegenden Fall 27 Eingabevariablen, welche das zu betrachtende Profil umschreiben und eine Ausgabevariable (Aktivierungsfunktion=Logistic), nämlich die notwendige prozentuale Absenkung.

In einem ersten Schritt habe ich auf Hidden-Layer verzichtet, aber auch das Einführen von 1 oder zwei versteckten Schichten hat mich in meinem Problem nicht weiter gebracht.

Mir liegen knapp 30.000 Trainingsdaten und knapp 10.000 Testdaten vor an denen ich den Netzfehler berechnen lasse.

Beim Training des Neuronalen Netzes sehe ich mir den "Pattern Error" an. Um das Muster besser zu erkennen habe ich die Trainings- und Testdaten vor dem Einlesen ansteigend nach der tatsächlichen Differenz sortiert eingelesen, das Training erfolgt natürlich ungeordnet.


Nun meine Frage:
Wieso schafft es das Neuronale Netz nicht, die kleinen und die großen Differenzen passend abzubilden? Es scheint, als simuliert das NN lediglich den Mittelwert (mit grauem Rauschen).
Ich habe bereits mit verschiedenen Teacher (RPROB, BP, ...) rumgespielt und auch verschiedene Aktivierungsfunktionen ausprobiert, aber es verändert sich nichts an dem Bild. Es ist auch für Test- und Trainingsmenge identisch.

Lasse ich jedoch den Rang1-Beitrag direkt simulieren (mit den gleichen Eingabewerten), dann passt sich die Kurve der simulierten Werte deutlich erkennbarerer der Kurve der originalen Werte an.

Ich hänge mal ein Bild des "Pattern Errors" nach ca. 3000 Trainingsläufen an.

Gibt es für dieses Phänomen eine mathematische Begründung? Oder evtl. eine Einstellung oder Variable die ich besser wählen sollte?


Vielen Dank im Voraus für Ihre Hilfe.

VG
Verena
Attachments
NetError.png
(20.17 KiB) Not downloaded yet
User avatar
TJetter
Posts: 346
Joined: Sat 13. Oct 2012, 12:04

Re: Modellieren von relativen Beitragsdifferenzen

Post by TJetter »

Hallo und herzlich Willkommen im Forum!

Eine kleine Anmerkung vorab: Der Screenshot des Pattern Error Viewers zeigt noch nicht die neuen 'Export' Buttons, die in der aktuellen MemBrain Version (07.03.00.00) hinzu gekommen sind. Deshalb der Tipp: Wenn es Ihre evtl. vorhandene Lizenz erlaubt oder Sie ohnehin nicht-kommerziell ohne Lizenz arbeiten, dann empfehle ich ein Update auf die neueste MemBrain Version. Damit lässt sich ein kompletter Validierungsdatensatz über den Pattern Error Viewer per Mausklick in CSV exportieren und in z.B. Excel öffnen zur weiteren Analyse. Ähnliches gilt auch für den Verlauf des Net Errors.

Nun aber zu Ihrer Frage:
Ich verstehe die genaue Idee zur Herangehensweise leider noch nicht ganz, deshalb kann ich momentan noch nicht viel zu dem Problem sagen, habe dementsprechend erst einmal Rückfragen:

1.) Was genau bildet ein einzelnes Pattern aus den Trainings- oder Validierungsdaten ab?
Sie sprechen von 27 Inputs. Ich nehme einmal an, diese Beschreiben Merkmale des vorliegenden Tarifs, korrekt?
Ist der momentane Preis des Interessenten auch dabei? Sind auch Inputs von Konkurrenztarifen dabei, bilden die Inputs also den Tarif und Preis des Interessenten und den Tarif und Preis des zu schlagenden Konkurrenten ab?
Was genau bezeichnet der Output? Um das Netz zu trainieren, müsste der Output ja die prozentuale Tarifanpassung sein, die benötigt wird, um den Konkurrenten aus dem Rennen zu schlagen (sich in der Rangliste davor zu platzieren). Woher kommen diese Trainingsdaten bzw. wie werden Sie gewonnen? Sie bräuchten doch wenn ich das richtig verstehe, jede Menge korrekte prozentuale Anpassungen zu allen möglichen Tarifen als Trainingsmuster, oder?

2.)
Lasse ich jedoch den Rang1-Beitrag direkt simulieren (mit den gleichen Eingabewerten)
Heißt das, sie versuchen das Netz bei diesem Ansatz darauf zu trainieren, für ein bestimmtes Profil (=Tarif?) den Preis des Bestplatzierten vorherzusagen? Hier scheint dann aber nur ein Tarif in die Eingangsdaten einzugehen, also nicht zwei zum Vergleich... ?

3.) Wenn der Tarif des Interessenten - bis auf den Preis/Beitrag - genau so aussieht wie der des momentan Erstplatzierten, dann muss doch der Interessent lediglich einen winzigen Betrag billiger sein als der Konkurrent, oder? Dazu benötigte man ja nun kein neuronales Netz, das kann also nicht Ziel Ihrer Untersuchung sein, denke ich. Somit geht es wohl darum, eine Erstplatzierung bei auch anonsten unterschiedlichen Tarifmerkmalen zu erzielen, oder? Stellt sich wieder die Frage: Woher bekommen Sie Ihre Trainingsdaten (also das prozentuale Soll-Delta, das den Weg zur Spitzenposition in der Wertung ebnet und das es zu erlernen gilt).

Sie sehen, ich stehe hier noch sehr 'auf dem Schlauch'. Vielleicht können Sie ja bzgl. der Inputs und Outputs und der Zielsetzung noch ein bisschen präziser werden. Wenn es um vertrauliche Inhalte geht, dann gerne auch direkt per Mail, idealwerweise mit ein paar Beispieldatensätzen.

Viele Grüße
Thomas Jetter
User avatar
TJetter
Posts: 346
Joined: Sat 13. Oct 2012, 12:04

Re: Modellieren von relativen Beitragsdifferenzen

Post by TJetter »

OK, ich denke, ich habe die Idee nun verstanden, bitte bestätigen:

- Die Inputs charakterisieren immer einen bestimmten Tarif
- Der Output bestimmt im ersten Ansatz den Beitrag/Preis des Bestplatzierten
- Im zweiten Ansatz bestimmt der Output den Prozenzsatz, den Ihr Interessent bei einem gegebenen Tarif erhöhen müsste, um den Bestplatzierten zu schlagen
- Die Beiträge der Bestplatzierten haben Sie für viele Tarife aus evtl. mehreren Vergleichsportalen entnommen. Daraus die Trainingsmuster/Validierungsmuster für den ersten Ansatz erzeugt
- Die prozentualen Differenzen haben Sie unter Verwendung des momentanen Beitrags Ihres Interessenten im Vergleich zum Bestplatzierten für alle diese Datensätze selbst errechnet
- D.h. also, Sie möchten gerne ein NN, was diese Berechnungen nachvollzieht und diesen prozentualen Abstand für Tarife prognostiziert, die es so noch gar nicht in Vergleichsportalen gibt. Oder aber, das Entnehmen der Daten aus Vergleichsportalen ist aufwändig bzw. nicht leicht durchführbar und deshalb soll ein NN diese Schätzung bei einem bestehenden oder neuen Tarif durchführen.

Ist das alles so korrekt verstanden?

Bitte senden Sie mir doch Ihre bisherigen zwei Netzvarianten und einige Datensätze zu (per Mail als zip o.ä.). Je mehr Datensätze Sie mir schicken können desto so besser kann ich unterstützen. Sie können die Inputs zu den Daten gerne vom Namen her 'neutralisieren', z.B. 'In 1' bis 'In 27'. Am einfachsten benennen Sie dazu die Neuronen im Netz um (geht in einem Rutsch über: Alle Inputs markieren, dann <Edit - Neuron Auto Naming>. Wenn Sie Hilfe brauchen, dann in diesem Dialog einfach F1 drücken). Dann im Lesson Editor <Names From Net> benutzen: Alle Spalten im LE werden nach den Neuronen benannt. Wenn Sie jetzt Netz und Lessons abspeichern, dann geben Sie über die Daten und die Netze keine vertraulichen Dinge mehr Preis.

Viele Grüße
Thomas Jetter
vrenili
Posts: 4
Joined: Thu 12. Jan 2017, 11:29

Re: Modellieren von relativen Beitragsdifferenzen

Post by vrenili »

OK, ich denke, ich habe die Idee nun verstanden, bitte bestätigen:

- Die Inputs charakterisieren immer einen bestimmten Tarif
Da kommt es jetzt auf Ihre genaue Definition von "Tarif" an. Tatsächlich ist jeder Input genau ein "Profil" (also eine Realisierung der Tarifmerkmale), welches auf einem Vergleichsportal berechnet wird und schließlich zu einer Liste von Beiträgen von verschiedenen Anbietern führt.
Der eigene Beitrag ist in diesem aktuellen Fall nicht dabei, da dieser in einer evtl. Umsetzung schwierig wäre. Ich habe es in einem Test aber auch schon mit dem Beitrag als 28.Inputneuron versucht, wirklich besser wurde das Ergebnis dadurch nicht.

kleine Anmerkung dazu:
Interessant ist dabei auch, dass eine Simulation der relativen Differenz auch mit verallgemeinerten linearen Modellen zu einem ähnlichen Problem führt. Gerade bei den interessanten kleinen Abständen kommen die Modelle nicht an die tatsächlichen Werte ran. Dies hatte ich gehofft mit den neuronalen Netzen umgehen zu können.
- Der Output bestimmt im ersten Ansatz den Beitrag/Preis des Bestplatzierten
korrekt

- Im zweiten Ansatz bestimmt der Output den Prozenzsatz, den Ihr Interessent bei einem gegebenen Tarif erhöhen müsste, um den Bestplatzierten zu schlagen
Nicht erhöhen, sondern absenken, da der billigste Anbieter auf Platz eins angezeigt wird.
- Die Beiträge der Bestplatzierten haben Sie für viele Tarife aus evtl. mehreren Vergleichsportalen entnommen. Daraus die Trainingsmuster/Validierungsmuster für den ersten Ansatz erzeugt
korrekt
- Die prozentualen Differenzen haben Sie unter Verwendung des momentanen Beitrags Ihres Interessenten im Vergleich zum Bestplatzierten für alle diese Datensätze selbst errechnet
korrekt
- D.h. also, Sie möchten gerne ein NN, was diese Berechnungen nachvollzieht und diesen prozentualen Abstand für Tarife prognostiziert, die es so noch gar nicht in Vergleichsportalen gibt. Oder aber, das Entnehmen der Daten aus Vergleichsportalen ist aufwändig bzw. nicht leicht durchführbar und deshalb soll ein NN diese Schätzung bei einem bestehenden oder neuen Tarif durchführen.
Da habe ich mich wohl nicht deutlich ausgedrückt. Ziel ist es, für zukünftige Profile im voraus zu 'wissen', um wieviel % der Anbieter genau das vom Kunden im Portal berechnete Profil absenken muss, um unter allen Mitbewerbern auf dem Portal auf Platz 1 zu landen und den Abschluss zu erhalten. Dabei kennt er zu diesem Zeitpunkt natürlich den billigsten Konkurrenzbeitrag nicht.

Bei den Vergleichsportalen wird so vorgegangen, dass der Kunde erst alle Eingaben für sein Profil tätigt. Dieses Profil wird dann an alle Anbieter gesendet und diese liefern dazu ihren Beitrag zurück. D.h., im Vorfeld weiß kein Anbieter den genauen Beitrag der Konkurrenten.
Es geht mir nun darum, möglichst für jedes berechnete Profil den notwendigen Abschlag zu finden, dass der zurückgelieferte Beitrag meines Interessenten mit möglichst wenig Abstand auf Platz 1 der Vergleichsliste landet, da in der Regel der Anbieter auf Platz eins auch den Abschluss erhält.



Ich anonymisiere mal mein aktuelles Netz und sende es mit ein paar anonymisierten Daten an Sie. Vielleicht wird dann vieles klarer.

Vielen Dank auf jeden Fall schon mal für Ihre Hilfe.

VG
Verena
Post Reply