2025-04-17 13:18:15 +02:00

39 KiB
Raw Blame History

Kapitel 1: Die Machine-Learning-Umgebung

  1. Wie würden Sie Machine Learning definieren?
  2. Können Sie vier Arten von Anwendungen nennen, für die Machine Learning gut geeignet ist?
  3. Was ist ein gelabelter Trainingsdatensatz?
  4. Was sind die zwei verbreitetsten Aufgaben beim überwachten Lernen?
  5. Können Sie vier häufig anzutreffende Aufgaben für unüberwachtes Lernen nennen?
  6. Was für einen Algorithmus würden Sie verwenden, um einen Roboter über verschiedene unbekannte Oberflächen laufen zu lassen?
  7. Welche Art Algorithmus würden Sie verwenden, um Ihre Kunden in unterschiedliche Gruppen einzuteilen?
  8. Würden Sie die Aufgabe, Spam zu erkennen, als überwachte oder unüber-wachte Lernaufgabe einstufen?
  9. Was ist ein Onlinelernsystem?
  10. Was ist Out-of-Core-Lernen?
  11. Welche Art Algorithmus beruht auf einem Ähnlichkeitsmaß, um Vorhersagen zu treffen?
  12. Worin besteht der Unterschied zwischen einem Modellparameter und einem Modellhyperparameter?
  13. Wonach suchen modellbasierte Algorithmen? Welche Strategie führt am häufigsten zum Erfolg? Wie treffen sie Vorhersagen?
  14. Können Sie vier der wichtigsten Herausforderungen beim Machine Learning benennen?
  15. Welches Problem liegt vor, wenn Ihr Modell auf den Trainingsdaten eine sehr gute Qualität erbringt, aber schlecht auf neue Daten verallgemeinert? Nennen Sie drei Lösungsansätze.
  16. Was ist ein Testatensatz, und warum sollte man einen verwenden?
  17. Was ist der Zweck eines Validierungsdatensatzes?
  18. Was ist das Train-Dev-Set, wann brauchen Sie es, und wie verwenden Sie es?
  19. Was kann schiefgehen, wenn Sie Hyperparameter mithilfe der Testdaten ein-stellen?

Lösungen

  1. Beim Machine Learning geht es um das Konstruieren von Systemen, die aus Daten lernen können. Lernen bedeutet, sich bei einer Aufgabe anhand eines Qualitätsmaßes zu verbessern.
  2. Machine Learning ist geeignet zum Lösen komplexer Aufgaben, bei denen es keine algorithmische Lösung gibt, zum Ersetzen langer Listen händisch erstellter Regeln, zum Erstellen von Systemen, die sich an wechselnde Bedingungen anpassen, und schließlich dazu, Menschen beim Lernen zu helfen (z.B. beim Data Mining).
  3. Ein gelabelter Trainingsdatensatz ist ein Trainingsdatensatz, der die gewünschte Lösung (das Label) für jeden Datenpunkt enthält.
  4. Die zwei verbreitetsten Aufgaben beim überwachten Lernen sind Regression und Klassifikation.
  5. Verbreitete unüberwachte Lernaufgaben sind Clustering, Visualisierung, Dimensionsreduktion und das Erlernen von Assoziationsregeln.
  6. Reinforcement Learning funktioniert wahrscheinlich am besten, wenn ein Roboter lernen soll, in unbekanntem Gelände zu laufen, da dies typischerweise die Art von Problem ist, die das Reinforcement Learning angeht. Die Aufgabe ließe sich auch als überwachte oder unüberwachte Aufgabe formulieren, diese Herangehensweise wäre aber weniger natürlich.
  7. Wenn Sie nicht wissen, wie Sie die Gruppen definieren sollen, können Sie ein Clustering-Verfahren verwenden (unüberwachtes Lernen), um Ihre Kunden in Cluster jeweils ähnlicher Kunden zu segmentieren. Kennen Sie die gewünschten Gruppen dagegen bereits, können Sie einem Klassifikationsalgorithmus viele Beispiele aus jeder Gruppe zeigen (überwachtes Lernen) und alle Kunden in diese Gruppen einordnen lassen.
  8. Spamerkennung ist eine typische überwachte Lernaufgabe: Dem Algorithmus werden viele E-Mails und deren Labels (Spam oder Nicht-Spam) bereitgestellt.
  9. Ein Onlinelernsystem kann im Gegensatz zu einem Batchlernsystem inkrementell lernen. Dadurch ist es in der Lage, sich sowohl an sich schnell ändernde Daten oder autonome Systeme anzupassen als auch sehr große Mengen an Trainingsdaten zu verarbeiten.
  10. Out-of-Core-Algorithmen können riesige Datenmengen verarbeiten, die nicht in den Hauptspeicher des Computers passen. Ein Out-of-Core-Lernalgorithmus teilt die Daten in Mini-Batches ein und verwendet Techniken aus dem Online-Learning, um aus diesen Mini-Batches zu lernen.
  11. Ein instanzbasiertes Lernsystem lernt die Trainingsdaten auswendig; anschließend wendet es ein Ähnlichkeitsmaß auf neue Datenpunkte an, um die dazu ähnlichsten erlernten Datenpunkte zu finden und diese zur Vorhersage zu verwenden.
  12. Ein Modell besitzt einen oder mehrere Modellparameter, die festlegen, wie Vorhersagen für einen neuen Datenpunkt getroffen werden (z.B. die Steigung eines linearen Modells). Ein Lernalgorithmus versucht, optimale Werte für diese Parameter zu finden, sodass das Modell bei neuen Daten gut verallgemeinern kann. Ein Hyperparameter ist ein Parameter des Lernalgorithmus selbst und nicht des Modells (z.B. die Menge zu verwendender Regularisierung).
  13. Modellbasierte Lernalgorithmen suchen nach einem optimalen Wert für die Modellparameter, sodass das Modell gut auf neue Datenpunkte verallgemeinert. Normalerweise trainiert man solche Systeme durch Minimieren einer Kostenfunktion. Diese misst, wie schlecht die Vorhersagen des Systems auf den Trainingsdaten sind, zudem wird im Fall von Regularisierung ein Strafterm für die Komplexität des Modells zugewiesen. Zum Treffen von Vorhersagen geben wir die Merkmale neuer Datenpunkte in die Vorhersagefunktion des Modells ein, wobei die vom Lernalgorithmus gefundenen Parameter verwendet werden.
  14. Zu den Hauptschwierigkeiten beim Machine Learning gehören fehlende Daten, mangelhafte Datenqualität, nicht repräsentative Daten, nicht informative Merkmale, übermäßig einfache Modelle, die die Trainingsdaten underfitten, und übermäßig komplexe Modelle, die die Trainingsdaten overfitten.
  15. Wenn ein Modell auf den Trainingsdaten herausragend abschneidet, aber schlecht auf neue Datenpunkte verallgemeinert, liegt vermutlich ein Overfitting der Trainingsdaten vor (oder wir hatten bei den Trainingsdaten eine Menge Glück). Gegenmaßnahmen zum Overfitting sind das Beschaffen zusätzlicher Daten, das Vereinfachen des Modells (Auswählen eines einfacheren Algorithmus, Reduzieren der Parameteranzahl oder Regularisierung des Modells) oder das Verringern des Rauschens in den Trainingsdaten.
  16. Ein Testdatensatz hilft dabei, den Verallgemeinerungsfehler eines Modells auf neuen Datenpunkten abzuschätzen, bevor ein Modell in einer Produktionsumgebung eingesetzt wird.
  17. Ein Validierungsdatensatz wird zum Vergleichen von Modellen verwendet. Es ist damit möglich, das beste Modell auszuwählen und die Feineinstellung der Hyperparameter vorzunehmen.
  18. Das Train-Dev-Set wird eingesetzt, wenn das Risiko besteht, dass es eine Diskrepanz zwischen den Trainingsdaten und den in den Validierungs- und Testdatensätzen verwendeten Daten gibt (die immer so nahe wie möglich an den Daten liegen sollten, die das Modell produktiv nutzen). Es ist Teil des Trainingsdatensatzes, der zurückgehalten wird (das Modell wird nicht damit trainiert). Stattdessen wird das Modell mit dem Rest des Trainingsdatensatzes trainiert und sowohl mit dem Train-Dev-Set wie auch mit dem Validierungsdatensatz evaluiert. Funktioniert das Modell mit dem Trainingsdatensatz gut, nicht aber mit dem Train-Dev-Set, ist es vermutlich für den Trainingsdatensatz overfittet. Funktioniert es gut mit dem Trainingsdatensatz und dem Train-DevSet, aber nicht mit dem Validierungsdatensatz, gibt es vermutlich einen signifikanten Unterschied zwischen Trainingsdaten einerseits und Validierungs- und Testdaten andererseits, und Sie sollten versuchen, die Trainingsdaten zu verbessern, damit diese mehr wie die Validierungs- und Testdaten aussehen.
  19. Wenn Sie Hyperparameter mit den Testdaten einstellen, riskieren Sie ein Overfitting des Testdatensatzes. Der gemessene Verallgemeinerungsfehler ist dann zu niedrig angesetzt (Sie könnten in diesem Fall also ein Modell einsetzen, das schlechter funktioniert als erwartet).

