Mehrdimensionale lineare Regression/Umsetzung in R
Einleitung
[Bearbeiten]Diese Seite zum Thema Kurs:Mehrdimensionale lineare Regression/Umsetzung in R kann als Wiki2Reveal Folien angezeigt werden. Einzelne Abschnitte werden als Folien betrachtet und Änderungen an den Folien wirken sich sofort auf den Inhalt der Folien aus. Dabei werden die folgenden Teilaspekte im Detail behandelt:
- (1) Laden der Daten
- (2) Iterationen zur Fehlerminimierung
- (3) Ausgabe der Matrix und des mittleren Fehlers pro Datum
Zielsetzung
[Bearbeiten]Diese Lernressource hat das Ziel, die mehrdimensionale lineare Regression in R umzusetzen und die wesentlichen Schritte in Analogie zur mathematischen Herleitung zu implementieren.
Lernvoraussetzungen
[Bearbeiten]Die Lernressource zum Thema Kurs:Mehrdimensionale lineare Regression/Umsetzung in R hat die folgenden Lernvoraussetzungen, die zum Verständnis der nachfolgenden Ausführungen hilfreich bzw. notwendig sind.
- (Mathematische Grundlagen) Die mathematischen Grundlagen sind wesentlich, um die Einsatzmöglichkeiten der Verfahren abschätzen zu kennen.
- (Grundlagen in GNU R) Die Grundlagen der Implementierung und GNU R sind hilfreich, um die Implementationsschritte zu verstehen und den Code auf anderen Datenquellen ggf. anpassen zu können.
Aufgaben Studierende
[Bearbeiten]Bitten erzeugen Sie ein KnitR-Markdown-Dokument, indem Sie die Teilschritte als Codefragement / Codechunks einbauen und testen. Gegen Sie schrittweise vor bis Sie mit den angegeben Codezeilen ein vollständiges Verfahren zur Mehrdimensionale lineare Regressionin R umgesetzt haben.
Laden der Daten
[Bearbeiten]Als einführenden Schritt eines überwachten Lernverfahrens muss man aus den gegebenen Daten festlegen, welche Datenspalten die Eingabespalten und welche Datenspalten die Ausgabespalten der Traininfsdaten darstellen. Kurs:Mehrdimensionale lineare Regression/Umsetzung in R dient dabei
Speichen Sie zunächst die obige Beispieldatei multlinreg.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("multlinreg.csv", header=TRUE, stringsAsFactors=FALSE)
CSV-Datei
[Bearbeiten]"x1","x2","x3","y1","y2"
1,2,3,16.05071,1.92142
2,3,1,22.06779,0.08923
7,0,4,24.96846,10.98239
7,6,5,56.06086,6.02315
Tabelle für die Daten
[Bearbeiten]In der folgenden Tabelle sind x1,x2,x3 die Komponenten der Eingabevektoren und y1,y2 die Komponenten der Ausgabevektoren.
x1 | x2 | x3 | y1 | y2 |
---|---|---|---|---|
1 | 2 | 3 | 16.05071 | 1.92142 |
2 | 3 | 1 | 22.06779 | 0.08923 |
7 | 0 | 4 | 24.96846 | 10.98239 |
7 | 6 | 5 | 56.06086 | 6.02315 |
Bemerkung - Matrixdimension
[Bearbeiten]Die gesuchte lineare Abbildung für die mehrdimensionale lineare Regression ist also eine -Matrix.
Dataframes für die Ein-/Ausgabe
[Bearbeiten]Oft enthalten die Rohdaten auch weitere Spalten, die für die mehrdimensionale lineare Regression keine Rolle spielen. Daher muss man die Ein- und Ausgabevektor aus den Rohdaten auswählen und in ein Eingabe-Dataframe und ein Ausgabe-Dataframe zusammenfassen.
Selektieren der Daten für x- und y-Werte
[Bearbeiten]Die obige verwendete Tabelle multlinreg.csv
[1]. enthält in diesem Fall nur Spalten, die für die mehrdimensionale lineare Regression notwendig sind. Die Zuordnung der relevanten Datenspalten für die x- und y-Werte der linearen Regression wird nun gezeigt.
data <- read.csv("data/multlinreg.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]
y2 <- data[,5]
## Dataframes für die Fehlerfunktion
x_D <- data.frame(x1,x2,x3)
y_D <- data.frame(y1,y2)
Bemerkung - Pfad zu Daten
[Bearbeiten]In dem Verzeichnis, in dem die R-Markdown-Dateien (Endung .Rmd) liegen, ist empfehlenswert, Unterverzeichnisse zu erzeugen:
- data/ - Verzeichnis in dem alle CSV-Dateien bzw. Tabellenkalkulationsdateien liegen oder in das erzeugt Tabellen abgespeichert werden.
- lib/ - Verzeichnis im dem R-Skripte und R-Bibliotheken liegen, die Sie für mehr als eine R-Markdown-Datei benötigen (z.B. knitr4education.R)
Fehlerfunktion
[Bearbeiten]Die Fehlerfunktion zerlegt die Matrix in Zeilenvektoren und ruft die Fehlerfunktion für die -te Spalte des Ausgabevektors auf und aggregiert die Fehler (siehe Zerlegung und Berechnung des Gesamtfehlers).
E_MLR <- function (pA,px_D,py_D) {
## pA : Matrix A, für die der Fehler berechnet wurde
## px_D : Dataframe - Liste von x-Vektoren
## py_D : Dataframe - Liste von y-Werten
## Fehler pro Datenpunkt
cols4y <- ncols(py_D) ## Anzahl der Spalten von y_D
fehler <- 0
## Fehler für alle y-Spalten
for (i in 1:cols4y) {
## Fehler für Komponentenfunktion f_a berechnen
a <- pA[i, ]
y1_D <- py_D[ ,i]
fehler <- fehler + E_LR(a,px_D,y1_D)
}
return <- fehler ## datenanzahl
## Rückgabewert: fehler quadratisch
return
}
Start - mehrdimensionale lineare Regression
[Bearbeiten]mdimLR <- function (pA, px_D, py_D, alpha=1, max_iteration=10, evalcount=100) {
## max_iteration maximale Anzahl der Iterationszyklen
## max_iteration <- 25
alterfehler <- E_MLR(pA,px_D,py_D)
minwert <- c(0,alterfehler)
print(paste("Error 0: ",alterfehler,sep=""))
for (i in 1:max_iteration) {
minwert <- find_min4error(E_LR, normGradE_LR, pa, px_D, py_D, alpha, evalcount)
print(paste("Iteration ",i," (",paste(minwert[1]*alpha,minwert[2],sep=","),")",sep=""))
#print(minwert)
pa + minwert[1]*normGradE_LR(pa, px_D, py_D)
if (alterfehler > minwert[2]) {
pa <- pa + minwert[1]*normGradE_LR(pa, px_D, py_D)
print(paste("a=(",paste(pa[1],pa[2],pa[3],sep=","),")",sep=""))
print(paste("Gradient",i," alpha=",alpha,sep=""))
print(paste("Error ",i,": ",minwert[2],sep=""))
alterfehler > minwert[2]
} else {
print("Fehler wird größer")
}
}
return <- a
### Rückgabewert
return
}
A <- matrix(c(1,2,3,4,5.6), ncol=3)
mdimLReg(A,x_D,y_D)
Literatur/Quellennachweise
[Bearbeiten]- ↑ 1,0 1,1 1,2 Bert Niehaus (2024) GitHub-Repository KnitR for Education https://github.com/niebert/knitr4education für eine Wikiversity-Lernressource - Datei: multilinreg.csv
Siehe auch
[Bearbeiten]- Vorlagen in KnitR
- Wiki2Reveal
- Zerlegung in Komponentenfunktionen
- Gesamtfehler der Komponentenfunktionen
- Open Educational Resources
Seiteninformation
[Bearbeiten]Diese Lernresource können Sie als Wiki2Reveal-Foliensatz darstellen.
Wiki2Reveal
[Bearbeiten]Dieser Wiki2Reveal Foliensatz wurde für den Lerneinheit Kurs:Mehrdimensionale lineare Regression' 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/Mehrdimensionale%20lineare%20Regression/Umsetzung%20in%20R
- siehe auch weitere Informationen zu Wiki2Reveal und unter Wiki2Reveal-Linkgenerator.