R - Einführung in Datenverarbeitung (Teil 2) mit Analyse (Stefan Bosse) [5.2024]

Wir verwenden hier Pakete math, plot, pca. Ggfs. in einem Snippet mittels use einbinden. Rechts unten gibt es den ChatBot für eine R+ Hilfe.

Datentabellen

Daten werden häufig in Datentabellen organisiert und gespeichert. Eine Datentabelle besteht aus Zeilen und Spalten.

Spalten einer Datentabelle repräsentieren Variablen, Zeilen repräsentieren Instanzen (Experimente, Beispiele).

Dabei unterteilen sich bei ML Problemen häufig die Spalten in Eingabeattribute (X) und Ausgabeattribute (Y).

In R werden Datentabellen i.A. durch einen data.frame Datentyp (Datenrahmen) abgebildet.


Erzeugung einer Datentabelle mit einem data.frame

 ▸ 
[]
 ✗ 
 ≡ 

Datentabellen sind wie 2-dim Matrizen, und Zeilen und Spalten können über eine numerische Indizierung ausgewählt werden. Die Auswahl einer Spalte oder Zeile liefert einen Vektor, die Auswahl mehrerer Spalten und/oder Zeilen liefert wieder eine Datentabelle.

Auswahl von Feldern einer Datentabelle über den Bracketoperator D[rows,columns]. Auswahl aller Spalten oder Zeilen durch Auslassung eines Wertes, z.B. alle Zeilen der zweiten Spalte wäre D[,2], einige Spalten der dritten Zeile wäre D[3,1:2], selektiert über den Bereichsausdruck start:end. Einzelne Spalten können über den namentlichen Selektor $ ausgewählt werden, z.B. D$x.

Aufgabe. Wähle aus obigen Datenrahmen jeweils x und y aus, benutze sowohl den numerischen als auch den namentlichen Selektor. Welchen Datentyp erhält man (nutze die typeof(x) Funktion) jeweils. Wähle dann die Zeilen 2-5 aus. Wende die Summationsfunktion auf die Spalten an.


Auswahl von Spalten und Zeilen aus einem data.frame

 ▸ 
[]
 ✗ 
 ≡ 

Zusammenfassend gibt es fünf wichtige Datentypen und Datenformaten, die wie folgt erzeugt werden können (ε: Wert oder Ausdruck)

  1. Datenrahmen data.frame(x=ε,y=ε,..), mit x,y, usw. als Spaltennamen;
  2. Matrizen matrix(x,nrows,ncols,mode?) wobei x=ε ein konstanter Wert, eine Matrix oder ein vektor sein kann, und mittels mode kann man typisierte Matrizen erzeugen (z.B. float32);
  3. Vektoren vector(x,n,mode?) oder c(ε,ε,ε,..) bzw. [ε,ε,ε..]
  4. Arrays array(x,[dim1,dim2,..],mode?)
  5. Listen list(x=ε,y=ε,..) oder {x=ε,y=ε,..}
  6. (cimage)

Häufig ist im Datenmanagement und der Datenanalyse sowie Modellierung eine Umwandlung zwischen diesen Formaten. Dazu gibt es zumeist universelle Umwandlungsfunktionen:

  1. as.vector(x,mode?)
  2. as.matrix(x,nrow?=N,ncol?=N,mode?)
  3. as.data.frame(x)
  4. as.list(x)

Feldsnamen können Vektoren und Listen nachträglich mittels der names Funktion hinzugefügt werden, mei Matrizen und Datenrahmen gibt es die colnames und rownames Funktionen:

names(x)={'x','y',..}
colnames(m)={'x','y',..}

Aufgabe. Wandle nachfolgenden Vektor (randomisiert erzeugt) in eine Matrix mit 4 Zeilen und 3 Spalten um, schließlich in einen Datenrahmen mit den Spalten a, b und c. Wie sieht die Elemente des linearen Vektors nun in der Matrix und im Datenrahmen angeordnet?


Umwandlung eines linearen vektors data.frame

 ▸ 
[]
 ✗ 
 ≡ 

Analyse eines Beispieldatensatzes

Daten

DATA: Variable dataIRIS Type: { length : number, width : number, petal.length : number, petal.width : number, species : string } [151]

Im folgenden wird ein Datensatz aus der Botanik verwendet:

Der Datensatz ist bereits im Notebook enthalten und wird als Datenrahmen (data.frame) data.iris zur Verfügung gestellt!


Arithmetik auf Datenvektoren

 ▸ 
[]
 ✗ 
 ≡ 

Analyse von Datentabellen

Man kann direkt einzelne Spalten evaluieren, z.B. bei numerischen Variablen mittels der Funktionen mean, sum, sd, und table bei kategorischen Variablen. Man kann auch eine Datentabelle als ganzes analysieren. So kann man die sapply Funktion verwenden um eine Funktion auf alle Spalten anzuwenden, und man erhält einen Vektor der Aggregatwert (z.B. mean).


Arithmetik auf Spalten von Datentabellen

 ▸ 
[]
 ✗ 
 ≡ 

Zerlegung der Tabelle


Zerlegung in Spalten

 ▸ 
[]
 ✗ 
 ≡ 

Die Zielvariable y liegt als kategorische Variable vor. Eine Kodierung in eine numerische kann wie folgt durchgeführt werden:


Kodierung

 ▸ 
[]
 ✗ 
 ≡ 

Frage. Was enthält y.code? Was bewirkt factor (verwende logg/print) und was enthält y.levels?

