[PYTHON] Die Geschichte, Artikel-verknüpfte Anzeigen auf Jubatus anzeigen zu wollen

Einführung

Apropos, ich habe letzten Oktober am Jubatus Hackathon # 1 teilgenommen.

http://connpass.com/event/8233/

Die Folien zum Zeitpunkt der Ankündigung sind hier übersichtlich zusammengefasst. Bitte beziehen Sie sich auf sie.

http://blog.jubat.us/2014/10/jubatus.html

Obwohl ich es an einem Tag von der Planung bis zur Implementierung geschafft habe, bedauere ich, dass es viel Arbeit war. Also werde ich ein wenig hinzufügen.

Was ich gemacht habe

Kurz vor dem Hackathon besuchte ich eine der größten Werbeveranstaltungen in Japan. Lassen Sie uns davon inspiriert eine Werbung machen! Als ich einem Junior des gleichen Teams erzählte, bekam ich ein OK, also habe ich es geschafft.

Spezifische Spezifikationen und Annahmen lauten wie folgt:

――Ich habe sogenannte eigene Medien (Artikel) und möchte Anzeigen schalten, die dazu passen. ――Matching bedeutet, dass der Inhalt des Artikels und der Inhalt der Werbung ähnlich sind.

Besonders wichtig ist der Bodenzustand, der ein sehr großes Gewicht hat.

Wenn Sie einen kleinen ernsthaften Grund angeben, gibt es eine Selbstmahnung, die Struktur so einfach wie möglich zu gestalten, wenn Sie sich verlaufen. Dies liegt daran, dass komplexe Systeme die Wartungskosten erhöhen. Insbesondere beim maschinellen Lernen, wenn ein Fehler (oder ein unangenehmes Verhalten) im System vorliegt

Es gibt viele Dinge zu beachten, wie zum Beispiel, dass ich nicht mehr arbeiten möchte (ernst). Grundsätzlich automatisieren Ingenieure, um die Arbeit zu vereinfachen. Wenn also die Anzahl der Jobs zunimmt, ist dies überwältigend (?).

Übrigens wird der Code wahrscheinlich nicht so funktionieren wie er ist, aber er ist auf Github.

https://github.com/chase0213/jubatus-hackathon-01

Hier ist die Folie zum Zeitpunkt der Ankündigung.

http://www.slideshare.net/chisatohasegawa370/jubatus-hackathon-1hiyoshi

Systemaufbau

Wie Sie vielleicht von Github bemerkt haben, haben wir zunächst versucht, eine 3-Server-Konfiguration von Rails + Elasticsearch + Jubatus zu erhalten. Der Elasticsearch-Teil war jedoch nicht wesentlich und wurde abgelehnt. Ich wollte es benutzen. .. ..

Der Ablauf der Anfrage ist wie folgt.

Sie graben sich also nur in die Empfehlung ein.

Dann wird der Ort zur Beurteilung der Ähnlichkeit zwischen dem Artikel und der Werbung als Merkmalsgröße unter Verwendung des Vektorkonverters von Jubatus beibehalten, bei dem es sich um die morphologische Analyse unter Verwendung von Mecab + Ipadic handelt.

http://jubat.us/ja/fv_convert.html

Dieser Konverter ist so gut, dass er nicht viel zum Kneten der Funktionen beiträgt. Es ist also mit Lärm bedeckt und nicht sehr genau, aber ich werde später darüber sprechen.

Demo

Ich habe es auf AWS bereitgestellt und demonstriert. Ich habe gerade eine Maschine mit vernünftigen Spezifikationen verwendet, daher habe ich sie jetzt gestoppt (aus finanziellen Gründen). Wenn Sie mit dem Code richtig herumspielen, funktioniert er lokal. Bitte spielen Sie damit herum.

Konzept

Im Lernbereich des Lernens konnten Anzeigen dynamisch hinzugefügt werden, und der Geschmack des Lerngeräts war nicht so gut. Normalerweise stellen sich viele Leute vor, dass maschinelles Lernen jedes Mal intelligenter wird, wenn es verwendet wird. Deshalb werde ich diesen Teil kurz kommentieren (ich werde keinen Code schreiben, nicht schlecht).

Wenn es darum geht, einen Lernenden in einem Werbesystem zu verwenden, geht es meiner Meinung nach zunächst darum, die Impression-Rate zwischen dem, was tatsächlich angeklickt wurde und dem, was nicht, zu ändern. Mit anderen Worten, für eine Kombination von Artikeln und Anzeigen, auf die häufig geklickt wird, werden mehr Impressionen angezeigt, und für diejenigen, die dies nicht tun, werden sie gelegentlich aus einer Laune heraus angezeigt.