Kapitel 4: Trainieren von Modellen

  1. Welchen Trainingsalgorithmus für die lineare Regression können Sie verwen-den, wenn Sie einen Trainingsdatensatz mit Millionen Merkmalen haben?
  2. Nehmen wir an, dass die Merkmale in Ihrem Trainingsdatensatz unterschiedlich skaliert sind. Welche Algorithmen würden dadurch in Mitleidenschaft gezogen und in welcher Weise? Was können Sie dagegen tun?
  3. Kann das Gradientenverfahren bei einem logistischen Regressionsmodell in einem lokalen Minimum stecken bleiben?
  4. Führen alle Algorithmen für das Gradientenverfahren zum gleichen Modell, vorausgesetzt, sie laufen lange genug?
  5. Nehmen wir an, Sie verwenden das Batch-Gradientenverfahren und plotten den Validierungsfehler in jeder Epoche. Was passiert vermutlich, wenn der Validierungsfehler ständig steigt? Wie können Sie dies beheben?
  6. Ist es eine gute Idee, das Mini-Batch-Gradientenverfahren sofort zu unterbre-chen, sobald der Validierungsfehler steigt?
  7. Welcher der besprochenen Algorithmen für das Gradientenverfahren erreicht die Umgebung der optimalen Lösung am schnellsten? Welcher konvergiert? Wie können Sie auch die übrigen konvergieren lassen?
  8. Sie verwenden eine polynomielle Regression, plotten die Lernkurven und be-merken, dass es zwischen dem Trainingsfehler und dem Validierungsfehler einen großen Unterschied gibt. Was passiert? Nennen Sie drei Möglichkeiten, dies zu beheben.
  9. Bei der Ridge-Regression bemerken Sie, dass Trainingsfehler und Validie-rungsfehler beinahe gleich und recht hoch sind. Krankt dieses Modell an einem hohen Bias oder an einer hohen Varianz? Sollten Sie den Regularisie-rungsparameter a erhöhen oder senken?
  10. Welche Gründe sprechen für folgende Verfahren? a. Ridge-Regression anstelle einer einfachen linearen Regression (d.h. ohne Regularisierung)? b. Lasso anstelle einer Ridge-Regression? c. Elastic Net anstelle von Lasso-Regression?
  11. Angenommen, Sie möchten Bilder als innen/außen und Tag/Nacht klassifizie-ren. Sollten Sie zwei Klassifikatoren mit logistischer Regression oder einen Klassifikator mit Softmax-Regression erstellen?
  12. Implementieren Sie das Batch-Gradientenverfahren mit Early Stopping für die Softmax-Regression ohne Scikit-Learn, sondern nur mit NumPy. Verwenden Sie es für eine Klassifikationsaufgabe wie beim Iris-Datensatz.

