Marc: Wie vergleiche ich am schlauesten Datensaetze?

Hallo,

ich baue gerade eine DB mit 10.000 Artikeln auf, die miteinander verglichen werden sollen.

Die Eigenschaften werden bislang als Zahlen gespeichert, je nach Anzahl der moeglichen Optionen geht das von 0 bis 8.

Beispiel>  Produkt  EigenschaftA  EigenschaftB  EigenschaftC
                 Apfel               1                     4                   3
                 Birne               2                     4                   0
                 Zitrone            1                     4                   2

Mir geht es darum, Aehnlichkeiten zu finden, die schliesslich in Prozentzahlen ausgedrueckt werden sollen. Im Beispiel haetten Apfel und Zitrone die hoechste Ahnlichkeit, da die meisten Werte uebereinstimmen.

Wenn ich fuer jede Eigenschaft nur die Moeglichkeiten JA und NEIN haette,
wuerde ich einen Bitvergleich anstellen, das oben waere also meinetwegen

Apfel    110
Birne    010
Zitrone 110

Ratzfatz haette ich alles verglichen. Nur - wie mach ich das jetzt am schlauesten fuer die Felder, die mehr als 2 Moeglichkeiten haben?  Die Zahlenwerte 0-8 ins binaere zu bringen scheint mir nicht mehr viel zu helfen.

Wer hat ne schlaue Idee fuer mich?

Danke schonmal,
Rufus :)

  1. Hallo Rufus,
    Ich schlage eine Subtraktion vor. Dort wo der Wert am meisten gegen Null geht, hast Du die größte Ähnlichkeit.

    Gruß David

    Hallo,

    ich baue gerade eine DB mit 10.000 Artikeln auf, die miteinander verglichen werden sollen.

    Die Eigenschaften werden bislang als Zahlen gespeichert, je nach Anzahl der moeglichen Optionen geht das von 0 bis 8.

    Beispiel>  Produkt  EigenschaftA  EigenschaftB  EigenschaftC
                     Apfel               1                     4                   3
                     Birne               2                     4                   0
                     Zitrone            1                     4                   2

    Mir geht es darum, Aehnlichkeiten zu finden, die schliesslich in Prozentzahlen ausgedrueckt werden sollen. Im Beispiel haetten Apfel und Zitrone die hoechste Ahnlichkeit, da die meisten Werte uebereinstimmen.

    Wenn ich fuer jede Eigenschaft nur die Moeglichkeiten JA und NEIN haette,
    wuerde ich einen Bitvergleich anstellen, das oben waere also meinetwegen

    Apfel    110
    Birne    010
    Zitrone 110

    Ratzfatz haette ich alles verglichen. Nur - wie mach ich das jetzt am schlauesten fuer die Felder, die mehr als 2 Moeglichkeiten haben?  Die Zahlenwerte 0-8 ins binaere zu bringen scheint mir nicht mehr viel zu helfen.

    Wer hat ne schlaue Idee fuer mich?

    Danke schonmal,
    Rufus :)

    1. Hallo Rufus,
      Ich schlage eine Subtraktion vor. Dort wo der Wert am meisten gegen Null geht, hast Du die größte Ähnlichkeit.

      Gruß David

      Hm, schonmal ne Idee... :) Aber leider sind die Zahlen nicht wirklich repräsentativ für das, was hinter ihnen steht. 0 und 1 können quasi weiter auseinander liegen als 0 und 4 (versteht man mich?).

      Meinetwegen stellen die Zahlen 0-4 jetzt mal Kontinente dar, auf denen diese Fruechte wachsen. Klar kann ich einen einfachen Vergleich machen: Werta = Wertb ? -> dann Punkte für Ähnlichkeit gutschreiben.

      Wenn ich das aber mit 30 verschiedenen Werten machen will, hab ich 30 if-Abfragen - mal 10.000 Datensätze... das dauert.

      Nochmal: Hätte ich nur binäre Daten, mach ich ne binäre Operation über alle Werte, also      0101100100101 und 010101010100 werden verknüpft, das Ergebnis laesst sich einfach auswerten.

      Was mach ich mit 0324657824 und 234095713 ? Geht das nicht auch über so einen leichten Trick, ohne so viel ifs?

      Gruss,
      Marc :)

      1. Hy MarcRufusoderwieauchimmer,

        Das Problem scheint mir gar nich die Suche nach einer Operation zu sein, sondern welche Eigenschaften Du mit welcher Nummer belegst. Bei Äpfeln und Zitronen aus Deiner Tabelle hast Du ja wilkürliche Werte vergeben, hast aber kein Beurteilungskriterium angegeben.
        Bei Kontinenten könnte man die Größe oder die Entfernung zum nächsten als Kriterium festlegen, Einwohnerzahl etc.
        Solange Du keine festen Kriterien hast, kann man auc keine Methode suchen, wie man das am Besten in Zahlen verpackt. Die Operation ist da eher nebensächlich, wobei die Zuordnung der Zahlen natürlich logische Operationen zulassen sollte.

        Gruß David

      2. Hi,

        Nochmal: Hätte ich nur binäre Daten, mach ich ne binäre Operation über alle Werte, also      0101100100101 und 010101010100 werden verknüpft, das Ergebnis laesst sich einfach auswerten.
        Was mach ich mit 0324657824 und 234095713 ? Geht das nicht auch über so einen leichten Trick, ohne so viel ifs?

        ich schließe mich Calocybe an:
        Du diskutierst über die Implementierung, ohne eine Aufgabenstellung zu haben.

        Definiere eine "Ähnlichkeitsfunktion" - *dann* kann man darüber nachdenken, wie man die effizient implementieren kann.

        mfG - Michael

  2. Hi!

    Mir geht es darum, Aehnlichkeiten zu finden, die schliesslich in Prozentzahlen ausgedrueckt werden sollen. Im Beispiel haetten Apfel und Zitrone die hoechste Ahnlichkeit, da die meisten Werte uebereinstimmen.

    Wie definierst Du denn "aehnlich"? Als Anzahl der uebereinstimmenden Zahlen? Als Summe der Differenzen der Zahlen im selben Feld? Oder was? Das wirst Du uns schon erstmal mitteilen muessen.

    So long