Masanori Fujita docoyo

In der Praxis wird oft versucht, durch eine Clusteranalyse eine vermutete Relation in den Eingabedaten auszudrücken. Allgemein wäre das z. B. die Vermutung, dass die Hunde einer Hunderasse Ähnlichkeit in Gewicht, Größe und Haarlänge haben.

Dr. Nicolaj Kirchhof docoyo

Eine Clusteranalyse hat auch in der Praxis viel mit Ausprobieren und Optimieren zu tun. Das Wichtigste dabei: Möglichst alle Ausreißer entfernen und dann auf einer geeigneten Datentransformation die richtigen Parameter des Clusteralgorithmus zum Trennen der Eingabedaten suchen.

In den vergangenen beiden Artikeln der Serie haben wir uns mit der Regression und Klassifikation zwei Verfahren des überwachten Lernens angeschaut. Beide basieren darauf, dass es eine möglichst große Anzahl an Daten gibt, für die das Ergebnis bereits feststeht. Im dritten Teil der Serie beschäftigen wir uns dagegen mit einem Verfahren des unüberwachten Lernens, der Clusteranalyse.

Die generelle Unterscheidung von Verfahren des überwachten und unüberwachten Lernens ergibt sich dadurch, dass beim überwachten Lernen ein Modell so angepasst wird, dass es die bereits bekannten Ergebnisse möglichst gut auf Basis des Inputs voraussagt. Im Gegensatz dazu wird beim unüberwachten Lernen auf Basis eines Modells und seiner Parametrierung direkt ein Ergebnis erzeugt, ohne dass Wissen über bekannte Ergebnisse vorhanden ist.

Bei der Clusteranalyse wird eine Menge an Eingabedaten in Klassen eingeteilt. Das Ziel der Clusteranalyse ist es somit, die Daten anhand ihrer Ähnlichkeit zu gruppieren. Ebenso kann sie aber auch dazu dienen, für eine fest vorgegebene Anzahl an Clustern die Positionen der Clusterzentren zu bestimmen. Um diese abstrakten Beispiele mit Leben zu füllen, wollen wir sie direkt an echten Daten nachvollziehen. Dazu beschäftigen wir uns in diesem Artikel mit Trackingdaten aus dem Basketball, genauer der NBA. Unser Ziel ist es, zu analysieren, von welcher Stelle aus dem Spielfeld heraus die Spieler besonders gut punkten. Wir möchten außerdem versuchen, ohne weitere Informationen die Zwei- von den Dreipunktewürfen zu unterscheiden.

Wie üblich finden Sie die Skripte zur Auswertung in Kombination mit den verwendeten Daten auf unserer Homepage.

Artikelserie

  • Teil 1: Data Analytics in der Praxis – Regressionsanalyse
  • Teil 2: Machine Learning mit Klassifikationsverfahren
  • Teil 3: Clusteranalyse
  • Teil 4: Anomalieerkennung

Der Datensatz

Seit 2014 gibt es über das Stats-API der NBA Daten über die präzise Position jedes Wurfversuchs aller Spieler. Die meisten dieser Daten stehen zur freien Verfügung und können für detaillierte Analysen einzelner Teams oder Spieler genutzt werden. Für die Clusteranalyse rufen wir die Daten der Top-3-NBA-Werfer der Saison 2016/2017 unter Verwendung des Python-Requests-Moduls ab und führen sie direkt in einem Pandas-Dataframe zusammen (Listing 1).

import pandas as pd
import requests as r
players = {201566: 'Russell Westbrook', 201935:'James Harden', 202738:'Isaiah Thomas'}
shots_df = pd.DataFrame()
for player_id, _ in players.items():
  # non default request parameters
  req_params = { 'ContextMeasure': 'FGA', 'LeagueID': '00',
    'PlayerID': player_id, 'Season': '2016-17’, 'SeasonType': 'Regular Season' (...) }
  res = r.get('http://stats.nba.com/stats/shotchartdetail', params=req_params, headers=headers)
  res_json = res.json()
  # column names
  rows = res_json['resultSets'][0]['headers']
  # row content
  shots_data = res_json['resultSets'][0]['rowSet']
  shots_df = pd.concat([shots_df, pd.DataFrame(shots_data, columns=rows)], ignore_index=True)

Im resultierenden Datensatz (shots_df) ist jede Zeile ein Wurfversuch. Die Position (‚LOC_X‚, ‚LOC_Y’) des Wurfversuchs ist in 10*Fuß, relativ zum Korbmittelpunkt (0,0), angegeben. Neben der Position beinhaltet der Datensatz mit dem ‚SHOT_TYPE‚ die wichtige Information, ob es sich bei einem Wurf um einen ‚Missed Shot‚ oder einen ‚Made Shot‚ handelt. Darüber hinaus beinhaltet der Datensatz Informationen zur Art des Wurfs, zum Spielzeitpunkt, dem Abstand des Werfers usw.

Den vollständigen Artikel lesen Sie in der Ausgabe:

Entwickler Magazin 1.18 - "Firebase und MySQL"

Alle Infos zum Heft
579822312Unüberwachtes Lernen per Clusteranalyse
X
- Gib Deinen Standort ein -
- or -