Hi!
Ich möchte basierend auf zwei unterschiedlichen Datensätzen von Bewertungen (0 bis 10 Punkte) die Geschmäcker zweier User vergleichen.
ich habe in der Datenbank die Spalten 'rating_id', 'user_id', 'identifier' und 'rating'.
Anhand des Identifier finde ich heraus, welche Bewertungen der beiden User zusammen gehören.
Ein grober Entwurf schaut so aus (Ich schreibe hier die Ergebnisser aus der Datenbank als Mengen):
Wie berechne ich die Ähnlichkeit der Gesamtbewertungen?
Ich habe da zwei Ideen:
Nun meine eigentlichen Fragen:
Fällt jemand eine bessere Berechnung der Ähnlichkeit ein, als mein zweiter Algorithmus?
Kann ich in der Datenbankabfrage schon dafür sorgen, dass nur Datensätze gewählt werden, die bei beiden Usern vorhanden sind? Die übereinstimmenden Datensätze per PHP herauszufiltern wäre auch wieder ein Zeitfaktor von O(n), denke ich.
Ich denke dabei an eine Abfrage in der Art (Achtung: Pseudoabfrage) "SELECT * from ratingstable WHERE userid = a AND (userid = b AND identifier_exists(this.identifier))".
Gruß,
Max123
Ich möchte basierend auf zwei unterschiedlichen Datensätzen von Bewertungen (0 bis 10 Punkte) die Geschmäcker zweier User vergleichen.
ich habe in der Datenbank die Spalten 'rating_id', 'user_id', 'identifier' und 'rating'.
Anhand des Identifier finde ich heraus, welche Bewertungen der beiden User zusammen gehören.
Ein grober Entwurf schaut so aus (Ich schreibe hier die Ergebnisser aus der Datenbank als Mengen):
- A = 'SELECT * from ratingstable WHERE userid = a';
B = 'SELECT * from ratingstable WHERE userid = b'; - vergleichbar = Durchschnitt (A, B);
(Es werden nur Bewertungen vergleichen, die beide User getätigt haben.)
Wie berechne ich die Ähnlichkeit der Gesamtbewertungen?
Ich habe da zwei Ideen:
- Setzte die Bewertungen in einer von 'identifier' vorgegeben Reihenfolge als String zusammen.
Berechne den Abstand der Strings. - Berechne von den Bewertungen der beiden User (A1, A2, ... An) und (B1, B2, ... Bn) folgenden Abstand:
Abstand = Summe i von 1 bis n [ Betrag( Ai - Bi ) ];
Ähnlichkeit = Abstand / n;
wobei Abstand dann aus der Menge [0, 10] ist.
Nun meine eigentlichen Fragen:
Fällt jemand eine bessere Berechnung der Ähnlichkeit ein, als mein zweiter Algorithmus?
Kann ich in der Datenbankabfrage schon dafür sorgen, dass nur Datensätze gewählt werden, die bei beiden Usern vorhanden sind? Die übereinstimmenden Datensätze per PHP herauszufiltern wäre auch wieder ein Zeitfaktor von O(n), denke ich.
Ich denke dabei an eine Abfrage in der Art (Achtung: Pseudoabfrage) "SELECT * from ratingstable WHERE userid = a AND (userid = b AND identifier_exists(this.identifier))".

Gruß,
Max123
Die Japaner glauben jetzt auch, sie könnten den Superrechner verkaufen. Das wäre
so, als würde man einen Jumbo-Jet nehmen, vorne und hinten die Spitzen absägen,
davon 10 Stück zusammenschweißen und als ultimativen Super-Jet verkaufen.
so, als würde man einen Jumbo-Jet nehmen, vorne und hinten die Spitzen absägen,
davon 10 Stück zusammenschweißen und als ultimativen Super-Jet verkaufen.
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Herbi ()