Punkt oder Strich? Mal oder Plus?
Da bin ich wieder. Wie zu erwarten war geht nach Behebung (hoffentlich) aller Denk- und Implementierungsfehler die Trefferquote nicht mehr entsprechend nach oben. Also heißt es die Logiken überarbeiten.
Einerseits hab ich eine Sinnhaftigkeitsfilterung eingebaut. Damit es nicht passieren kann das zb eine Regel den gleichen Wert mit sich selbst vergleichen will etc. Andererseits überlege ich grade ob der Matchingalgo wirklich so sinnvoll ist.
Es gibt derzeit Regeln die aus mehreren Teilkriterien bestehen und ein Pattern besteht aus mehreren Regeln. Wie sollte man diese am besten kombinieren?
Methoden die mir derzeit einfallen (und halbwegs sinn machen):
Mittelwert: Jedes Kriterium erhält ja einen Wert zwischen 0 und 100 wie gut es erfüllt ist. Der gemeinsame Wert ist der Mittelwert der Einzelwerte.
Das würde bedeuten das ein einzelnes nicht matchendes Kriterium überstimmt werden kann (9*100 + 0)/10 = 90%. Aber von der Logik her matched ein Pattern nur wenn alle Regeln erfüllt sind oder?
Multiplikation: Die prozentuellen Matches werden multipliziert. Damit sorgt ein einziges nichterfülltes für ein komplettes 0%. Aber gleichzeitig kann das Ergebniss auch schnell schlechter als das schlechteste Einzelmatching sein (0.9*0.9= 0.81). Bin mir grad nit sicher ob das so gut ist oder nicht
Minimum: Man nimmt einfach das Minimum der Einzelwerte. Damit ignoriert man natürlich alle anderen Ergebnisse, was jetzt aber nicht schlecht sein muss.
Ich glaub ich werds jetzt mal einstellbar implementieren und ein bissl damit experimentieren.
Allgemein seh ich gerade ein bissl ein Problem darin, wie der Algo "intelligent" lernen kann. Das mutieren und vermischen von Patterns klingt in der Theorie gut, aber ist es mehr als "raten"?
Möglicherweise bau ich noch was ein das jede Regel sich merkt wie oft sie gematcht hat und dementsprechend bei der Auswahl behandelt wird. zB Regeln die selten/nie matchen, werden wahrscheinlicher nicht übernommen.
schau ma mal...
2 Comments
Recommended Comments