Social Media Analyse – Wie viele Unternehmen folgen mir auf Twitter?

Posted on Posted in Allgemein

Obwohl Soziale Netze hauptsächlich für Menschen gemacht worden sind, finden sich dort heute auch ziemlich viele Unternehmen. Diese nutzen die Sozialen Netzwerke hauptsächlich, um Information über ihr Unternehmen zu verteilen und Werbung zu machen. Leider lässt sich nicht immer feststellen, ob ein Profil zu einem Unternehmen oder eine Person gehört. Gerade auf Twitter wird kein Unterschied zwischen einem Unternehmensprofil und einer Person gemacht.

In diesem Artikel zeigen wir Ihnen, wie Sie einen Klassifizierer entwickeln können, der zwischen einer Person und einem Unternehmen unterscheiden kann. Mit dem fertigen Code können Sie anschließend analysieren wie viele Follower eines beliebigen Twitter-Accounts Unternehmen bzw. Personen sind. Den kompletten Code dieses Projektes finden Sie wie üblich auf Github.

black-and-white-city-man-people

Problem-Definition und Analyse

Um das Problem besser zu verstehen, schauen wir uns erst einmal einige Twitter-Accounts an. Unternehmensprofile lassen sich meistens sehr gut an dem Logo im Profilbild erkennen, wie z.B. bei dem Twitter-Account von Consetto. Die Profilbilder von Personen zeigen hingegen meistens Gesichter (Beispiel https://twitter.com/jenshaase). Allerdings gibt es immer wieder Ausnahmen. Die wohl größte Ausnahme stellen Freiberufler da. Diese haben meisten ein Gesicht als Profilbild, twittern aber ausschließlich über ihr Unternehmen und nie über Privates. Hier stellt sich oft die Frage: Ist das jetzt eine Person oder ein Unternehmen? Wir definieren das Problem, das im Folgenden gelöst werden soll, also so: Handelt es sich bei einem Twitter-Account um ein Unternehmen, das, z.B. durch ein Logo, als solches klar zu erkennen ist oder es handelt sich um etwas Anderes, wie z.B. um eine Person oder eine Person, die ein Unternehmen promotet?

Daten sammeln und manuell klassifizieren

Bevor wir richtig loslegen können, müssen wir zunächst einmal Daten über verschieden Twitter-Profile sammeln. Dazu nutzten wir die Twitter API, um möglichst viele Twitter-Profile herunterzuladen. Für jedes Profil speichern wir die Profilinformationen, die letzten Tweets und das Profilfoto. Den Code für den Crawler finden Sie auch eim Github Repository.

Anmerkung: Aus datenschutzrechtlichen Gründen veröffentlichen die heruntergeladenen Profile nicht.

Anschließend kommt wohl die unangenehmste Aufgabe des Machine Learnings, nämlich jedes heruntergeladene Profil manuell zu klassifizieren. Dazu erstellen wir eine Excel-Liste mit den Links zu allen Profilen, die wir heruntergeladen haben. Für jedes Profil tragen wir dann in der Excel-Liste ein, ob es sich um ein Unternehmen (C) oder eine Person (P) handelt. Auf diese Art klassifizieren wir mindestens 100 Profile. Je mehr wir klassifizieren, desto besser kann der Machine Learning Algorithmus aus den Daten lernen. In unserem Beispiel haben wir 450 Profile manuell klassifiziert.

Auswertungskriterien festlegen

Nachdem das Problem nun definiert ist und alle Daten vorbereitet sind, müssen wir uns zunächst ein paar Gedanken über die Auswertung machen.

Da jeder Machine Learning Algorithmus nur mit einer gewissen Wahrscheinlichkeit das richtige Ergebnis zurückgibt, können wir uns nie sicher sein, ob das Klassifikations-Ergebnis eines Profils auch richtig ist. Allerdings können wi reine Aussage darüber treffen, mit welcher Wahrscheinlichkeit ein Klassifikations-Ergebnis richtig ist. Genau diese Wahrscheinlichkeit müssen wir messen und versuchen zu verbessern. Wir messen die Genauigkeit (Accuracy). Diese berechnet das Verhältnis von richtig klassifizierten Profilen und der Gesamtzahl der Profile, die wir getestet haben. Ist das Verhältnis 0 haben wir alle Beispiele falsch klassifiziert. Ist das Verhältnis 1 haben alle Beispiel richtig klassifiziert.

Die Genauigkeit, sowie alle anderen möglichen Auswertungskriterien, müssen immer an Beispielen getestet werden, die nicht zum Trainieren des Machine Learning Algorithmus verwendet wurden. Dazu teilen wir die manuell klassifizierten Twitter-Profile in zwei Teile auf. Im ersten Teil sollten nur Profile zum Trainieren des Algorithmus enthalten sein und im zweiten Teil sollten ausschließlich Profile, die zum Testen genutzt werden, enthalten sein. Oft nimmt man 2/3 der Daten zum Trainieren und 1/3 der Daten zum Testen. Wenn Sie nur sehr wenig Daten manuell klassifiziert haben, können Sie auch eine sogenannte Cross-Validation benutzen. Was das genau ist, erfahren Sie in unseren Machine Learning Workshops.

Des Weiteren müssen wir uns im Voraus Gedanken darüber machen, ab welcher Genauigkeit unser Algorithmus wirklich etwas gebracht hat. Wenn wir insgesamt 100 Profile manuell klassifiziert haben und davon 34 Profile Unternehmen und 66 Profile Personen waren, muss unser Machine Learning Algorithmus eine Genauigkeit von mehr als 66% erreichen. Wenn unser Machine Learning Algorithmus nämlich eine Genauigkeit von unter 66% erreichen würde, könnten wir ihn einfach verbessern, indem wir immer alle Profile als Person klassifizierst. Dann hätten wir die Genauigkeit auf genau 66% gesteigert.

Frau klassifiziert Daten

Eine Maschine lernen lassen

Nun kommen wir zu dem Schritt, an dem wir der Maschine beibringen, zwischen einem Unternehmen und einer Person, zu unterscheiden. Als erstes legst wir fest, welchen Machine-Learning-Algorithmus wir verwenden möchten. Wir können den Algorithmus natürlich später immer wieder austauschen, allerdings lassen sich dadurch meistens keine großen Verbesserungen erzielen. In unserem Fall, verwenden wir dir den Random-Forest-Tree-Algorithmus. Geeignet wären auch der Support-Vector-Machine-Algorithmus oder der XGBoost-Algorithmus.
Bevor wir den Machine-Learning-Algorithmus verwenden können, müssen wir aus den Twitter-Profilen Eigenschaften extrahieren. Diese Eigenschaften nennt man in der Fachsprache Features und das Erstellen und Erzeugen dieser Features heißt Feature-Engineering. Das Feature-Engineering ist der wichtigste Prozess für fast alle Machine-Learning-Klassifizierer. Denn dieser Prozess entscheidet darüber wie gut unser Algorithmus am Ende funktioniert. Bei Feature-Engineering ist es wichtig Eigenschaften (Features) zu finden, die zwischen zwei Klassen unterscheiden. Eine prägnante Eigenschaft haben wir schon in der Problemdefinition gefunden: Nämlich ob ein Profilbild ein Gesicht enthält oder nicht. Um gute Features zu finden, ist oft viel Kreativität und Geschick gefragt. Mit den Jahren sammelt man hier aber einiges an Erfahrung und kann so schneller gute Features identifizieren. Weitere Features, die wir umsetzen können, wären z.B.: Hat das Profile eine URL, Anzahl der Follower, Verwendet das Profil ein Profil-Hintergrundbild. Die komplette Liste der Features, die bei uns umgesetzt worden sind, finden Sie auf Github.

Wenn wir alle Features definiert haben, nehmen wir dir die Profile, die wir zum Trainieren verwenden möchten und konvertiert diese in die Eigenschaften. Diese Eigenschaften können wir dann an unseren Machine-Learning-Algorithmus übergeben. Der Machine-Learning-Algorithmus macht daraus anschließend ein statistisches Modell, das wir später in einer Anwendung nutzen können. Bevor wir das Modell aber in einer Anwendung nutzen, sollten wir es vorher mit unserem Auswertungskriterium evaluieren. Dazu nehmen wir die Test-Profile, konvertieren diese zu Eigenschaften und übergeben sie dem Modell. Das Modell sagt uns dann welche Klasse es dem Profil zuweisen würde. Diese Ausgabe vergleichen wir dann mit der manuell vergeben Klasse. Wenn beide übereinstimmen, hat der Machine-Learning-Algorithmus richtig gehandelt. Wenn sie sich unterscheiden, hat der Algorithmus einen Fehler gemacht.

Wenn wir mit der Genauigkeit noch nicht zufrieden sind, können wir versuchen noch weitere oder bessere Features zu finden. Anschließend trainieren und evaluieren wir wieder den Algorithmus.

Zusammenfassung und Ausblick

Mit dem Code der auf Github veröffentlicht wurde, haben wir eine Genauigkeit von 90% erreicht. Dazu haben wir 37 Features aus jedem Profil erzeugt und mittels eines Random-Forest-Tree-Algorithms trainiert. Das bedeutet, dass wir in circa 9 von 10 Fällen ein Profil richtig klassifizieren können. Sicher ist hier noch Raum für Verbesserungen, aber vorerst sind wir mit dem Ergebnis zufrieden.
Möchtest Sie mehr über die Möglichkeiten von Machine Learning erfahren? Dann nehmen Sie mit uns Kontakt auf. Wir beraten Sie gerne bei der Durchführung von Machine Learning-Projekten.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.