(58)【調査した分野】(Int.Cl.,DB名)
前記複数のユーザに関する前記複数の項目の前記それぞれの評価に寄与する複数の項目特徴を含む項目特徴データを識別するステップであって、前記ユーザ特徴データと前記項目特徴データとの積が前記評価データの推定をもたらす、ステップと、
前記評価データおよび前記ユーザ特徴データに基づいて前記項目特徴データを更新するステップとをさらに含む、
請求項1に記載のコンピュータで実行される方法。
前記ユーザ特徴データを更新するステップが、前記予測される評価データと評価データとの差、前記ソーシャルネットワークデータによって重み付けされた前記ユーザ特徴データ、および過適合防止項の加重和を最小化するための最適化問題を解くステップを含む、請求項6に記載のコンピュータで実行される方法。
前記ユーザ特徴データを更新することが、前記予測される評価データと評価データとの差、前記ソーシャルネットワークデータによって重み付けされた前記ユーザ特徴データ、および過適合防止項の加重和を最小化するための最適化問題を解くことを含む、
請求項18に記載のコンピュータが実装されたシステム。
【発明を実施するための形態】
【0009】
様々な図面における同様の参照番号および記号表示は、同様の要素を示す。
【0010】
以下の詳細な説明は、たとえばソーシャルネットワークデータに基づいてユーザに推奨を提供するための2つのプラットフォームの間の、信頼できるイニシャライザを用いた秘密共有スキームを説明し、1つまたは複数の特定の実装形態に関連して開示される主題を当業者が行うおよび使用することを可能にするために提示される。開示される実装形態の様々な修正、変更、および置換を行うことができ、それらは当業者には容易に明らかとなり、定義された一般原理は、本開示の範囲を逸脱することなく、他の実装形態および適用分野に適用され得る。場合によっては、記載の主題の理解を得るために不必要な詳細は、1つまたは複数の記載された実装形態を不必要な詳細で分かりにくくしないように、また、そのような詳細は当業者の技能の範囲内であるため、省略されることがある。本開示は、記載または図示された実装形態に限定されるのではなく、記載された原理および特徴と一致する最も広い範囲に従うことが意図されている。
【0011】
多数のオンラインプラットフォームの中で、異なるプラットフォームは、異なるタイプのデータを蓄積することができる。たとえば、NETFLIXまたはIMDBなどの項目評価推奨プラットフォームは、映画およびテレビシリーズに関するユーザからの評価データを蓄積する。フェイスブックまたはツイッター(登録商標)などのソーシャルメディアまたはソーシャルネットワークプラットフォームは、ユーザまたはその友達からのソーシャルネットワークデータを蓄積する。親しい友達は同様の好みをもつ傾向があるため、ソーシャル情報は、推奨システムの性能を向上させることができる。既存のソーシャルベースの推奨方法は、項目のユーザ評価データおよびユーザ間のソーシャルデータが共有されることを想定する。しかしながら、データのプライバシーまたは他の懸案事項により、オンラインプラットフォームは、通常、それらの元データを他と共有しない。
【0012】
各プラットフォームのプライベートデータを他に開示せずに、評価データおよびソーシャルネットワークデータの両方に基づいて、改良された推奨システムの構築においてプラットフォームが安全に協力することを可能にする、例示的技法が、説明される。たとえば、社会的推奨モデルは、項目評価推奨プラットフォームとソーシャルネットワークプラットフォームとの間で秘密共有スキームを介して評価データおよびソーシャルネットワークデータの両方に基づいてトレーニングすることができる。秘密共有スキームの下で、プラットフォームの間で交換されるデータは、それらの元の形ではなくて、操作された形である。交換されるデータは、操作されたデータから元データを回復または復号することができないように、操作される。
【0013】
秘密共有スキームは、データソース(たとえば、送信器としての)が送信前に元データをエンコードされた形にエンコードまたは暗号化する安全なデータ伝送のためのエンコード、暗号化、またはその他のスキームとは異なり、意図された受信者は、たとえば知られているセキュリティキーまたは対応する復号アルゴリズムに基づいて、受信したエンコードされたデータから元データを復号または回復することができる。秘密共有スキームは、意図された受信者にも、元データが知られないように保護する。そのようなものとして、データソースは、元データのプライバシーを保護する。
【0014】
したがって、秘密共有スキームは、異なるプラットフォームの間のコラボレーションを促進し、データのプライバシーを損なうことなく、相互利益の達成を助けることができる。たとえば、開示される秘密共有スキームで、項目評価推奨プラットフォームは、ソーシャルネットワークプラットフォームからのソーシャルネットワーク情報を活用してユーザのニーズをよりよく予測し、ユーザに対象を絞った推奨を提供することができ、高度なユーザ体験と項目評価推奨プラットフォームに対する潜在的利益戻しとをもたらす。
【0015】
図1は、本開示の一実装形態による、プラットフォームA102とプラットフォームB104との間の秘密共有のための例示的システム100を示すブロック図である。プラットフォームA102は、娯楽、小売り、サービス、および、ユーザが製品、サービス、もしくは他の項目を評価することができる他の産業もしくは部門における、項目評価推奨プラットフォームを含み得るが、これに限定されない。項目評価推奨プラットフォームの例には、たとえば、AMAZON、NETFLIX、またはIMDBが含まれる。プラットフォームA102は、そのユーザから評価データRを収集することができる。評価データRは、ユーザによって与えられた1つまたは複数の項目(たとえば、製品またはサービス)の1つまたは複数の実際の評価、あるいは、その項目に関するユーザのクリック、購入、検索、または他の活動履歴に基づく1つまたは複数のマッピングされた評価を含み得る。評価は、その項目のユーザのニーズ、趣味、または好みを反映することができる。評価は、具体的範囲(たとえば、[0, 1]、または[1, 5])を有し得る。一部の実装形態では、評価データRは、M*Nの次元を有する行列で表すことができ、Mはユーザの数を表し、Nは項目の数を表し、エントリR
ijはユーザiによる項目jの評価を表す。
【0016】
プラットフォームA102はまた、たとえば、ユーザの名前、年齢、性別、アドレス、または他の任意のアカウントもしくはプロフィール情報、購入履歴、ブラウジング履歴、あるいはプラットフォームA102におけるユーザの検索履歴を含むことが可能な、ユーザデータも含むことができる。プラットフォームA102はまた、たとえば、項目に関連する名前、カテゴリ、価格、キーワード、命令などを含むことができる、項目データも含むことができる。
【0017】
一部の実装形態では、少数(M*Nと比較して)のエントリR
ijのみが、実際の評価またはその項目に関連する既存のユーザ活動に基づくマッピングされた評価を有するため、収集された評価データRは疎行列になり得る。一部の実装形態では、プラットフォームA102は、項目の対象を絞った推奨をユーザに提供するために、項目の知られている評価を予測することができる。一部の実装形態では、プラットフォームA102は、たとえば、機械学習もしくは統計学アルゴリズムに従って、ユーザデータおよび項目データに基づいて、項目の知られている評価を予測することができる。一例として、プラットフォームA102は、行列因数分解方法または他の技法に従って、ユーザ特徴データU(ユーザファクタデータとも呼ばれる)および項目特徴データV(項目ファクタデータとも呼ばれる)に基づいて、項目の推奨を提供することができる。具体的には、各ユーザ(たとえば、ユーザi)は、年齢、性別、ジオロケーション、訪問パターンなどのユーザの特徴のベクトル(たとえば、U
i)によって特徴付けることができる。各項目(たとえば、項目j)は、カテゴリ、キーワード、トピック、価格などの項目特徴のベクトル(たとえば、V
j)によって特徴付けることができる。ユーザの特徴および項目特徴は、所与の項目の所与のユーザの評価、選択、または購入に影響を及ぼすファクタであってもよい。一部の実装形態では、ユーザによって与えられる項目の評価は、ユーザの特徴のベクトルと項目特徴のベクトルとのドット積によって概算することができる。たとえば、
R
ij ≒ U
iTV
j (1)
但し、U
iは、ユーザiに対応するユーザ特徴データのベクトルを表し、V
jは、項目jに対応する項目特徴データのベクトルを表し、R
ijは、ユーザiによる項目jの評価を表す。
【0018】
一部の実装形態では、ユーザ特徴ベクトル(たとえば、U
i)および項目特徴ベクトル(たとえば、V
j)は、トレーニングデータ(たとえば、知られている評価データ)から学習することができる潜在ベクトルである。
【0019】
プラットフォームB104は、ソーシャルメディアプラットフォーム(フェイスブック、ツイッター(登録商標)、またはインスタグラムなど)を含み得るが、これらに限定されない。プラットフォームB104は、そのユーザからソーシャルネットワークデータSを収集することができる。ソーシャルネットワークデータは、たとえば、プラットフォームBにおけるユーザの名前、年齢、性別、アドレス、職業、関係、趣味、地位、コメント、ブログ、ブラウジング履歴、または他の人口統計、雇用、レクリエーション情報と、ユーザの友達、家族、同僚などの対応する情報とを含み得る。そのようなソーシャルネットワークデータSは、項目のユーザの評価を予測するおよび推奨を提供するためにプラットフォームAに情報を与えることができる。
【0020】
たとえば、プラットフォームAは、公式(2)に示すように最適化問題を解くことによって、ユーザの評価を予測することができる:
【0022】
但し、S
ikはソーシャルネットワークデータSにおけるユーザiとユーザkとの社会的関係を表し、λ
1はソーシャルネットワークデータに関連する所定の重みを表し、λ
2は過適合を防ぐための所定の重みを表す。
【0023】
この例では、公式(2)の右手側の目的関数は、3つの項を含む。第1の項
【0025】
は、エラー、あるいは、知られている評価データとユーザ特徴データ(たとえば、U=[U
1, U
2, …, U
M])および項目特徴データ(たとえば、V=[V
1, V
2, …, V
N])に基づいて計算される概算評価との距離を表す。第2の項
【0027】
は、ユーザ特徴ベクトルへのソーシャルネットワークデータSの影響を表す。たとえば、2人のユーザの社会的関係が近いまたは強いほど、2つのユーザ特徴ベクトルは類似する。一部の実装形態では、S
ikが大きいほど、2人のユーザの社会的関係はより近いまたは強い。第3の項
【0029】
は、過適合を防ぐために使用される。重みλ
1およびλ
2の値は、予め決定することができる。重みが大きいほど、目的関数への対応する項の影響は大きい。
【0030】
目的関数を最小化するための前述の最適化問題は、たとえば、勾配降下または別のアルゴリズムによって、解くことができる。たとえば、公式(2)に関する潜在ベクトルUおよびVの導関数をとり、および行列形式において結果を表現することで、以下の2つの方程式に到達することができる:
【0033】
前述の方程式(3)および(4)においてUおよびVの値を求めるには、UおよびSの値を個別に知る必要はなく、行列積U・diag(S・I
M)およびU・Sの結果で十分である。そのようなものとして、秘密共有スキームは、行列積U・diag(S・I
M)およびU・Sの結果を得るために、プラットフォームAおよびBによって使用することができる。秘密共有スキームの下で、プラットフォームAは、元のUをプラットフォームBに開示せずに、操作されたUをプラットフォームBに開示することができ、プラットフォームBは、元のSをプラットフォームAに開示せずに、操作されたSをプラットフォームAに開示することができる。
【0034】
一部の実装形態では、秘密共有スキームは、信頼イニシャライザを用いてまたは用いずに実装することができる。信頼イニシャライザを用いて、共通の初期点を信頼イニシャライザによって確立し、2つのプラットフォームに送信して、それらのデータ交換を助けることができる。信頼イニシャライザを用いずに、2つのプラットフォームは、それぞれの初期点として乱数を各々生成して、それらのデータ交換を助けることができる。プラットフォームは、極秘の機密情報の共有なしにコラボレーションの恩恵を受けることができる。
【0035】
図2は、本開示の一実装形態による、プラットフォームAによって推奨を生成するための信頼できるイニシャライザを用いたプラットフォームAとプラットフォームBとの間の例示的な秘密共有方法200を示すフロー図である。プラットフォームAは、
図1に記載のプラットフォームAでもよく、プラットフォームBは、
図1に記載のプラットフォームBでもよい。一部の実装形態では、例示的な秘密共有方法は、反復アルゴリズムにおいて実装することができる。反復の数Tは、たとえば、予め決定した値でもよく、またはある特定の基準(たとえば、アルゴリズムが収束または更新するかどうか、あるいは異なる反復の後のUまたはVの差が閾値未満であるかどうか)に基づいて決定してもよい。202において、プラットフォームAは、ユーザ評価データRおよび初期ユーザ特徴データUおよび項目特徴データV、および反復の数Tを識別する。204において、プラットフォームBは、ソーシャルネットワークデータSを識別する。第tの反復(t<T)について、208で、プラットフォームAおよびプラットフォームBは、信頼できるイニシャライザを用いて秘密共有スキームを実行して行列積U・diag(S・I
M)およびU・Sを取得することができる。206で、プラットフォームAは、たとえば方程式(3)および(4)に従って、行列積U・diag(S・I
M)およびU・Sに基づいてUまたはVを更新する。T反復の後、210で、プラットフォームAの項目特徴は、更新されたユーザ特徴データUおよび項目特徴データVに基づいて推奨を生成する。
【0036】
一部の実装形態では、仮に行列Zを行列Aおよび行列Bの積とする。すなわち、Z=A・Bとする。Z
ijは、第iの行および第jの列におけるZのエントリ/要素を表す。Z
ijは、たとえば方程式(5)に従って、計算することができる。行列積U・diag(S・I
M)およびU・Sは、たとえば、
Z
ij ≒ A
iTB
j (5)
であり、但し、A
iTは行列Aの第iの行を表し、B
jは行列Bの第jの列を表す。
【0037】
図3は、本開示の一実装形態による、信頼できるイニシャライザ350を用いたプラットフォームA 302とプラットフォームB 322との間の秘密共有スキームを使用した行列AおよびBの行列積Zの計算を示すフロー図である。信頼できるイニシャライザを用いた秘密共有スキームにおいて、信頼イニシャライザ350は、初期値(X1, Y1, W1)352をプラットフォームA 302に送り、初期値(X2, Y2, W2)354をプラットフォームB 322に送る。プラットフォームAおよびプラットフォームBの両方の初期値は、乱数値または予め決定された値でもよい。304および324で、プラットフォームA 302およびプラットフォームB 322の両方が、それぞれの入力Aおよび入力Bを得る。入力A304は、ランダム化された入力データまたは予め決定された入力データ(たとえば、ユーザ特徴データU)を含むが、これらに限定されず、入力B 324は、ランダム化された入力データまたは予め決定された入力ソーシャルネットワークデータ(たとえば、ソーシャルネットワークデータdiag(S・I
M)またはS)を含むが、これらに限定されない。
【0038】
両方のプラットフォームが入力データを取得した後、プラットフォームA 302は、乱数行列A1を306において生成し、プラットフォームB 322は、乱数行列B1を326において生成する。308において、取得された入力A304および乱数行列A1 306は、A2=A-A1のように、A2の値を計算するために使用される。309において、A2は、元データAを開示せずに、計算のためにプラットフォームB 322に送られる。A2は、プラットフォームB 322に送られる。328において、入力B 324および乱数行列B1 326は、B2=B-B1のようにB2の値を計算するために使用される。329において、B2は、元データBを開示しない計算のためにプラットフォームA 302に送られる。310において、プラットフォームA 302は、D1=A1-X1のように、A1およびX1を使用してD1の値を求め、E1=
B2-Y1のように
B2およびY1を使用してE1の値を求める。他方で、330において、プラットフォームB 322は、D2=A2-X2のようにA2およびX2を使用してD2の値を求め、E2=
B1-Y2のように
B1およびY2を使用してE2の値を求めた。311において、プラットフォームA 302は、D1およびE1をプラットフォームB 322に送る。331において、プラットフォームB 322は、D2およびE2をプラットフォームA 302に送る。312において、プラットフォームAおよびBの両方が、D=D1+D2のようにD1およびD2を使用してDの値を求め、E=E1+E2のようにE1およびE2を使用してEの値を求める。計算されたDおよびEを用いて、プラットフォームAおよびBの両方は、ユーザ特徴データおよび項目特徴データを更新するために使用することができる出力を生成することができる。たとえば、出力を生成するために、314において、プラットフォームA 302は、W1+E*X1+D*Y1+D*EによってZ1を計算し、*は乗算を示す。334において、プラットフォームB 322は、W2+E*X2+D*Y2+D*EによってZ2を計算し、*は乗算を示す。
【0039】
315において、プラットフォームAは、Z2をプラットフォームBから受信する。一部の実装形態では、Z2は、ソーシャルネットワークデータ(たとえば、B)および信頼できるイニシャライザからの第1の入力データ(たとえば、X2、Y2、W2)に基づいて計算された例示的な操作されたソーシャルネットワークデータである。335において、プラットフォームBはZ1をプラットフォームAから受信することができる。一部の実装形態では、Z1は、ユーザ特徴データ(たとえば、A)および信頼できるイニシャライザからの第2の入力データ(たとえば、X1、Y1、W1)に基づいて計算された例示的な操作されたユーザ特徴データである。Z1とZ2との和は、行列Aと行列Bの積と等しい。すなわち、AB=Z1+Z2である。そのようなものとして、316において、プラットフォームAは、行列Aおよび行列Bの操作されたデータである、Z1とZ2の合計を計算することによって行列Aと行列Bの積を計算することができる。同様に、プラットフォームBもまた、Z1とZ2の合計を計算することによって行列Aと行列Bの積を計算することができる。
【0040】
行列UをAで置換することおよびdiag(S・I
M)をBで置換することによって、行列積S・diag(S・I
M)を得ることができる。同様に、行列UをAで置換することおよびSをBで置換することによって、行列積U・Sを得ることができる。行列積S・diag(S・I
M) およびU・Sを用いて、プラットフォームAは、たとえば、
図2の206に関して説明したように方程式(3)および(4)に従って、ユーザ特徴データUおよび項目特徴データVを更新することができる。
【0041】
図3に記載された計算は、ユーザ特徴データおよび項目特徴データの更新の例示的な方法を提供する。更新されたユーザ特徴データおよび項目特徴データに基づいて、プラットフォームA 302は、予測される評価データを生成することができる。一部の実装形態では、プラットフォームA 302は、特に、予測される評価データに基づいて特定の顧客のための特定の項目の推奨を生成することができる。
【0042】
図4は、一実装形態による、信頼できるイニシャライザを用いた秘密共有スキームを使用する項目評価推奨プラットフォームによってユーザに対する推奨を生成するための例示的な方法400のフロー図である。提示を明確にするために、以下の説明は、概して、この説明におけるその他の図面との関連で方法400を説明する。たとえば、項目評価推奨プラットフォームは、
図1〜
図3に関して説明されるようなプラットフォームAでもよい。しかしながら、方法400は、必要に応じて、たとえば、任意の適切なシステム、環境、ソフトウェア、およびハードウェア、あるいはシステム、環境、ソフトウェア、およびハードウェアの組合せによって実行され得ることが、理解されよう。一部の実装形態では、方法400の様々なステップは、並行して、組み合わせて、ループで、または任意の順序で、実行することができる。
【0043】
402において、複数のユーザに関する複数の項目のそれぞれの評価を含むがこれらに限定されない、評価データが、項目評価推奨プラットフォームによって識別される。評価データを識別するステップは、(たとえば、別のデバイスから)受信するステップ、メモリから検索またはロードするステップ、あるいは、方法400に対する1つまたは複数の入力に基づいて評価データを決定するステップを含む。評価データは、
図1〜
図3に関して説明した評価データRを含み得る。たとえば、評価データは、実際の評価、または、その項目に関連する既存のユーザ活動に基づくマッピングされた評価を含み得る。402から、方法400は404に進む。
【0044】
404において、複数のユーザに関する複数の項目のそれぞれの評価に寄与する複数のユーザ特徴を含むユーザ特徴データは、項目評価推奨プラットフォームによって識別される。ユーザ特徴データを識別するステップは、(たとえば、別のデバイスから)受信するステップ、メモリから検索またはロードするステップ、あるいは方法400に対する1つまたは複数の入力に基づいてユーザ特徴データを決定するステップを含む。評価データは、
図1〜
図3に関して説明したユーザ特徴データUを含み得る。404から、方法400は406に進む。
【0045】
406において、複数のユーザに関する複数の項目のそれぞれの評価に寄与する複数の項目特徴を含む項目特徴データが、項目評価推奨プラットフォームによって識別される。項目特徴データを識別するステップは、(たとえば、別のデバイスから)受信するステップ、メモリから検索またはロードするステップ、あるいは方法400に対する1つまたは複数の入力に基づいて項目特徴データを決定するステップを含む。評価データは、
図1〜
図3に関して説明した項目特徴データVを含み得る。406から、方法400は408に進む。
【0046】
408において、項目評価推奨プラットフォームは、ソーシャルネットワークプラットフォームから信頼できるイニシャライザを用いた秘密共有スキームを介してソーシャルネットワークプラットフォームからの操作されたソーシャルネットワークデータを受信する。一部の実装形態では、操作されたソーシャルネットワークデータは、ソーシャルネットワークデータおよび信頼できるイニシャライザからの第1の入力データに基づいて計算することができる。ソーシャルネットワークデータは、複数のユーザのうちのいずれか2人の間の社会的関係を示す。信頼できるイニシャライザを用いた秘密共有スキームにおいて、ソーシャルネットワークプラットフォームは、ソーシャルネットワークデータを開示することなく、操作されたソーシャルネットワークデータを項目評価推奨プラットフォームと共有する。一部の実装形態では、信頼できるイニシャライザを用いた秘密共有スキームにおいて、項目評価推奨プラットフォームは、ユーザ特徴データ(たとえば、A)を開示せずに、操作されたユーザ特徴データ(たとえば、
図3に関して説明されたZ2)をソーシャルネットワークプラットフォームと共有し、操作されたユーザ特徴データは、ユーザ特徴データおよび信頼できるイニシャライザからの第1の入力データ(たとえば、X2、Y2、W2)に基づいて計算される。一部の実装形態では、操作されたソーシャルネットワークデータは、操作されたソーシャルネットワークデータから元のソーシャルネットワークデータを回復することができないように操作される。
【0047】
一部の実装形態では、信頼できるイニシャライザを用いた秘密共有スキームは、
図3に関して説明されたような公式(2)に関して説明されたように最適化問題を解くために使用される。たとえば、信頼できるイニシャライザを用いた秘密共有スキームにおいて、項目評価推奨プラットフォームは、信頼できるイニシャライザから第2の入力データ(たとえば、X1、Y1、W1)を取得し、ユーザ特徴データ(たとえば、A)および信頼できるイニシャライザからの第2の入力データに基づいて、第1の操作されたユーザ特徴データ(たとえば、A1)を生成する。項目評価推奨プラットフォームは、ソーシャルネットワークプラットフォームに第1の操作されたユーザ特徴データ(たとえば、A2)を送信し、ソーシャルネットワークプラットフォームから、ソーシャルネットワークデータ(たとえば、A)および信頼できるイニシャライザからの第1の入力データ(たとえば、X2、Y2、W2)に基づいて計算された第1の操作されたソーシャルネットワークデータ(たとえば、B2)を受信する。項目評価推奨プラットフォームは、第1の操作されたユーザ特徴データ(たとえば、A2)、第1の操作されたソーシャルネットワークデータ(たとえば、B2)、または信頼できるイニシャライザからの第2の入力データ(たとえば、X1、Y1、W1)のうちの2つ以上に基づいて、いくつかの中間データ(たとえば、D1、E1)を生成することができる。項目評価推奨プラットフォームは、ソーシャルネットワークプラットフォームにいくつかの中間データを送信し、ソーシャルネットワークプラットフォームから、第1の操作されたユーザ特徴データ(たとえば、A2)、第1の操作されたソーシャルネットワークデータ(たとえば、B2)、または信頼できるイニシャライザからの第1の入力データ(たとえば、X1、Y1、W1)のうちの2つ以上に基づいて計算されたいくつかの中間ソーシャルネットワークデータ(たとえば、D2、E2)を受信する。項目評価推奨プラットフォームは、中間データ(たとえば、D1、E1)、複数の中間ソーシャルネットワークデータ(たとえば、D2、E2)、または信頼できるイニシャライザからの第2の入力データ(たとえば、X1、Y1、W1)のうちの2つ以上に基づいて、操作されたユーザ特徴データ(たとえば、Z1)を生成することができる
。同様に、ソーシャルネットワークプラットフォームは、いくつかの中間データ(たとえば、D1、E1)、複数の中間ソーシャルネットワークデータ(たとえば、D2、E2)、または信頼できるイニシャライザからの第1の入力データ(たとえば、X2、Y2、W2)のうちの2つ以上に基づいて、操作されたソーシャルネットワークデータ(たとえば、Z2)を生成することができる。408から、方法400は410に進む。
【0048】
410において、項目評価推奨プラットフォームは、ユーザ特徴データを開示せずに、操作されたユーザ特徴データをソーシャルネットワークプラットフォームに送る。一部の実装形態では、操作されたユーザ特徴データは、たとえば、
図3に関して説明されたZ1を含み得る。410から、方法400は412に進む。
【0049】
412において、項目評価推奨プラットフォームは、評価データおよび操作されたソーシャルネットワークデータに基づいて、ユーザ特徴データを更新する。一部の実装形態では、ユーザ特徴データを更新するステップは、操作されたユーザ特徴データと操作されたソーシャルネットワークデータとの和を計算することによって、ユーザ特徴データ(たとえば、U)とソーシャルネットワークデータ(たとえば、Sまたはdiag(S・I
M))との積を計算するステップを含む。一部の実装形態では、ユーザ特徴データは、たとえば、数式(2)に示すように、予測される評価データと評価データとの差、ソーシャルネットワークデータによって重み付けされたユーザ特徴データ、および過適合防止項(overfitting-preventing term)の加重和を最小化するための最適化問題を解くことを含む。一部の実装形態では、ユーザ特徴データを更新するステップは、
図3に関して説明した例示的技法によるユーザ特徴データを更新するステップを含む。412から、方法400は414に進む。
【0050】
414において、項目評価推奨プラットフォームは、たとえば、
図3に関して説明した例示的技法に従って、評価データおよびユーザ特徴データに基づいて項目特徴データを更新する。たとえば、ユーザ特徴データを更新するステップは、操作されたユーザ特徴データ(たとえば、Z1)と操作されたソーシャルネットワークデータ(たとえば、Z2)との和を計算することによって、ユーザ特徴データ(たとえば、A)とソーシャルネットワークデータ(たとえば、A)との積を計算するステップを含み得る。414から、方法400は416に進む。
【0051】
416において、ユーザ特徴データと項目特徴データとの積に基づく複数のユーザに関する複数の項目の予測される評価データが生成される。一部の実装形態では、予測される評価データは、たとえば、方程式(1)に従ってユーザ特徴データと項目特徴データとの積に基づいて、生成することができる。一部の実装形態では、生成された評価は、ソーシャルネットワークの組み込みにより、ユーザのニーズまたは好みとよりよく一致することができる。416から、方法400は418に進む。
【0052】
418において、予測される評価データに基づく特定のユーザのための特定の項目の推奨が生成される。一部の実装形態では、特定のユーザに関して最高の予測される評価を有する1つまたは複数の項目を特定のユーザに推奨することができる。特定の項目の推奨は、映画またはショッピング項目の推奨でもよい。たとえば、NETFLIXは映画をさらに好ましく推奨することができ、あるいは、AMAZONはソーシャルネットワークデータに基づく項目をさらに好ましく推奨することができる。一部の実装形態では、特定の項目についての特定の項目の推奨は、たとえば、ユーザインターフェース(UI)を介して、出力することができる。一部の実装形態では、選択されたトピックが、グラフィックユーザインターフェース(GUI)またはユーザのレビューおよび検討のための他のUIにおいてチャットボックス、ポップウインドウなどに表示され得る。418から、方法400は停止する。
【0053】
図5は、一実装形態による、本開示に記載されるような、記載のアルゴリズム、方法、機能、プロセス、流れ、および手順に関連する計算機能を提供するために使用される例示的コンピュータシステム500のブロック図である。図示されたコンピュータ502は、コンピューティングデバイスの物理または仮想インスタンス(またはその両方)を含む、サーバ、デスクトップコンピュータ、ラップトップ/ノートブックコンピュータ、ワイヤレスデータポート、スマートフォン、携帯情報端末(PDA)、タブレットコンピューティングデバイス、これらのデバイス内の1つまたは複数のプロセッサ、あるいは他の任意の適切な処理デバイスなどの任意のコンピューティングデバイスを包含することが意図されている。加えて、コンピュータ502は、キーパッド、キーボード、タッチスクリーン、またはユーザ情報を受け付けることができる他のデバイスなどの入力デバイスと、デジタルデータ、視覚もしくはオーディオ情報(または情報の組合せ)、またはグラフィカルタイプユーザインターフェース(UI)(またはGUI)を含む、コンピュータ502の動作に関連する情報を運ぶ出力デバイスとを含み得る。
【0054】
コンピュータ502は、本開示で説明される主題を実行するためのコンピュータシステムのクライアント、ネットワーク構成要素、サーバ、データベースまたは他の持続性構成要素もしくは他の任意の構成要素の役割(または役割の組合せ)を果たすことができる。図示されたコンピュータ502は、ネットワーク530と通信可能なように結合される。一部の実装形態では、コンピュータ502の1つまたは複数の構成要素は、クラウドコンピューティングを用いた、ローカルな、グローバルな、または他の環境(または環境の組合せ)を含む、環境内で動作するように構成することができる。
【0055】
高いレベルにおいて、コンピュータ502は、記載の主題に関連するデータおよび情報を受信、送信、処理、記憶、または管理するように動作可能な電子コンピューティングデバイスである。いくつかの実装形態によれば、コンピュータ502はまた、アプリケーションサーバ、電子メールサーバ、ウェブサーバ、キャッシングサーバ、ストリーミングデータサーバ、または他のサーバ(またはサーバの組合せ)を含んでもよく、またはそれらと通信可能なように結合されてもよい。
【0056】
コンピュータ502は、クライアントアプリケーション(たとえば、別のコンピュータ502上で実行する)からネットワーク530を介して要求を受信し、受信した要求を適切なソフトウェアアプリケーションを使用して処理することによって、受信した要求に応答することができる。加えて、要求はまた、内部ユーザ(たとえば、コマンドコンソールからまたは他の適切なアクセス方法によって)、外部関係者またはサードパーティ、他の自動化されたアプリケーション、ならびに他の任意の適切なエンティティ、個人、システム、またはコンピュータからコンピュータ502に送られ得る。
【0057】
コンピュータ502の各構成要素は、システムバス503を使用して通信することができる。一部の実装形態では、コンピュータ502、ハードウェアまたはソフトウェア(または、ハードウェアとソフトウェアとの両方の組合せ)の構成要素のいずれかまたはすべては、アプリケーションプログラミングインターフェース(API)512またはサービスレイヤ513(または、API512およびサービスレイヤ513の組合せ)を使用してシステムバス503を介して、互いにまたはインターフェース504(またはその両方の組合せ)とインターフェースすることができる。API512は、ルーティン、データ構造体、およびオブジェクトクラスの仕様を含み得る。API512は、コンピュータ言語非依存または依存のいずれでもよく、完全なインターフェース、単一機能、またはAPIのセットも指し得る。サービスレイヤ513は、ソフトウェアサービスをコンピュータ502またはコンピュータ502に通信可能なように結合された他の構成要素(図示の有無に関わらず)に提供する。コンピュータ502の機能は、このサービスレイヤを使用してすべてのサービス消費者についてアクセス可能でもよい。サービスレイヤ513によって提供されるものなどのソフトウェアサービスは、定義されたインターフェースを介して、再利用可能な定義された機能を提供する。たとえば、インターフェースは、JAVA(登録商標)、C++、または拡張マークアップ言語(extensible markup language: XML)フォーマットにおいてもしくは他の適切なフォーマットにおいてデータを提供する他の適切な言語において書かれたソフトウェアでもよい。コンピュータ502の統合された構成要素として示されているが、代替実装形態では、コンピュータ502の他の構成要素またはコンピュータ502に通信可能なように結合された他の構成要素(図示の有無に関わらず)に対して独立型の構成要素としてAPI512またはサービスレイヤ513を示し得る。さらに、API512またはサービスレイヤ513のいずれかのまたはすべての部分は、本開示の範囲を逸脱せずに、別のソフトウェアモジュール、企業アプリケーション、またはハードウェアモジュールの子またはサブモジュールとして実装され得る。
【0058】
コンピュータ502は、インターフェース504を含む。
図5では単一のインターフェース504として示されているが、2つ以上のインターフェース504が、具体的なニーズ、要望、またはコンピュータ502の具体的な実装形態に応じて、使用され得る。インターフェース504は、分散環境においてネットワーク530に接続された他のシステム(図示の有無に関わらず)と通信するためにコンピュータ502によって使用される。一般に、インターフェース504は、ソフトウェアまたはハードウェア(またはソフトウェアとハードウェアとの組合せ)においてエンコードされたロジックを含み、ネットワーク530と通信するように動作可能である。さらに具体的には、ネットワーク530またはインターフェースのハードウェアが、図示されたコンピュータ502の中および外で物理信号を通信するように動作可能であるように、インターフェース504は、通信に関連する1つまたは複数の通信プロトコルをサポートするソフトウェアを含み得る。
【0059】
コンピュータ502は、プロセッサ505を含む。
図5では単一のプロセッサ505として示されているが、2つ以上のプロセッサが、具体的なニーズ、要望、またはコンピュータ502の具体的な実装形態に応じて使用され得る。一般に、プロセッサ505は、命令を実行し、コンピュータ502の動作と本開示に記載されるような任意のアルゴリズム、方法、機能、プロセス、フロー、および手順とを実行するために、データを操作する。
【0060】
コンピュータ502はまた、コンピュータ502またはネットワーク530に接続することができる他の構成要素(または両方の組合せ)(図示の有無に関わらず)のためのデータを保持することができるデータベース506を含む。たとえば、データベース506は、本開示と一致するデータを記憶するインメモリの、従来の、または他のタイプのデータベースでもよい。一部の実装形態では、データベース506は、具体的なニーズ、要望、またはコンピュータ502および記載されている機能の具体的な実装形態に応じて、2つ以上の異なるデータベースタイプ(たとえば、ハイブリッドインメモリおよび従来のデータベース)の組合せでもよい。
図5では単一のデータベース506として示されているが、2つ以上のデータベース(同じタイプまたはタイプの組合せの)が、具体的なニーズ、要望、またはコンピュータ502および記載されている機能の具体的な実装形態に応じて、使用され得る。データベース506は、コンピュータ502の不可欠な構成要素として示されているが、代替実装形態において、データベース506は、コンピュータ502の外部にあってもよい。示されているように、データベース506は、前述の評価データ516、ユーザ特徴データ518、項目特徴データ526およびソーシャルネットワークデータ528を保持する。
【0061】
コンピュータ502はまた、コンピュータ502またはネットワーク530に接続することができる他の構成要素(または両方の組合せ)(図示の有無に関わらず)のためのデータを保持することができるメモリ507を含む。メモリ507は、本開示に一致する任意のデータを記憶することができる。一部の実装形態では、メモリ507は、具体的なニーズ、要望、またはコンピュータ502および記載されている機能の特定の実装形態に応じて2つ以上の異なるタイプのメモリの組合せ(たとえば、半導体と磁気ストレージとの組合せ)でもよい。
図5には単一のメモリ507として示されているが、2つ以上のメモリ507(同じタイプのまたはタイプの組合せの)が、具体的なニーズ、要望、またはコンピュータ502および記載されている機能の特定の実装形態に応じて使用され得る。メモリ507は、コンピュータ502の不可欠な構成要素として示されているが、代替実装形態において、メモリ507は、コンピュータ502の外部にあってもよい。
【0062】
アプリケーション508は、具体的には本開示に記載の機能に関する、具体的なニーズ、要望、またはコンピュータ502の特定の実装形態に応じた機能を提供するアルゴリズムソフトウェアエンジンである。たとえば、アプリケーション508は、1つまたは複数の構成要素、モジュール、またはアプリケーションとしての機能を果たすことができる。さらに、単一のアプリケーション508として示されているが、アプリケーション508は、コンピュータ502上に複数のアプリケーション508として実装されてもよい。加えて、コンピュータ502に不可欠なものとして示されているが、代替実装形態において、アプリケーション508は、コンピュータ502の外部にあってもよい。
【0063】
コンピュータ502はまた、電源514を含み得る。電源514は、ユーザが自分で交換可能なようにまたはユーザが自分で交換不可能なように構成することができる再充電可能なまたは再充電不可能なバッテリを含み得る。一部の実装形態では、電源514は、電力変換または管理回路(再充電、スタンバイ、または他の電力管理機能を含む)を含むことができる。一部の実装形態では、電源514は、たとえば、コンピュータ502に電力を供給するまたは再充電可能なバッテリを再充電するために、コンピュータ502が壁ソケットまたは他の電力ソースにつながれることを可能にするための電源プラグを含むことができる。
【0064】
コンピュータ502を含むコンピュータシステムに関連付けられた、またはそのようなコンピュータシステムの外部の、任意の数のコンピュータ502が存在してよく、各コンピュータ502はネットワーク530を介して通信する。さらに、「クライアント」、「ユーザ」という用語、および他の適切な用語は、本開示の範囲を逸脱せずに、必要に応じて、互換的に使用され得る。さらに、本開示は、多数のユーザが1つのコンピュータ502を使用し得ること、または1人のユーザが複数のコンピュータ502を使用し得ることを企図している。
【0065】
本主題の記載されている実装形態は、1つまたは複数の特徴を単独でまたは組み合わせて含むことができる。
【0066】
たとえば、第1の実装形態において、コンピュータで実行される方法は、複数のユーザに関する複数の項目のそれぞれの評価を含む評価データを項目評価推奨プラットフォームによって識別するステップと、複数のユーザに関する複数の項目のそれぞれの評価に寄与する複数のユーザ特徴を含むユーザ特徴データを項目評価推奨プラットフォームによって識別するステップと、ソーシャルネットワークデータおよび信頼できるイニシャライザからの第1の入力データに基づいて計算された操作されたソーシャルネットワークデータを、信頼できるイニシャライザを用いた秘密共有スキームを介して項目評価推奨プラットフォームによってソーシャルネットワークプラットフォームから、受信するステップであって、ソーシャルネットワークデータは、その複数のユーザのうちのいずれか2人の間の社会的関係を示し、信頼できるイニシャライザを用いた秘密共有スキームにおいて、ソーシャルネットワークプラットフォームは、ソーシャルネットワークデータを開示することなく、操作されたソーシャルネットワークデータを項目評価推奨プラットフォームと共有する、ステップと、評価データおよび操作されたソーシャルネットワークデータに基づいてユーザ特徴データを項目評価推奨プラットフォームによって更新するステップとを含む。
【0067】
第2の実装形態において、非一時的なコンピュータ可読記録媒体は、以下を含む動作を実行するためにコンピュータシステムによって実行可能な1つまたは複数の命令を記憶する。すなわち、複数のユーザに関する複数の項目のそれぞれの評価を含む評価データを項目評価推奨プラットフォームによって識別するステップと、複数のユーザに関する複数の項目のそれぞれの評価に寄与する複数のユーザ特徴を含むユーザ特徴データを項目評価推奨プラットフォームによって識別するステップと、ソーシャルネットワークデータおよび信頼できるイニシャライザからの第1の入力データに基づいて計算された操作されたソーシャルネットワークデータを、信頼できるイニシャライザを用いた秘密共有スキームを介して項目評価推奨プラットフォームによってソーシャルネットワークプラットフォームから、受信するステップであって、ソーシャルネットワークデータは、その複数のユーザのうちのいずれか2人の間の社会的関係を示し、信頼できるイニシャライザを用いた秘密共有スキームにおいて、ソーシャルネットワークプラットフォームは、ソーシャルネットワークデータを開示することなく、操作されたソーシャルネットワークデータを項目評価推奨プラットフォームと共有する、ステップと、評価データおよび操作されたソーシャルネットワークデータに基づいてユーザ特徴データを項目評価推奨プラットフォームによって更新するステップ。
【0068】
第3の実装形態において、コンピュータが実装されたシステムは、1つまたは複数のコンピュータと、1つまたは複数のコンピュータと相互動作可能に結合されており、1つまたは複数のコンピュータによって実行されると、以下を含む動作を実行する、命令を記憶する有形の、非一時的な機械可読記録媒体を有している、1つまたは複数のコンピュータメモリデバイスとを含み、動作は、複数のユーザに関する複数の項目のそれぞれの評価を含む評価データを項目評価推奨プラットフォームによって識別するステップと、複数のユーザに関する複数の項目のそれぞれの評価に寄与する複数のユーザ特徴を含むユーザ特徴データを項目評価推奨プラットフォームによって識別するステップと、ソーシャルネットワークデータおよび信頼できるイニシャライザからの第1の入力データに基づいて計算された操作されたソーシャルネットワークデータを、信頼できるイニシャライザを用いた秘密共有スキームを介して項目評価推奨プラットフォームによってソーシャルネットワークプラットフォームから、受信するステップであって、ソーシャルネットワークデータは、その複数のユーザのうちのいずれか2人の間の社会的関係を示し、信頼できるイニシャライザを用いた秘密共有スキームにおいて、ソーシャルネットワークプラットフォームは、ソーシャルネットワークデータを開示することなく、操作されたソーシャルネットワークデータを項目評価推奨プラットフォームと共有する、ステップと、評価データおよび操作されたソーシャルネットワークデータに基づいてユーザ特徴データを項目評価推奨プラットフォームによって更新するステップ。
【0069】
前述のおよび他の記載されている実装形態は、各々、以下の特徴のうちの1つまたは複数を任意選択的に含むことができる。
【0070】
以下の特徴のいずれとも組み合わせ可能な第1の特徴であり、信頼できるイニシャライザを用いた秘密共有スキームにおいて、項目評価推奨プラットフォームは、ユーザ特徴データを開示することなくソーシャルネットワークプラットフォームと操作されたユーザ特徴データを共有し、操作されたユーザ特徴データは、ユーザ特徴データおよび信頼できるイニシャライザからの第2の入力データに基づいて計算される、第1の特徴。
【0071】
前述のまたは以下の特徴のいずれかと組み合わせ可能な第2の特徴であり、方法または動作がさらに、ユーザ特徴データと項目特徴データとの積が評価データの推定をもたらす、複数のユーザに関する複数の項目のそれぞれの評価に貢献する複数の項目特徴を含む項目特徴データを識別するステップと、評価データおよびユーザ特徴データに基づいて項目特徴データを更新するステップを含む。
【0072】
前述のまたは以下の特徴のいずれかと組み合わせ可能な第3の特徴であり、方法または動作がさらにユーザ特徴データと項目特徴データとの積に基づいて複数のユーザに関する複数の項目の予測される評価データを生成するステップと、予測される評価データに基づく特定のユーザのための特定の項目の推奨を生成するステップを含む。
【0073】
前述のまたは以下の特徴のいずれかと組み合わせ可能な第4の特徴であり、ユーザ特徴データを更新するステップが、予測された評価データと評価データとの差、ソーシャルネットワークデータによって重み付けされたユーザ特徴データ、および過適合防止項の加重和を最小化するための最適化問題を解くステップを含む。
【0074】
前述のまたは以下の特徴のいずれかと組み合わせ可能な第5の特徴であり、最適化問題を解くステップが、以下の方程式を解くステップを含む。
【0076】
ここでは:U
iは、ユーザiに対応するユーザ特徴データのベクトルを表し、V
jは、項目jに対応する項目特徴データのベクトルを表し、R
ijは、ユーザiによる項目jの評価を表し、S
ikは、ユーザiとユーザkとの社会的関係を表し、λ
1は、ソーシャルネットワークデータに関連する所定の重みを表し、λ
2は過適合を防ぐための所定の重みを表す。
【0077】
前述のまたは以下の特徴のいずれかと組み合わせ可能な第6の特徴であり、ユーザ特徴データを更新するステップが、操作されたユーザ特徴データと操作されたソーシャルネットワークデータとの和を計算することによってユーザ特徴データとソーシャルネットワークデータとの積を計算するステップを含む。
【0078】
前述のまたは以下の特徴のいずれかと組み合わせ可能な第7の特徴であり、方法または動作がさらに、信頼できるイニシャライザを用いた秘密共有スキームにおいて、信頼できるイニシャライザからの第2の入力データを項目評価推奨プラットフォームによって取得するステップと、ユーザ特徴データおよび信頼できるイニシャライザからの第2の入力データに基づいて項目評価推奨プラットフォームによって第1の操作されたユーザ特徴データを生成するステップと、第1の操作されたユーザ特徴データを項目評価推奨プラットフォームによってソーシャルネットワークプラットフォームに送信するステップと、ソーシャルネットワークデータおよび信頼できるイニシャライザからの第1の入力データに基づいて計算された第1の操作されたソーシャルネットワークデータをソーシャルネットワークプラットフォームから項目評価推奨プラットフォームによって受信するステップと、第1の操作されたユーザ特徴データ、第1の操作されたソーシャルネットワークデータ、または信頼できるイニシャライザからの第2の入力データのうちの2つ以上に基づいて複数の中間データを項目評価推奨プラットフォームによって生成するステップと、複数の中間データを項目評価推奨プラットフォームによってソーシャルネットワークプラットフォームに送信するステップと、第1の操作されたユーザ特徴データ、第1の操作されたソーシャルネットワークデータ、または信頼できるイニシャライザからの第1の入力データのうちの2つ以上に基づいて計算された複数の中間ソーシャルネットワークデータをソーシャルネットワークプラットフォームから項目評価推奨プラットフォームによって受信するステップと、複数の中間データ、複数の中間ソーシャルネットワークデータ、または信頼できるイニシャライザからの第2の入力データのうちの2つ以上に基づいて、操作されたユーザ特徴データを項目評価推奨プラットフォームによって生成するステップとを含む。
【0079】
本主題の実装形態および本明細書に記載の機能の動作は、デジタル電子回路素子において、有形に実施されたコンピュータソフトウェアまたはファームウェアにおいて、本明細書で開示される構造体およびそれらの構造的同等物を含む、コンピュータハードウェアにおいて、あるいはそれらのうちの1つまたは複数の組合せにおいて、実装することができる。記載の主題のソフトウェア実装形態は、1つまたは複数のコンピュータプログラム、すなわち、データ処理装置によって実行するための、またはデータ処理装置の動作を制御するための、有形の、非一時的な、コンピュータ可読のコンピュータストレージ媒体上にエンコードされたコンピュータプログラム命令の1つまたは複数のモジュール、として実装することができる。別法として、または追加で、プログラム命令は、人工的に生成された伝搬される信号、たとえば、データ処理装置によって実行するための適切なレシーバ装置に送信するための情報をエンコードするために生成された、機械生成された電気的、光学的、または電磁的信号、内/上にエンコードすることができる。コンピュータストレージ媒体は、機械可読ストレージデバイス、機械可読ストレージ回路基板、ランダムまたはシリアルアクセスメモリデバイス、またはコンピュータストレージ媒体の組合せでもよい。1つまたは複数のコンピュータを構成することは、ソフトウェアが1つまたは複数のコンピュータによって実行されるときに、特定のコンピューティング動作が実行されるように、1つまたは複数のコンピュータが、インストールされたハードウェア、ファームウェア、またはソフトウェア(または、ハードウェア、ファームウェア、およびソフトウェアの組合せ)を有することを意味する。
【0080】
「リアル-タイム」、「リアルタイム」、「実時間」、「リアル(ファスト)タイム(RFT: real (fast) time)」、「ほぼリアルタイム(NRT: near(ly) real-time)」、「準リアルタイム」という用語、または同様の用語(当業者によって理解されるような)は、個々がアクションおよびほぼ同時に生じる応答を把握するようにアクションおよび応答が時間的に近接することを意味する。たとえば、データにアクセスするための個人のアクションに続くデータの表示に対する応答のための(または表示の開始のための)時間差は、1ミリ秒未満、1秒未満、または5秒未満でもよい。要求されたデータは、瞬時に表示される(表示を開始される)必要はないが、それは、記載のコンピューティングシステムの処理限界と、たとえば、データを集める、正確に測定する、分析する、処理する、記憶する、または送信するために、必要とされる時間とを考慮して、意図的遅延なしに表示される(または表示を開始される)。
【0081】
「データ処理装置」、「コンピュータ」、または「電子コンピュータデバイス」(または当業者によって理解されるような同意語)という用語は、データ処理ハードウェアを指し、例として、プログラマブルプロセッサ、コンピュータ、または複数のプロセッサもしくはコンピュータを含む、データを処理するためのすべての種類の装置、デバイス、および機械を包含する。装置はまた、専用ロジック回路素子、たとえば、中央処理装置(CPU)、FPGA(フィールドプログラマブルゲートアレイ)、またはASIC(識別用途向け集積回路)でもよく、またはそれらをさらに含み得る。一部の実装形態では、データ処理装置または専用ロジック回路素子(または、データ処理装置もしくは専用ロジック回路素子の組合せ)は、ハードウェアまたはソフトウェアを用いた(またはハードウェアおよびソフトウェアの両方の組合せを用いた)ものでもよい。装置は、コンピュータプログラムのための実行環境を作り出すコード、たとえば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、または実行環境の組合せを構成するコード、を任意選択的に含むことができる。本開示は、従来のオペレーティングシステム、たとえばLINUX、UNIX(登録商標)、WINDOWS(登録商標)、MAC OS、ANDROID(登録商標)、IOS、または他の任意の適切な従来のオペレーティングシステム、を有するまたは有さないデータ処理装置の使用を企図する。
【0082】
プログラム、ソフトウェア、ソフトウェアアプリケーション、モジュール、ソフトウェアモジュール、スクリプト、またはコードと呼ばれるまたはそのように記載されることもある、コンピュータプログラムは、コンパイル型もしくはインタープリタ型言語、または宣言型もしくは手続き型言語を含む任意の形式のプログラミング言語で書くことができ、それは、独立型のプログラムとして、あるいはコンピューティング環境における使用に適したモジュール、構成要素、サブルーティン、または他のユニットとしてを含む、任意の形式で配備することができる。コンピュータプログラムは、ファイルシステム内のファイルに対応し得るが、対応する必要はない。プログラムは、他のプログラムまたはデータ、たとえばマークアップ言語文書に記憶された1つまたは複数のスクリプト、を保持するファイルの一部に、問題のプログラム専用の単一ファイルに、あるいは、複数のまとめられたファイル、たとえば、1つまたは複数のモジュール、サブプログラム、またはコードの部分を記憶するファイル、に記憶することができる。コンピュータプログラムは、1つのコンピュータ上でまたは1つの場所に置かれた複数のコンピュータ上で実行されるように配備されてもよく、あるいは複数の場所に分散されて通信ネットワークによって相互接続されてもよい。
【0083】
様々な図に示されたプログラムの部分は、様々なオブジェクト、方法、または他のプロセスを介して様々な特徴および機能を実装する個々のモジュールとして示されているが、プログラムは、この代わりに、必要に応じて、いくつかのサブモジュール、サードパーティサービス、構成要素、ライブラリなどを含んでもよい。逆に、様々な構成要素の特徴および機能は、必要に応じて、単一の構成要素に結合することができる。計算による決定を行うために使用される閾値は、静的に、動的に、または、静的と動的の両方で、決定することができる。
【0084】
本明細書に記載の方法、プロセス、または論理の流れは、入力データで操作することおよび出力を生成することによって機能を実行するための1つまたは複数のコンピュータプログラムを実行する1つまたは複数のプログラマブルコンピュータによって実行することができる。本方法、プロセス、または論理の流れはまた、専用ロジック回路素子、たとえば、CPU、FPGA、またはASIC、によって実行することができ、装置はまた、そのようなものとして実装することができる。
【0085】
コンピュータプログラムの実行に適したコンピュータは、汎用もしくは専用マイクロプロセッサ、その両方、または他の任意の種類のCPUに基づき得る。一般に、CPUは、メモリから命令およびデータを受信し、メモリにそれらを書き込むことになる。コンピュータの必須要素は、命令を遂行または実行するためのCPUと、命令およびデータを記憶するための1つまたは複数のメモリデバイスとである。一般に、コンピュータはまた、データを記憶するための1つまたは複数の大容量ストレージデバイス、たとえば、磁気、光磁気ディスク、または光ディスク、を含む、またはこれに動作可能なように結合され、これからデータを受信する、またはこれにデータを転送する、あるいはその両方を行うことになる。しかしながら、コンピュータは、このようなデバイスを有さなくてもよい。さらに、コンピュータは、別のデバイス、たとえば、いくつか例を挙げると、携帯電話、携帯情報端末(PDA)、モバイルオーディオまたはビデオプレーヤ、ゲーム機、グローバルポジショニングシステム(GPS)レシーバ、または携帯ストレージデバイス、たとえば、ユニバーサルシリアルバス(USB)フラッシュドライブ、に組み込むことができる。
【0086】
コンピュータプログラム命令およびデータを記憶するのに適したコンピュータ可読記録媒体(必要に応じて、一時的または非一時的な)は、例として半導体メモリデバイス、たとえば、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、相変化メモリ(PRAM: phase change memory)、スタティックランダムアクセスメモリ(SRAM)、ダイナミックランダムアクセスメモリ(DRAM)、消去可能プログラマブルリードオンリメモリ(EPROM)、電気的消去可能プログラマブルリードオンリメモリ(EEPROM)、およびフラッシュメモリデバイスを含む、永続/非永続または揮発性/不揮発性のメモリ、媒体およびメモリデバイスと、磁気デバイス、たとえば、テープ、カートリッジ、カセット、内部/取り外し可能ディスク、と、光磁気ディスクと、光メモリデバイス、たとえば、デジタルビデオディスク(DVD)、CD-ROM、DVD+/-R、DVD-RAM、DVD-ROM、HD-DVD、およびBLURAY、および他の光メモリ技術、とのすべての形式を含む。メモリは、キャッシュ、クラス、フレームワーク、アプリケーション、モジュール、バックアップデータ、ジョブ、ウェブページ、ウェブページテンプレート、データ構造体、データベーステーブル、動的情報を記憶するレポジトリ、および、任意のパラメータ、変数、アルゴリズム、命令、ルール、制約、もしくはその参照を含む、他の任意の適切な情報を含む、様々なオブジェクトまたはデータを記憶することができる。加えて、メモリは、ログ、ポリシ、セキュリティまたはアクセスデータ、レポートファイルなど、他の任意の適切なデータを含み得る。プロセッサおよびメモリは、専用ロジック回路素子によって補完する、または専用ロジック回路素子に組み込むことができる。
【0087】
ユーザとの相互作用を提供するために、本明細書に記載される主題の実装形態は、ユーザに対して情報を表示するためのディスプレイデバイス、たとえば、ブラウン管(CRT: cathode ray tube)、液晶ディスプレイ(LCD: liquid crystal display)、発光ダイオード(LED: Light Emitting Diode)、またはプラズマモニタ、ならびに、ユーザがそれによりコンピュータに入力を提供することができる、キーボードおよびポインティングデバイス、たとえば、マウス、トラックボール、またはトラックパッド、を有するコンピュータ上に実装することができる。入力はまた、感圧性を有するタブレットコンピュータの表面、容量または電気感知を使用するマルチタッチスクリーン、または他のタイプのタッチスクリーンなど、タッチスクリーンを使用してコンピュータに提供され得る。他の種類のデバイスが、同様にユーザとの相互作用を提供するために使用され得、たとえば、ユーザに提供されるフィードバックは、任意の形式の感覚フィードバック、たとえば、視覚フィードバック、聴覚フィードバック、または触覚フィードバック、でもよく、ユーザからの入力は、音響、音声、または触覚入力を含む、任意の形式で受信することができる。加えて、コンピュータは、ユーザによって使用されるデバイスに文書を送信することおよびそのようなデバイスから文書を受信することによって、たとえば、ウェブブラウザから受信された要求に応答してユーザのクライアントデバイス上のウェブブラウザにウェブページを送信することによって、ユーザと相互作用することができる。
【0088】
「グラフィカルユーザインターフェース」、または「GUI」という用語は、1つまたは複数のグラフィカルユーザインターフェースおよび特定のグラフィカルユーザインターフェースのディスプレイの各々を記載するために単数形または複数形で使用されることがある。したがって、GUIは、情報を処理し、ユーザに情報の結果を効率的に提示する、ウェブブラウザ、タッチスクリーン、またはコマンドラインインターフェース(CLI: command line interface)を含むがこれらに限定されない、任意のグラフィカルユーザインターフェースを表し得る。一般に、GUIは、いくつかのユーザインターフェース(UI)要素を含むことができ、それらの一部またはすべては、インタラクティブなフィールド、プルダウンリスト、およびボタンなど、ウェブブラウザに関連付けられる。これらのおよび他のUI要素は、ウェブブラウザの機能に関連し得る、またはウェブブラウザの機能を表し得る。
【0089】
本明細書に記載されている主題の実装形態は、たとえばデータサーバとして、バックエンド構成要素を含む、またはミドルウェア構成要素、たとえばアプリケーションサーバ、を含む、またはフロントエンド構成要素、たとえば、本明細書に記載されている主題の実装形態とユーザがそれを介して相互作用することができるグラフィカルユーザインターフェースまたはウェブブラウザを有するクライアントコンピュータ、を含む、コンピューティングシステム、あるいは、1つまたは複数のそのようなバックエンド、ミドルウェア、またはフロントエンド構成要素の任意の組合せにおいて実装することができる。本システムの構成要素は、ワイヤラインまたはワイヤレスデジタルデータ通信(またはデータ通信の組合せ)の任意の形式または媒体、たとえば通信ネットワーク、によって、相互接続することができる。通信ネットワークの例は、ローカルエリアネットワーク(LAN)、無線アクセスネットワーク(RAN: radio access network)、メトロポリタンエリアネットワーク(MAN)、ワイドエリアネットワーク(WAN)、ワールドワイドインターオペラビリティフォーマイクロウェーブアクセス(WIMAX: Worldwide Interoperability for Microwave Access)、たとえば802.11a/b/g/nまたは802.20(または、802.11xおよび802.20もしくは本開示と一致する他のプロトコルの組合せ)を使用する、ワイヤレスローカルエリアネットワーク(WLAN)、インターネットのすべてまたは一部、あるいは、1つまたは複数の場所にある1つまたは複数の他の任意の通信システム(または通信ネットワークの組合せ)を含む。ネットワークは、たとえば、ネットワークアドレス間でインターネットプロトコル(IP)パケット、フレームリレーフレーム、非同期転送モード(ATM: Asynchronous Transfer Mode)セル、音声、ビデオ、データ、または他の適切な情報(または通信タイプの組合せ)を用いて通信し得る。
【0090】
コンピューティングシステムは、クライアントおよびサーバを含み得る。クライアントおよびサーバは、一般に、互いに遠隔にあり、通常は、通信ネットワークを介して相互作用する。クライアントとサーバとの関係は、それぞれのコンピュータ上で実行して互いにクライアント-サーバ関係を有するコンピュータプログラムによって生じる。
【0091】
本明細書は、多くの具体的な実装形態の詳細を含むが、これらは、いずれかの発明の範囲または特許請求され得るものの範囲の制限としてではなく、特定の発明の特定の実装形態に特有であり得る特徴の説明として解釈されるべきである。別個の実装形態に関連して本明細書において説明されるある特定の特徴はまた、組み合わせて、単一の実装形態において実装することができる。逆に、単一の実装形態に関連して説明される様々な特徴はまた、別個に、複数の実装形態において、または任意の適切な部分的組合せにおいて実装することができる。さらに、前述の特徴は、ある特定の組合せにおいて作動するものとして説明され、そのようなものとして初めに請求されていることがあるが、請求されている組合せからの1つまたは複数の特徴は、場合により、その組合せから削除することができ、特許請求されている組合せは、部分的組合せまたは部分的組合せの変更形態を対象とし得る。
【0092】
本主題の特定の実装形態が説明された。記載されている実装形態の他の実装形態、変更形態、および置換は、以下の特許請求の範囲内にあることが、当業者には明らかとなろう。動作は、特定の順序で図面または特許請求の範囲に示されるが、これは、所望の結果を達成するために、そのような動作が示された特定の順序でもしくは順番に実行されること、または示されたすべての動作が実行されることを必要とすることとして理解されるべきではない(一部の動作は任意選択として考えることができる)。ある特定の環境において、マルチタスクまたは並列処理(またはマルチタスクと並列処理との組合せ)が、有利となり得、適切と判断されるように実行され得る。
【0093】
さらに、前述の実装形態における様々なシステムモジュールおよび構成要素の分離または統合は、すべての実装形態においてそのような分離または統合を必要とするものとして理解されるべきではなく、記載されているプログラム構成要素およびシステムは、一般に、単一のソフトウェア製品に統合すること、複数のソフトウェア製品にパッケージ化することができることを理解されたい。
【0094】
したがって、前述の例示的実装形態は、本開示を定義または制約しない。他の変更形態、置換、改変形態もまた、本開示の趣旨および範囲を逸脱せずに起こり得る。
【0095】
さらに、特許請求されるいずれの実装形態も、少なくとも1つのコンピュータで実行される方法と、コンピュータで実行される方法を実行するためのコンピュータ可読命令を記憶する非一時的なコンピュータ可読記録媒体と、コンピュータで実行される方法または非一時的なコンピュータ可読記録媒体に記憶された命令を実行するように構成されたハードウェアプロセッサに相互動作可能なように結合されたコンピュータメモリを含むコンピュータシステムとに適用可能であると考えられる。
項目評価推奨プラットフォームは、複数のユーザに関する複数の項目のそれぞれの評価を含む評価データを識別し、複数のユーザに関する複数の項目のそれぞれの評価に寄与する複数のユーザ特徴を含むユーザ特徴データを識別し、信頼できるイニシャライザを用いた秘密共有スキームを介してソーシャルネットワークプラットフォームから、ソーシャルネットワークデータおよび信頼できるイニシャライザからの第1の入力データに基づいて計算された操作されたソーシャルネットワークデータを受信する。ソーシャルネットワークデータは、複数のユーザのうちのいずれか2人の間の社会的関係を示す。信頼できるイニシャライザを用いた秘密共有スキームにおいて、ソーシャルネットワークプラットフォームは、ソーシャルネットワークデータを開示することなく、操作されたソーシャルネットワークデータを項目評価推奨プラットフォームと共有する。項目評価推奨プラットフォームは、ユーザ特徴データを評価データおよび操作されたソーシャルネットワークデータに基づいて更新する。