ブーストされた決定木をトレーニングするための優れたpythonライブラリはありますか?
ブーストされた決定木をトレーニングするための優れたpythonライブラリはありますか?
回答:
私が最初に見るのはOrangeで、これはML用のフル機能のアプリで、Pythonのバックエンドを備えています。たとえば、orngEnsembleを参照してください。
他の有望なプロジェクトはmlpyとscikit.learnです。
PyCVにはいくつかのブースト手順が含まれていることは知っていますが、明らかにCART用ではありません。MLboostもご覧ください
Rpy(http://rpy.sourceforge.net/)を使用してRデシジョンツリーライブラリを使用できます。また、記事「Pythonを使用した意思決定ツリーの構築」(http://onlamp.com/pub/a/python/2 ...)も確認してください。
もあります
Milk:Machine Learning Toolkit for Pythonのツリーベースの学習者で大成功を収めました。活発に開発されているようですが、私がそれを使用していたときのドキュメントは少しまばらでした。テストスイート(github.com/luispedro/milk/blob/master/tests/test_adaboost.py)には「ブーストされた切り株」が含まれています。
import numpy as np
import milk.supervised.tree
import milk.supervised.adaboost
def test_learner():
from milksets import wine
learner = milk.supervised.adaboost.boost_learner(milk.supervised.tree.stump_learner())
features, labels = wine.load()
features = features[labels < 2]
labels = labels[labels < 2] == 0
labels = labels.astype(int)
model = learner.train(features, labels)
train_out = np.array(map(model.apply, features))
assert (train_out == labels).mean() > .9
scikit-learnには、適切な回帰(および分類)ツリーとランダムフォレストの実装があります。ただし、ブーストされたツリーはまだ含まれていません。人々はそれに取り組んでいますが、効率的な実装を得るには時間がかかります。
免責事項:私はscikit-learn開発者です。
私は今も同じ問題を抱えています:私は毎日Pythonでコーディングし、Rを時々使用しますが、優れたブーストされた回帰ツリーアルゴリズムが必要です。高度な分析用の優れたPythonパッケージは数多くありますが、この特定のアルゴリズムに適した製品は見つかりませんでした。したがって、今後数週間のうちに採用する予定のルートは、RでGBMパッケージを使用することです。ここで見つけることができる実用的な問題を示す良い論文があります。重要なことに、GBMパッケージは基本的に2009 KDD Cupで w に「既製」で使用されていました。そのため、おそらくPythonですべての事前および事後モデリングを行い、RPyを使用してR / GBMとやり取りします。
決定木-Ada Boosting
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import AdaBoostClassifier
from sklearn.metrics import accuracy_score
ブースティングなしの決定木
clf_entropy_no_ada = DecisionTreeClassifier(criterion = "entropy", random_state = 100,
max_depth=5, min_samples_leaf=5)
clf_entropy_no_ada.fit(X_train, y_train)
Ada Boostingを使用したデシジョンツリー
clf_entropy_ada = AdaBoostClassifier(base_estimator= clf_entropy_no_ada,n_estimators=400,learning_rate=1)
clf_entropy_ada.fit(X_train, y_train)
モデルの適合と精度の計算
y_predict_no_ada = clf_entropy_no_ada.predict(X_test)
print ("Accuracy is ", accuracy_score(y_test,y_predict_no_ada)*100)
y_predict_ada = clf_entropy_ada.predict(X_test)
print ("Accuracy is ", accuracy_score(y_test,y_predict_ada)*100)