Neuronale Netze
Moderator: consuli
Neuronale Netze
Hallo,
für meinen Hausarbeit muss ich die neuronalen Netze auf einen Datensatz anwenden. Der Datensatze beinhaltet 10 kontinuierliche Variablen und die Zielvariable ist binär.
Es liegen 600 Beobachtungen vor. Es handelt sich um ein Klassifikationsproblem.
Leider ist R sehr neu für mich. Ich habe schon sehr viel gelesen und auch ausprobiert. Jedoch komme ich nicht so weiter.
Wie muss man vorgehen? Ich wäre sehr dankbar, wenn jemand das Vorgehen erläutern könnte.
Liebe Grüße
für meinen Hausarbeit muss ich die neuronalen Netze auf einen Datensatz anwenden. Der Datensatze beinhaltet 10 kontinuierliche Variablen und die Zielvariable ist binär.
Es liegen 600 Beobachtungen vor. Es handelt sich um ein Klassifikationsproblem.
Leider ist R sehr neu für mich. Ich habe schon sehr viel gelesen und auch ausprobiert. Jedoch komme ich nicht so weiter.
Wie muss man vorgehen? Ich wäre sehr dankbar, wenn jemand das Vorgehen erläutern könnte.
Liebe Grüße
Re: Neuronale Netze
Die Frage ist sehr vage und sehr breit...
Kann ich nur genauso vage und breit antworten: JJ Allaire - Deep Learning wird R. Ein gutes Buch zur Einführung.
Wieso neuronale Netze bei nur 10 Features? Da kann man doch genauso gut eine logistische Regression rechnen.... Zur Not noch eine Feature Auswahl mit lasso/ridge/elastic machen...
Neuronale Netze werden mMn ziemlich überhyped (sind vor allem gut bei vielen Features und noch mehr Daten).
Kann ich nur genauso vage und breit antworten: JJ Allaire - Deep Learning wird R. Ein gutes Buch zur Einführung.
Wieso neuronale Netze bei nur 10 Features? Da kann man doch genauso gut eine logistische Regression rechnen.... Zur Not noch eine Feature Auswahl mit lasso/ridge/elastic machen...
Neuronale Netze werden mMn ziemlich überhyped (sind vor allem gut bei vielen Features und noch mehr Daten).
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.
Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
.
Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
.
Re: Neuronale Netze
Aber eine logistische Regression ist doch in ihrer Anpassungsfähigkeit sehr begrenzt. Jedes feature trägt entweder positiv oder negativ zum Ergebnis bei, weil es ja letztlich doch eine lineare Regression ist.
Nehmen wir nur einen einzigen Prädiktor und folgenden nicht-linearen Zusammenhang:
Code: Alles auswählen
bsp <-data.frame(x = runif(300, 0, 10))
bsp$y = ifelse((bsp$x <2.5 | bsp$x > 5 ) & bsp$x <7.5, 1, 0)
plot(bsp$x, bsp$y)
Ein neuronales Netzwerk macht das ohne viel Getüftel richtig gut:
Code: Alles auswählen
library(neuralnet)
fit <- neuralnet(y ~ x, data = bsp, hidden = c(4, 3))
# plot(fit)
test <- data.frame(x = seq(0,10, .02))
test$y.hat <- predict(object = fit, test)
plot(test$y.hat ~ test$x)
LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Re: Neuronale Netze
Hmm, ich hätte vielleicht doch länger an dem Beispiel tüfteln sollen. Mal findet neuralnet diese Lösung, mal nur eine deutlich schlechtere... Dieses einfache Modell hat halt schon fast 30 Koeffizienten zu fitten anhand von nur 300 Beobachtungen:
@luilui Ars longa vita brevis. Die Frage, wie man Wissen über neuronale Netze erlangt ist extrem weit und ein Forumsbeitrag ist eine vergleichsweise kurze Äußerungsform. Wir wissen nicht, was Du schon alles gelesen hast, woran Du dabei gescheitert bist und was zu leicht und was zu schwer war.
Wie Du oben siehst lassen sich mit R und dem Paket neuralnet sehr einfach schon gewisse neuronale Netze bestimmen. Dazu gibt es viele Quellen im Netz, z. B. https://www.r-bloggers.com/fitting-a-ne ... t-package/ und https://www.youtube.com/watch?v=Eecg_Nt8LLc und viele andere. Das könnte einen praktischen Einstieg bieten, wobei Du sicher auch noch ergänzend eine theoretische Einführung brauchen könntest.
LG,
Bernhard
@luilui Ars longa vita brevis. Die Frage, wie man Wissen über neuronale Netze erlangt ist extrem weit und ein Forumsbeitrag ist eine vergleichsweise kurze Äußerungsform. Wir wissen nicht, was Du schon alles gelesen hast, woran Du dabei gescheitert bist und was zu leicht und was zu schwer war.
Wie Du oben siehst lassen sich mit R und dem Paket neuralnet sehr einfach schon gewisse neuronale Netze bestimmen. Dazu gibt es viele Quellen im Netz, z. B. https://www.r-bloggers.com/fitting-a-ne ... t-package/ und https://www.youtube.com/watch?v=Eecg_Nt8LLc und viele andere. Das könnte einen praktischen Einstieg bieten, wobei Du sicher auch noch ergänzend eine theoretische Einführung brauchen könntest.
LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Re: Neuronale Netze
Ja, NN ersparen dir das Feature Engineering. Sind aber auch sehr Datenhungrig und oft schwerer zu interpretieren...
Dein Beispiel hätte ich mit einem Baum-Modell modelliert.
Dein Beispiel hätte ich mit einem Baum-Modell modelliert.
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.
Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
.
Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
.
Re: Neuronale Netze
Dann sind wir uns einig. Aber wenn in einem 10dimensionalem Raum für einige ein Baum, für andere eine logistische Kurve und für eine andere Gruppe eine Sinusfunktion passen und dann noch Interaktionen dazu kommen, dann dürfte deep learning kaum zu schlagen sein. Mit allen genannten Einschränkungen, natürlich.
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Re: Neuronale Netze
Vielen Dank für die Hilfe und die bisherigen Antworten!
Meine Aufgabe ist tatsächlich, die neuronalen Netze mit der logistischen Regression zu vergleichen. Das Model der logistischen Regression steht soweit.
@bigben mit dem Ansatz habe ich auch ein Model aufgestellt.
Meine Frage nun:
Wie finde ich die optimale Anzahl der Hidden Layers und der Neuronen heraus?
Liebe Grüße
Meine Aufgabe ist tatsächlich, die neuronalen Netze mit der logistischen Regression zu vergleichen. Das Model der logistischen Regression steht soweit.
@bigben mit dem Ansatz habe ich auch ein Model aufgestellt.
Meine Frage nun:
Wie finde ich die optimale Anzahl der Hidden Layers und der Neuronen heraus?
Liebe Grüße
Re: Neuronale Netze
Das ist leider überhaupt nicht banal. Ich glaube nicht, dass es dafür Algorithmen gibt. Letztlich musst Du wohl herumprobieren. Blindes Herumprobieren am vollen Datensatz führt leider zu einer Überanpassung an die Details Deines Datensatzes. Dann kennt das Netz zwar Deinen Datensatz auswendig, ist aber nicht unbedingt für Vorhersagen außerhalb Deines Datensatzes zu gebrauchen.
Wenn Du beliebig viele Daten hast, dann teil die Daten in drei Teile A, B und C auf. Mit Teil A trainierst Du Netze mit vielen verschiedenen Konfigurationen und entscheidest anhand der Vorhersagekraft für B, welche Konfigurationen als beste gilt. Zuletzt untersuchst Du mit Teil C, wie gut die Vorhersagekraft dieser besten Konfiguration für unbekannte Daten ist.
Wer soviele Daten nicht hat, der muss Kompromisse eingehen.
Ich glaube, es gibt dafür sehr hilfreiche Funktionen dafür im Paket caret, aber dazu kann EDi ganz sicher sehr viel mehr sagen als ich. Du musst dann für Dich entscheiden, ob es sich lohnt, caret zu erlernen oder das von Hand zu machen.
A propos: Wie hattest Du eigentlich vor, die Güte des logistischen Modells zu bestimmen?
LG,
Bernhard
Wenn Du beliebig viele Daten hast, dann teil die Daten in drei Teile A, B und C auf. Mit Teil A trainierst Du Netze mit vielen verschiedenen Konfigurationen und entscheidest anhand der Vorhersagekraft für B, welche Konfigurationen als beste gilt. Zuletzt untersuchst Du mit Teil C, wie gut die Vorhersagekraft dieser besten Konfiguration für unbekannte Daten ist.
Wer soviele Daten nicht hat, der muss Kompromisse eingehen.
Ich glaube, es gibt dafür sehr hilfreiche Funktionen dafür im Paket caret, aber dazu kann EDi ganz sicher sehr viel mehr sagen als ich. Du musst dann für Dich entscheiden, ob es sich lohnt, caret zu erlernen oder das von Hand zu machen.
A propos: Wie hattest Du eigentlich vor, die Güte des logistischen Modells zu bestimmen?
LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Re: Neuronale Netze
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Re: Neuronale Netze
... in einer Situation, in der die Verwendung eines neuronalen Netzes (aller Voraussicht nach) auf Grund des geringen verfügbaren Datenvolumens einen üblen Fehlgriff darstellt - was soll das zeigen?Meine Aufgabe ist tatsächlich, die neuronalen Netze mit der logistischen Regression zu vergleichen.
Neuronale Netze gelten als "Bringer", wenn es um wahrnehmungsbezogene (perceptual) Daten geht, etwa Sprach- oder Bilderkennung.
Bei "nonperceptual" Data scheinen zur Zeit (so sagt zumindest der von EDi oben genannte Francois Chollet in dem erwähnten Buch) "gradient boosting machines" die Methode der Wahl zu sein.
Wenn es darum geht, einen Einstieg in die Methoden des Machine Learning zu finden und relativ fix verschiedene Methoden "unter einem Dach" zum Laufen zu bringen, kann ich H2O durchaus empfehlen! Aber auch da muss man sich erstmal ein bisschen einlesen...