Neuronale Netze

Entscheidungsbäume, Random Forest, Support Vektor Maschinen, Neuronale Netze, ...

Moderator: consuli

Luilui
Beiträge: 2
Registriert: Mi Aug 19, 2020 7:52 pm

Neuronale Netze

Beitrag von Luilui »

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
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Neuronale Netze

Beitrag von EDi »

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).
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
Bild.
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Neuronale Netze

Beitrag von bigben »

EDi hat geschrieben: Mi Aug 19, 2020 11:06 pm Da kann man doch genauso gut eine logistische Regression rechnen....
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)
Rplot04.jpeg
Wie würdest Du das mit einer linearen logistischen Regression abdecken wollen? Polynomiale logistische Regression?

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)
Rplot05.jpeg
Und da habe ich jetzt nicht ewig lang an der Strukur getüftelt und optimiert. Also ich denke schon, dass NN gegenüber der logistischen Regression auch schon bei nur einem Prädiktor/feature Vorteile haben können. Immer vorausgesetzt, dass man viele Daten hat und dass es um Anpassungsgüte und nicht um Erkenntnisgewinn und Signifikanz geht und man kein gutes Modell von den zu erwartenden Zusammenhängen hat.

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Neuronale Netze

Beitrag von bigben »

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:
Rplot.jpg
@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
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Neuronale Netze

Beitrag von EDi »

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.
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
Bild.
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Neuronale Netze

Beitrag von bigben »

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
Luilui
Beiträge: 2
Registriert: Mi Aug 19, 2020 7:52 pm

Re: Neuronale Netze

Beitrag von Luilui »

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
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Neuronale Netze

Beitrag von bigben »

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
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Neuronale Netze

Beitrag von bigben »

---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Athomas
Beiträge: 768
Registriert: Mo Feb 26, 2018 8:19 pm

Re: Neuronale Netze

Beitrag von Athomas »

Meine Aufgabe ist tatsächlich, die neuronalen Netze mit der logistischen Regression zu vergleichen.
... 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?

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...
Antworten