Web サイトにいくつかのページがあり、「人気」/「アクティビティ」に基づいて順序を作成する必要があります。
使用する必要があるパラメーターは次のとおりです。
- ページへのビュー
- ページに寄せられたコメント (下部にユーザーがコメントできるフォームがあります)
- 「いいね」アイコンのクリック数
人気の公式が何であるかについての基準はありますか? (そうでなければ意見も良いです)
(最初は、ビュー + 10* コメント + 10* いいね! を考えていました)
Web サイトにいくつかのページがあり、「人気」/「アクティビティ」に基づいて順序を作成する必要があります。
使用する必要があるパラメーターは次のとおりです。
人気の公式が何であるかについての基準はありますか? (そうでなければ意見も良いです)
(最初は、ビュー + 10* コメント + 10* いいね! を考えていました)
実際には、これを計算するための受け入れられた最良の方法があります:
http://www.evanmiller.org/how-not-to-sort-by-average-rating.html
「いいね」と「コメント」を 1 つのスコアに結合し、それぞれに独自の加重係数を割り当ててから、それを「肯定的な投票」値として数式に組み込む必要がある場合があります。
上記のリンクから:
スコア = ベルヌーイ パラメーターのウィルソン スコア信頼区間の下限
肯定的な評価の割合と少数の観察による不確実性とのバランスを取る必要があります。幸いなことに、この計算は 1927 年に Edwin B. Wilson によって解決されました。私たちが聞きたいのは、私が持っている評価を考えると、肯定的な評価の「本当の」部分が少なくとも何パーセントである可能性が 95% あるということですか? ウィルソンが答えます。肯定的な評価と否定的な評価 (つまり、5 つ星評価ではない) のみを考慮すると、肯定的な評価の割合の下限は次のようになります。
(下限を計算するには、プラス/マイナスを示す場合はマイナスを使用します。)
p̂
これは、正の評価の観察された割合であり、は標準正規分布zα/2
の 分位点であり、は評価の総数です。Ruby で実装された同じ数式:(1-α/2)
n
require 'statistics2'
def ci_lower_bound(pos, n, confidence)
if n == 0
return 0
end
z = Statistics2.pnormaldist(1-(1-confidence)/2)
phat = 1.0*pos/n
(phat + z*z/(2*n) - z * Math.sqrt((phat*(1-phat)+z*z/(4*n))/n))/(1+z*z/n)
end
pos
は肯定的な評価の数、n
は評価の総数、信頼度は統計的信頼レベルを表します。下限が正しい確率が 95% の場合は 0.95、確率が 97.5% の場合は 0.975 などです。この関数の -score は決して変更されないため、統計パッケージが手元にない場合、またはパフォーマンスが問題である場合は、ここで の値をいつでもハードコーディングできますz
。(信頼水準 0.95 には 1.96 を使用します。)
SQL クエリと同じ式:
SELECT widget_id, ((positive + 1.9208) / (positive + negative) -
1.96 * SQRT((positive * negative) / (positive + negative) + 0.9604) /
(positive + negative)) / (1 + 3.8416 / (positive + negative))
AS ci_lower_bound FROM widgets WHERE positive + negative > 0
ORDER BY ci_lower_bound DESC;
YouTubeと同じように、カテゴリごとに最大数で並べ替えることができます。たとえば、最も閲覧された、最もコメントされた、最も高く評価されたなどです。ランキングは相関している可能性がありますが、各カテゴリで異なるページが最初に来る可能性があります。ランキングが 1 つだけ必要な場合は、何らかの式を考え出す必要があります。できれば、すでに持っている一連のデータを分析し、何を良い/悪いとして計算するかを決定し、逆算して適合させることにより、経験的に導出する必要があります。あなたの決定に合った方程式。
数式の例のように、これらの各数値を組み合わせるための適切な重み付けを「学習」するために、機械学習アプローチを試みることもできます。手動で行うこともそれほど難しくないかもしれません。
これには標準的な公式はありません (どうしてあるのでしょうか?)
あなたが持っているものはかなり普通の解決策のように見え、おそらくうまくいくでしょう。もちろん、ニーズに合った値を見つけるには、10 の値をいじってみる必要があります。
要件によっては、古いページの人気が低下するように、時間要素 (つまり、1 週間あたり -X ポイント) を追加することもできます。または、「ページ ビュー」を「先月のページ ビュー」に変更することもできます。繰り返しますが、これはニーズによって異なります。関連しない場合があります。
私が使う、
(C*comments + L*likeit)*100/views
各属性の価値に応じて、C と L を使用する必要があります。C=1 と L=1 を使用します。
これにより、肯定的なアクションを生成したビューのパーセンテージが得られ、パーセンテージが高いアイテムが最も「人気」になります。新しいアイテムが最初に非常に人気があり、最初に表示されてより多くのビューを獲得し、安定するまで人気が低くなる (または高くなる) 可能性があるため、これが気に入っています。
とにかく、それが役立つことを願っています。PS: "*100" がなくても同じように機能しますが、パーセンテージが好きです。
コメントは、「コンテンツが議論を誘うものであるかどうか」よりも価値があります. 事実を述べているだけなら、コメントなども同数でいいみたいです(10はちょっと多すぎると思いますが…)。
訪問は、ユーザーが何らかの形で費やした時間を考慮に入れていますか? 同様に、2 秒のビューは 3 分未満のビューを意味するため、これを使用することもできます。