Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

16.01.2009, 12:13

Collaborativ filtering Metrik

Also, ich habe sagen wir mal ein Autoverkäufer. Dieser hat einen Kunden der von ganz vielen Autos eins hat (d.h. binäres Format). So jetzt hat der Verkäufer noch mehr Kunden, die auch Autos gekauft haben und es soll nun Werbung, für jeden individual, generiert werden. Dazu soll jetzt geguckt werden welche Kunden welches Auto haben und dann daraufhin rausgesucht werden wie hoch die Ähnlichkeit des Kundes mit einem anderen ist. Diese Ähnlichkeit wird für jedes Auto das der andere Kunde besitzt angerechnet. Das machen wir mit allen anderen Kunden außer dem, den die Werbung zukommen soll ;) Dann haben wir am Ende bei einem Auto einen sehr hohen Wert (relativ) der uns angibt, dass wir doch bitte dieses Auto in die Werbung stellen sollten, weil die Wahrscheinlichkeit hoch ist, dass auch dem umworbenen Kunden dieses Auto gefallen wird.

So das ganze nennt man collaborativ filtering.

Soweit ist alles klar, das Problem ist im Moment nur, welche Metrik zum berechnen der Ähnlichkeit benutzt werden sollte. Es gibt ja Jaccard (Tanimoto), Dice, Euklidischer Abstand und viele andere. Doch beim Jaccard, der ja besonders für Binäre Datensätze geeignet ist, hab ich das Problem, dass er nicht darauf eingeht, dass evtl. jemand der sagen wir 22 Autos gekauft hat, davon stimmen 10 mit einem anderen Überein evtl. mehr aussage Kraft hat, als jemand der 2 Autos gekauft hat und davon stimmen nur 1 überein.

Hätte jemand da eine andere Metrik im Angebot die sich gut eignen würde?

Es handelt sich in echt natürlich nicht um Autos und Autoverkäufer sondern um etwas anderes ;)


Links:
http://kontext.fraunhofer.de/haenelt/kurs/folien/VektorAehnlichkeit-2.pdf
http://en.wikipedia.org/wiki/Jaccard_index
http://www.amazon.de/Programming-Collective-Intelligence-Building-Applications/dp/0596529325/ref=sr_1_1?ie=UTF8&s=books-intl-de&qid=1232105613&sr=8-1
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

2

16.01.2009, 12:22

Ach wo wir scon dabei sind. In welcher Sprache würdet ihr es realisieren? Dachte erst an PHP weils einfach von überall erreichbar wäre, doch kann ich die Sprache nicht wirklich gut leiden (ehm hier mal keine Diskussion warum, Typsicherheit usw.) und hat es schnell in C++ mitm Jaccard-Koeffizienten realisiert und ohne jetzt groß zu optimieren ist selbst dabei das einlesen der Datenbanken doch recht langsam. Von d.h. weiß ich noch nicht so ganz ob es empfehlenswert ist, da mit PHP ran zu gehen.

Jemand paar Pro/Contra-Argumente zu bieten? =)
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

3

16.01.2009, 13:20

Machs in Prolog. :)

Also von der Sprache her kommt es halt drauf an, was du schlussendlich damit vorhast. Wenn du es mit PHP als Webanwendung machst, dann ist sicher der Vorteil, dass sich das ganze recht gut und schnell auch im etwas grösseren Stil verteilen/testen lässt.
Wegen der Typsicherheit usw. würde ich sagen, dass es nicht wirklich drauf ankommt, da du ja nicht vorhast eine riesen Anwendung zu schreiben.
Und aus der DB einlesen wirst du ja auch kaum ununterbrochen..

4

16.01.2009, 15:12

Hm sagen wa mal so es sind Datenbestände von ca. 500 verschiedenen Autos und über 1100 Kunden die momentan eingelesen werden und dann ausgewertet werden.

Für mich war der Vorteil bis jetzt von PHP das es einfach von überall erreichbar wäre und da es was mit Entertainment zu tun hat, das ganze dann doch recht sinnvoll ist, wenn es von überall erreichbar ist. Was halt der Nachteil vom C++-System wäre ...

Nein ich werde das ganze System jetzt durch einfaches Filtering testen und dann aber noch auf Neuronale Netze erweitern.

Viel in der Datenbank muss ich nur am Anfang arbeiten ;) Dann nicht ...
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

5

20.01.2009, 16:35

Ich wollte hiermit nur bescheid geben das ich die selbe Frage nun in anderen Foren werde, damit hier keiner wegen Cross-Posting rummeckert ;)
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

Black-Panther

Alter Hase

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

6

20.01.2009, 17:31

Also ich würds mit PHP schreiben, aufgrund der genannten Vorteile. Der Geschwindigkeitsfaktor dürfte bei so "kleinen" Datenmengen eigentlich keine große Rolle spielen...

Bezüglich der Metrik... Es sollte ja nicht allzu schwierig sein, die meisten davon zu implemnetieren. Dann kannste dich ja immer noch entscheiden. Mit Erfahrung auf diesem Gebiet kann ich aber leider auch nicht dienen...

Edit:
Und was wäre, wenn du die Jaccard-Metrik etwas modifizieren würdest? Du hast ja das Problem der selben bereits erwähnt, das ließe sich doch berücksichtigen, sagen wir mal mit einem einfachen linearen Korrekturfaktor. Falls dus allgemeiner haben willst, heng ein Polynom dran, bei welchem die Koeffizienten frei konfigurierbar sind...
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

Werbeanzeige