Ich habe es nicht wirklich geschafft, aber ich denke, es kann mit einem Klassifikator gemacht werden. Nehmen Sie insbesondere die UNION des Inhalts des Artikels, der durch das Suchsystem eingegrenzt wurde, und den Inhalt der angeklickten Werbung und tauchen Sie ihn in den Klassifizierer mit der Bezeichnung ein, auf die geklickt wurde. Wenn Sie nicht klicken, speichern Sie den Artikel und die Anzeige UNION mit der Bezeichnung, auf die nicht geklickt wurde. Beachten Sie jedoch Folgendes.

Selbst wenn ein Link nicht angeklickt wird, ist es verfrüht festzustellen, dass der Benutzer nicht daran interessiert ist.
Da Benutzern in vielen Fällen viele andere Optionen angeboten werden,
Es zeigte nicht aktiv an, dass er nicht an dem Link interessiert war.

Ich habe es wie ein Zitat aussehen lassen, aber es ist meine persönliche Meinung. Auf der anderen Seite sollten angeklickte Informationen stärker behandelt werden als nicht angeklickte Informationen.

Wenn Sie diesen Bereich also statistisch gut einstellen und für die binäre Klassifizierung in classfier eintauchen, können Sie vorhersagen, ob der Benutzer wahrscheinlich auf diese Kombination klicken wird. Wenn Sie diesen Wert in die obere Zeile zurückgeben (Empfehlung) und ihn als Koeffizienten wiedergeben, werden mehr Kombinationen angezeigt, auf die häufig geklickt wird.

Am Ende

Der letzte Absatz ist eine Schreibtisch-Theorie, daher denke ich, dass die Fallstricke überall verstreut sind. Dann habe ich es oben als "laut" beschrieben, aber dies sollte bis zu einem gewissen Grad toleriert werden. Dies liegt daran, dass völlig rauschfreie Anzeigen für Benutzer langweilig sein können (Anzeigen sind nicht professionell und sollten nicht zu ausführlich erwähnt werden).

Recommended Posts

Die Geschichte, Artikel-verknüpfte Anzeigen auf Jubatus anzeigen zu wollen
Eine Geschichte über das Ausführen von Python auf PHP auf Heroku
Eine Geschichte über einen Linux-Anfänger, der Linux auf ein Windows-Tablet bringt
Eine Geschichte über einen GCP-Anfänger, der versucht, mit GCE einen Micra-Server aufzubauen
Eine erfrischende Geschichte über Slice in Python
Eine launische Geschichte über Slice in Python
Die Geschichte der Verwendung von Python reduziert
Eine Geschichte darüber, wie man in GAE / P über verstümmelte Charaktere nachdenken möchte
Eine Geschichte, die es aufgegeben hat, JavaScripthon unter Windows auszuführen.
Eine Geschichte über einen magischen Umbau, der Lubuntu in ein Chromebook bringt
Eine Geschichte über das Erstellen eines anonymen Kanals mit Slack aus null Wissen
Eine Geschichte über Python Pop und Append
Eine Geschichte über einen Versuch, uwsgi auf einer fehlgeschlagenen EC2-Instanz zu installieren
Eine Geschichte zum Erstellen einer IDE-Umgebung mit WinPython unter einem alten Windows-Betriebssystem.
Eine süchtig machende Geschichte bei der Verwendung von Tensorflow unter Android
Eine Geschichte über einfaches maschinelles Lernen mit TensorFlow
Eine Geschichte über den Betrieb einer GCP-Instanz von Discord
Eine Geschichte, die von Go's globalen Variablen und ihrem Umfang abhängig ist
Eine Geschichte über die Implementierung eines Anmeldebildschirms mit Django
Eine Geschichte über das Ändern von Python und das Hinzufügen von Funktionen
Geschichte rund um die Datenanalyse durch maschinelles Lernen
Eine Geschichte über einen Ingenieur, der nur auf der Serverseite kam, erstellte ein Portfolio
Geschichte der Verwendung von Resonas Software-Token mit 1Password
Eine Geschichte über die Vorhersage des Wechselkurses mit Deep Learning
Die Geschichte der Migration der gesamten Linux-Festplatte über SSH
Die Geschichte, mit Python eine Hanon-ähnliche Partitur zu machen
Eine Geschichte über das Ausprobieren eines (Golang +) Python-Monorepo mit Bazel
Eine Geschichte über Kindergärten, Kindergärten und Kindergärten
Eine Geschichte, die die Discord-Aktivität im Slack-Status widerspiegelt
Eine Geschichte über das Problem, 3 Millionen ID-Daten in einer Schleife zu verarbeiten
Die Geschichte, wie theano mit TSUBAME 2.0 verwaltet wurde
Eine Geschichte über die Änderung des Master-Namens von BlueZ
Eine Geschichte über einen Linux-Anfänger, der in einer Woche LPIC101 bestanden hat
Eine Geschichte über das Stolpern durch PATH nach der Installation von Anaconda