1

レコメンデーション システムのアルゴリズムを選択し、ソーシャル ネットワークの分野でシミュレートする必要があります。そのコードを見つけることができた唯一のアルゴリズムは、slope-one です。2 つの質問があります。

  1. このアルゴリズムはソーシャルネットワークに適していますか? 答えが否定的である場合、他の便利なアルゴリズムを紹介していただけませんか?

  2. わかりません、どうすればこのシミュレーションを行うことができますか? 私は何をすべきか?&その要件は何ですか?

どんなガイドも役に立ちます、ありがとう。

4

1 に答える 1

0

1.

Slope One は非常に単純化されたものですが、おそらく使用できます。Facebook はニュースフィードに EdgeRank を使用しています。

2.

あなたのコメントによると、言語、フレームワークなどに関する要件/好みは何ですか? あなたがオープンで、しゃれを許すなら、推奨事項をお勧めします.ASP.Net MVC 3 Webプロジェクトをお勧めします。

データの設定は、"Person"またはクラスの設定の問題になります (これは、友人の"Friend"推薦が必要であることを前提としています。グループ、ページ、アプリなどでこれを簡単に行うことができます)。次に、ランダム化された名前、プロパティなどを使用して、そのクラスのインスタンスをいくつか (多ければ多いほど良い) 作成します。Google でランダム ジェネレーターを検索すると、何かが見つかるはずです。または、自分でコードを記述します。これらのいずれも実行できない場合は、ここに返信してください。そのためのコードをいくつかまとめます。

次に、ネットワークの小規模な表現を設定します。つまり、「人」間の関係を定義します。これを行うにはいくつかの方法がありますが、シナリオでは、他のオブジェクトへの参照を保持する各Personオブジェクトに"Friends"プロパティを与えることでおそらくうまくいくでしょうPerson

アルゴリズムの実装については、もう少し皆さんにお任せします (これは学術的なプロジェクトなので、皆さんに学習させなければなりませんよね?)。

あなたが私に示した実装を使用して、次のようにクラスを設定できます。

public static class Rating
{
    public static double RatingBetween(Person a, Person b)
    {
        double rating = 0;
        foreach (Person friend in a.Friends)
        {
            if(b.Friends.Contains(friend))
            {
                rating ++;
            }
        }
    }
}

これは非常に単純な例ですが、基本的には次のように機能します: 人物 a のすべての友人に対して、人物 b にもこの友人がいる場合、人物 a と人物 b の間の評価は少し良くなります。これに他のシナリオを追加する必要があります (たとえば、友人 a と友人 b が同じ都市に住んでいる場合は 5 の評価を追加し、同じ学校、仕事などには 5 を追加します。その後、辞書を設定できます (または、次のような、特定の人の評価の何か):

Dictionary<Person, double> FriendDict = new Dictionary<Person, double>();
foreach (Person a in personYouAreRecommendingFriendsFor.Friends)
{
    FriendDict.Add(a,Rating.RatingBetween(personYouAreRecommendingFriendsFor, a))
}

これで、評価のテーブルが設定されました。あとは、見つけた実装を使用して実行できます。

進行中に正しい方向にさらに微調整が必​​要な場合は、喜んでお手伝いさせていただきます。ここにコメントを返すだけです。

参考文献

幸運を!

于 2012-06-14T21:55:41.727 に答える