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 ein Unternehmen oder eine Person ist. Gerade auf Twitter wird kein Unterschied zwischen einem Unternehmensprofil und einer Person gemacht.

In diesem Artikel lernst du, wie du einen Klassifizierer entwickeln kannst, der zwischen einer Person und einem Unternehmen unterscheiden kann. Mit dem fertigen Code kannst du anschließend analysieren wie viele Follower eines beliebigen Twitter-Accounts Unternehmen bzw. Personen sind. Den kompletten Code dieses Projektes findest du wie üblich auf Github.

black-and-white-city-man-people

Problem-Definition und Analyse

Um das Problem besser zu verstehen, schaust du dir am besten 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? Am besten definierst du das Problem, das im folgenden Text gelöst werden soll, also so: Entweder handelt es sich bei einem Twitter-Account um ein Unternehmen, das, z.B. durch ein Logo, als solches auch klar zu erkennen ist oder es handelt sich etwas anderes, also z.B. um eine Person oder eine Person, die ein Unternehmen promotet.

Daten sammeln und manuell klassifizieren

Bevor du richtig loslegen kannst, musst du zunächst einmal Daten über verschieden Twitter-Profile sammeln. Dazu nutzt du am besten die Twitter API, um möglichst viele Twitter-Profile herunterzuladen. Für jedes Profil speicherst du dir die Profilinformationen, die letzten Tweets und das Profilfoto. Den Code für den Crawler findest du auch in dem Github Repository.

Anmerkung: Wir haben unsere heruntergeladenen Profile nicht veröffentlich um keine Probleme mit dem Datenschutz zu bekommen.

Anschließend kommt wohl die unangenehmste Aufgabe des Machine Learnings, nämlich jedes heruntergeladene Profil manuell zu klassifizieren. Dazu machst du dir am besten eine Excel-Liste mit den Links zu allen Profilen, die du bisher heruntergeladen hast. Für jedes Profil trägst du dann in die Excel-Liste ein, ob es ein Unternehmen (C) oder kein Unternehmen (P) ist. Du solltest hier am Anfang mindestens 100 Profile klassifizieren. Je mehr du klassifizierst, desto besser kann der Machine Learning Algorithmus am Ende lernen. Wir haben für den Rest des Artikels circa 450 Profile manuell klassifiziert.

Auswertungskriterien festlegen

Nachdem du das Problem nun genau definiert hast und alle Daten vorbereitet sind, musst du dir nun zunächst einmal ein paar Gedanken über die Auswertung machen.

Da jeder Machine Learning Algorithmus nur mit einer gewissen Wahrscheinlichkeit das richtige Ergebnis zurückgibt, kannst du dir nie sicher sein, ob das Klassifikations-Ergebnis eines Profils auch richtig ist. Allerdings kannst du eine Aussage darüber treffen mit welcher Wahrscheinlichkeit ein Klassifikations-Ergebnis richtig ist. Und genau diese Wahrscheinlichkeit musst du messen und versuchen zu verbessern. In diesem Fall misst du am besten die Genauigkeit (Accuracy). Diese berechnet das Verhältnis von richtig klassifizierten Profilen und der Gesamtzahl von Profilen, die du getestet hast. Ist das Verhältnis 0 hast du alle Beispiele falsch klassifiziert. Ist das Verhältnis 1 hast du alle Beispiel richtig klassifiziert.

Die Genauigkeit, sowie alle anderen möglichen Auswertungskritierien, musst du allerdings immer an Beispielen testen, die du nicht zum Trainieren des Machine Learning Algorithmus verwendet hast. Dazu teilst du deine manuell klassifizierten Twitter-Profile in zwei Teile auf. Im ersten Teil sollten nur Profile zum Trainieren des Algorithmus enthalten sein und im zweiten Teil solltest du ausschließlich Profile, die du zum Testen nutzt, verwenden. Oft nimmt man 2/3 der Daten zum Trainieren und 1/3 der Daten zum Testen. Wenn du nur sehr wenig Daten manuell klassifiziert hast, kannst du aber auch eine sogenannte Cross-Validation benutzen. Was das genau ist, erfährst du in unseren Machine Learning Workshops.

Des Weiteren solltest du dir im voraus immer Gedanken darüber machen, ab welcher Genauigkeit dein Algorithmus wirklich was gebracht hat. Wenn du insgesamt 100 Profile manuell klassifiziert hast und davon 34 Profile Unternehmen und 66 Profile Personen waren, muss dein Machine Learning Algorithmus eine Genauigkeit von mehr als 66% erreichen. Wenn dein Machine Learning Algorithmus nämlich eine Genauigkeit von unter 66% erreichen würde, dann könntest du in einfach verbessern, indem du einfach immer alle Profile als Person klassifizierst. Dann hast du deine Genauigkeit auf genau 66% gesteigert.

woman-hand-desk-office

Eine Maschine lernen lassen

Nun kommst du zu dem Schritt, an dem du der Maschine beibringst, zwischen einem Unternehmen und einer Person, zu unterscheiden. Als erstes legst du am besten fest, welchen Machine-Learning-Algorithmus du verwenden möchtest. Du kannst den Algorithmus natürlich später immer wieder austauschen, allerdings kannst du dadurch meistens keine großen Verbesserungen erzielen. Für diesen Fall, würde ich dir den Random-Forest-Tree-Algorithmus oder den Support-Vector-Machine-Algorithmus empfehlen. Eine weitere Alternative bietet zudem auch der XGBoost-Algorithmus.
Bevor du deinen Machine-Learning-Algorithmus verwenden kannst, musst du 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 du umsetzen kannst, 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, findest du auf Github.

Wenn du alle Features definiert hast, nimmst du dir die Profile, die du zum Trainieren verwenden möchtest und konvertiert diese in die Eigenschaften. Die Eigenschaften kannst du dann an deinen Machine-Learning-Algorithmus übergeben. Der Machine-Learning-Algorithmus macht daraus anschließend ein statistisches Modell, das du später in einer Anwendung nutzen kannst. Bevor du das Modell aber in einer Anwendung nutzt, solltest du es vorher mit unserem Auswertungskriterium evaluieren. Dazu nimmst du die Test-Profile, konvertierst diese zu Eigenschaften und übergibt sie dem Modell. Das Modell sagt dir dann welche Klasse es dem Profil zuweisen würde. Diese Ausgabe vergleichst du dann deiner manuell vergeben Klasse. Wenn beide übereinstimmen, hat der Machine-Learning-Algorithmus richtig gehandelt. Wenn sie sich unterscheiden, hat der Algorithmus einen Fehler gemacht.

Wenn du mit der Genauigkeit noch nicht zufrieden bist, kannst du versuchen noch weitere oder bessere Features zu finden. Anschließend trainierst und evaluierst du 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 das 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 du mehr über die Möglichkeiten von Machine Learning erfahren? Dann besuche einen unserer professionellen Machine Learning Workshops. Dort geben wir dir einen Überblick und zeigen dir welche Besonderheiten du bei der Durchführung von Machine Learning-Projekten beachten solltest. Alle Termine und weitere Informationen hierzu findest du auf: http://consetto.com/machine-learning-workshops/.

Schreibe einen Kommentar

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