Lösungen

  1. Haben Sie einen Trainingsdatensatz mit Millionen Merkmalen, können Sie das stochastische Gradientenverfahren oder das Mini-Batch-Gradientenverfahren verwenden. Wenn die Trainingsdaten in den Speicher passen, funktioniert eventuell auch das Batch-Gradientenverfahren. Die Normalengleichung und auch der SVD-Ansatz funktionieren jedoch nicht, weil die Komplexität der Berechnung schnell (mehr als quadratisch) mit der Anzahl Merkmale ansteigt.
  2. Wenn die Merkmale in Ihrem Trainingsdatensatz sehr unterschiedlich skaliert sind, hat die Kostenfunktion die Gestalt einer länglichen Schüssel. Deshalb benötigen die Algorithmen für das Gradientenverfahren lange zum Konvergieren. Um dieses Problem zu beheben, sollten Sie die Daten skalieren, bevor Sie das Modell trainieren. Die Normalengleichung und der SVD-Ansatz funktionieren auch ohne Skalierung. Darüber hinaus können regularisierte Modelle mit nicht skalierten Merkmalen bei einer suboptimalen Lösung konvergieren: Weil die Regularisierung große Gewichte abstraft, werden Merkmale mit geringen Beträgen im Vergleich zu Merkmalen mit großen Beträgen tendenziell ignoriert.
  3. Das Gradientenverfahren kann beim Trainieren eines logistischen Regressionsmodells nicht in einem lokalen Minimum stecken bleiben, weil die Kostenfunktion konvex ist. Das bedeutet: Wenn Sie zwei beliebige Punkte der Kurve über eine gerade Linie verbinden, schneidet diese niemals die Kurve.
  4. Ist das Optimierungsproblem konvex (wie bei der linearen oder logistischen Regression) und die Lernrate nicht zu hoch, finden sämtliche algorithmischen Varianten des Gradientenverfahrens das globale Optimum und führen zu sehr ähnlichen Modellen. Allerdings konvergieren das stochastische und das MiniBatch-Gradientenverfahren nicht wirklich (es sei denn, Sie reduzieren die Lernrate), sondern springen um das globale Optimum herum. Das bedeutet, dass diese Algorithmen geringfügig unterschiedliche Modelle hervorbringen, selbst wenn Sie sie lange laufen lassen.
  5. Sollte der Validierungsfehler nach jeder Epoche immer wieder steigen, ist die Lernrate möglicherweise zu hoch, und der Algorithmus divergiert. Wenn auch der Trainingsfehler steigt, ist dies mit Sicherheit die Ursache, und Sie sollten die Lernrate senken. Falls der Trainingsfehler aber nicht steigt, overfittet Ihr Modell die Trainingsdaten, und Sie sollten das Trainieren abbrechen.
  6. Wegen des Zufallselements gibt es weder beim stochastischen noch beim Mini-Batch-Gradientenverfahren eine Garantie für Fortschritte bei jeder Iteration. Wenn Sie also das Trainieren abbrechen, sobald der Validierungsfehler steigt, kann es passieren, dass Sie vor Erreichen des Optimums abbrechen. Es ist günstiger, das Modell in regelmäßigen Abständen abzuspeichern und das beste gespeicherte Modell aufzugreifen, falls es sich über eine längere Zeit nicht verbessert (es also vermutlich den eigenen Rekord nicht knacken wird).
  7. Die Trainingsiterationen sind beim stochastischen Gradientenverfahren am schnellsten, da dieses nur genau einen Trainingsdatenpunkt berücksichtigt. Es wird also normalerweise die Umgebung des globalen Optimums als Erstes erreichen (oder das Mini-Batch-Gradientenverfahren mit sehr kleinen MiniBatches). Allerdings wird nur das Batch-Gradientenverfahren mit genug Trainingszeit auch konvergieren. Wie erwähnt, springen das stochastische und das Mini-Batch-Gradientenverfahren um das Optimum herum, es sei denn, Sie senken die Lernrate allmählich.
  8. Wenn der Validierungsfehler deutlich höher als der Trainingsfehler ist, liegt es daran, dass Ihr Modell die Trainingsdaten overfittet. Dies lässt sich beheben, indem Sie den Grad des Polynoms senken: Ein Modell mit weniger Freiheitsgraden neigt weniger zu Overfitting. Sie können auch versuchen, das Modell zu regularisieren beispielsweise über einen 2-Strafterm (Ridge) oder einen 1-Strafterm (Lasso), der zur Kostenfunktion addiert wird. Damit reduzieren Sie ebenfalls die Freiheitsgrade des Modells. Schließlich können Sie auch die Größe des Trainingsdatensatzes erhöhen.
  9. Wenn der Trainingsfehler und der Validierungsfehler fast gleich und recht hoch sind, liegt vermutlich ein Underfitting der Trainingsdaten vor. Es gibt also ein hohes Bias. Sie sollten daher den Hyperparameter zur Regularisierung α senken.
  10. Schauen wir einmal: Ein Modell mit etwas Regularisierung arbeitet in der Regel besser als ein Modell ohne Regularisierung. Daher sollten Sie grundsätzlich die RidgeRegression der einfachen linearen Regression vorziehen. Die Lasso-Regression verwendet einen 1-Strafterm, wodurch Gewichte auf exakt null heruntergedrückt werden. Dadurch erhalten Sie spärliche Modelle, bei denen alle Gewichte außer den wichtigsten null sind. Auf diese Weise können Sie eine automatische Merkmalsauswahl durchführen, wenn Sie ohnehin schon den Verdacht hegen, dass nur einige Merkmale wichtig sind. Sind Sie sich nicht sicher, sollten Sie der RidgeRegression den Vorzug geben. Elastic Net ist grundsätzlich gegenüber der Lasso-Regression vorzuziehen, da sich Lasso in einigen Fällen sprunghaft verhält (wenn mehrere Merkmale stark miteinander korrelieren oder es mehr Merkmale als Trainingsdatenpunkte gibt). Allerdings gilt es, einen zusätzlichen Hyperparameter einzustellen. Wenn Sie Lasso ohne das sprunghafte Verhalten verwenden möchten, können Sie einfach Elastic Net mit einer l1_ratio um 1 verwenden.
  11. Möchten Sie Bilder als außen/innen und Tag/Nacht klassifizieren, schließen sich die Kategorien nicht gegenseitig aus (d.h., alle vier Kombinationen sind möglich). Sie sollten daher zwei Klassifikatoren mit logistischer Regression trainieren.

