logarythmus finden ?!

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • logarythmus finden ?!

    Hallo,

    ich bastel zur Zeit an einer sportcommunity in der die user
    ihre Sportarten eingeben können, die sie

    a) mögen
    b) nicht mögen

    Beispiel:

    User #1
    mag:
    boxen
    kickboxen
    Mountainbiking

    mag nicht:
    klettern
    turnen
    Angeln

    User #2
    mag:
    klettern
    Mountainbiking

    mag nicht:
    boxen
    turnen

    Nun suche ich eine Art logarythmus anhand deren ich berechnen kann, wie gut die beiden zueinander passen. In meinem Beispiel mögen beiden das Mountainbiking, was ja schonmal
    ein 'Pluspunkt' wäre. Allerdings mag User 1 boxen, was user 2 gar nicht gut findet. Umgekehrt geht es dem klettern. Hinzukommt, dass beide nicht turnen mögen.
    Ich habs mit '+' & '-' Punkten versucht, jedoch komme ich damit nicht weiter.
    Am liebsten würde ich eine Prozentzahl erhalten, an der erkennbar ist,
    ob die geimeinsam 'klarkommen' würden oder nicht. Hat da jmd ne Idee, wie ich das
    umsetzen könnte?

  • #2
    Also das was du meinst heisst Algorithmus

    Sind die Sportarten und Eigenschaften vorgegeben, oder werden die von den Anwendern frei geschrieben ?

    Ansonsten kannst du ja ein +/-System machen von -5 /mag gar nicht) bis +5 (sehr) und den durchschnitt berechnen, und dann die übereinstimmung ausgeben, z.B. 60% übereinstimmung....


    An mich bitte keine unaufgeforderten E-Mails senden (ausser ihr seid bereit geld zu zahlen, dann gerne )

    Kommentar


    • #3
      Original geschrieben von MaxP0W3R
      Ansonsten kannst du ja ein +/-System machen von -5 /mag gar nicht) bis +5 (sehr) und den durchschnitt berechnen, und dann die übereinstimmung ausgeben, z.B. 60% übereinstimmung....
      da musst du aber erst die werte der beiden zu vergleichenden user einzeln betrachten.
      Code:
      user 1: boxen +5, fussball -5
      user 2: boxen -5, fussball +5
      user 3: boxen +5, fussball +5
      user 1 - user 2:
      werte addiert für boxen = 0, für fussball = 0. gesamtsumme 0, durchschnitt 0.

      user 1 - user 3:
      boxen = 10, fussball = 0, summe = 10, durchschnitt bei zwei verglichenen werten = 5

      user 2 - user 3:
      boxen = 0, fussball = 10, summe = 10, durchschnitt = 5


      1 und 3 bzw. 2 und 3 passen also schon recht gut zusammen, weil der durchschnittswert recht hoch ist, während 1 und 2 sich vermutlich kaum einigen können.

      allerdings können negative werte ja auch gemeinsamkeiten ausdrücken, wenn zwei leute fussball und boxen gleichermaßen wenig mögen, und dafür vielleicht minigolf eher - dann kommen durch fussball und boxen beides = -5 schon mal -20 in die gesamtsumme mit herein.
      deshalb wäre es hier vielleicht besser, wenn man von den einzel-summen pro sportart nur die betragswerte betrachtet, -5 und +5 ergibt 0 (wenig gemeinsamkeit), während -5 und -5 schon 10 ergeben - also höhere gemeinsamkeit, wenn auch auf der ablehnung gewisser sachen begründet :-)


      sicher noch ausbaufähig/optimierbar, aber schon mal so als ansatz ...
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        Ja, die Übereinstimmung pro Sportart, und dass im Durchschnitt, habe das oben vielleicht umständlich ausgedrückt

        Also immer die Differenz pro Sportart berechnen, Differenz 0 wäre 100% übereinstimmung.

        Differenz 10 logischerweise 0% Überieinstimmung


        An mich bitte keine unaufgeforderten E-Mails senden (ausser ihr seid bereit geld zu zahlen, dann gerne )

        Kommentar


        • #5
          Original geschrieben von MaxP0W3R
          Also immer die Differenz pro Sportart berechnen, Differenz 0 wäre 100% übereinstimmung.

          Differenz 10 logischerweise 0% Überieinstimmung
          OK, das ist dann eher umgekehrt als bei mir - aber ist ja auch egal.

          man muss sich halt nur für eine "bewertungsgrundlage" entscheiden.
          bei meinem system wäre die übereinstimmung höher, je weiter der durchschnitt von 0 entfernt ist, und bei dir halt, je näher er an 0 dran liegt ...
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            ich habe was geschrieben, aber poste das erst nach dem mittag essen


            An mich bitte keine unaufgeforderten E-Mails senden (ausser ihr seid bereit geld zu zahlen, dann gerne )

            Kommentar


            • #7
              Hallo Ihr Beiden und Danke für die Tipps!

              Das mit der Differenz hört sich ansich schon gut an, nur möchte ich das ganze nicht zu aufwendig gestalten (für den User) und davon ab, dass er jede einzelne Sportart auch noch bewertet, ähnlich wie bei newintown. Das ganze ist als nettes add-on gedacht und
              ich möchte gerne vermeinden den user hier mit formular ausfüllen zu beschäftigen.

              Jetzt will ich mal sowas testen wie

              mag = 7/10
              übereinstimmung mag = 10/10

              mag nicht = 6/10
              übereinstimmung mag nicht = 9/10

              übereinstimmung mag/mag nicht = 1/10

              Wie schon zuerkennen, will ich das ganze dann auf 10 Punkt maximal gegenrechen.
              Den Schnitt des einzelnen users will dann mit dem des anderen addieren und dann
              durch 2 teilen. Was haltet Ihr davon?

              Kommentar


              • #8
                Original geschrieben von MaxP0W3R
                Also das was du meinst heisst Algorithmus
                ... und wie man sieht hat dieser genau so wenig mit Rhythmus zu tun wie der Logarithmus ... !
                carpe noctem

                [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                Kommentar


                • #9
                  Hier mal ein Beispiel für Bewertung von -5 bis 5, kann man ja sicher auf 1 bis 10 umrechnen

                  PHP-Code:
                  $p1_likes = array(-5555, -3, -4); // Values -5 ... 5

                  $p2_likes = array(-55, -5, -5, -24); // Values -5 ... 5

                  $average_common 0;

                  $max_difference 10// Maximale Differenz zwischen Likes und Dislikes -5 bis 5 = 10

                  $characteristics count($p1_likes);

                  for(
                  $i 0$i $characteristics$i++)
                  {
                    
                  // Differenz
                    
                  echo("<p>P1 : {$p1_likes[$i]} | P2 : {$p2_likes[$i]} |");
                    
                  $p1 $p1_likes[$i];
                    
                  $p2 $p2_likes[$i];
                    
                  $differenz $p1 $p2;
                    if(
                  $differenz 0$differenz *= -1;
                    echo(
                  " Differenz : $differenz </p> ");
                    
                  $average_common += ($characteristics) * $differenz;
                  }

                  echo(
                  "<p>Die durchschnittliche Differenz beträgt $average_common </p>"); 
                  Ist allerdings ohne Garantie und sicher voller Bugs

                  Mein bewertungssystem poste ich mal nicht, das hat irgendwie nicht hingehauen , so auf die schnelle

                  EDIT:
                  Bei meinem "System" könntest du für alle unbewertet sportfragen 0 annehmen ( was eine neutrale einstellung bedeutet)
                  Zuletzt geändert von MaxP0W3R; 12.07.2004, 13:49.


                  An mich bitte keine unaufgeforderten E-Mails senden (ausser ihr seid bereit geld zu zahlen, dann gerne )

                  Kommentar


                  • #10
                    Original geschrieben von westberlin
                    Hallo Ihr Beiden und Danke für die Tipps!

                    Das mit der Differenz hört sich ansich schon gut an, nur möchte ich das ganze nicht zu aufwendig gestalten (für den User) und davon ab, dass er jede einzelne Sportart auch noch bewertet, ähnlich wie bei newintown. Das ganze ist als nettes add-on gedacht und
                    ich möchte gerne vermeinden den user hier mit formular ausfüllen zu beschäftigen.

                    Jetzt will ich mal sowas testen wie

                    mag = 7/10
                    übereinstimmung mag = 10/10

                    mag nicht = 6/10
                    übereinstimmung mag nicht = 9/10

                    übereinstimmung mag/mag nicht = 1/10

                    Wie schon zuerkennen, will ich das ganze dann auf 10 Punkt maximal gegenrechen.
                    Den Schnitt des einzelnen users will dann mit dem des anderen addieren und dann
                    durch 2 teilen. Was haltet Ihr davon?
                    Das habe ich nicht ganz verstanden.

                    mag = 7/10
                    übereinstimmung mag = 10/10

                    Das bedeutet ?


                    An mich bitte keine unaufgeforderten E-Mails senden (ausser ihr seid bereit geld zu zahlen, dann gerne )

                    Kommentar


                    • #11
                      Danke Max für den Code.

                      Das würde allerdings vorraussetzen, dass der user zu jeder Sportart sein Statement abgibt.
                      Ich würde es viel lieber so machen, dass der user nur ein dislike bzw. like abging, wenn's
                      ihn wirklich interessiert. Also wenn er beispielsweise mit turnen nichts zu tun hat, aber nicht dagegen hätte es mal zu versuchen, soll er turnen nirgends eintragen.

                      Das habe ich nicht ganz verstanden.
                      Beispiel:

                      User #1
                      mag:
                      boxen (stimmt mit dislike user #2 überein 10% [1/10] )
                      kickboxen (dieses like ist bei User #2 nirgends zu finden 70% [7/10] )
                      Mountainbiking (stimmt mit like user #2 überein 100% [10/10] )

                      mag nicht:
                      klettern
                      turnen (stimmt mit dislike user #2 überein 90% [9/10] )
                      Angeln (dieses dislike ist bei User #2 nirgends zu finden 60% [6/10] )

                      User #2
                      mag:
                      klettern (stimmt mit dislike user #1 überein 10% [1/10] )
                      Mountainbiking (stimmt mit like user #1 überein 100% [10/10] )

                      mag nicht:
                      boxen (stimmt mit like user #1 überein 10% [1/10] )
                      turnen (stimmt mit dislike user #1 überein 90% [9/10] )

                      User #1 = 1/10 + 7/10 + 10/10 + 9/10 + 6/10 = 66%
                      User #2 = 1/10 + 10/10 + 1/10 + 9/10 = 55%

                      User #1 = 66%
                      User #2 = 55%
                      ----------------------
                      121

                      121/2 = 60,5 %
                      ------------------
                      -------------------


                      Könnte das so hinhauen oder habe ich etwas Entscheidenes vergessen?

                      Kommentar


                      • #12
                        Original geschrieben von westberlin
                        Das würde allerdings vorraussetzen, dass der user zu jeder Sportart sein Statement abgibt.
                        Ich würde es viel lieber so machen, dass der user nur ein dislike bzw. like abging, wenn's
                        ihn wirklich interessiert. Also wenn er beispielsweise mit turnen nichts zu tun hat, aber nicht dagegen hätte es mal zu versuchen, soll er turnen nirgends eintragen.
                        na ja, ob du das jetzt auf einer skala von -5 bis +5 umsetzt, oder nur -1, 0 und +1, ist doch eigentlich völlig wurscht. je breiter die skala, desto feiner kannst du ggf. differenzieren - aber wenn du meinst das nicht zu brauchen, dann lass es halt.

                        dann bewegt sich der durchschnitt halt nur zwichen 0 und 1 (bei betragsmäßiger berechnung), aber damit funktioniert es ja auch.


                        und zum eintragen würde ich entweder radiobuttons mit "mag ich", "mag ich nicht" und "neutral" verwenden, oder halt selectfelder mit gleichen wahlmöglichkeiten, und "neutral" dabei jeweils als vorauswahl einstellen.
                        I don't believe in rebirth. Actually, I never did in my whole lives.

                        Kommentar


                        • #13
                          Das würde allerdings vorraussetzen, dass der user zu jeder Sportart sein Statement abgibt

                          -> Defaultwert 0 (neutral)

                          Aber ich glaube deine Berechnung hat nicht ganz hin

                          Wenn du es so machen willst, muss als allererstes festgestellt werden, welche Sportarten BEIDE bewertet haben, und du musst es eindeutig machen.

                          Nicht dass der eine schreibt ich mag Boxen, der andere ich mag Boxsport und Boxen und Boxsport getrennt behandelt wird.

                          Bei deiner Berechnung wird eine durchschnittliche Affinität zu allen sportarten angegeben, halte ich für wenig sinnvoll.

                          Spieler 1 mag alle sportarten zu 60%, was soll dass denn ausagen :P

                          Also es muss schon immer von sport art zu sport art verglichen werden und dann ein mittelwert ausgegeben werden.


                          beispiel Boxen :

                          Person 1 mag Boxen 7/10
                          Person 2 mag Boxen 10/10
                          Person 3 mag Boxen 1/10

                          Leider sind alle meine Stochastikkenntnisse wie weggeblasen , aber da müsste man was mit der Standardabweichung machen denke ich



                          Hier würde ich mal versuchen, immer die Differenz zu finden, die Durchschnittsdifferenz auszurechnen und dann eine skala machen, wie von 0-1 = sehr gute Übereinstimmung, 1-3 gut, 3-6 mittel usw usw


                          An mich bitte keine unaufgeforderten E-Mails senden (ausser ihr seid bereit geld zu zahlen, dann gerne )

                          Kommentar


                          • #14
                            Nicht dass der eine schreibt ich mag Boxen, der andere ich mag Boxsport und Boxen und Boxsport getrennt behandelt wird.
                            Uservorschläge sind zwar möglich, freigeschaltet werden sie jedoch vom Admin.

                            Bei deiner Berechnung wird eine durchschnittliche Affinität zu allen sportarten angegeben, halte ich für wenig sinnvoll.
                            Grundsätzlich machen die ja alle gerne Sport, und daher auch 6 Punkte, wenn jmd eine Sportart mag und der andere sie nicht gerade 'hasst'.


                            @wahsaga & Max:

                            Würdet ihr nach diesen Infos immer noch nach dem Differenzmodell arbeiten oder macht meine idee dann doch irgendwie Sinn?

                            Kommentar


                            • #15
                              Hi, nach Feierabend ( 17 Uhr ) schaue ich meist nicht mehr ins Forum

                              Also wenn alle irgendwie sportbegeistert sind, dann kann man wohl dein Modell anwenden, da würde ich aber nicht nur die durchschnittliche Affninität zu Sport bewerten, sondern auch vielleicht Ausreisser berücksichtigen, wenn die 2 Personen z.B. beide 0.6 haben, aber 2 Sportarten dabei sind, die der eine sehr gerne mag, aber der andere umgekehrt.

                              Wird also schwer, da ein Bewertungssytem zu finden, das zufriedenstellend ist.

                              Du kannst aber gerne deine Algorithmen hier posten, ich schaue gerne mal rein, das Problem scheint nämlich recht interressant zu sein

                              cya max


                              An mich bitte keine unaufgeforderten E-Mails senden (ausser ihr seid bereit geld zu zahlen, dann gerne )

                              Kommentar

                              Lädt...
                              X