5

各ベクトルが家の 1 日の占有率を表し、48 要素 (1 日の 30 分の各要素) で構成される一連のバイナリ ベクトルがあります。各要素は、家が占有されていることを意味する 1 と、占有されていない家を表す 0 になります。

私のタスクは、同じ日の履歴 (月曜日の履歴から月曜日など) に基づいて翌日を予測することです。これまでのところ、ハミング距離を使用して、履歴の中で最も類似した 5 つの日を見つけ、それらから占有の確率をこれら 5 つの数値の平均として計算しています。確率がいくつかの X よりも高い場合、私の場合は 0.4 で、占有されていると予測します。

しかし、これを行うためのより効率的な方法が間違いなくあります。歴史の傾向を捉えるアルゴリズムはありますか?

4

2 に答える 2

1

あなたのアプローチはかなり合理的に聞こえますが (これは K 最近隣人または KNN と呼ばれます)、適切な距離メトリック (今日までのハミング距離) を使用しているかどうかはわかりません。あなたの方法は 1 日の正確な構造にかなり敏感で、休暇などに適応するにはおそらく長い時間がかかりますが、1 日の最初の数時間は過敏になるでしょう。

私が試みるあなたの方法の1つの変更は、「今日まで」の代わりに過去24時間を見るか、両方の方法を使用して結果を平均することです. たとえば、以前の 24 時間メソッドは休暇をすぐに取得できますが、これまでのところ、ユーザーが水曜日などに休暇を取ったことがない場合、この日のメソッドは休暇を見逃す可能性があります。これは、最後の 4 回のスローを見て次のスローを予測するこのじゃんけんゲームと似た概念です。

私が検討したいもう 1 つの変更は、ハミング距離の計算で重みをいじることです。たとえば、各ビットの一致をlambda^(-n)で重み付けします。ここlambdaで、 は調整可能なパラメータ (1.1 などから開始) でありn、ビットが表す過去の時間数を示します。

SVM、ロジスティック回帰、ランダム フォレストなどのさまざまな分類アルゴリズムのいずれも、非常にうまく機能するはずです。特徴ベクトルに追加する特徴:

  • 曜日
  • 時間
  • この時間の平均占有率
  • この日の平均宿泊人数
  • この平均占有率(日、時間)
  • N のさまざまな値に対する過去の占有 N グラム (つまり、過去の N 時間のビット ベクトル)
  • 休日ですか?
  • 日の出からの時間

最後に、新しいユーザーの場合、十分なトレーニング データを取得するにはおそらくしばらく時間がかかるため、すべてのユーザーに基づく全体的なモデルと個々のユーザー モデルの 2 つのモデルが必要になる場合があります。次に、ユーザー モデルの重みを増やして、2 つのモデルの出力に重みを付けることができます。

于 2013-05-09T04:01:17.763 に答える