Termine

KW 40: Vorbesprechung

Di 2019-10-02, 14:30 Uhr: Vorbesprechung

Kurze Vorstellung: Wer ist da? Warum sind Sie da?

Konzept der Veranstaltung:

Long Term Vision

  • Aufbau einer leichtgewichtigen Version des Kurses als (Bachelor-) Wahlpflichtfach 3. Semester
  • Weiterer Ausbau des Moduls auf Master-Ebene
    • Knowledge Graph (ggf. http://graphdb.ontotext.com/) als semantisches Backend
    • Einbeziehung semi-strukturierter Daten, insbes. Natural Language Processing
    • -> Masterarbeit?

Software:

  • dsci-lab: XUbuntu (wie auch in den Pools) unter Oracle Virtualbox
  • gemeinsames offenes Projekt: weitere Spezifikation des Labs (d.h. dieser Maschine)

Abschluss mit einer Studienarbeit:

  • Thema: im Prinzip offen - nur spanned muss es sein.
  • Ergebnissicherung: Ein Jupyter-Notebook.
  • Jeder individuell, keine Gruppen-Abgabe. Wer in einer Gruppe arbeitet, muss dennoch eine vollständig eigene Leistung abgeben - ich bin hier inzwischen sehr streng.

Hausaufgabe (HA) bis KW 41:

  • Lesen und im Detail verstehen: Bowles S. 1-7 oben
  • VirtualBox installieren, dsci-lab herunterladen, in VirtualBox importieren: Ergebnis: "Maschine läuft".

KW 41: Einführung

Besprechung Hausaufgabe Bowles-Lektüre

kurze Einführung JB in Bowles S.7-20

Einführung in das dsci-lab

  • Lernziel: Handhabung unserer Lernumgebung
  • Python als Host-Sprache

KW 42: Titanic anschauen

Theorie: Erläuterungen JB zu Bowles:

Praxis: In medias res!

Recherche, Präsentation

  • Googeln Sie nach "exploratory data analysis python". Sie finden zahlreiche Notebooks.
  • Wählen Sie eines aus, das Sie besonders spannend finden: Titel, URL ins Etherpad!
  • Kurzbeschreibung im Etherpad:
    • Was gefällt Ihnen besonders?

KW 43: ndarray, series, dataframe

Einführung in die spezifischen Datenstrukturen von numpy und pandas

Praxis

KW 44

Ziele heute

  • Datensätze Rocks, Wine, Glass
    • kennen
    • Welches Machine Learning Problem müssen wir lösen?
    • In welchen Begriffen, Maßen, Metriken messen wir die Modell-Qualität?
  • für Rocks ein Modell erstellen

Basiswissen:

Schnellübersicht über die Kapitel

Aktion

Hausaufgabe:

  • Unbedingt Bowles S. 75-100 lesen, im Detail verstehen, ggf. im Code wiederfinden - denn nächste Woche diskutieren wir die Details!

KW 45

Fortführung Karten-Aufgabe: Kennzahlen für Klassifikation

Achieving Harmony Between Model and Data p.101

Richtung des Kurses:

KW 46

Diese Sitzung: Ende Theorie, was war dran, was sollte man jetzt wissen oder können

Theorie

Zusammenfassung zu KW 44 / Bowles Kap.4 erste Hälfte:

Diese Begriffe sollte man einordnen und erklären können:

  • zu Kap 4, erste Hälfte (vgl. Hausaufgabe):
    • l1-, l2-Norm
    • Unterschied lars, lasso glmnet/ElasticNet
    • Welche Regularisierungs-Parameter haben wir zur Verfügung?
    • Mit welchen Maßen beurteilen wir die Qualität eines Modells?
  • Begriffe aus Kap 3 FP | FN | TP | TN | precision | recall | accuracy | accuracy paradoxon | sensitivity | specificity | prevalence | f1-score | AUC | ROC | confusion matrix | error rate | test set | training set | validation set | cross validation
  • Grundlagen-Begriffe feature | feature vector | attribute | target | outcome | unabhängige Variable | abhängige Variable | nominal | kategorial | ordinal | class label | field | quantitative | continuous
  • Orientierungswissen: Erkläre den Unterschied zwischen
    • überwachtes und unüberwachtes Lernen
    • Regressions-Problem und Klassifikations-Problem
    • kategorialen, ordinalen und numerischen Features

Überblick JB zu Bowles Solving the Penalized Linear Regression Problem (p.132)

Überblick JB zu Bowles Extensions to Linear Regression (p.151)

Ggf. Demo XXX: Flugdatenschreiber

Ziel: Mini-Projektplan zu den frühen Phasen im CRISP-DM Model: Business Understanding | Data Undestanding | Data Preparation

Hausaufgabe: Bis KW 47 ein Notebook für einen bekannten Datensatz erstellen

Ziel: Eine Musterlösung für einen Datensatz von Bowles

  • Selber mit Bibliotheken machen, was Bowles in plain Python macht!
  • Vorher bei Bowles nachlesen, was er zu diesem Datensatz sagt - auch incl. Kap. 5
  • ggf. auch im Web nach Infos zu diesem Datensatz suchen

Datensatz:

  • für KW 47 zunächst Abalone
  • Vorschau: später dann auch Titanic; mit dem Datensatz spielen, z.B. auch Alter als unabhängige Variable betrachten

Warum tun wir es selbst?

  • Bestandsaufnahme: Was war schon dran, was fehlt noch - im Kurs, bei jedem selbst ;-)
  • Selber machen (aus früheren Notebooks zusammenklauben): Wiederholung, Vergessen verhindern, selbst ein Ergebnis produzieren - und Erfolgserlebnis haben!