Analysefunktionen

Die universellste Analysefunktion ist summary, gefolgt von fivenum für numerische und table für kategorische Variablen.

Aufgabe. Analysiere den Datensatz mit 1. summary, 2. Einzelne Spalten mit fivenum und table. Welche Eigenschaften haben die einzelnen Variablen (Attribute)?

R summary liefert bei kategorischen Variablen keine Verteilungsanalyse. Mit dem Argument extended=TRUE kann diese hier aktiviert werden.


Arithmetik auf Datenvektoren

 ▸ 
[]
 ✗ 
 ≡ 

Grafische Analyse

Die plot(x,y) Funktion ist universell und kann verschiedene Datenformate darstellen. Am häuigsten wird man sie für Punkt- und Linienverläufe verwenden. Die Breite (oder Höhe) des Plotfensters kann mit dev.new(width=300) gesetzt werden. Das darstellungsformat kann mittels des type='l' Argumentes eingestellt werden(p:Punkt, l: Linie, b: Beides).


Beispiele für die Plot Funktion

 ▸ 
[]
 ✗ 
 ≡ 

Aufgabe. Benutzte die plot(x,y) Funktion um Zusammenhänge zwischen den einzelnen Variablen x1 bis x4 und mit der Zielvariablen y.code herzustellen. Findet man Strukturen, können schon geeignete Kandidaten für die Klassifikation gefunden werden?

Hinweis: Man kann die x Attribute miteinander vergleichen um Abhängigkeiten zu finden, oder eine x Variable mit y. Für y dann as.numeric(factor(y)) für die numerische Kodierung verwenden.


Grafische Analyse von Attributen

 ▸ 
[]
 ✗ 
 ≡ 

X-Y Partitionierung

Grafisch konnten bereits Eingabevariablen mit der (numerisch kodierten) Ausgabevariable in einen Zusammenhang gesetzt werden. Analytisch kann man neben dem Informationsgewinn eine einfache Partitionierung der numerischen Eingabevariablen nach der Zielvariable vornehmen. Das ist im nächsten Beispiel gezeigt.


Partitionierung der x-Werte nach (kategorischen) y-Werten

 ▸ 
[]
 ✗ 
 ≡ 

Aufgabe. Analysiere die Partitionen. Lassen sich geeignete Teilungspunkte für wenigstens einer Zweiklassenseparation mit einer der Attribute erreichen?


Analyse der Partitionen

 ▸ 
[]
 ✗ 
 ≡ 

Principle Component Analysis

Wir haben eine Datentabelle mit vier Eingabe- und einem Ausgabeattribut. Eine wichtige Frage in der Vorverarbeitung ist das Vorhandensein von linearen Abhängigkeiten zwischen Variablen (X). Im Grund auch nicht-lineare Zusammenhänge, diese sind aber ohne Kenntnis des polynomiellen Zusammenhangs nicht einfach nachweisebar.

Die Hauptkomponentenanlayse berechnet mittels linearer Matrixalgebra und Lösung eines Gleichungssystems die Hauptkomponentenvektorn PC (Principle Components) einer Datentabelle.

Jede Spalte der Datentabelle erzeugt einen PC Vektor (auch Eigenvektor genannt, da PCA ein Eigenwertproblem ist), mit der Dimension der Anzahl de Spalten. Weiterhin gibt es eine Länge (Eigenwert) des Vektors, d.h. der vektorielle Betrag |PC|.

Es steht uns das Paket pca für die Berechnung der PCA zur Verfügung. Die Funktion prcomp berechnet aus einem Datenrahmen bzw. einer Matrix die PC Vektoren.

Die Funktion prcomp gibt ein abstraktes Objekt zurück. Dieses kann mit der summary Funktion interpretierbar und mittels predict zur Transformation der Datentabelle verwendet werden. Die prcomp Funktion verwendet entweder alle Spalten der Datentabelle (und einer Matrix), oder nur eine Auswahl die mittels einer Formel ~x+y+z ausgewählt werden. predict benötigt dann eine Matrix oder Datenrahmen mit der gleichen Anzahl von Spalten wie Hauptkomponenten.


PCA der Datentabelle

 ▸ 
[]
 ✗ 
 ≡ 

Aufgabe. Untersuche die transformierte Datentabelle unter Verwendung der Scatterplot Funktion. Würde schon eine Hauptkomponente reichen um alle drei Klassen gut zu separieren? Welche Komponente ist es, und warum diese?


Analayse der PCA-transformierten Datentabelle

 ▸ 
[]
 ✗ 
 ≡ 

Die trabsformierte Tabelle kann unter Verwendung der ersten degeree PC Vektoren wieder mittels der reverse Funktion in die ursprüngliche Datentabelle zurück transformiert werden. Die Transformation bezeichnet man auch als Kompression (wenn weniger PC Vektoren verwendet werden als ursprüngliche Spalten), die Rücktransformation als Dekompression.


Analayse der PCA-transformierten Datentabelle

 ▸ 
[]
 ✗ 
 ≡ 

Aufgabe. Untersuche die transformierte Datentabelle unter Verwendung der Rücktransformation. Wie hoch ist der RMSE unter Verwendung der ersten degree PC Vektoren?


Hilfe



Einreichung (Assignment #01-65141)



Prüfen



Bewerten (Lehrer)




Created by the NoteBook Compiler Ver. 1.27.2 (c) Dr. Stefan Bosse (Tue May 07 2024 13:12:31 GMT+0200 (Central European Summer Time))