私は論文を再構成しています。彼らは、入力Xとソフトターゲットy_sが与えられたときに、グラジエントブースト回帰木を訓練し、最小平均自乗誤差で最終出力yを得た。論文に関しては、scitkit-learnパッケージを使用して、すべての意思決定ツリーベースのメソッドを修正なしに実装しました。これは私がしたいことです。あなたが解決策を知っている場合scikit-learnでソフトラベルを使ったGradientBoostingTreeトレーニング?
は、すでに私はそうここに私の考えがあり、聞いて幸せになる: ただ簡単にするために、我々は X = [[×1×2×3] [×1×2×3]とのバイナリの問題があるとし.. 。]および y_s [[0.4 0.6] [0.8 0.2] ...]。
分類GradientBoostingTreeに関して私はコスト関数を上書きするときに私はそうであっても、1次元のクラスアレイ
(y : array-like, shape = [n_samples]) Target values (integers in classification, real numbers in regression) For classification, labels must correspond to classes.
に供給することができ、(上記のリンクを参照)(例えば、クロスエントロピー)柔らかいラベルを扱うことができる、私はまだ2つの薄い柔らかいラベル(少なくとも)で食べることができません。
もう1つのアイデアは、1つのソフトラベル(ソフトラベルの両方が1になるバイナリ問題のみ)を取り、代わりにGradientBoostingRegressionを使用することで、1-dimに減らすことでした。しかし、再び一つだけクラスが可能であり、また、私は..ので、出力間の相関の
ビッグピクチャーを
X = [[1,2,3], [1,2,3], [4,5,6]]
y = [[3.141, 2.718], [3.141, 2.718], [2.718, 3.141]]
rgr = MultiOutputRegressor(GradientBoostingRegressor(random_state=0))
rgr.fit(X, y)
X_test = [[1.5,2.5,3.5], [3.5,4.5,5.5]]
rgr.predict(X_test)
のような独立したモデルを訓練することはできません。 組み合わせた機能の1抽出 2. a)訓練:元の特徴(X)、柔らかいラベル(yb) - >訓練:抽出された特徴(Xb)、元のラベル(y) - >ロジスティック回帰 b)予測:ソフトラベル(yb) 3. a) GradientBoostingTree b)評価:正常なラベルを予測する(y_) - >元の機能の重要性
ソフトラベルのない手順全体は意味がありません。私はそれが何らかの形で可能にする必要がありますが、私はどのように把握することはできません意味... multi-output decision trees上
http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.GradientBoostingClassifier.html http://scikit-learn.org/stable/auto_examples/ensemble/plot_gradient_boosting_regression.html
は、あなたの答えをありがとう正しい方向を指している必要があります。私はDecisionTreeRegressorについて認識していますが、GradientBoostingRegressorに変更する方法はわかりません。正規化法として収縮を使用するか? GradientBoostingRegressor –
念を取得するために、私は推定量を変更し、私は前と同じエラーメッセージを表示して終了「とValueError:悪い入力形状を」 だから、私は手動でGradientBoostingRegressorパッケージを変更することでGBRを使用することができますが? –
'sklearn.ensemble'の['fit'メソッドのAPI](http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.GradientBoostingClassifier.html#sklearn.ensemble.GradientBoostingClassifier.fit)モデルは、 'y'は' [n_samples] 'の形をしなければならないと述べています。対照的に、sklearn.treeの['fit'メソッド](http://scikit-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeClassifier.html#sklearn.tree.DecisionTreeClassifier.fit)では、 'y '' [n_samples、n_outputs] 'という形をしています。私は '.tree'モデルで複数の出力より' 'boost ''を使う方が簡単だと思います。アンサンブルの方法 –