Kapitel 7: Ensemble Learning und Random Forests

  1. Wenn Sie fünf unterschiedliche Modelle auf den exakt gleichen Trainingsda-ten trainiert haben und für alle eine Relevanz von 95% erzielen, lassen sich diese Modelle kombinieren, um ein noch besseres Ergebnis zu erhalten? Begründen Sie Ihre Antwort.
  2. Worin unterscheiden sich Klassifikatoren mit Hard und Soft Voting?
  3. Ist es möglich, das Trainieren eines Ensembles mit Bagging zu beschleunigen, indem man es auf mehrere Server verteilt? Wie sieht es bei Ensembles mit Pas-ting, Ensembles mit Boosting, Random Forests oder Ensembles mit Stacking aus?
  4. Welchen Vorteil bietet die Out-of-Bag-Evaluation?
  5. Wodurch werden Extra-Trees-Ensembles zufälliger als gewöhnliche Random Forests? Wobei hilft dieses zusätzliche Zufallselement? Sind Extra-Trees-Klas-sifikatoren langsamer oder schneller als gewöhnliche Random Forests?
  6. Falls Ihr AdaBoost-Ensemble die Trainingsdaten underfittet, welche Hyperpa-rameter sollten Sie in welcher Weise verändern?
  7. Wenn Ihr Gradient-Boosting-Ensemble die Trainingsdaten overfittet, sollten Sie dann die Lernrate erhöhen oder verringern?
  8. Laden Sie den MNIST-Datensatz (siehe Kapitel 3) und teilen Sie diesen in Datensätze zum Training, zur Validierung und zum Testen auf (z.B. 50.000 Da-tenpunkte zum Trainieren, 10.000 zur Validierung und 10.000 zum Testen). Trainieren Sie anschließend unterschiedliche Klassifikatoren, z.B. einen Ran-dom-Forest-Klassifikator, einen Extra-Trees-Klassifikator und eine SVM. Versuchen Sie danach, diese zu einem Ensemble zu kombinieren, das besser ist als alle Klassifikatoren auf den Validierungsdaten. Verwenden Sie dazu einen Klassifikator mit Soft oder Hard Voting. Sobald Sie einen gefunden haben, probieren Sie diesen auf dem Testdatensatz aus. Wie viel besser ist das Ensemble im Vergleich zu den einzelnen Klassifikatoren?
  9. Führen Sie die einzelnen Klassifikatoren aus der vorherigen Ubung aus, um Vorhersagen auf den Validierungsdaten zu treffen. Erstellen Sie einen neuen Trainingsdatensatz mit den sich daraus ergebenden Vorhersagen: Jeder Trai-ningsdatenpunkt ist ein Vektor mit den Vorhersagen sämtlicher Klassifikato-ren für ein und dasselbe Bild, und die Zielgröße ist die Kategorie des Bilds. Trainieren Sie einen Klassifikator mit diesem neuen Trainingsdatensatz. Herzlichen Glückwunsch, Sie haben soeben einen Blender trainiert, der zusammen mit den Klassifikatoren ein Stacking-Ensemble bildet! Werten Sie das Ensemble mit dem Testdatensatz aus. Erstellen Sie für jedes Bild im Testdatensatz mit allen Klassifikatoren Vorhersagen und füttern Sie den Blender mit diesen Vorhersagen, um eine Vorhersage für das Ensemble zu erhalten. Wie schneidet es im Vergleich zum zuvor trainierten abstimmungsbasierten Klassifikator ab? Jetzt versuchen Sie es erneut, aber dieses Mal mit einem StackingClassi fier. Erhalten Sie eine bessere Qualität? Wenn ja: Warum?

