質問: 直接プログラミングに関係するわけではありませんが、アルゴリズムの話なのでこちらに質問させていただきます。 いま、アプリ一覧を使用頻度の高い順にソートしたいと考えています。 そこでアプリ起動頻度として、起動と起動のあいだに経過した時間の平均を取るという方法を取っています。 しかしこの方法では、過去によく使用していたが、いまではほとんど使ってないというものが上位に表示されてしまい利便性に問題があります。 そこで皆様のお知恵をお借りしたいのですが、なんらかのものの使用頻度を一般的に求めるためには、どのようなアルゴリズム、計算方法をとるべきでしょうか? よろしくお願いします。 **補足** 回答いただきありがとうございます。 私が期待しているのは、使用頻度なので、 * よく利用する(利用する間隔が短い)ものを上位に * 昔良く利用していたが今はもう利用していないものは相対的に下位に * 利用回数が多いものを上位に という特徴をもった数値を計算したいと思っています。
回答: 一般的というのは、存在しません。 hosiさんが欲しいと思っている使用頻度だけがhosiさんの正しい使用頻度であって、他の見知らぬ人々(一般)が欲しがるものに惑わされる事は不毛だと思います。 「過去に良く使用されていたものが上位に表示されるのは問題がある」という事であれば、 a) 直近1年とか、直近1か月とかを調査対象期間にする、 b) (使用回数/アプリが提供されていた期間)で頻度を求める などの対策が考えられます。 aは、最近良く使われているアプリが上位に来ますが、昔良く使われていたアプリが顧みられることはありません。昔の名作が、抜け落ちる可能性があるという欠点があります。 bは、リリースから今までの期間の平均を頻度に使いますから、良く使われていた時期のあるアプリはそれなりの順位になります。1年前にリリースされて毎日10回使われてるアプリと、3年前にリリースされて当初1年間は毎日30回使われていたけれど最近はさっぱり使われないアプリが、だいたい同じ順位になる訳です。調査対象期間を変えて順位表を作成し、そのなかでhosiさんの感覚にあう結果となった調査期間を用いると、望んでいる使用頻度に近いものが得られると考えられます。 どんな性質がある使用頻度が欲しいかを補足すると、より良い回答が得られると思いますよ。