Mehrdimensionale lineare Regression

Bearbeiten

Im 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

Bearbeiten

Das Vorgehen in dieser Lernressource umfasst folgende Schritte:

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

Bearbeiten

Fü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

Bearbeiten

Die 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

Bearbeiten

Der 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

Bearbeiten

Dabei ist   eine Norm auf dem Wertebereich   der Funktion  .

3D-Visualisierung - Multiple lineare Regression

Bearbeiten

Wä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

Bearbeiten

Betrachten 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

Bearbeiten

Ist 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

Bearbeiten

Für einen einzelnen Datenpunkt   kann man mit   jeweils den Fehler wie folgt angeben:

 

Definition der Fehlerfunktion

Bearbeiten

Nun kann man die Fehlerfunktion   definieren:

 

Implemenation der Fehlerfunktion in R

Bearbeiten

In 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

Bearbeiten

Das folgende Codefragement berechnet das Skalarprodukt   von zwei Vektor  

sum(pa * px)

Aufruf der Fehlerfunktion in R

Bearbeiten

Mit 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

Bearbeiten

Der 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

Bearbeiten

Die 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

Bearbeiten

Da 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

Bearbeiten

Damit 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

Bearbeiten

Die Funktion error2(px) erlaubt das einsetzen von Spaltenvektoren error2(v) mit beliebiger Anzahl von numerischen Komponenten.

Gradientenabstiegsverfahren und Fehlerfunktion

Bearbeiten

Ziel 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

Bearbeiten

Bei 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

Bearbeiten

Für ein lineares Funktional   und einem einzelnen Datenpunkt   kann man mit   ergibt sich der quadratische Fehler wie folgt:

 

Partielle Ableitungen des quadratischen Fehlers 2

Bearbeiten

Fü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

Bearbeiten

Der 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

Bearbeiten

Der Gradient   des quadratischen Fehlers für einen einzelnen Datenpunkt   ergibt sich damit wie folgt.

 

CAS4Wiki - Partielle Ableitungen

Bearbeiten

Mit CAS4Wiki können Sie die obigen Ableitung berechnen, siehe z.B. partielle Ableitungen

Gesamtfehler des mehrdimensionalen Regression

Bearbeiten

Fü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

Bearbeiten

Im Folgenden verwendet man Daten mit einen eindimensionalen Wertebereich und einer linearen Funktion  . Daher liegen die Daten in folgender Form vor.

 

Berechnung des Gesamtfehlers

Bearbeiten

Für die Berechnung des Gesamtfehlers   werden die quadratischen Fehler für einzelne Datenpunkte   aufsummiert mit   und  .

 

Datenbeispiel

Bearbeiten

Mehrdimensionale lineare Regression soll als Optimierungsproblem für folgende lineare Abbildung   mit   und   durchgeführt werden.

 

Daten in R in einer CSV-Tabelle

Bearbeiten

Mit 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

Bearbeiten

Speichen 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

Bearbeiten

Eine 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

Bearbeiten

Fü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

Bearbeiten

Die obige Funktion   in R berechnet die nachstehende Summe mit einer for-Schleife über die quadratischen Einzelfehler.

 

Auswertung der quadratischen Gesamtfehlers

Bearbeiten

Bezogen 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

Bearbeiten

Beim 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

Bearbeiten

Mit 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

Bearbeiten

Fü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. a b c d e Bert Niehaus (2024) GitHub-Repository KnitR for Education https://github.com/niebert/knitr4education für eine Wikiversity-Lernressource - Datei: multilinreg1.csv

Siehe auch

Bearbeiten

Seiteninformation

Bearbeiten

Diese Lernresource können Sie als Wiki2Reveal-Foliensatz darstellen.

Wiki2Reveal

Bearbeiten

Dieser Wiki2Reveal Foliensatz wurde für den Lerneinheit Kurs:Maschinelles Lernen' erstellt der Link für die Wiki2Reveal-Folien wurde mit dem Wiki2Reveal-Linkgenerator erstellt.