Vorwort: Random Forest ist eine sehr flexible Methode des maschinellen Lernens, die viele Anwendungen vom Marketing bis zur Krankenversicherung hat. Es kann im Marketing verwendet werden, um die Kundenakquise und -bindung zu modellieren oder das Krankheitsrisiko und die Anfälligkeit von Patienten vorherzusagen.
Zufällige Wälder können für Klassifizierungs- und Regressionsprobleme verwendet werden, können eine große Anzahl von Merkmalen verarbeiten und dabei helfen, die Bedeutung von Variablen abzuschätzen, die bei der Modellierung von Daten verwendet werden.
In diesem Artikel geht es darum, wie man mit Python ein Zufallswaldmodell erstellt.
1 Was ist Random Forest?
Random Forest kann für fast jede Art von Vorhersageproblem (einschließlich nichtlinearer Probleme) verwendet werden. Es handelt sich um eine relativ neue Strategie des maschinellen Lernens (entstanden in den 1990er Jahren bei Bell Labs), die in jeder Hinsicht eingesetzt werden kann. Es gehört zur Kategorie des Ensemble-Lernens im maschinellen Lernen.
1.1 Ensemble-Lernen
Ensemble-Lernen ist die Kombination mehrerer Modelle zur Lösung eines einzelnen Vorhersageproblems. Sein Prinzip besteht darin, mehrere Klassifikatormodelle zu generieren, die jeweils unabhängig voneinander lernen und Vorhersagen treffen. Diese Vorhersagen werden schließlich kombiniert, um Vorhersagen zu erstellen, die genauso gut oder besser sind als die Ergebnisse einzelner Klassifikatoren.
Random Forest ist ein Zweig des Ensemble-Lernens, da es auf der Integration von Entscheidungsbäumen beruht. Weitere Dokumentation zur Implementierung von Ensemble-Lernen in Python: Scikit-Learn-Dokumentation.
1.2 Zufälliger Entscheidungsbaum
Wir wissen, dass Random Forest andere Modelle aggregiert, aber um welches Modell handelt es sich konkret? Wie auch aus dem Namen hervorgeht, aggregieren zufällige Wälder Klassifizierungs- (oder Regressions-)bäume. Ein Entscheidungsbaum besteht aus einer Reihe von Entscheidungen und kann zur Klassifizierung von Beobachtungen in einem Datensatz verwendet werden.
1.3 Random Forest Der durch
eingeführte Random Forest-Algorithmus erstellt automatisch eine zufällige Entscheidungsbaumgruppe. Da diese Bäume zufällig generiert werden, sind die meisten Bäume (sogar 99,9 %) für die Lösung Ihres Klassifizierungs- oder Regressionsproblems nicht aussagekräftig.
1.4 Abstimmung
Was bringt es also, selbst Zehntausende schlechter Modelle zu generieren? Nun ja, das tut es wirklich nicht. Aber nützlicherweise wurden gleichzeitig auch eine Handvoll sehr guter Entscheidungsbäume generiert.
Wenn Sie eine Vorhersage treffen, gelangen neue Beobachtungen in den Entscheidungsbaum und erhalten einen vorhergesagten Wert oder eine vorhergesagte Bezeichnung. Sobald jeder Baum im Wald eine Vorhersage oder ein Etikett erhalten hat, werden alle Vorhersagen summiert und die Stimmen aller Bäume werden als endgültige Vorhersage zurückgegeben.
Einfach ausgedrückt decken 99,9 % der Vorhersagen unkorrelierter Bäume alle Situationen ab und diese Vorhersagen heben sich gegenseitig auf. Die Vorhersageergebnisse einiger hervorragender Bäume werden hervorstechen, was zu einem guten Vorhersageergebnis führt.
2 Warum es verwenden
Random Forest ist der Leatherman (multifunktionales Klappmesser) unter den Methoden des maschinellen Lernens. Man kann fast alles darauf werfen. Es leistet besonders gute Arbeit beim Schätzen und Ableiten von Zuordnungen, sodass nicht zu viele Parameteranpassungen wie bei SVM erforderlich sind (dies ist sehr gut für Freunde, die unter Zeitdruck stehen).
2.1 Ein Zuordnungsbeispiel
Zufällige Wälder können ohne absichtliche manuelle Datentransformation erlernt werden. Nehmen Sie als Beispiel die Funktion f(x)=log(x).
Wir werden Python verwenden, um Analysedaten in Yhats eigener interaktiver Umgebung Rodeo zu generieren. Sie können die Mac-, Windows- und Linux-Installationsdateien von Rodeo hier herunterladen.
Erstens generieren wir die Daten und fügen Rauschen hinzu.
import numpy as np import pylab as pl x = np.random.uniform(1, 100, 1000) y = np.log(x) + np.random.normal(0, .3, 1000) pl.scatter(x, y, s=1, label="log(x) with noise") pl.plot(np.arange(1, 100), np.log(np.arange(1, 100)), c="b", label="log(x) true function") pl.xlabel("x") pl.ylabel("f(x) = log(x)") pl.legend(loc="best") pl.title("A Basic Log Function") pl.show()
Erhalten Sie die folgenden Ergebnisse:
Wenn wir ein einfaches lineares Modell erstellen, um y mithilfe von x vorherzusagen, müssen wir eine gerade Linie zeichnen. Chengdu muss als Halbierung der log(x)-Funktion betrachtet werden. Und wenn wir den Random-Forest-Algorithmus verwenden, kann er die log(x)-Kurve besser annähern und sie eher wie eine tatsächliche Funktion aussehen lassen.
Natürlich kann man auch sagen, dass der Random Forest etwas überpassend an die log(x)-Funktion ist. Unabhängig davon zeigt dies, dass zufällige Wälder nicht auf lineare Probleme beschränkt sind.
3 Verwendung
3.1 Funktionsauswahl
Einer der besten Anwendungsfälle von Random Forests ist die Funktionsauswahl. Ein Nebeneffekt des Ausprobierens vieler Entscheidungsbaumvariablen besteht darin, dass Sie überprüfen können, ob die Variable in jedem Baum die beste oder schlechteste Leistung erbringt.
Wenn einige Bäume eine Variable verwenden und andere nicht, können Sie den Informationsverlust oder -gewinn vergleichen. Besser implementierte Random-Forest-Tools können dies für Sie erledigen, Sie müssen sich also nur diese Methode oder diesen Parameter ansehen.
Im folgenden Beispiel versuchen wir herauszufinden, welche Variablen bei der Unterscheidung von Rotwein und Weißwein am wichtigsten sind.
3.2 Klassifizierung
Random Forest eignet sich auch sehr gut für Klassifizierungsprobleme. Es kann verwendet werden, um Vorhersagen für mehrere mögliche Zielklassen zu treffen, und es kann auch Wahrscheinlichkeiten nach Anpassung ausgeben. Eine Sache, auf die Sie achten müssen, ist die Überanpassung.
Random Forest ist anfällig für Überanpassung, insbesondere wenn der Datensatz relativ klein ist. Seien Sie misstrauisch, wenn Ihr Modell „zu gute“ Vorhersagen für den Testsatz macht. Eine Möglichkeit, eine Überanpassung zu vermeiden, besteht darin, nur relevante Features im Modell zu verwenden, beispielsweise die zuvor erwähnte Feature-Auswahl.
3.3 回归
随机森林也可以用于回归问题。
我发现,不像其他的方法,随机森林非常擅长于分类变量或分类变量与连续变量混合的情况。
4 一个简单的Python示例
from sklearn.datasets import load_iris from sklearn.ensemble import RandomForestClassifier import pandas as pd import numpy as np iris = load_iris() df = pd.DataFrame(iris.data, columns=iris.feature_names) df['is_train'] = np.random.uniform(0, 1, len(df)) <= .75 df['species'] = pd.Categorical.from_codes(iris.target, iris.target_names) df.head() train, test = df[df['is_train']==True], df[df['is_train']==False] features = df.columns[:4] clf = RandomForestClassifier(n_jobs=2)y, _ = pd.factorize(train['species']) clf.fit(train[features], y) preds = iris.target_names[clf.predict(test[features])] pd.crosstab(test['species'], preds, rownames=['actual'], colnames=['preds'])
下面就是你应该看到的结果了。由于我们随机选择数据,所以实际结果每次都会不一样。
5 结语
随机森林相当起来非常容易。不过和其他任何建模方法一样要注意过拟合问题。如果你有兴趣用R语言使用随机森林,可以查看randomForest包。
以上就是随机森林算法入门(python)的内容,更多相关内容请关注PHP中文网(m.sbmmt.com)!