dabei auch Visualisierungen aus https://pandas.pydata.org/pandas-docs/version/0.25/user_guide/visualization.html einsetzen.

Checkliste explorative Datenanalyse

für den gesamten Datensatz

  • read csv
    • mit Headline?
    • Datensatz ist ohne Headline, also Headline hinzufügen
      • abalone = pd.read_csv('abalone.data.csv', names=['Sex', 'Length', 'Diameter', 'Height', 'Whole weight', 'Shucked weight', 'Viscera weight', 'Shell weight', 'Rings'])
      • Alternative: Spalten nachträglich (um)benennen
    • Auszug einlesen, z.B. jede dritte Zeile, zufällige Zeilen (bei großen Datensätzen)
    • Was tun mit Null-Werten
      • anzeigen, wie viele
      • automatisch auffüllen: Wie?
      • display(abalone['Sex'].value_counts())
    • nur bestimmte Spalten
      • kann man auch mit regex als Gruppe bestimmen; gut bei vieeelen Datensätzen
  • "Form"
    • breit? lang?
      • abalone.shape
  • Wertebereiche
    • Welche Attribute haben welchen Datentyp?
      • abalone.info(verbose=True)
    • Attribut Kontonummer als Integer? Falsch! ggf. in string ändern

für jedes Attribut

  • pandas.describe
    • standard: numerisch
    • extra abfragen: nominal
  • nominal: unique Werte
  • missing values
  • plotten
  • optisch Verteilung feststellen (https://sichtungderdinge.wordpress.com/2012/06/12/statistik-und-auswertung-quantitativer-daten-in-spss/) :
    • z.B. mit Histogramm, ggf. mit binning
      • z.B. für AbaloneSex
    • Unimodale (eingipflige), symmetrische Verteilung
    • Unimodal (eingipflige), rechtsschiefe oder linksschiefe Verteilung
    • Bimodal (Kamelhöcker…) – hier ist es schwer, einen aussagekräftigen Mittelwert zu bestimmen.
    • U-förmig (’n U halt…) aussagekräftiger Mittelwert, zentrale Tendenz auch hier schwer machbar.
    • L-förmig (abfallend)
    • unbalanciert
      • https://de.wikipedia.org/wiki/Gini-Koeffizient ?
  • Ausreißer erkennen?
    • bezogen auf Quantile
    • Busines understanding: Was ist in meinem Fall ein Ausreißer?
    • ggf. Algorithmen in scikit nachschauen
    • erkennen: ok; bewerten?
  • fehlerhafte Werte erkennen
  • box plot

für je 2 Attribute

Checkliste Modellbildung

Welche Art von Problem gilt es zu lösen?

Daten-Vorbereitung

  • Normalisierung
  • Standardisierung
    • bei Bowles z.T. "normalization" genannt
  • längere Diskussion bei Bowles: nachschauen

KW 47

u.A. Besprechung der Hausaufgaben-Notebooks

https://cocalc.com/projects/830e0c63-e764-4820-a68f-70e3a5801be2/files/Abalone_2019-11-20T1455.ipynb?session=default

Hausaufgabe:

  • Daten-Vorverarbeitung aus Cocalc-Beispiel-Notebook auf Titanic-Datensatz übertragen: Mustergültiges Beispiel-Notebook zu Titanic bauen.
    • ipynb-Datei auf Moodle hochladen
  • ggf angucken: https://pandas.pydata.org › Pandas_Cheat_Sheet

KW 48

Mikro-Projekt "Banane"

Zweck: an einer 08/15-Aufgabe sehr methodisch den kompletten Pfad von Datenschöpfung, Feature Engineering, Modellkonstruktion bis hin zur Modellevaluation durch gehen - idealerweise mit möglichst wenig Code, aber viel Grips und Erklärung.

Aufgabe:

  • Vorhersage des Nettogewichtes von Bananen auf Grundlage von Basisdaten

Lernziele:

  • das bisherige Wissen auf ein triviales Spiel-Beispiel anwenden
  • Aufbau nach CRISP-DM
  • möglichst wenig Code-Zeilen verwenden
  • Nutzung von sklearn.linear_model.ElasticNetCV

Quelle:

Notebook Teil 1: "Projektplan" erstellen

  • zuerst Notebook-Struktur aufsetzen; Überschriften und Vorgehen nach CRISP-DM Model - zumindest was davon unbedingt wichtig ist
  • dann normalsprachliche Skizze "das ist zu tun"
  • minimaler Code, um zu zeigen, dass es nicht nur eine Word-Datei ist ;-) :
    • ipynb in der virtuellen Maschine
    • Datensatz einlesen
    • head, describe, shape
    • erst in Teil 2 des Projekts: Visualisierungen, ggf. feaure engineering, Lernen, Prädiktion, Evaluation etc.
  • auf Moodle hochladen (s.u.)
  • 50% der Bewertung - d.h. eine sehr gute normalsprachliche Skizze ist für das Bestehen ausreichend
    • unbedingt Bowles referieren
    • gerne auch die Übungs-Notebooks aus der Veranstaltung
    • auch CRISP

