Das einfachste Beispiel zur Veranschaulichung ist das XOR-Problem (siehe Abbildung unten). Stellen Sie sich vor, Sie erhalten Daten, die und y- koordinierte und die vorherzusagende Binärklasse enthalten. Sie könnten erwarten, dass Ihr Algorithmus für maschinelles Lernen die richtige Entscheidungsgrenze selbst ermittelt. Wenn Sie jedoch das zusätzliche Merkmal z = x y generiert haben , wird das Problem trivial, da z > 0 Ihnen ein nahezu perfektes Entscheidungskriterium für die Klassifizierung gibt und Sie es einfach verwendet haben Arithmetik!xyz=xyz>0
Während Sie in vielen Fällen vom Algorithmus erwarten können, die Lösung zu finden, können Sie das Problem alternativ durch Feature-Engineering vereinfachen . Einfache Probleme sind einfacher und schneller zu lösen und erfordern weniger komplizierte Algorithmen. Einfache Algorithmen sind oft robuster, die Ergebnisse sind oft interpretierbarer, skalierbarer (weniger Rechenressourcen, Zeit bis zum Training usw.) und portabel. Weitere Beispiele und Erklärungen finden Sie in dem wunderbaren Vortrag von Vincent D. Warmerdam auf der PyData-Konferenz in London .
Glauben Sie außerdem nicht alles, was die Vermarkter für maschinelles Lernen Ihnen sagen. In den meisten Fällen werden die Algorithmen nicht "von selbst lernen". Normalerweise haben Sie nur begrenzte Zeit, Ressourcen und Rechenleistung, und die Daten sind normalerweise nur begrenzt groß und verrauscht. Beides hilft nicht.
Im Extremfall könnten Sie Ihre Daten als Fotos von handschriftlichen Notizen des Versuchsergebnisses bereitstellen und an ein kompliziertes neuronales Netzwerk weitergeben. Es würde zuerst lernen, die Daten auf Bildern zu erkennen, dann zu verstehen und Vorhersagen zu treffen. Dazu benötigen Sie einen leistungsstarken Computer und viel Zeit zum Trainieren und Optimieren des Modells. Außerdem benötigen Sie aufgrund der Verwendung eines komplizierten neuronalen Netzwerks große Datenmengen. Die Bereitstellung der Daten in computerlesbarem Format (als Zahlentabellen) vereinfacht das Problem erheblich, da Sie nicht die gesamte Zeichenerkennung benötigen. Sie können sich das Feature-Engineering als nächsten Schritt vorstellen, in dem Sie die Daten so transformieren, dass sie erstellt werden aussagekräftig werdenFunktionen, so dass Sie Algorithmus hat noch weniger auf eigene Faust herauszufinden. Um eine Analogie zu geben, es ist, als wollten Sie ein Buch in einer Fremdsprache lesen, sodass Sie zuerst die Sprache lernen mussten, anstatt sie in die Sprache zu übersetzen, die Sie verstehen.
Im Beispiel für Titanic-Daten müsste Ihr Algorithmus herausfinden, dass die Summierung von Familienmitgliedern sinnvoll ist, um die Funktion "Familiengröße" zu erhalten (ja, ich personalisiere sie hier). Dies ist ein offensichtliches Merkmal für einen Menschen, aber es ist nicht offensichtlich, wenn Sie die Daten nur als einige Spalten der Zahlen sehen. Wenn Sie nicht wissen, welche Spalten zusammen mit anderen Spalten sinnvoll sind, kann der Algorithmus dies durch Ausprobieren jeder möglichen Kombination solcher Spalten herausfinden. Sicher, wir haben clevere Methoden, aber es ist viel einfacher, wenn die Informationen sofort an den Algorithmus weitergegeben werden.