Lösungen

  1. Wenn Sie fünf unterschiedliche Modelle trainiert haben und alle eine Relevanz von 95% erzielen, können Sie diese zu einem Ensemble kombinieren, was häufig zu noch besseren Ergebnissen führt. Unterscheiden sich die Modelle sehr stark, funktioniert es noch besser (z.B. ein SVM-Klassifikator, ein Entscheidungsbaum, ein Klassifikator mit logistischer Regression und so weiter). Durch Trainieren auf unterschiedlichen Trainingsdaten lässt sich eine weitere Verbesserung erzielen (darum geht es beim Bagging und Pasting von Ensembles), aber es wird auch ohne effektiv sein, solange die Modelle sehr unterschiedlich sind.
  2. Ein Klassifikator mit Hard Voting zählt einfach nur die Stimmen jedes Klassifikators im Ensemble und wählt die Kategorie aus, die die meisten Stimmen erhält. Ein Klassifikator mit Soft Voting berechnet den Durchschnitt der geschätzten Wahrscheinlichkeiten für jede Kategorie und wählt die Kategorie mit der höchsten Wahrscheinlichkeit aus. Damit erhalten Stimmen mit hoher Konfidenz mehr Gewicht, was oft besser funktioniert. Dies gelingt aber nur, wenn jeder Klassifikator zum Abschätzen von Wahrscheinlichkeiten in der Lage ist (z.B. bei SVM-Klassifikatoren in Scikit-Learn müssen Sie probability=True setzen).
  3. Es ist möglich, das Trainieren eines Ensembles mit Bagging durch Verteilen auf mehrere Server zu beschleunigen, da jeder Prädiktor im Ensemble unabhängig von den anderen ist. Aus dem gleichen Grund gilt dies auch für Ensembles mit Pasting und Random Forests. Dagegen baut jeder Prädiktor in einem Boosting-Ensemble auf dem vorherigen Prädiktor auf, daher ist das Trainieren notwendigerweise sequenziell, und ein Verteilen auf mehrere Server nutzt nichts. Bei Stacking-Ensembles sind alle Prädiktoren einer Schicht unabhängig voneinander und lassen sich daher parallel auf mehreren Servern trainieren. Allerdings lassen sich die Prädiktoren einer Schicht erst trainieren, nachdem die vorherige Schicht vollständig trainiert wurde.
  4. Bei der Out-of-Bag-Evaluation wird jeder Prädiktor in einem Bagging-Ensemble mit Datenpunkten ausgewertet, auf denen er nicht trainiert wurde (diese wurden zurückgehalten). Damit ist eine recht unbeeinflusste Evaluation des Ensembles ohne einen zusätzlichen Validierungsdatensatz möglich. Dadurch stehen Ihnen also mehr Trainingsdaten zur Verfügung, und Ihr Ensemble verbessert sich leicht.
  5. Beim Erzeugen eines Baums in einem Random Forest wird beim Aufteilen eines Knotens nur eine zufällig ausgewählte Untermenge der Merkmale berücksichtigt. Dies gilt auch bei Extra-Trees, diese gehen aber noch einen Schritt weiter: Anstatt wie gewöhnliche Entscheidungsbäume nach dem bestmöglichen Schwellenwert zu suchen, verwenden sie für jedes Merkmal zufällige Schwellenwerte. Dieses zusätzliche Zufallselement wirkt wie eine Art Regularisierung: Wenn ein Random Forest die Trainingsdaten overfittet, könnten Extra-Trees besser abschneiden. Da außerdem Extra-Trees nicht nach dem bestmöglichen Schwellenwert suchen, lassen sie sich viel schneller trainieren als Random Forests. Allerdings sind sie beim Treffen von Vorhersagen weder schneller noch langsamer als Random Forests.
  6. Wenn Ihr AdaBoost-Ensemble die Trainingsdaten underfittet, können Sie die Anzahl der Estimatoren steigern und die Regularisierung des zugrunde liegenden Estimators über dessen Hyperparameter verringern. Sie können auch versuchen, die Lernrate ein wenig zu erhöhen.
  7. Wenn Ihr Gradient-Boosting-Ensemble die Trainingsdaten overfittet, sollten Sie die Lernrate senken. Sie können auch Early Stopping verwenden, um die richtige Anzahl Prädiktoren zu finden (vermutlich haben Sie zu viele davon).

Kapitel 8: Dimensionsreduktion

  1. Welche sind die wichtigsten Gründe, die Dimensionen eines Datensatzes zu verningern? Was sind die wichtigsten Nachteile?

  2. Was ist der Fluch der Dimensionalität?

  3. Ist die Dimensionalität eines Datensatzes erst einmal reduziert, ist es möglich, die Operation umzukehren? Falls ja, wie? Falls nein, warum nicht?

  4. Lässt sich die PCA einsetzen, um die Dimensionen eines hochgradig nichtline-aren Darensatzes zu verringern?

  5. Sie führen eine PCA auf einem 1.000-dimensionalen Datensatz durch und legen den Anteil der erklärten Streuung auf 95% fest. Wie viele Dimensionen hat der sich daraus ergebende Datensatz?

  6. In welchen Fallen würden Sie eine normale Hauptkomponentenzerlegung durchführen, wann eine inkrementelle PCA, eine randomisierte PCA oder eine Zufallsprojektion?

  7. Wie können Sie die Qualität eines Algorithmus zur Dimensionsreduktion auf Ihrem Datensatz bestimmen?

  8. Ist es sinnvoll, zwei unterschiedliche Algorithmen zur Dimensionsreduktion hintereinanderzuschalten?

  9. Laden Sie den MNIST-Datensatz (aus Kapitel 3) und teilen Sie diesen in einen Trainingsdatensatz und einen Testatensatz auf (verwenden Sie die ersten 60.000 Datenpunkte zum Trainieren und die übrigen 10.000 zum Testen). Trainieren Sie einen Random-Forest-Klassifikator auf dem Datensatz und messen Sie dessen Laufzeit. Evaluieren Sie das entstandene Modell anhand der Testdaten. Führen Sie anschließend eine Hauptkomponentenzerlegung mit einem Anteil erklärter Streuung von 95% durch, um die Dimensionalitar des Datensatzes zu verringern. Trainieren Sie einen neuen Random-Forest-Klassifikator auf dem reduzierten Datensatz und messen Sie wiederum die Laufzeit. War das Trainieren viel schneller? Evaluieren Sie auch diesen Klassi-fikator auf den Testaten: Wie schneidet er im Vergleich zum ersten Klassifi-kator ab? Probieren Sie es nochmals mit einem SGDClassifier. Wie gut hilft die Hauptkomponentenzerlegung nun?

  10. Verwenden Sie t-SNE, um die ersten 5.000 Bilder des MNIST-Datensatzes auf zwei Dimensionen zu reduzieren, und visualisieren Sie das Ergebnis mit Mat-plotlib. Sie können einen Scatterplot mit zehn unterschiedlichen Farben ver-wenden, um die Zielkategorien jedes Bilds darzustellen. Alternativ können Sie jeden Punkt im Scatterplot durch die entsprechende Kategorie des Daten-punkts ersetzen (eine Ziffer von 0 bis 9) oder sogar verkleinerte Versionen der Ziffernbilder selbst nutzen. (Wenn Sie alle Ziffern darstellen, wird das Diagramm voll und unübersichtlich sein. Sie sollten also eine zufällige Stichprobe ziehen oder einen Datenpunkt nur dann zeichnen, wenn noch kein anderer Punkt in der Umgebung gezeichnet wurde.) Verwenden Sie andere Algorithmen zur Dimensionsreduktion, wie die Hauptkomponentenzerlegung, LLE oder MDS, und vergleichen Sie die entstehenden Diagramme.