Notebook Teil 2: Codieren

  • Wiederverwendung von Notebook Teil 1
  • erst am Schluss den Code einfügen (d.h. man kann das Notebook grundsätzlich auch ohne Code abgeben)
  • Copy & Paste ist üblich und ok. Aber auch für Code-Schnipsel gilt: unbedingt penibel die Quelle angeben, sonst ist es ein Plagiat!
  • auf Moodle hochladen (s.u.)
  • 50% der Bewertung
  • Besonderheiten

Abgabe:

Feedback Hausaufgabe

Versuch: Zusammenfassen zu einem gemeinsamen Notebook auf Cocalc, geht das zumindest mit 4 Leuten?

KW 49

anschauen Uploads

auch "Upload" JB: http://jbusse.de/2019_ws_dsci/Vortrag_GdW_2019-11-28.html

Multinominale Regression

Erzeuge synthetischen Datensatz:

  • erzeuge random
    • 2 numerische Attribute: Breite (resp. Durchmesser), Höhe
    • 1 kategorialer Wert Körper-Typ: WPZK (Würfel, Pyramide, Zylinder, Kegel)
  • mit Rauschen errechnen, um physikalische Messfehler zu simulieren:
    • Oberfläche, Volumen (Formeln im Netz)
    • Verhältnis Höhe / Breite (abhängige, aber irrelevante Variable)
  • mit möglichst weitgehendem Einsatz von Bibliotheken
  • keine NaN, keine Ausreißer, keine Fehlwerte
  • Beispiel-Datensätze:

ML Problem: target: klassifiziere in Körpertyp aus:

  • Aufgabe
    • gegeben Breite und Höhe
    • gesucht: Körper-Typ WPZK
  • feature engineering (kennen wir aus "Banane")
  • zunächst auf nur 2 Körper filtern: Würfel und Kegel
  • später alle 4 Körper: multinominale Regression

Soweit möglich mit Bibliotheken realisieren:

KW 50

Diskussion der Notebooks aus KW 49

Ergebnis: Beispiel-Notebooks

KW 51

empfohlene Teilnehmer heute: Alle, die die Aufgabe "Bananen" oder "Würfel, Pyramide, Zylinder, Kegel" noch nicht ganz selbstständig lösen konnten.

Notebook: Baukloetze

Titanic Delve, adaptiert durch BUJ

Dataset Quelle: https://www.cs.toronto.edu/~delve/data/titanic/desc.html, verändert durch BUJ

  • Dieses Titanic-Dataset unterscheidet sich ganz offensichtlich von anderen bekannten Datasets bei Kaggle, Chris Albon etc.
  • Wir arbeiten nicht mit dem Original, BUJ hat ein paar Zellen geändert ;-)

Dataset Download:

Klassifikationsproblem:

  • wie üblich: Target ist "survived"
  • vorherzusagen aus den anderen Spalten

Bibliotheken:

Abschnitte:

  • Explorative Datenanalyse
  • Daten-Vorverabeitung
  • Modellgenerierung mit Cross-Validation
  • Erstellung des finalen Modells
  • Qualitätsbeurteilung
    • confusion matrix, accuracy
    • AUC + ROC
  • Zusatz-Aufgabe für Interessierte
    • Visualisieren Sie die Werte des Attributs coefs_paths_ ; interpretieren Sie auf dieser Grundlage das erstellte Modell (Transfer von Bowles Kap. 4 und 5)

Kurze Vorstellung des geplanten Vorgehens am 15.1.2020

  • Jeder TN bespricht mit JB seinen "Projektplan", JB git Feedback

Abgabe bis 15.2.

  • ein gezippter Ordner, in dem alle benötigten Daten und Notebooks flach enthalten sind (d.h. Daten werden aus dem lokalen Verzeichnis mit relativem Pfad eingelesen).
  • Ordner-Name: Name in Ihrer Hochschul-email, z.B. s-jbuss2

KW 2/2020

Lawinengefahrenprognose mit Text Analytics und Maschinellem Lernen

KW 3

Vorstellung "Projektplan" zu Titanic Delve, adaptiert durch BUJ durch die Studierenden