Künstliche Intelligenz (KI) als Hobby / Artificial Intelligence (AI) as a Hobby
Facebook Gruppe: Künstliche Intelligenz (KI) als Hobby
Specific to General in PHP
Basierend auf dem Tutorial: Machine Learning #14 - Concept Learning aka Induktives Lernen #1
Einleitung
Bei den Lern-Methoden Specific-to-General und General-to-Specific sollen auf Basis von Einzelfällen herausfinden, wie sich etwas im Allgemeinen verhält und was sich folglich in Zukunft ergeben könnte.
In diesem Online-Tool möchte man herausfinden, welche Dinge mit welchen Merkmalen einem gefallen, wenn man deren Merkmale kennt.
Um das für ein unbekanntes Ding vorhersagen zu können, werden bereits bekannte Dinge auf diese Merkmale hin klassifiziert und es wird für jedes Ding angegeben, ob einem dieses gefallen hat, oder nicht.
Dieses PHP-Skript ist so allgemein gehalten, dass es auf nahezu beliebige Dinge angewendet werden kann!
Schritt 1: Anzahl der Markmale und Datenreihen definieren
Zuerst muss generell die Anzahl der Merkmale definiert werden, die zur Auswertung benutzt werden. In dem im Video benutzten Beispiel (siehe Link oben) gibt es 4 Merkmale von Filmen, weshalb wir hier auch 4 Merkmale vorgeben (Bitte "Comedy, Action, Drama, Romance" in die Bezeichnung der Merkmale eingeben).
Die Anzahl der Datenreihen ist grundsätzlich beliebig. In dem Beispiel wurden jedoch 5 Filme auf ihre 4 Merkmale hin bewertet, sodass wir 5 Datenreihen (Filme) annehmen, die wir bewerten können.
Schritt 2: Nullhypothese im Ergebnis-Array vorgeben
Vor der Bewertung der Dinge, wird die Nullhypothese (NH) erstellt. Das bedeutet, dass wir erstmal davon ausgehen, dass jedes Merkmal die Ausprägung "egal" bekommt, wir also nicht wissen, ob das Merkmal einen Einfluss darauf hat, ob uns der Film gefällt oder nicht.
Schritt 4: Positiv bewertete Datenreihen auswerten
Jetzt werden nur die Datenreihen ausgewertet, die mit 1 positiv bewertet wurden (ganz rechte Spalte). Da uns ja in der Nullhypothese alles egal war, schalten wir jetzt Stück wür Stück die Merkmale auf 1, die bei mit 1 bewerteten Zeilen auch eine 1 bei dem jeweiligen Merkmal haben.
Andersrum schalten wir jetzt Stück wür Stück die Merkmale auf 0, die bei mit 1 bewerteten Zeilen eine 0 bei dem Merkmal haben.
Wenn ein Merkmal mal mit 1 und mal mit 0 angegeben wurde, dann wird es auf "ist egal" gesetzt. Es hat also keinen Einfluss darauf, ob wir etwas mögen.
Ergebnistabelle 1:
egal | egal | egal | egal | |
Schritt 5: Positive Ergebnistabelle 1 auswerten
Die letzte Zeile liefert uns das Ergebnis. Die letzte Zeile ist folgendermaßen zu interpretieren:
Steht bei dem Merkmal eine 1, dann gefallen uns Dinge mit diesem Merkmal.
Steht bei dem Merkmal eine 0, dann gefallen uns Dinge mit diesem Merkmal nicht.
Steht bei dem Merkmal ein "ist egal", dann ist das Merkmal für unsere Entscheidung - ob uns Dinge gefallen oder nicht - egal.
Schritt 6: Negativ bewertete Datenreihen auswerten (General-to-Specific)
Während wir eben nur die Zeilen betrachtet haben, die wir als positiv (1) bewertet haben, werden jetzt die Datenreihen mit den Zeilen durchlaufen, die einem nicht gefallen (0).
Die Nullhypothese wird zu Beginn wieder für alle Merkmale auf "egal" gesetzt.
Bezeichnung der Merkmale:NH: egal | NH: egal | NH: egal | NH: egal |
Jetzt werden die Zeilen durchlaufen, die einem nicht gefallen.
Ergebnistabelle 2:
egal | egal | egal | egal | |
1 | 1 | 1 | 1 | |
1 | 1 | 1 | 1 | |
1 | 1 | 1 | 1 | |
1 | 1 | 1 | 1 | |
1 | 1 | 1 | 1 |
Schritt 7: Negative Ergebnistabelle 2 auswerten
Die letzte Zeile liefert uns das Ergebnis. Die letzte Zeile ist folgendermaßen zu interpretieren:
Steht bei dem Merkmal eine 1, dann gefallen uns Dinge mit diesem Merkmal.
Steht bei dem Merkmal eine 0, dann gefallen uns Dinge mit diesem Merkmal nicht.
Steht bei dem Merkmal ein "ist egal", dann ist das Merkmal für unsere Entscheidung - ob uns Dinge gefallen oder nicht - egal.
Schritt 8: Gemeinsame Betrachtung von Specific-to-General (positiv) und General-to-Specific (negativ)
Nun kann man die jeweils letzte Zeile der Ergebnistabelle 1 und 2 vergeichen.