Lösungen

  1. Gründe zum Einsatz und Nachteile: Die Hauptgründe zum Einsatz von Dimensionsreduktion sind: • Die nachfolgenden Trainingsalgorithmen zu beschleunigen (in manchen Fällen sogar Rauschen und redundante Merkmale zu entfernen, wodurch das Trainingsverfahren eine höhere Leistung erbringt). • Die Daten zu visualisieren und Einblick in ihre wichtigsten Eigenschaften zu erhalten. • Platz zu sparen (Kompression). Die wichtigsten Nachteile sind: • Es geht Information verloren, wodurch die Leistung nachfolgender Trainingsverfahren möglicherweise sinkt. • Sie kann rechenintensiv sein. • Sie erhöht die Komplexität Ihrer maschinellen Lernpipelines. • Transformierte Merkmale sind oft schwer zu interpretieren.
  2. Der »Fluch der Dimensionalität« beschreibt den Umstand, dass in höher dimensionalen Räumen viele Schwierigkeiten auftreten, die es bei weniger Dimensionen nicht gibt. Beim Machine Learning ist eine häufige Erscheinungsform, dass zufällig ausgewählte höher dimensionale Vektoren grundsätzlich weit voneinander entfernt sind, was das Risiko für Overfitting erhöht und das Erkennen von Mustern in den Daten erschwert, wenn nicht sehr viele Trainingsdaten vorhanden sind.
  3. Sobald die Dimensionalität eines Datensatzes mit einem der besprochenen Algorithmen verringert wurde, ist es so gut wie immer unmöglich, den Vorgang vollständig umzukehren, weil im Laufe der Dimensionsreduktion Information verloren geht. Während es bei einigen Algorithmen (wie der PCA) eine einfache Prozedur zur reversen Transformation gibt, mit der sich der Datensatz recht nah am Original rekonstruieren lässt, ist dies bei anderen Algorithmen (wie T-SNE) nicht möglich.
  4. Mit der Hauptkomponentenzerlegung (PCA) lässt sich die Anzahl der Dimensionen der meisten Datensätze erheblich reduzieren, selbst wenn sie stark nichtlinear sind, weil sie zumindest die bedeutungslosen Dimensionen verwerfen kann. Wenn es aber keine bedeutungslosen Dimensionen gibt wie beispielsweise beim Swiss-Roll-Datensatz , geht bei der Dimensionsreduktion mittels PCA zu viel Information verloren. Sie möchten die Swiss Roll aufrollen, nicht platt quetschen.
  5. Dies ist eine Fangfrage: Es kommt auf den Datensatz an. Betrachten wir zwei Extrembeispiele. Angenommen, der Datensatz bestünde aus beinahe perfekt aufgereihten Datenpunkten. In diesem Fall kann die Hauptkomponentenzerlegung den Datensatz auf nur eine Dimension reduzieren und trotzdem 95% der Varianz erhalten. Wenn dagegen der Datensatz aus perfekt zufällig angeordneten Punkten besteht, die überall in den 1.000 Dimensionen verstreut sind, sind etwa 950 Dimensionen nötig, um 95% der Varianz zu erhalten. Die Antwort ist also, dass es auf den Datensatz ankommt und dass es eine beliebige Zahl zwischen 1 und 950 sein kann. Eine Möglichkeit, die intrinsische Dimensionalität des Datensatzes zu verdeutlichen, ist, die abgedeckte Varianz über der Anzahl der Dimensionen zu plotten.
  6. Gewöhnliche Hauptkomponentenzerlegung ist Standard, sie funktioniert aber nur, wenn der Datensatz in den Speicher passt. Die inkrementelle PCA ist bei großen Datensätzen, die nicht in den Speicher passen, hilfreich, sie ist aber langsamer als die gewöhnliche PCA. Wenn der Datensatz in den Speicher passt, sollten Sie also die gewöhnliche Hauptkomponentenzerlegung vorziehen. Die inkrementelle PCA ist auch bei Onlineaufgaben nützlich, bei denen eine PCA bei neu eintreffenden Daten jedes Mal im Vorübergehen durchgeführt werden soll. Die randomisierte PCA ist nützlich, wenn Sie die Anzahl der Dimensionen erheblich reduzieren möchten und der Datensatz in den Speicher passt; in diesem Fall ist sie deutlich schneller als die gewöhnliche PCA. Schließlich ist die Zufallsprojektion bei sehr hochdimensionalen Datensätzen hilfreich.
  7. Intuitiv arbeitet ein Algorithmus zur Dimensionsreduktion dann gut, wenn er eine Menge Dimensionen aus dem Datensatz entfernt, ohne zu viel Information zu vergeuden. Dies lässt sich beispielsweise durch Anwenden der reversen Transformation und Bestimmen des Rekonstruktionsfehlers messen. Allerdings unterstützen nicht alle Verfahren zur Dimensionsreduktion die reverse Transformation. Wenn Sie die Dimensionsreduktion als Vorverarbeitungsschritt vor einem anderen Machine-Learning-Verfahren verwenden (z.B. einem Random-Forest-Klassifikator), können Sie auch einfach die Leistung des nachgeschalteten Verfahrens bestimmen; sofern bei der Dimensionsreduktion nicht zu viel Information verloren geht, sollte der Algorithmus genauso gut abschneiden wie auf dem ursprünglichen Datensatz.
  8. Es kann durchaus sinnvoll sein, zwei unterschiedliche Algorithmen zur Dimensionsreduktion in Reihe zu schalten. Ein verbreitetes Beispiel ist eine Hauptkomponentenzerlegung oder eine Zufallsprojektion, um schnell eine große Anzahl unnützer Dimensionen loszuwerden und anschließend einen deutlich langsameren Algorithmus zur Dimensionsreduktion wie LLE zu verwenden. Dieser zweistufige Prozess führt vermutlich ungefähr zur gleichen Qualität wie LLE für sich allein, benötigt aber nur einen Bruchteil der Zeit.

