Heim > Technologie-Peripheriegeräte > KI > Zusammenfassung aus 15 Jahren Erfahrung als Softwarearchitekt: Fünf Fallstricke für Einsteiger im Bereich ML

Zusammenfassung aus 15 Jahren Erfahrung als Softwarearchitekt: Fünf Fallstricke für Einsteiger im Bereich ML

王林
Freigeben: 2023-04-11 19:31:25
nach vorne
1377 Leute haben es durchsucht

Datenwissenschaft und maschinelles Lernen werden immer beliebter und die Zahl der Menschen in diesem Bereich wächst täglich. Das bedeutet, dass es viele Datenwissenschaftler gibt, die nicht viel Erfahrung mit der Erstellung ihrer ersten Modelle für maschinelles Lernen haben, und hier können Fehler passieren.

Kürzlich hat der Softwarearchitekt, Datenwissenschaftler und Kaggle-Meister Agnis Liukis einen Artikel geschrieben, in dem er über Lösungen für einige der häufigsten Anfängerfehler beim maschinellen Lernen sprach, um sicherzustellen, dass Anfänger sie verstehen und vermeiden.

Zusammenfassung aus 15 Jahren Erfahrung als Softwarearchitekt: Fünf Fallstricke für Einsteiger im Bereich ML

Agnis Liukis verfügt über mehr als 15 Jahre Erfahrung in der Softwarearchitektur und -entwicklung und beherrscht Sprachen wie Java, JavaScript, Spring Boot, React.JS und Python. Darüber hinaus interessiert sich Liukis auch für Datenwissenschaft und maschinelles Lernen. Er hat viele Male an Kaggle-Wettbewerben teilgenommen und gute Ergebnisse erzielt und das Kaggle-Wettbewerbs-Meisterniveau erreicht.

Das Folgende ist der Inhalt des Artikels:

Sind Sie im Bereich des maschinellen Lernens auf diese 5 Fallstricke getreten?

1. Datennormalisierung wird nicht verwendet, wenn sie benötigt wird.

Normalisieren Sie die Daten, rufen Sie dann die Merkmale ab und geben Sie sie in das Modell ein, damit das Modell Vorhersagen treffen kann. In manchen Fällen können die Ergebnisse dieses einfachen Ansatzes jedoch enttäuschend sein, da ein sehr wichtiger Teil fehlt.

Einige Modelltypen erfordern eine Datennormalisierung, z. B. lineare Regression, klassische neuronale Netze usw. Dieser Modelltyp verwendet die Merkmalswerte, um die Gewichte der Trainingswerte zu multiplizieren. Bei nicht normalisierten Merkmalen kann der mögliche Bereich eines Merkmalswerts vom möglichen Bereich eines anderen Merkmalswerts abweichen.

Angenommen, der Wert eines Merkmals liegt im Bereich [0, 0,001] und der Wert des anderen Merkmals liegt im Bereich [100000, 200000]. Bei einem Modell, das zwei Merkmale gleich wichtig macht, ist das Gewicht des ersten Merkmals 100 Millionen Mal größer als das Gewicht des zweiten Merkmals. Große Gewichte können zu ernsthaften Problemen für das Modell führen, beispielsweise wenn es einige Ausreißer gibt. Darüber hinaus wird es schwierig, die Bedeutung verschiedener Merkmale abzuschätzen, da ein großes Gewicht bedeuten kann, dass das Merkmal wichtig ist, es kann aber auch einfach bedeuten, dass sein Merkmalswert klein ist.

Nach der Normalisierung liegen die Werte aller Merkmale im gleichen Bereich, normalerweise [0, 1] oder [-1, 1]. In diesem Fall liegen die Gewichtungen in einem ähnlichen Bereich und entsprechen weitgehend der tatsächlichen Bedeutung jedes Merkmals.

Insgesamt führt die Verwendung der Datennormalisierung bei Bedarf zu besseren und genaueren Vorhersagen.

2. Denken Sie, je mehr Funktionen, desto besser

Manche Leute denken vielleicht, dass das Hinzufügen aller Funktionen eine gute Idee ist, weil sie denken, dass das Modell automatisch die besten Funktionen auswählt und verwendet. Tatsächlich ist es schwierig, diese Idee zu verwirklichen.

