質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

Q&A

2回答

1497閲覧

記事を人気順で表示するときに使うスコアを計算するアルゴリズムについて

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

0グッド

0クリップ

投稿2016/05/11 01:47

編集2022/01/12 10:55

記事にスコア付けをしてそれらを人気順で表示させるアルゴリズムを考えているのですが、なかなか良い方法が思いつかないのでアドバイスをいただきたいです。
スコアの指標となるもの
・はてなブックマーク数
・Facebookのいいね数
この2つの数をもとに各記事のスコアを計算したいと思っています。

現状での問題点
・はてぶ数1とFacebookいいね数1ではそもそもの価値が異なるので、比率をきめたりして揃える必要がある。
例)
はてぶ数:Facebookいいね数 = 6:4
みたいな。比率に関してはそこまで正確に決める必要は別にない。さじ加減で。
もし、他に別の方法で良い案があれば、教えていただきたいです。

・記事の中にははてぶ数はそんなにないのに、Facebookいいね数だけやたら高かかったりするものがあるので、それが原因でスコアの評価が高くなるのを防ぐ。
あくまでもバランス良く、かつ双方の数がともに他の記事と相対的にみて高い記事を人気ランキング上位にしたい。

以上がアルゴリズムの仕様の説明になります。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

こんにちは。

・はてぶ数1とFacebookいいね数1ではそもそもの価値が異なるので、比率をきめたりして揃える必要がある。

これは、異なる単位の数値を「正規化」する問題と思います。

・記事の中にははてぶ数はそんなにないのに、Facebookいいね数だけやたら高かかったりするものがあるので、それが原因でスコアの評価が高くなるのを防ぐ。

「Facebookいいね数だけやたら高い」ことも正当な評価と解釈するのであれば、「正規化」で良いように思います。
そうではなく、何らかの不正が行われていると判定しランキング候補から外すのであれば、フィルターの問題ですね。

「正規化」については、単純に全ての記事の評価値(はてぶ数やいいね数)の総和を求めて、各記事の評価値を割ることで正規化できると思います。その正規化された評価値は0~1の範囲に収まるので、単純に加えたり、かけたりする方法である程度うまくいくかも知れません。

フィルターについては、1つの記事の「はてぶ正規化数」と「いいね正規化数」の差異が大きい時は除外することが考えれます。
しかし、odakinさんのランキングがメジャーになって不正者が対策するとイタチごっこですが...

投稿2016/05/11 02:05

Chironian

総合スコア23272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/05/11 04:18 編集

回答ありがとうございます。 おっしゃる通り、「Facebookいいね数だけやたら高い」ことも正当に評価したいと考えているので正規化してやってみようと思います。 私自身数学の知識がほとんどないので、正規化というのも漠然とした理解しかできないのですが、要するに評価値を0〜1の範囲に収めることで、正規化前の評価値の大きな差を、正規化することである程度小さくすることができるという解釈で良いでしょうか。 また、正規化後の評価値を足したりかけたりするというのが良くわからないので、もう少し具体的に教えていただけるとありがたいです。正規化後の評価値をそのままランキングのスコアにしてはいけないのでしょうか。
guest

0

思いついたコメントだけですが…

・はてぶ数1とFacebookいいね数1ではそもそもの価値が異なるので~

重み付けでなんとかするのを良く見かけます。
はてぶは2point、FBイイネは1point、のように決めて、合計値から
ランキングを決めるといった方法です。

・記事の中にははてぶ数はそんなにないのに~

はてぶpointとFBイイネpointを比較した時の偏り具合を比率にして
合計値に掛け算するような方法になるんじゃないかと思います。

「他の記事と相対的にみて」という点に関しては、ランキングという
評価方式がそもそも相対評価なので、とりあえず気にしなくてもいい
のではないかと思います。

投稿2016/05/11 02:02

tnd-.-b

総合スコア247

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/05/11 02:08

回答ありがとうございます。 はてぶpointとFBイイネpointを比較した時の偏り具合を比率にする、具体的な計算方法も教えていただけるとありがたいです。
tnd-.-b

2016/05/11 02:52

んー、おそらくですが…こういう偏りに対する比率をどのようにランキングに反映させるか ってのは決めの問題、どうやりたいか、の問題になってきます。 例えば「イイネに対してはてぶが少ない場合、実は大したことない(ランクDown)」 という方針にするのであれば、以下の計算ができるかもしれません。  比率=はてぶpoint × 1/イイネpoint 最終的に、どういうポイント関係であれば「人気」とするかによって計算は変わるのでは無いかと思います。 (例えば、アクセス数が1000程度でも、全員がイイネ+はてブしたら、きっとそれはスゴイ記事です。)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問