Kapitel 9

  1. Wie würden Sie Clustering definieren? Können Sie ein paar Clustering-Algo-rithmen benennen?

  2. Zählen Sie ein paar wichtige Anwendungsgebiete für Clustering-Algorithmen auf.

  3. Beschreiben Sie zwei Techniken, um beim Einsatz von k-Means die richtige Zahl von Clustern auszuwählen.

  4. Was ist Label Propagation? Warum und wie würden Sie es implementieren?

  5. Können Sie zwei Clustering-Algorithmen aufzählen, die gut für große Datensätze skalieren? Und zwei, die nach Bereichen mit hoher Dichte suchen?

  6. Können Sie sich einen Anwendungsfall vorstellen, bei dem aktives Lernen nützlich wäre? Wie würden Sie es implementieren?

  7. Was ist der Unterschied zwischen Anomalieerkennung und Novelty Detec-tion?

  8. Was ist eine gaußsche Mischverteilung? Für welche Aufgaben können Sie sie verwenden?

  9. Können Sie zwei Techniken angeben, um beim Einsatz von gaußschen Misch-verteilungsmodellen die richtige Zahl von Clustern zu finden?

  10. Das klassische Olivetti Faces Dataset enthält 400 Graustufenbilder der Größe 64 x 64 mit Gesichtern. Jedes Bild ist zu einem 1-D-Vektor der Größe 4096 flachgeklopft. Es wurden 40 verschiedene Personen fotografiert (jeweils 10 Mal), und meist besteht die Aufgabe darin, ein Modell zu trainieren, das vor-hersagt, welche Person in jedem Bild dargestellt wird. Laden Sie den Datensatz mit der Funktion sklearn.datasets, fetch_olivetti_faces(), dann teilen Sie ihn in einen Trainingsdatensatz, einen Validierungsdatensatz und einen Testdatensatz auf (beachten Sie, dass der Datensatz schon zwischen 0 und 1 skaliert ist). Da der Datensatz ziemlich klein ist, wollen Sie vermutlich eine stratifizierte Stichprobe erstellen, um sicherzustellen, dass es in jedem Datensatz die gleiche Menge an Bildern pro Person gibt. Als Nächstes clustern Sie die Bilder mithilfe von k-Means und stellen sicher, dass Sie eine gute Zahl von Clustern haben (mit einer der Techniken aus diesem Kapitel). VisualisierenSie die Cluster: Sehen Sie ähnliche Bilder in jedem Cluster?

  11. Trainieren Sie einen Klassifikator mit dem Olivetti-Datensatz, um vorherzusa-gen, welche Person in jedem Bild zu sehen ist, und prüfen Sie das mit dem Va-lidierungsdatensatz. Als Nächstes verwenden Sie k-Means zur Dimensionsre-duktion und trainieren einen Klassifikator mit dem reduzierten Datensatz. Suchen Sie nach der Anzahl an Clustern, die es dem Klassifikator erlauben, seine beste Leistung zu bringen: Welche Qualität können Sie erreichen? Was passiert, wenn Sie die Merkmale aus dem reduzierten Datensatz an die ursprünglichen Merkmale anfügen? (Suchen Sie auch hier wieder nach der besten Menge an Clustern.)

  12. Trainieren Sie ein gaußsches Mischverteilungsmodell mit dem Olivetti-Daten-satz. Um den Algorithmus zu beschleunigen, sollten Sie vermutlich die Dimensionalität des Datensatzes verringern (zum Beispiel mit PCA unter Beibehaltung von 99% der Varianz). Nutzen Sie das Modell, um neue Gesichter zu erzeugen (mithilfe der Methode sample()), und visualisieren Sie diese (wenn Sie PCA eingesetzt haben, werden Sie dessen Methode inverse_transform() verwenden müssen). Versuchen Sie, ein paar Bilder zu verändern (zum Beispiel rotieren, spiegeln, dunkler machen), und schauen Sie, ob das Modell die Anomalien erkennen kann (vergleichen Sie also die Ausgaben der Methode score_samples() für normale Bilder und für Anomalien).

  13. Einige Techniken zur Dimensionsreduktion können auch zur Anomalieerken-nung verwendet werden. Nehmen Sie beispielsweise den Olivetti-Datensatz und reduzieren Sie ihn mithilfe von PCA unter Beibehaltung von 99% der Va-rianz. Dann berechnen Sie den Rekonstruktionsfehler für jedes Bild. Als Nächstes nehmen Sie ein paar der modifizierten Bilder aus der vorherigen Übung und schauen sich deren Rekonstruktionsfehler an: Beachten Sie, wie viel größer er ist. Plotten Sie ein wiederhergestelltes Bild, werden Sie auch se-hen, warum: Es wird versucht, ein normales Bild zu rekonstruieren.