Je mehr Features das Modell hat, desto größer ist das Risiko einer Überanpassung. Selbst in völlig zufälligen Daten ist das Modell in der Lage, einige Merkmale (Signale) zu finden, auch wenn diese manchmal schwächer und manchmal stärker sind. Natürlich gibt es im zufälligen Rauschen kein echtes Signal. Wenn wir jedoch über genügend verrauschte Spalten verfügen, ist es für das Modell möglich, einige davon basierend auf dem erkannten Fehlersignal zu verwenden. Wenn dies geschieht, verschlechtert sich die Qualität der Modellvorhersagen, da diese teilweise auf zufälligem Rauschen basieren.

Jetzt gibt es viele Techniken, die uns bei der Funktionsauswahl helfen. Sie müssen jedoch bedenken, dass Sie jede Ihrer Funktionen erläutern müssen und erklären müssen, warum diese Funktion Ihrem Modell hilft.

3. Verwenden Sie baumbasierte Modelle, wenn eine Extrapolation erforderlich ist.

Baumbasierte Modelle sind einfach zu verwenden und leistungsstark, weshalb sie beliebt sind. In manchen Fällen kann es jedoch falsch sein, ein baumbasiertes Modell zu verwenden.

Baumbasierte Modelle können nicht extrapoliert werden. Der vorhergesagte Wert dieser Modelle wird niemals größer als der Maximalwert in den Trainingsdaten sein und der vorhergesagte Wert im Training wird niemals kleiner als der Minimalwert sein.

Bei manchen Aufgaben kann die Fähigkeit zur Extrapolation sehr wichtig sein. Wenn das Modell beispielsweise Aktienkurse vorhersagt, könnten die Aktienkurse in Zukunft höher sein als je zuvor. In diesem Fall wären baumbasierte Modelle nicht direkt verwendbar, da ihre Vorhersagen die höchsten historischen Preise fast übertreffen würden.

Für dieses Problem gibt es mehrere Lösungen. Eine Lösung besteht darin, die Änderung oder Differenz vorherzusagen, anstatt den Wert direkt vorherzusagen. Eine andere Lösung besteht darin, für solche Aufgaben unterschiedliche Modelltypen zu verwenden. Lineare Regression oder neuronale Netze können eine Extrapolation durchführen.

4. Verwenden Sie die Datennormalisierung dort, wo sie nicht benötigt wird erfordert keine Datennormalisierung. Neuronale Netze erfordern möglicherweise auch keine explizite Normalisierung, da einige Netze intern bereits eine Normalisierungsschicht enthalten, wie beispielsweise die BatchNormalization-Operation der Keras-Bibliothek.

In manchen Fällen erfordert selbst die lineare Regression möglicherweise keine Datennormalisierung, was bedeutet, dass alle Merkmale bereits in einem ähnlichen Wertebereich liegen und dieselbe Bedeutung haben. Wenn das Modell beispielsweise auf Zeitreihendaten angewendet wird und alle Merkmale historische Werte desselben Parameters sind.

5. Informationslecks zwischen Trainingssatz und Validierungssatz/Testsatz

Es ist einfacher, Datenlecks zu verursachen, als man denkt. Beachten Sie Folgendes Codeausschnitt:

Zusammenfassung aus 15 Jahren Erfahrung als Softwarearchitekt: Fünf Fallstricke für Einsteiger im Bereich ML

Beispielfunktion für Datenlecks # 🎜🎜#Eigentlich sind beide Features (sum_feature und diff_feature) falsch. Sie lassen Informationen durchsickern, da der Teil mit den Trainingsdaten nach der Aufteilung in Zug-/Testsätze einige Informationen aus dem Test enthält. Dies führt zu höheren Validierungswerten, jedoch zu einer schlechteren Leistung bei der Anwendung auf reale Datenmodelle.

Der richtige Weg besteht darin, zuerst den Trainingssatz/Testsatz zu trennen und erst dann die Feature-Generierungsfunktion anzuwenden. Im Allgemeinen ist es ein gutes Feature-Engineering-Muster, den Trainingssatz und den Testsatz getrennt zu verarbeiten.

In einigen Fällen kann es notwendig sein, einige Informationen zwischen den beiden weiterzugeben – zum Beispiel möchten wir möglicherweise denselben StandardScaler für den Testsatz und das Training verwenden Satz .

Alles in allem ist es gut, aus seinen Fehlern zu lernen, und ich hoffe, dass die oben aufgeführten Fehlerbeispiele Ihnen helfen werden.

Das obige ist der detaillierte Inhalt vonZusammenfassung aus 15 Jahren Erfahrung als Softwarearchitekt: Fünf Fallstricke für Einsteiger im Bereich ML. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:51cto.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage