[PYTHON] Ich möchte mit Jubatus (1) eine nicht autorisierte Anmeldung bei Facebook erkennen.

Letztes Mal habe ich [Nicht allzu nützlicher Klassifikator] erstellt (http://chase0213.hatenablog.com/entry/2014/07/12/135747), damit ich etwas machen kann, das etwas mehr verwendet werden kann.

Facebook-Daten herunterladen

Klicken Sie auf Facebook oben rechts auf die Markierung "▼" (Stand Juli 2014). Wenn Sie den Eintrag "Einstellungen" anzeigen, befindet sich unten unter "Allgemeine Kontoeinstellungen" der Link "Facebook-Daten herunterladen". Wenn Sie darauf klicken und verschiedene Authentifizierungen durchführen, können Sie die auf Facebook geposteten Daten im HTML-Format herunterladen. Ich habe versucht, dies mit einem leichten Gefühl herunterzuladen, aber ehrlich gesagt gab es zu viele kritische Informationen und ich habe sie ein wenig gezogen. Ich bin der Meinung, dass wir, wenn wir solche Daten empfehlen, etwas mit hoher Genauigkeit erstellen können.

security

In dieser Geschichte gibt es also einen Punkt namens "Sicherheit" in den oben heruntergeladenen Daten. Sie können sehen, wer sich von wo auf Facebook usw. bei diesem Konto angemeldet hat. Dies wird verwendet, um nicht autorisierten Zugriff zu erkennen.

Ich benutze immer noch Jubatus. Es gibt eine API namens jubaanomaly zum Erkennen von Ausreißern. Verwenden Sie diese.

configration

Die Jubatus-Serverkonfigurationsdatei finden Sie hier. https://github.com/chase0213/anomal_facebook_activity/blob/master/lof.json

Da es sich im Grunde genommen um ein Beispiel handelt, gibt es keine besondere Erklärung. Es ist auch ein guter Punkt von Jubatus, dass Sie etwas herstellen können, das bis zu einem gewissen Grad verwendet werden kann, selbst wenn Sie die Probe so verwenden, wie sie ist.

Diesmal ist es "Jubatus de ~ (1)". Wenn ich also (2) veröffentliche, denke ich, dass ich mich hier richtig eingestellt habe.

pre-processing

Die von Facebook heruntergeladenen Daten sind im HTML-Format markiert und werden entsprechend transformiert. Dieses Mal habe ich ein Python-Skript erstellt und es transformiert (Python 2.6). https://github.com/chase0213/anomal_facebook_activity/blob/master/data/trim.py

(Sie können es wie string_rules schreiben, aber ich musste es etwas mehr formatieren)

anomaly detection

Wenn die Daten fertig sind, übergeben Sie sie zur Berechnung von Anomalien an den Jubatus-Server.

client = jubatus.Anomaly(HOST,PORT,NAME)

Starten Sie den Jubatus-Server als

ret = client.add(datum)

Fügen Sie die Daten als hinzu. Datum sind Daten im Format jubatus.common.Datum. Dann gibt ret die ID und Anomalie dieser Daten zurück. Zunächst ist es besser, den Rückgabewert dieses client.add (Datum) zu überprüfen und festzustellen, ob die Daten um 1.0 herum richtig verteilt sind. Wenn sich einer von ihnen deutlich von 1.0 unterscheidet, schauen Sie sich bitte die Daten genauer an. Es besteht die Möglichkeit eines unbefugten Zugriffs.

Nachdem Sie einige Daten auf dem Jubatus-Server gesammelt haben, Ich werde Ihnen Daten geben, die völlig anders als gewöhnlich sind.

anomal_datum = Datum({
    "activity": "DELETE",
    "time":     "15. Juli 2014 17:59 UTC+12",
    "ip_address": "127.0.0.1",
    "brawser": "IE6",
    "cookie": "???"
})

Lassen Sie den Jubatus-Server nach dem Definieren der Daten die Anomalie berechnen. Hier möchten wir sehen, ob es abnormal ist, ohne die Daten zu registrieren. Daher verwenden wir client.calc_score anstelle von client.add.

anomality = client.calc_score(anomal_datum)

calc_score hat einen float-Wert als Rückgabewert. Bitte gefällt es, ob es gekocht oder gebacken wird.

Ich wünschte, ich könnte "normale Daten" anzeigen, aber ich werde sie weglassen, weil ich den Zugriff auf Anomalien selbst erhöhen werde.

Zusammenfassend sieht es so aus. https://github.com/chase0213/anomal_facebook_activity/blob/master/anomaly.py

Hier ist das Ergebnis des Ausprobierens.

$ python anomaly.py
anomality(anomal datum): 2.33819794655
anomality(nomal datum): 0.999999880791

Die zweite Zeile gibt die oben definierten anomalen Daten an, und die dritte Zeile gibt die "normalen Daten" an. Bei anomalen Daten ist der Grad der Anomalie deutlich höher. Vielleicht ist es besser, einen statistischen Test oder einen Schwellenwert festzulegen, um eine Warnung auszulösen.

Das ist alles, um Jubatus auszuprobieren, was etwas nützlicher ist als beim letzten Mal. Das nächste Mal möchte ich dies etwas ernster einstellen.

Abgesehen davon habe ich bei einer Google-Suche nach "Jubatus Anomaly" das Gefühl, dass die Seite für die alte API betroffen ist. Bitte beachten Sie, dass die API je nach Version (diesmal) möglicherweise nicht richtig funktioniert.

Recommended Posts

Ich möchte mit Jubatus (1) eine nicht autorisierte Anmeldung bei Facebook erkennen.
Ich möchte Objekte mit OpenCV erkennen
Ich möchte ○○ mit Pandas machen
Ich möchte mit Python debuggen
Ich möchte einen Blog mit Jupyter Notebook schreiben
Ich möchte eine Pip-Installation mit PythonAnywhere durchführen
Ich möchte Protokolle mit Python analysieren
Ich möchte mit aws mit Python spielen
Ich möchte MATLAB feval mit Python verwenden
Ich habe versucht, mit OpenCV Bewegungen schnell zu erkennen
Ich möchte datetime.datetime.now () auch mit pytest verspotten!
Ich möchte mehrere Bilder mit matplotlib anzeigen.
Ich möchte 100 Datenwissenschaften mit Colaboratory schlagen
Ich möchte ein Spiel mit Python machen
Ich möchte OREMO mit setParam sein!
Ich möchte Temporäres Verzeichnis mit Python2 verwenden
Ich habe versucht, ein Objekt mit M2Det zu erkennen!
Ich möchte -inf nicht mit np.log verwenden
#Unresolved Ich möchte Gobject-Introspection mit Python3 kompilieren
Ich möchte ip vrf mit SONiC verwenden
Ich möchte APG4b mit Python lösen (Kapitel 2)
Ich möchte mit Djangos Migrate von vorne beginnen
Ich möchte mit Python in eine Datei schreiben
Ich möchte ein Bild mit Lollipop in WebP konvertieren
Ich möchte Bilder von Katzen von Instagram erkennen
Ich möchte mit einem Knopf am Kolben übergehen
Ich möchte die Optimierung mit Python und CPlex behandeln
Ich möchte mit verstärkendem Lernen einen Berg besteigen
Ich möchte mit Python-Datenklasse nach hinten erben
Ich möchte mit einem Roboter in Python arbeiten.
Ich möchte eine Zeichenkette mit Hiragana teilen
Ich möchte Lambda mit Python auf Mac AWS!
Ich möchte manuell eine Legende mit matplotlib erstellen
[TensorFlow] Ich möchte Fenster mit Ragged Tensor verarbeiten
Ich möchte einen Quantencomputer mit Python betreiben
Ich möchte eine lokale Variable mit Lambda binden
Ich möchte SUDOKU lösen
Ich möchte Daten mit Python analysieren können (Teil 3)
Ich möchte Pythons ungelöste Importwarnung mit vsCode entfernen
Ich möchte R-Funktionen einfach mit ipython notebook verwenden
Ich möchte eine andere Version von Python mit pyvenv angeben
Ich möchte Daten mit Python analysieren können (Teil 1)
Ich möchte einen Blog-Editor mit dem Administrator von Django erstellen
Ich möchte eine Jupyter-Umgebung mit einem Befehl starten
[NetworkX] Ich möchte nach Knoten mit bestimmten Attributen suchen
Ich möchte ein Klickmakro mit pyautogui (Wunsch) erstellen.
Ich möchte mit Numpy die japanische Flagge in die Palau-Flagge ändern
Ich möchte Daten mit Python analysieren können (Teil 4)
Ich möchte mit GAN Schwarzweißfotos von Erinnerungen ausmalen
Ich möchte Daten mit Python analysieren können (Teil 2)
Ich möchte automatisch an Online-Kursen mit Python + Selen teilnehmen!
Ich möchte ein Klickmakro mit pyautogui (Outlook) erstellen.
[Python] Ich möchte die Option -h mit argparse verwenden
Ich möchte eine virtuelle Umgebung mit Jupyter Notebook verwenden!
Ich möchte das Paket aus den Anforderungen.txt mit Poesie installieren
[Visualisierung] Ich möchte mit Plotly ein schönes Diagramm zeichnen
Ich möchte den Multiprozessor-Pool von Python mit Strg + C (KeyboardInterrupt) beenden.
Ich möchte einen Platzhalter verwenden, den ich mit Python entfernen möchte