Modellieren von relativen Beitragsdifferenzen
Posted: Wed 1. Feb 2017, 12:06
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
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