Lösungen

  1. Im Machine Learning ist Clustering die unüberwachte Aufgabe, ähnliche Instanzen zu gruppieren. Der Begriff der Ähnlichkeit hängt von der aktuellen Aufgabe ab: In manchen Fällen werden zwei nahe beieinanderliegende Instanzen als ähnlich angesehen, während in anderen ähnliche Instanzen weit voneinander entfernt sein können, solange sie zur gleichen dicht gepackten Gruppe gehören. Zu den verbreiteten Clustering-Algorithmen gehören K-Means, DBSCAN, agglomeratives Clustern, BIRCH, Mean-Shift, Affinity Propagation und spektrales Clustern
  2. Zu den Hauptanwendungsgebieten von Clustering-Algorithmen gehören Datenanalyse, Kundensegmentierung, Empfehlungssysteme, Suchmaschinen, Bildsegmentierung, teilüberwachtes Lernen, Dimensionsreduktion, Anomalieerkennung und Novelty Detection
  3. Die Ellenbogenregel ist eine einfache Technik, um beim Einsatz von K-Means die Anzahl an Clustern festzulegen: Tragen Sie einfach die Trägheit (den mittleren quadratischen Abstand jeder Instanz zu ihrem nächstgelegenen Schwerpunkt) gegen die Anzahl der Cluster auf und finden Sie den Punkt der Kurve, bei dem die Trägheit nicht mehr schnell fällt (den »Ellenbogen«). Das liegt im Allgemeinen nahe an der optimalen Anzahl an Clustern. Eine andere Möglichkeit ist, den Silhouettenkoeffizienten als Funktion der Anzahl von Clustern auszugeben. Es gibt oft ein Maximum, und die optimale Anzahl an Clustern liegt meist dort in der Nähe. Der Silhouettenkoeffizient ist der Mittelwert der Silhouetten aller Instanzen. Dieser Wert liegt zwischen +1 für Instanzen, die gut in ihren Clustern und fern anderer Cluster liegen, und 1 für Instanzen, die sich sehr nahe an anderen Clustern befinden. Sie können auch die Silhouettendiagramme ausgeben und eine umfassendere Analyse durchführen.
  4. Es ist teuer und zeitaufwendig, einen Datensatz mit Labels auszustatten. Daher hat man häufig viele ungelabelte Instanzen und nur wenige mit Labels. Label Propagation ist eine Technik, bei der manche (oder alle) Labels von den gelabelten auf ähnliche ungelabelte Instanzen übertragen werden. Das kann die Menge an gelabelten Instanzen deutlich vergrößern und es damit einem überwachten Algorithmus ermöglichen, eine bessere Performance zu liefern (das ist eine Form des teilüberwachten Lernens). Ein Ansatz ist die Verwendung eines Clustering-Algorithmus wie K-Means für alle Instanzen. Danach wird für jedes Cluster das verbreitetste Label oder das der repräsentativsten Instanz genutzt (zum Beispiel der Instanz, die am nächsten am Schwerpunkt liegt) und auf die ungelabelten Instanzen des gleichen Clusters übertragen.
  5. K-Means und BIRCH skalieren sehr gut bei großen Datensätzen. DBSCAN und Mean-Shift suchen nach Regionen mit hoher Dichte.
  6. Aktives Lernen ist immer dann nützlich, wenn Sie viele ungelabelte Instanzen haben, das Labeln aber teuer ist. In diesem (recht häufig vorkommenden) Fall ist es oft besser, nicht zufällig ausgewählte Instanzen mit Labels zu versehen, sondern ein aktives Lernen durchzuführen, bei dem menschliche Experten mit dem Lernalgorithmus interagieren und Labels für spezifische Instanzen liefern, wenn der Algorithmus diese anfordert. Häufig wird dazu Uncertainty Sampling eingesetzt (siehe die Beschreibung unter »Aktives Lernen« in Kapitel 9).
  7. Die Begriffe Anomalieerkennung und Novelty Detection werden oft für das Gleiche verwendet, auch wenn sie nicht ganz genau das Gleiche beschreiben. Bei der Anomalieerkennung wird der Algorithmus mit einem Datensatz trainiert, der Ausreißer enthalten kann. Das Ziel ist normalerweise, diese Ausreißer (im Trainingsdatensatz) und solche in neuen Instanzen zu identifizieren. Bei der Novelty Detection wird der Algorithmus mit einem Datensatz trainiert, der als »sauber« angenommen wird. Ziel ist hier, Ausreißer (Novelties) nur in neuen Instanzen zu finden. Manche Algorithmen funktionieren am besten bei der Anomalieerkennung (zum Beispiel Isolation Forest), andere sind besser zur Novelty Detection geeignet (zum Beispiel One-Class-SVMs).
  8. Ein gaußsches Mischverteilungsmodell (GMM) ist ein Wahrscheinlichkeitsmodell, das annimmt, dass die Instanzen aus einer Mischung mehrerer Gaußverteilungen erzeugt wurden, deren Parameter unbekannt sind. Oder anders gesagt: Es wird davon ausgegangen, dass die Daten in einer endlichen Zahl von Clustern gruppiert sind, von denen jedes eine ellipsoide Form hat (das aber je nach Cluster eine andere Größe, Ausrichtung und Dichte haben kann), und wir wissen nicht, zu welchem Cluster jede Instanz gehört. Dieses Modell ist für die Dichteabschätzung, das Clustering und die Anomalieerkennung nützlich.
  9. Sie können die richtige Zahl an Clustern mit einem gaußschen Mischverteilungsmodell unter anderem herausfinden, indem Sie das bayessche Informationskriterium (BIC) oder das Akaike-Informationskriterium (AIC) als Funktion der Anzahl von Clustern auftragen und dann die Zahl wählen, die das BIC oder AIC minimiert. Eine andere Technik ist der Einsatz eines bayesschen gaußschen Mischverteilungsmodells, das automatisch die Zahl der Cluster bestimmt.