2016-08-01 25 views
3

私は3ヶ月間、約10kの顧客の過去の購入データを持っています。そのデータを使用して、今後3ヶ月以内に購入の予測をしたいと考えています。私は、xgboostに異なるカテゴリー間の個人支出を知りたいので、顧客IDを入力変数として使用しています。調整する方法はありますか?個々の購入に基づいてより多くを学ぶことですまたはこの問題に対処するより良い方法は?xgboostを微調整して変数に重みを割り当てる方法はありますか?

答えて

1

xgboostに引数weightを渡すことができるウェイトベクトルを使用できます。サイズがnrow(trainingData)に等しいベクトルです。しかし、これは一般的に、間違いを分類ミスにペナルティをかけるために使用されます(売り上げが1か月に1回しか言及していない稀少データを考えます;販売を学びたい場合は、販売インスタンスに重点を置く必要があります。ゼロ)。どうやら理解できない独立変数の体重をtweakにしようとしています。

従属変数の振る舞い(あなたのケースでの販売)を学ぶことは、機械学習モデルが何をするのかを学ぶことです。あなたはそれを微調整して強制的にいくつかの機能から学ぶべきではありません。購入行動を学習するために、監督されていない技術のクラスタリングタイプがより有用であろう。

ユーザー固有の動作を含めるには、クラスタリングを行い、各ユーザーの索引がない索引および索引索引のあるカテゴリを特定します。次に、これらのフラグを使用していくつかのカテゴリの機能を作成できます。

PS:問題を説明するデータの中には、他の人があなたをより良くするのに役立つものがあります。

+1

私は要求が個人ではなく機能に重みを付けることであると考えます。つまり、購入数や単純な製品所持などの他の変数の代わりに量に関連する変数をモデルに簡単に含めることを保証します。 –

+0

上記のEricが述べたように、目的はユーザーにいくつかの重みを与えて、xgboostの機能が学習し、ユーザーのグループ全体の一般化された傾向ではなく、個々の傾向を示すということです。 – muni

+0

はい..私は両方の質問に答えようとしました...レコード上で可能な重み付けは可能ですが、フィーチャ...ではなく、フィーチャの一部の重み付けは、モデルをあまり強力にしません。あなたが木の最初の破損点を知っていれば(ほとんどのインパクト1);それによってデータを分割して学習することができます。ツリーはCARTなどの単一ツリーの高分散を除去するために存在します。変数は高分散を誘導します..縮退を行うことはできません。ここでは木はスケールに依存しないからです。私はそのような方法のインパクトを考えるのではなく、サンプルデータを置くことに役立ちます。 – abhiieor

関連する問題