Übung 1 zu Einführung in Maschinelles Lernen (PD Stefan Bosse) |
Die Daten sind eingebettet und können mit den u.g. Variablen gelesen werden.
Es gibt zwei Formate in denen die Daten vorliegen können:
Datenmatrizen haben die Typsignatur (number|string) [][]
Rekordtabellen haben die Typsignatur {$attributname:number|string} []
Die Spalten werden entweder über einen numerischen Index oder meistens über einen Attributnamen ausgewählt
DATA: Variable dataex01D Type: {Beispiel, Aussicht, Temperatur, Luftfeuchtigk., Windig?, Klasse} []
X=[]
Y=[Klasse]
X,Y=Klasse={N,P}
▸
|
✗
|
DATA: Variable datapo01D Type: {gender, age, liveIn, familiyKids, carrier, freeTime, FrndsFmly, religion, politics, funRelax, education, party} []
Erhebung: MCWS durchgeführt 2019/2020 von Delzar Habisch (Uni Koblenz)
X=[]
Y=[party]
X,Y=party={CDU,SPD,..}
▸
|
✗
|
DATA: Variable dataPro01 Type: [Parameterbezeichnung, Hatchabstand, Scangeschwindigkeit, Laserleistung, Schichtstärke, Volumenenergiedichte, Positionx, PositionY, Dichte] []
X=[]
Y=[Dichte]
X,Y=Dichte
▸
|
✗
|
DATA: Variable dataMall Type: [CustomerID, Genre, Age, Annual Income (k$), Spending Score (1-100)] []
X=[]
Y=[Score]
X,Y=Score
▸
|
✗
|
Operation | Programmfunktion | Rückgabe |
---|---|---|
Spalte i aus der Matrix M auswählen (i=0,1,..,cols-1} | M.pluck(i) |
α [] |
Attribute a aus der Matrix M auswählen (a:string} | M.pluck(a) |
α [] |
Teilbereich eines Vektors V (Spalte) auswählen | V.slice(start,end+1) |
α [] |
Kopie eines Vektors V (Spalte) erstellen | V.slice() |
α [] |
Transformation eines Vektors V (Spalte) erstellen | V.map(function (v) { return ε(v) }) |
β [] |
Liste aller Attribute von einer Datenmatrix | ML.statistics.features(data) |
string [] |
Spalte zu Datenmatrix rechts hinzufügen | M.merge(V,'c') |
α [][] |
Zwei Vektoren zusammenfügen | V.concat(V) |
α [] |
Datentabelle reduzieren (Zeilen- und Spaltenbereich; [] = gesamter Bereich ) |
M.sub([row1,row2], [col1,col2]) |
α [][] |
Rekordtabelle ({}[] ) in Datenmatrix ([][] ) wandeln |
ML.convert(data) |
α [][] |
Datenmatrix ([][] ) in Rekordtabelle ({}[] ) wandeln |
ML.convert(data, {features : string []}) |
{$x:α} [] |
▸
|
✗
|
Übung: Im folgenden Programmbeispielen die Auswahl der Spalte der Datentabelle für alle Spalten (also Variablen X und Y) ändern und Ergebnisse berechnen lassen.
Parameter | Programmfunktion | Parameter | Rückgabe |
---|---|---|---|
Verteilung eines Vektors | Math.statistics.distribution(V) |
string [] |
{$classname:number} |
Analyse eines Vektors | Math.statistics.analysis(V) |
string [] |
{distribution:{}, entropy:number, mostCommon:string, unique: string []} |
Entropie eines Vektors | Math.statistics.entropy(V) |
string [] |
number |
Unterscheidbare Werte (Klassen) eines Vektors | Math.statistics.unique(V) oder V.unique |
string [] |
▸
|
✗
|
Parameter | Programmfunktion | Parameter | Rückgabe |
---|---|---|---|
Mittelwert eines Vektors | V.mean |
- |
number |
Maximalwert eines Vektors | V.max |
pos?:boolean |
number |
Minimalwert eines Vektors | V.min |
pos?:boolean |
number |
Analyse eines Vektors | Math.statistics.analysis |
number [] |
{mean, median, medianAbsoluteDeviation, min, max, rootMeanSquare, standardDeviation, sum, uniqueCountSorted, variance:number} |
Entropie eines Vektors mit Intervallkodierung | ML.statistics.entropyEps |
number [], ε:number |
number |
Verteilung von numerischen Werten | Math.statistics.histogram |
number [], delta:number, min?,max?:number |
number [] |
▸
|
✗
|
▸
|
✗
|
Parameter | Programmfunktion | Parameter | Rückgabe |
---|---|---|---|
Entropie eines Vektors | Math.statistics.entropy(V) |
string [] |
number |
Unterscheidbare Werte (Klassen) eines Vektors | Math.statistics.unique(V) oder V.unique |
string [] |
|
Informationsgewinn eines Vektors X in Abhängigkeit von Y aus Datentabelle data | ML.statistics.gain(data, x, y, classes) |
{}[], string, string, string [] |
number |
▸
|
✗
|
In dieser Übung sollen nur kategorische Zielvariablen behandelt werden.
Jedoch besitzen die Datensätze 3/4 numerische Werteverteilungen!
Daher sollen nachfolgend die Zielvariablen durch Intervallkategorisierung umgewandelt werden und für die Merkmalsselektion stattdessen verwendet werden.
Eine Intervalleinteilung muss immer zwischen dem Minimal- und Maximalwert einer Variable erfolgen!
▸
|
✗
|
Die Entropie eines Datenvektors (Spalte einer Datentabelle) gibt Auskunft über die Varianz des Informationsgehaltes (Verschiedenartigkeit von Werten und Symbolen) und deren gleichmässige oder ungleichmässige Verteilung
Die bedingte Entropie und der Informationsgewinn bezogen auf eine weitere Variable (i.A. die Zielvariable Y) gibt Auskunft über die Qualität einer Variable X (also einer Spalte der Datentabelle) für die Prädiktion der Zielvariable - hier beschränkt auf Klassifikation von kategorischen Werten
In den folgenden Aufgaben sollen alle Eingabevariablen hinsichtlich deren Entropie (ML.statistics.entropy
) und dem Informationsgewinn (ML.statistics.gain
) mit Bezug zur Zielvariable Y untersucht und bewertet werden. Die Attributevariable (Spalte) die am besten für die Abbildung X → Y geeignet ist soll ausgewählt werden.
Die Datentabellen müssen ggfs. aufbereitet werden (bei Datenmatrizen muss evtl. die Kopfzeile mit den Attributnamen entfernt werden). Numerische Zielvariablen müssen in kategorische umgewandlet werden (ca. 5-10 kodierte Intervalle) !
Punkte: | 1. | /2 | 2. | /2 | 3. | /2 |
▸
|
✗
|
▸
|
✗
|
▸
|
✗
|
Benutze entweder Datensatz 3 oder 4
▸
|
✗
|