2012-04-15 1 views
2

私は自分のニーズに合わせてさらに別の食料雑貨品リストアプリケーションを作成しようと考えています。私はそれを自動的にどの順序でリストから除外するかを知ることを望む。言い換えれば、店舗を通るルートを知る必要があります。アプリが私のために私のアイテムを並べ替えることができるので、ショッピングをスピードアップすることができます。どのように食料品リストを自動的に並べ替えるのですか? (ナイーブマシン学習)

この問題に対して可能な最も簡単な解決策は何ですか?私は約考えています:

  • 買い物旅行の時間。最初のアイテムをクリアして最後に停止するとタイマーを開始します。その後、各項目の平均時間を計算します。アプリは、この計算された時間に基づいてアイテムを並べ替えることができます。
  • このアイテムの前と後にチェックした他のアイテムの2つのリストを各アイテムストアに保存します。何とかそれを並べ替え、どのようにしているのか分からない。 :)

あなたは他のことについて考えることができますか?私は基本的に自動ソートのためにいくつかの素朴なマシン学習をしたい。

+1

正直なところ、MLはこの問題に適していないようです。私はあなたがちょうど店のレイアウト(パン通路5、ミルク通路9)を知りたいと思うし、 –

答えて

2

最初のアプローチ(時間に基づく)の単純なバージョンでの問題は、店舗を通過するまでに異なる時間がかかることを考慮していないことです。デリを待つのに多くの時間を費やすとそれ以降の卵を得る時間は、あなたがデリでどれくらい待っていたかに基づいて大きく変わります。だから、それらをチェックする平均時間に基づいて物事を注文することは、おそらく理想的ではありません。

バナナとブドウが1つのセクションにあり、通常はそれらを接近させると、ミルクと卵が別のセクションにあるなど、製品のグループを特定できれば、この順序を行う方がはるかに簡単です近くに近づく。このモデルにはいくつかの問題があります(ファンシーチーズのセクションまたは通常の乳製品のセクションからチェダーを得るかもしれませんが)、オーダーを行う方がはるかに簡単です(グループAはグループBの前ですグループBからアイテムを取得する前にグループAからアイテムを取得します(グループ定義を取得すると、それに基づいてソートされます)。

これはまた、新しいアイテムを入力するときに役立つ可能性があります。以前はブラックベリーを手に入れたことがないのに、アプリがウェブを検索したり、ブラックベリーが肉のカテゴリよりも果物のカテゴリに似ていると、彼らを果物グループに入れること。

どのようにグループ分けしますか? 1つの簡単な方法は、アイテムの平均時間差を距離測定値として使用してリスト内のアイテムをクラスタリングすることです(これは技術的なメトリックではありませんが、実際問題ではありません)。ここでは、k-meansやその他のクラスタリング手法を使用することができます。これは、Webやコーパスベースの類似性測度によっても増やすことができます。これは、新しいアイテムや店舗の最初の数回の実行に役立ちます。たぶんあなたはこれを助けるためにGPSデータも使うことができます。

グループに物事を割り当てることとグループを注文することとの間で何らかのEMプロセスを繰り返すことができますが、それが非常に役立つかどうかはわかりません。また、このプロセスが間違っている場合は、グループに手動で割り当てることもできます。

これはクールなアイデアです!あなたがそれをリリースすれば、多分私はそれを使用します。 :)

+0

グループ化することは感謝します、ありがとう!私はクラスタリングについて読まなければならない。 :) – Sven

1

リストをソートして平均時間が十分でないと感じたら、すべての訪問のすべてのアイテムのリストをアイテムにチェックを入れた順に保存できます。次に、次のように項目を並べ替えることができます。

2つの項目を比較するとき、項目Bを項目Bよりも前に選択した回数を確認します。次に、項目Aの前に項目Bを選択し、これらの数値に基づいて並べ替える回数を確認します。私。 AをB回前に、BをA m回、n> mより前に選んだ場合、AはBの前に来るはずです。このコンパレータを使用してソートします。

明らかに、n = mのときに何をすべきかという問題があります。これはあなたが言及した平均時間を使って分解できます。

しかし、正直言って、それらを単にクラスタリングするほうが良いかもしれません。または、このアプローチを使用してクラスタ内で並べ替えることができます;

関連する問題