1

ユーザーが商品の将来の価値(または需要)について予測できる本番Webベースの製品があります。履歴データには、約10万の例が含まれ、各例には約5つのパラメーターがあります。

予測と呼ばれるデータのクラスを考えてみましょう。

prediction {
    id: int
    predictor: int    
    predictionDate: date
    predictedProductId: int
    predictedDirection: byte  (0 for decrease, 1 for increase)
    valueAtPrediciton: float
}

予測の結果を測定するペアの結果クラス:

predictionResult {
    id: int
    valueTenDaysAfterPrediction: float
    valueTwentyDaysAfterPrediction: float
    valueThirtyDaysAfterPrediction: float
}

成功のためのテストケースを定義できます。予測時に方向と値を検討するときに、将来の値のチェックポイントのいずれか2つが適切である場合。

success(p: prediction, r: predictionResult): bool = 
    count: int 
    count = 0

    // value is predicted to fall
    if p.predictedDirection = 0 then
       if p.valueAtPrediciton > r.valueTenDaysAfterPrediction then count = count + 1
       if p.valueAtPrediciton > r.valueTwentyDaysAfterPrediction then count = count + 1
       if p.valueAtPrediciton > r.valueThirtyDaysAfterPrediction then count = count + 1

    // value is predicted to increase
    else
       if p.valueAtPrediciton < r.valueTenDaysAfterPrediction then count = count + 1
       if p.valueAtPrediciton < r.valueTwentyDaysAfterPrediction then count = count + 1
       if p.valueAtPrediciton < r.valueThirtyDaysAfterPrediction then count = count + 1

    // success if count = 2 or count = 3
    return (count > 1)

ユーザーがフォームを送信した瞬間に予測クラスのすべてが認識され、predictionResultの情報は後で確認されます。理想的には、モデルまたはアルゴリズムは、アルゴリズムが新しい予測に適用されるという3年間の履歴から導き出すことができ、成功するかどうかについての確率を得ることができます(ブールY/Nフラグで満足しますこれが面白いかどうか)。

私は機械学習についてあまりよく知らないので、資料を読み進めようとしています。しかし、このような問題を解決するために必要なことを正確に調査して実践できるように、いくつかのガイダンスがあれば素晴らしいと思います。

ありがとうございました

4

1 に答える 1

8

特徴

最初に行う必要があるのは、ユーザーの予測が正確であるかどうかを分類するための証拠として使用する情報を決定することです。たとえば、予測を行うユーザーのIDや、同じまたは類似の商品で予測を行うときの履歴の正確さなどの単純なものから始めることができます。この情報は、ユーザーの予測を分類するために使用される機能として、下流の機械学習ツールに提供されます。

トレーニング、開発、およびテストデータ

10万件の歴史的な例を、トレーニング、開発、テストの3つの部分に分割することをお勧めします。ほとんどのデータ、たとえばその80%をトレーニングセットに入れる必要があります。これは、予測精度分類器のトレーニングに使用するデータセットになります。一般的に言えば、分類器のトレーニングに使用するデータが多いほど、結果のモデルはより正確になります。

他の2つのデータセット、開発とテストは、分類器のパフォーマンスを評価するために使用されます。開発セットを使用して、分類器のさまざまな構成の精度または特徴表現のバリエーションを評価します。モデルまたはシステムを開発するときに分類パフォーマンスを継続的に評価するために使用するため、開発セットと呼ばれます。

後で、開発データで優れたパフォーマンスを実現するモデルを構築した後、分類器が新しいデータでどれだけうまく機能するかを公平に推定する必要があります。このために、テストセットを使用して、分類器が、それを開発するために使用したもの以外のデータに対してどの程度うまく機能するかを評価します。

分類器/MLパッケージ

予備的な機能セットを用意し、データをトレーニング、開発、テストに分割したら、機械学習パッケージと分類器を選択する準備が整います。多数のタイプの分類子をサポートするいくつかの優れたパッケージは次のとおりです。

どの分類器を使用するかは、作成する予測の種類(バイナリ、マルチクラスなど)、使用する機能の種類、使用するトレーニングデータの量など、多くの要因によって異なります。

たとえば、ユーザーの予測がおそらく正確であるかどうかを2項分類する場合は、support-vector-machines(SVM)を試してみてください。それらの基本的な定式化は、バイナリ述語の実行に限定されています。しかし、それだけが必要な場合は、非常に正確なモデルが得られる可能性があるため、多くの場合、これらは適切な選択です。

ただし、SVMのトレーニングに必要な時間は、トレーニングデータのサイズに比例しません。かなりの量のデータをトレーニングするために、ランダムフォレストのようなものを使用することを決定するかもしれません。ランダムフォレストとSVMが同じサイズのデータ​​セットでトレーニングされている場合、ランダムフォレストは通常​​、SVMモデルと同じかほぼ同じ精度のモデルを生成します。ただし、ランダムフォレストを使用すると、より多くのトレーニングデータを使用できるようになり、通常、より多くのトレーニングデータを使用するとモデルの精度が向上します

深く掘り下げる

機械学習を開始するための他の良い場所へのいくつかのポインタがあります

于 2010-09-24T23:01:02.913 に答える