Kurs:Mehrdimensionale lineare Regression
Mehrdimensionale lineare Regression
BearbeitenIm Unterschied zu dem eindimensionalen Fall für und bei der unten veranschaulichten lineare Regression beschreibt eine mehrdimensionalen lineare Regressionsanalyse einen linearen Zusammenhang zwischen einem unabhängigen Vektor und einem davon abhängigen Vektor .
Gliederung
BearbeitenDas Vorgehen in dieser Lernressource umfasst folgende Schritte:
- Daten und Abbildungen - Gegeben sind Daten für einen unbekannten funktionalen Zusammenhang f
- Transformation - affin zu linear
- Zerlegung einer linearen Abbildung in Komponentenfunktionen
- Regression für Komponentenfunktion - exakte Lösung und Approximation
- Gradient - lineares Funktional - (Foliensatz)
- Gesamtfehler aller Fehlerfunktionen - (Foliensatz)
Lineare Regression - eindimensionaler Definitions und Wertebereich
Bearbeiten
Animation - Multiple lineare Regression
Bearbeiten
Regressionsebene, die sich an eine „Punktwolke“ im dreidimensionalen Raum anpasst (Fall Dimension Graph )
Ziel der linearen Regression
BearbeitenFür die Abbildung und Daten sucht man eine geeignete Matrix und einem Vektor , sodass der aggregierte quadratische Fehler über alle Daten aus möglichst klein wird.
Mehrdimensionale Fehlerfunktion
BearbeitenDie Fehlerfunktion für die aggregierten quadratischen Fehler in normierten Räumen wird wie folgt definiert:
Dabei beschreibt die Länge des Fehlervektors.
Datenvektoren in den Einzelfehlern
BearbeitenDer Einzelfehler von einem Datum hängt von den Vektoren und ab mit:
Mit kann man den euklischen Abstand zwischen einem Sollvektor aus den Daten und einem durch approximierten Vektor messen.
Bemerkung - Fehler
BearbeitenDabei ist eine Norm auf dem Wertebereich der Funktion .
3D-Visualisierung - Multiple lineare Regression
BearbeitenWählt man Datenpunkte mit als unabhängige Variablen und einer eindimensionalen abhängigen Variablen , so ist der Graph der affinen Abbildung eine Ebenen im dreidimensionalen Raum , in der man die Datenpunkten die Form den den Graphen der affinen Abbildung noch darstellen kann.
Aufgabe - Graph der Regression als Gerade
BearbeitenBetrachten Sie nun einen eindimensionalen Definitionsbereich und einen zweidimensionalen Werterbereich mit Datenpunkte , die entlang einer Gerade im dreidimensionalen Raum angeordnet sind. Wie kann man die lineare Abbildung durch zwei standardmäßige lineare Regressionen berechnen?
Ziel der linearen Regression - Komponentenfunktionen
BearbeitenIst der Wertebereich der linearen Abbildung mit eindimensional, sucht man zu den Datenpunkten mit
einen geeigneten Vektor , sodass der aggregierte quadratische Fehler über alle Daten aus möglichst klein wird.
Fehler für Datenpunkte
BearbeitenFür einen einzelnen Datenpunkt kann man mit jeweils den Fehler wie folgt angeben:
Definition der Fehlerfunktion
BearbeitenNun kann man die Fehlerfunktion definieren:
Implemenation der Fehlerfunktion in R
BearbeitenIn der folgenden Implementation bezeichnet der Buchstabde p
immer Variablen, die als Parameter der Funktion übergeben werden.
e_LR <- function (pa,px,py) {
## pa : Vektor - n-dimensional a
## px : Vektor - n-dimensional x
## py : Zahl - Messwert y
return <- sum(pa * px) - py
## Rückgabewert: Fehler für (pa,px,py)
return
}
Bemerkung - Skalarprodukt
BearbeitenDas folgende Codefragement berechnet das Skalarprodukt von zwei Vektor
sum(pa * px)
Aufruf der Fehlerfunktion in R
BearbeitenMit der obigen Definition steht nun die Funktion zur Verfügung und man kann den Fehler für gegebene Vektoren und dem Messwert berechnen.
## Aufruf der Funktion für den Vektor x
a <- c(1,3,4)
x <- c(4,2,1)
sum(a*x) ## Ergebnis <a,x> = 14
y <- 14.4
e_LR(a,x,y) ## Ergebnis -0,4
Quadratische Fehler für Datenpunkte
BearbeitenDer quadratische Fehler ergibt aus dem Quadrat der euklidischen Länge (Norm) des Fehlervektors mit
Dabei ist die euklidische Norm wie folgt definiert:
Implementation - Quadratischer Fehler in R
BearbeitenDie Norm ist in R bereits definiert und kann wie folgt berechnet werden.
e <- c(3, 4) ## Fehlervektor mit zwei Komponenten
norm(e,"2") ## liefert als Länge von e den Wert 5=sqrt(3^2+4^4)=sqrt(25)
Normquadrat - Summe der Komponentenquadrate
BearbeitenDa die Norm im obigen Beispiel quadriert wird, ist der absolute (quadratische) Fehler allgemein die Summe der Quadrate, d.h
Implementation des quadratischen Fehlers in R
BearbeitenDamit lässt der quadratische Fehler wie folgt berechnen:
error2 <- function (px) {
return <- sum(px^2)
## Rückgabewert: quaderror - quadratischer Fehler
return
}
## quadratischen Fehler berechnen von v
v <- c(3,4)
error2(v) ## liefert den Wert 25 als quadratischen Fehler
## quadratischen Fehler der affinen Abbildung f
e <- f(x) - y
error2(e)
Bemerkung - Dimension des Vektors als Parameter px
BearbeitenDie Funktion error2(px)
erlaubt das einsetzen von Spaltenvektoren error2(v)
mit beliebiger Anzahl von numerischen Komponenten.
Gradientenabstiegsverfahren und Fehlerfunktion
BearbeitenZiel des Optimierungsproblems ist es, den Fehler bei mehrdimensionalen linearen Regression zu minimieren. In dem folgende Abschnitt wird das über das Gradientenabstiegsverfahren umgesetzt.
Bemerkung - Aggregation der absoluten Fehler über alle Daten
BearbeitenBei der Berechnung des Gesamtfehlers über alle Daten macht es Sinn, dass man nicht die absoluten Fehler aufsummiert (da diese mit einem Vorzeichen) versehen sind, sondern Werte als Abweichung von den Daten aufsummiert, die nicht negativ sind. Der Betrag des absoluten Fehlers ist allerdings das Gradientenabstiegsverfahren ungeeignet, da die Betragsfunktion nicht differzierbar ist. Daher verwendet man für die Minimierung Fehlerquadrate.
Partielle Ableitungen des quadratischen Fehlers 1
BearbeitenFür ein lineares Funktional und einem einzelnen Datenpunkt kann man mit ergibt sich der quadratische Fehler wie folgt:
Partielle Ableitungen des quadratischen Fehlers 2
BearbeitenFür den Gradienten bzgl. der unbekannten Koeffizienten aus benötigt man die partiellen Ableitungen der Fehlerquadrate. Mit der Kettenregel ergibt sich für diese partielle Ableitung mit wie folgt:
wobei die innere Ableitung von nach ist.
Gradient des quadratischen Fehlers 1
BearbeitenDer Gradient des quadratischen Fehlers ergibt sich aus den partiellen Ableitungen bzgl. der Argumente . Die weiteren Argumente und des quadratischen Fehlers werden durch die Trainingsdaten belegt. Da die Definition des Gradienten i.d.R. auf alle Argumente der Funktion bezieht, wird hier in der Definition statt verwendet.
Gradient des quadratischen Fehlers 2
BearbeitenDer Gradient des quadratischen Fehlers für einen einzelnen Datenpunkt ergibt sich damit wie folgt.
CAS4Wiki - Partielle Ableitungen
BearbeitenMit CAS4Wiki können Sie die obigen Ableitung berechnen, siehe z.B. partielle Ableitungen
Gesamtfehler des mehrdimensionalen Regression
BearbeitenFür die Berechnung des Gesamtfehlers der muss man die quadratischen Fehler über alle Datenpunkte aggregrien. Die Daten für die mehrdimensionale lineare Regression bestehen aus Datenpunkten der Form :
Wertebereich - eindimensional
BearbeitenIm Folgenden verwendet man Daten mit einen eindimensionalen Wertebereich und einer linearen Funktion . Daher liegen die Daten in folgender Form vor.
Berechnung des Gesamtfehlers
BearbeitenFür die Berechnung des Gesamtfehlers werden die quadratischen Fehler für einzelne Datenpunkte aufsummiert mit und .
Datenbeispiel
BearbeitenMehrdimensionale lineare Regression soll als Optimierungsproblem für folgende lineare Abbildung mit und durchgeführt werden.
Daten in R in einer CSV-Tabelle
BearbeitenMit der obigen Dimension von Definitionsbereich und Wertebereich der lineare Abbildung haben die tabellarischen Trainingdaten die folgenden Gestalt in einer Datei multilinreg1.csv
[1]
"x1" , "x2" , "x3" , "y" 1 , 2 , 3 , 16.05071 2 , 3 , 1 , 22.06779 7 , 0 , 4 , 24.96846 7 , 6 , 5 , 56.06086
Laden der Daten in R aus einer CSV-Tabelle
BearbeitenSpeichen Sie zunächst die obige Beispieldatei multlinreg1.csv
[1] in Ihr Verzeichnis mit dem KnitR-Dokument. Das Laden von Dateien in R und KnitR kann bzgl. der obigen Beispieldatei[1] wie folgt geschehen:
data <- read.csv("multlinreg1.csv", header=TRUE, stringsAsFactors=FALSE)
Selektieren der Daten für x- und y-Werte
BearbeitenEine Tabelle enthält ggf. mehr Spalten als die elementare oben genannte Demodatei multlinreg1.csv
[1]. Daher muss man zunächst in R die relevanten Datenspalten für die x- und y-Werte der linearen Regression selektieren.
data <- read.csv("multlinreg1.csv", header=TRUE, stringsAsFactors=FALSE)
## Spalten extrahieren für x_D
x1 <- data[,1]
x2 <- data[,2]
x3 <- data[,3]
## Spalten extrahieren für y_D
y1 <- data[,4]
## Dataframes für die Fehlerfunktion
x_D <- data.frame(x1,x2,x3)
y_D <- data.frame(y1)
Implementation die quadratische Fehlerfunktion
BearbeitenFür die Implementation des Gesamtfehlers in R verwendet man die geladenen Daten in data
. Die Datenpunkte liegen als Zeilen in der CSV-Datei vor.
E <- function (pa,px_D,py_D) {
## px_D : Dataframe - Liste von x-Vektoren
## py_D : Dataframe - Liste von y-Werten
## pa : darstellender Vektor von f_a
## Fehler pro Datenpunkt
datenanzahl <- nrow(px_D)
e_D <- rep(0,datenanzahl)
## Fehler für alle Datenpunkte berechnen
for (i in 1:datenanzahl) {
## quadratische Einfehler mit Funktion e
e_D[i] <- (sum(pa*px_D[i, ]) - py_D[i, ])^2
}
## Rückgabewert als aufsummierte Einzelfehler setzen
return <- sum(e_D) ## datenanzahl
## Rückgabewert: return Gesamtfehler quadratisch
return
}
Bemerkung - Implementation Fehlerfunktion
BearbeitenDie obige Funktion in R berechnet die nachstehende Summe mit einer for
-Schleife über die quadratischen Einzelfehler.
Auswertung der quadratischen Gesamtfehlers
BearbeitenBezogen auf die Beispieldaten[1] in kann nun den Fehler für unterschiedliche darstellende Vektoren berechnen.
a <- c(2,3,2)
E(a,x_D,y_D) ## Ergebnis 260.6786
a <- c(3,5,2)
E(a,x_D,y_D) ## Ergebnis 50.21575
Die zweite Setzung des darstellende Vektors für die Funktion eine kleineren Fehler.
Gradientenabstieg
BearbeitenBeim Gradientenabstieg wird bei der aktuellen Position der Gradient der Fehlerfunktion berechnet und der aktuelle Vektor in Richtung des negativen Gradient zu verändert, um den Gesamtfehler zu verkleinern.
Gradient des Gesamtfehlers
BearbeitenMit der Anwendung der Summenregel für den Gradienten einer Summe man den Gradienten des Gesamtfehlers wie folgt berechnen.
Implementation des Gradienten für den Gesamtfehlers
BearbeitenFür die Implementation des Gesamtfehlers in R verwendet man die geladenen Daten in x_D
und y_D
. Die Datenpunkte liegen als Zeilen in der CSV-Datei vor.
GradE <- function (pa,px_D,py_D) {
## px_D : Dataframe - Liste von x-Vektoren
## py_D : Dataframe - Liste von y-Werten
## pa : darstellender Vektor von f_a
## Fehler pro Datenpunkt
datenanzahl <- nrow(px_D)
return <- rep(0,length(pa))
e_D <- rep(0,datenanzahl)
## Fehler für alle Datenpunkte berechnen
for (i in 1:datenanzahl) {
## quadratische Einfehler mit Funktion e
return <- return + (sum(pa*px_D[i, ]) - py_D[i, ]) * px_D[i, ]
}
## Rückgabewert: return Gesamtfehler quadratisch
return
}
Quellennachweise
Bearbeiten- ↑ 1,0 1,1 1,2 1,3 1,4 Bert Niehaus (2024) GitHub-Repository KnitR for Education https://github.com/niebert/knitr4education für eine Wikiversity-Lernressource - Datei: multilinreg1.csv
Siehe auch
BearbeitenSeiteninformation
BearbeitenDiese Lernresource können Sie als Wiki2Reveal-Foliensatz darstellen.
Wiki2Reveal
BearbeitenDieser Wiki2Reveal Foliensatz wurde für den Lerneinheit Kurs:Maschinelles Lernen' erstellt der Link für die Wiki2Reveal-Folien wurde mit dem Wiki2Reveal-Linkgenerator erstellt.
- Die Seite wurde als Dokumententyp PanDocElectron-SLIDE erstellt.
- Link zur Quelle in Wikiversity: https://de.wikiversity.org/wiki/Kurs:Maschinelles%20Lernen/Mehrdimensionale%20lineare%20Regression
- siehe auch weitere Informationen zu Wiki2Reveal und unter Wiki2Reveal-Linkgenerator.