JP5538510B2 - 集合の類似性に基づく拡張性に富むユーザクラスタリング - Google Patents

集合の類似性に基づく拡張性に富むユーザクラスタリング Download PDF

Info

Publication number
JP5538510B2
JP5538510B2 JP2012252056A JP2012252056A JP5538510B2 JP 5538510 B2 JP5538510 B2 JP 5538510B2 JP 2012252056 A JP2012252056 A JP 2012252056A JP 2012252056 A JP2012252056 A JP 2012252056A JP 5538510 B2 JP5538510 B2 JP 5538510B2
Authority
JP
Japan
Prior art keywords
user
particular user
clusters
data
values
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2012252056A
Other languages
English (en)
Other versions
JP2013033551A (ja
Inventor
メイヤー・デイター
アシャトッシュ・ガーグ
Original Assignee
グーグル・インコーポレーテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by グーグル・インコーポレーテッド filed Critical グーグル・インコーポレーテッド
Publication of JP2013033551A publication Critical patent/JP2013033551A/ja
Application granted granted Critical
Publication of JP5538510B2 publication Critical patent/JP5538510B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/02Marketing; Price estimation or determination; Fundraising
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • G06F16/9535Search customisation based on user profiles and personalisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Strategic Management (AREA)
  • Physics & Mathematics (AREA)
  • Finance (AREA)
  • General Physics & Mathematics (AREA)
  • Accounting & Taxation (AREA)
  • Development Economics (AREA)
  • Entrepreneurship & Innovation (AREA)
  • General Engineering & Computer Science (AREA)
  • Game Theory and Decision Science (AREA)
  • Data Mining & Analysis (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • General Business, Economics & Management (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Description

本発明はデジタルデータ処理に関し、より詳細にはコンピュータアプリケーションまたはシステムのユーザ(user)をクラスタ(cluster)にグループ分けすることに関する。
ユーザをクラスタにグループ分けすることは様々な目的で行われる。ユーザの個人性への適合化を達成するため、例えば、既知の技術の1つである協調フィルタリング(collaborative filtering)は、ユーザをクラスタリングすることおよびユーザにそのユーザクラスタ中の他のユーザが興味を示した品目(item)を推奨することを含む。通常、例えば、ある品目をクリックした、それを購入した、またはそれを買い物カゴに入れた等の様々な様子から、ユーザはその品目に興味を示したとみなされてよい。推奨は様々な形をとることができ、例えば、ユーザに検索結果の一部として提示する、ユーザが読みたいかもしれないニュース記事として示す、ユーザが購入したいかもしれない品目を特定する、等々、がある。
J. Deans and S. Ghemawat, MapReduce: Simplified Data Processing on Large Clusters, Proceedings of the 6th Symposium on Operating Systems Design and Implementation, pp.137-150 (December 6, 2004) Charikar, Similarity Estimation Technique from Rounding Algorithms, 34th ACM Symposium on Theory of Computing, May 19-21, 2002, Montreal, Quebec, Canada
ユーザのクラスタリングを達成する1つのやり方は、2ユーザ間の距離測度を定義し、次にk平均法(k-means)または階層的凝集型クラスタリング(hierarchical agglomerative clustering、HAC)等の既知のクラスタリングアルゴリズムを使用して彼らをクラスタリングすることである。しかし、そのような技術には欠点がある。例えば、HACは実行時間がO(n)であり、数億になるnの値については手に負えず、またk平均法アルゴリズムではデータ点の平均値を提示する必要があるが、これはデータ点が集合の場合、不可能である。
本発明は、特定の実施では、拡張性に富むユーザのクラスタリングを提供することができ、そこでは、各ユーザは品目母集団からの品目を表す要素からなる集合で表わされる。
例えば、コンピュータシステムとの相互作用を通してユーザが選択できる品目の母集団が与えられたとき、各ユーザは品目の部分集合それぞれへの彼らの興味を様々な行動によって表現してもよく、それは、品目をクリックする、品目を購入する、品目を買い物リストに追加する、品目を眺める、等々である。本発明の特定の実施では、同じクラスタ中のユーザは彼らそれぞれの品目部分集合間に大きい重なりを有する可能性が大きいやり方で、ユーザをクラスタリングする(すなわち、ユーザをクラスタに割り当てる)。
ある態様では、本発明の実施によるコンピュータプログラム製品は、データ処理装置に、複数ユーザの各々についてそれぞれの興味集合を取得させることができ、各興味集合はそれぞれのユーザがデータ処理システムとの相互作用を通して興味を示した品目を表わし、本製品はまた、データ処理装置に、複数ユーザの各々についてそれぞれの興味集合のk個のハッシュ(hash)値を決定させることができ、第iのハッシュ値は対応する第iのハッシュ関数の下でのそれぞれの興味集合中の最小値であり、iは1とkの間の整数であり、kは1以上の整数であり、本製品はさらに、データ処理装置に、複数ユーザの各々をそれぞれのユーザについて第iのクラスタは第iのハッシュ値によって表わされるように確立されたそれぞれのk個のクラスタの各々に割り当てさせることができ、複数ユーザの各々のk個のクラスタへの割り当ては他のどのユーザについてのk個のクラスタへの割り当てとも無関係に行われる。
好適な実施は以下の特徴の1つ以上を含むことができる。本製品は、データ処理装置にユーザの興味を表わす動作をログに記録させるようにでき、また複数ユーザについての興味集合を生成するためそのログを使用させることができる。
本製品は、データ処理装置に、複数ユーザ中の第1のユーザについて変化のあった興味集合を取得させることができ、第1のユーザについて変化のあった興味集合を使用してk個のハッシュ値を決定させることができ、そして第1のユーザを、変化のあった興味集合を使用して決定されたk個のハッシュ値によって表わされるそれぞれのk個のクラスタの各々にのみ、他の複数ユーザのクラスタへの割り当てを変化させることなく、割り当てさせることができる。
別の態様では、本発明の実施によるコンピュータプログラム製品は、データ処理装置に、あるユーザについて興味集合を取得させることができ、その興味集合はそのユーザがデータ処理システムとの相互作用を通して興味を示した品目を表わす。本製品はまた、データ処理装置に、興味集合のk個のハッシュ値を決定させることができ、第iのハッシュ値は対応する第iのハッシュ関数の下での興味集合中の最小値であり、iは1とkの間の整数であり、kは1以上の整数である。本製品はさらに、データ処理装置に、ユーザをk個のクラスタの各々に割り当てさせることができ、第iのクラスタは第iのハッシュ値により表わされる。
好適な実施は以下の特徴の1つ以上を含むことができる。興味集合はm個の要素を持っており、第iのハッシュ値は一方向ハッシュ関数をm回適用したときの最小値であり、ここで、m回適用の各々は第iシード値(seed value)と興味集合のm個の要素のそれぞれの1つをハッシュする。本製品は、ユーザのための協調フィルタリングを実行するために、データ処理装置にk個のユーザクラスタを使用させることができる。
別の態様では、本発明の実施によるシステムは、データ処理システムを使用する複数ユーザにより選択された品目のログと、複数ユーザの各々をk個(ここでkは1以上の整数)のクラスタに割り当てるために指紋(fingerprint)関数および品目のログを使用する手段と、k個のクラスタの1つ以上への第1のユーザの割り当てに基づいて複数ユーザ中の第1のユーザに情報を提供できる協調フィルタリングのコンピュータプログラムアプリケーションとを含む。
好適な実施は以下の特徴の1つ以上を含むことができる。その情報は推奨、予測、またはランク付けの少なくとも1つを含む。
別の態様では、本発明の実施によるコンピュータプログラム製品は、データ処理システムのユーザを同定するために、データ処理装置にk個の要素からなる順序集合を使用させることができ、kは1より大きい整数であり、k個の要素の各々は興味集合中の要素に対応し、興味集合中の各要素はデータ処理システムを使用するユーザによる行動を通してユーザが興味を示した品目を表す。
好適な実施は以下の特徴の1つ以上を含むことができる。本製品は、ユーザについての協調フィルタリングの実行においてユーザを同定するために、データ処理装置にk個の要素からなる順序集合を使用させることができる。協調フィルタリングは、ユーザへの品目の推奨またはユーザへの品目のランク付けを含むことができる。本製品は、データ処理装置に、再編された興味集合を生成するためにデータ処理システムがその入力に応えて興味集合から要素を除去するような入力を、ユーザから受信させることができ、本製品はまた、データ処理装置に、k個の要素からなる再編された順序集合を決定させることができ、k個の要素の各々は再編された興味集合中の要素に対応しており、本製品はさらに、ユーザを同定するために、データ処理装置に、k個の要素からなる初期の順序集合ではなく、k個の要素からなる再編された順序集合を使用させることができる。k個の要素からなる順序集合は、k個のユーザクラスタの各々に属するものとしてユーザを同定する。本製品は、データ処理装置に、ユーザの興味を表す行動をログに記録させ、またユーザについての興味集合を生成するためにログを使用させることができる。データ処理システムはウェブサイトを含み、またユーザについての興味集合は、ユーザがウェブページでクリックした品目、ユーザがオンライン小売店から購入した品目、ユーザが買い物カートに追加した品目の1つ以上の表現を含む。品目への興味を表すユーザによる行動は、興味を暗に示す行動を含む。品目への興味を表すユーザによる行動は、興味を陽に示す行動を含む。ユーザはユーザのログオンによって同定される個人である。ユーザはクッキーによって同定される個人である。ユーザは観測される属性が共通する1人以上の個人であり、その属性は1人以上の個人の各々によりデータ処理システムに提示される属性である。ユーザはデータ処理システムと相互作用する個人のセッションである。興味集合中の各要素は、データ処理システムとの相互作用においてユーザが選択した品目である。
さらに別の態様では、本発明の実施は先述のプログラムおよびシステムに対応する方法、ならびに先述のシステムに対応するプログラムを含むことができる。
本発明は、以下の長所の1つ以上を実感するように実施することができる。クラスタリングの計算が拡張性に富む。計算は数億人の個々のユーザによって使用されるアプリケーションについて実行可能であり、個々のユーザは、数十、数百またはそれ以上の品目を彼らの興味集合中に表示させることができる。クラスタリングされたエンティティが品目の母集団の部分集合で表される場合、クラスタリングは実行可能である。母集団が予め定義される必要は無い。クラスタリングは集合の類似性測度に基づく。新しいユーザのクラスタリングは既存のクラスタリングを変更することなく行われる。あるユーザのクラスタリングは、他のユーザがどうクラスタリングされたかまたはクラスタリングされつつあるかを考慮せずに行われる。しかし、例えば、シード値または順列(permutation)等の幾つかの広域的値は、クラスタリング間で共有されてもよい。例えば、品目の選択を実効的に廃棄または追加する等、選択を変更することにより、ユーザは彼らが割り当てられたクラスタを変更することができ、その場合、クラスタはその後計算または再計算される。新しいユーザまたは興味集合を修正したユーザがどのクラスタに属するかは、他のユーザからのデータを使用することなく計算可能である。クラスタリングの計算は、個人であるユーザのクラスタリングに限定されない。クラスタリングは、例えば、各ユーザが個人であるか、各ユーザが個人の集団であるか、各ユーザがシステムとの相互作用であるか、またはそれらの何らかの組合せであるかに関わらず、効率的に実行可能である。
本発明の実施形態による、ユーザをクラスタリングする第1の方法を示すフローチャートである。 本発明の実施形態による、ユーザをクラスタリングする第2の方法を示すフローチャートである。 本発明の実施形態による、ユーザクラスタを使用する推奨者システムの動作を示すフローチャートである。 本発明の一実施形態による、ニュース推奨エンジンを有するニュースサービスを示す概略図である。
本発明の1つ以上の実施形態について、添付の図面および以下の記述において説明する。本発明のその他の特徴および長所はそれらの記述、図面、および特許請求の範囲から明らかとなろう。
図面を通して、同じ参照番号および記号表示は同じ要素を示すものとする。
図1は、ユーザをクラスタリングするミンハッシュ(minhash)法に関する以下の論理的説明を図示したものである。本方法は実施可能であるが、ここでは説明の目的から原理を示すことにする。膨大な数のユーザを持つシステムにおいてユーザをクラスタリングする実際的な実施については後ほど図2を参照して説明されよう。
図1に示すように、ミンハッシュ法への入力は、Uで示される品目母集団110と、p1, p2, ..., pkで示されるk個の順列からなる集合112と、ユーザAについてX_Aで示されるユーザの興味集合114とである。
順列はU上の順列であり、各順列は他の順列と同等に選択されるようU上の全ての順列の集合から均等に選ばれる。順列は各々UからUへの1対1写像(全単射)である。そのような順列はUが固定しておりかつ可算である場合のみ実現可能である。整数kは選択可能なパラメータである。一般にkの値は5から10の範囲であろう。しかし、それは1またはそれ以上の任意の整数であってよい。本方法はユーザにk個のクラスタを割り当てよう。これらをC1, ..., Ckで示す。順列が選択されユーザのクラスタへの割り当てに使用された後では、順列が変更された場合、全てのクラスタリングは再計算されなければならない。
興味集合は母集団Uからの品目を表す要素からなる集合である。要素が品目それ自体である今説明中の用法では、興味集合は母集団Uからの品目のユーザによる選択の集合、X_A、である。これらは先述のようにして選択できる。本明細書での便宜のため、用語「品目(item)」は、興味集合の要素かまたはユーザによる実際の選択かを指すことができるが、その意味は文脈から明らかであろう。
このデータを使用して、ユーザについてk個、各順列について1個のハッシュ値が決定される(ステップ120)。順列piについて、ハッシュ値をhi(X_A)で示す。順列piについてのハッシュ値は、順列piの下でのX_Aからの最小要素、すなわちミンハッシュ値である。その最小値は、要素の値から、またはUの順序付けから決定することができる。
各ミンハッシュ値はクラスタの識別子の役を果たし、ユーザはクラスタの各々へ割り当てられる。ユーザはk個のクラスタに属し、第iのクラスタは第iのミンハッシュ値によって同定される。このようにして、所与の順列piについて、2つのユーザは、この順列の下での興味集合のミンハッシュ値が同じであり、かつその場合のみ、同じクラスタに属する。
各データ要素にハッシュ値を対応付けるこのミンハッシュ技術は、ローカリティセンシティブハッシング(locality sensitive hashing、局所性に敏感なハッシング)技術と呼ばれるクラスの技術の1つであり、これは2つのデータ要素は2つのデータ要素間の類似性に直接比例するある確率で同じハッシュ値を有するという望ましい特性を有する。現在のケースでは、2人のユーザA、B(それらの興味集合X_A、X_Bで表される)間の類似性は、(X_AとX_Bの積集合)の大きさを(X_AとX_Bの和集合)の大きさで除したものと定義され、そこで、ミンハッシュ技術は、2人のユーザAとBについてのミンハッシュ値が同じである確率(使用される実際の順列がそこから選ばれる順列集合上で定義される)は、以上で定義した類似性測度に等しいという特性を有する。こうして、ミンハッシュ法は、ユーザ達は彼らの類似性に等しい確率で同じクラスタに落ち込むという、確率的クラスタリングを達成する。
k個のクラスタが同定される(ステップ122)ので、2人のユーザが同一クラスタ中にある確率がp(0≦p≦1)の場合、あるクラスタリングでは彼らは同じクラスタに割り当てられなかったとしても、割合pのクラスタリングでは彼らは同じクラスタに割り当てられよう。これは、各ユーザはk個の異なるクラスタリングに均等に属し、各クラスタリングについては他の類似したユーザと同じクラスタに割り当てられるという平滑作用を与える。パラメータkは効率(小さいkはより高い効率を与える)と品質(大きいkはより高い品質を与える)との間のトレードオフを最適化するように選択されるべきである。厳格に必然というのではないが、数値kは通常定数であって、10程度の小さい値でよい結果が得られる。
このミンハッシュクラスタリング法は、非常に拡張性に富んでおり、また幾つかの他の長所を有する。例えば、本方法の実行時間はデータの大きさ(すなわち、(user, item)対(pair)の総数)に比例する。
また、各ユーザは個々に、すなわち、他の全てのユーザとは独立にクラスタリングされる。これは四六時中ユーザが追加され、抹消され、そして更新されるウェブ領域においては特に興味深い。これに伴う長所は、従来のクラスタリングアルゴリズムでは困難な幾つかのケースを容易にまた追加的に処理できることである。ユーザがスパム的(spammy)である、すなわち、クラスタリングを使用するシステムに影響を及ぼす目的で見せかけの興味を示していると判別された場合、そのユーザを他のどのユーザにも影響させずに、すなわち、残りのクラスタリングは不変のままで、抹消することができる。また、自分の選択を明かしてこなかったユーザがそれを明かそうと決心した場合、またはそのシステムに新しいユーザが追加された場合、他のユーザを再クラスタリングすることなく、そのユーザをクラスタに追加することができる。最後に、ユーザが自分のプロフィールを、自分の興味集合を事実上編集することにより変えようと決心した場合、そのユーザについてのクラスタリングを、バッチ処理による更新とは対照的に、実時間で更新することができ、これを考慮に入れると、他のどのユーザのクラスタリングにも影響を与えない。
図2は、数億に上る膨大な数のユーザを有し、また各ユーザの興味集合中に、事実上または現実上可算でない品目母集団上で、数百以上の品目を有することもあるシステムにおいて、ユーザをクラスタリングする実際的な実施を示す。この実施はMapReduceプログラミングモデルおよび技術を使用するが、これについては後で説明する。
この実施への入力は、記号Dで示される、特別な秩序もなく蓄積されたデータ要素(例えば、結果のクリックログ、購入ログ等)の寄集め(collection)210と、s1, s2, ..., skで示されるk個のシード値からなる順序集合と、指紋関数214とである。各データ要素は、特定のユーザ(user)がある品目(item)に興味を示したことを示す(user, item)対と考えることができる。オプションとして、そのユーザがそのように行動した頻度を把握するために、そのデータ要素がそのユーザが興味を示した第1、第2等々の事例に言及するかどうかを示すサフィックスを、品目の原形に付すことができる。好都合なことに、品目の形式はテキスト列であり、そのため、任意のウェブアプリケーションを通しての、すなわち、ユーザにユーザインタフェースを提示するウェブブラウザを使用する任意のアプリケーションを通しての、興味を表すどのようなユーザ行動も、そのような品目は容易に表現することができる。
興味を表すユーザ行動は、明白であることもあり、例えば、ユーザの興味を知らせる情報を、オンライン質問表への回答の形等でユーザがシステムに与えるとき、または暗黙的であることもある、例えば、ニュースサイトで読むニュース記事をユーザが選択するとき。
k個のシード値s1, s2, ..., skは、例えば、2進表現でのビットが「0」、「1」均等で、ランダムに見えるように選ばれたビット列と考えられる数である。
指紋関数はシード値および(興味集合からの)品目を、例えば、64ビットまたは128ビットの、大きい数に写像する。
ある実施では、シード値はUNIX(登録商標)のrand関数を使用して生成され、k個の32ビット整数値を生成する。rand関数は、1個のシード値の生成に1度以上呼び出さなければならないかもしれない。この実施では、指紋関数はMD5一方向ハッシュアルゴリズムを実装しており、品目(これは一般にテキスト列または2進データであろう)と連結したシード値をハッシュして128ビットの値を作る。
シード値と指紋関数は、図1を参照して説明したk個の順列p1, ..., pkに論理的に対応しており、品目の可算母集団を必要とせずに、品目の順序付けと順列を提供する。
寄集めDはマップリデュース(MapReduce)の枠組みを使用して処理される。これについては後で説明する。
mapフェーズ220では、各(user, item)対について、key=userかつvalue=itemとした(key, value)対が分散的に出力される。
reduceフェーズ222では、同じkey(user)を有するような全ての(key, value)対が集められて、reduceルーチンに与えられ、これは各々の個別のkey(user)について1度、分散的に実行される。
(特定のユーザについて)reduceルーチンはそのユーザの興味集合中の全ての品目を処理する。これの説明のため、これらのm個の品目をi1, i2, ..., imで示す。各シード値siについて、reduceルーチンは、品目とシード値の指紋、すなわち、fingerprint(si, il)、であるm個(各品目について1つ)の値を計算する。m個の品目についてのこれらのfingerprintの最小値が計算され、それが第iのシードsiに対応する第iのミンハッシュ値となる。
ユーザは、このようにして算出されたk個のミンハッシュ値によって表わされる。これらは、そのユーザが属するk個のクラスタを表現し、そのユーザはこれらのクラスタに割り当てられたと称される。
図3に示すように、推奨者コンピュータプログラムアプリケーションは、本明細書で説明される任意の方法で生成されるユーザクラスタを使用してよい。
ある実施では、システムはユーザによってなされた選択をログに記録する(ステップ310)。そのログは、ディスク駆動装置またはファイルサーバに、例えば、無構造のテキスト行または構造化されたデータベース中のレコード等、どのような形式で蓄積されてもよい。システムは、検索結果、広告、購買選択、そのサイトの内部または外部のページへの単純なリンク、またはその他の品目、をサービスするウェブサイトであってよい。ログされた選択は、そのシステムのユーザによってなされた全ての選択であってもよいが、そうである必要もない。例えば、アプリケーションは全サイトというよりはニュースサイトのみの選択に、または示された全品目というより購買目的の品目のみの選択に、興味を持っているのかもしれない。さらに、システムは、種々の推奨者アプリケーション用の異なる種類の複数の選択ログを保持することができ、推奨者アプリケーションはそれら自身のそれぞれのユーザのクラスタリングを計算できる。例えば、シードおよびfingerprint関数を使用する方法では、別個のクラスタリングの各々はそれ自身の別個のシード列およびfingerprint関数を持つことができる。
システムは、ユーザ登録とログオンにより、クッキーによるかまたは他のやり方で個人をユーザとして判別可能である。オプションとして、もし個々のユーザに関する情報をシステムとの相互作用の複数セッションに跨って保持することが望ましくない場合は、システムは、ユーザセッションをクラスタリング目的用のユーザとして扱うことができる。クッキーをセッションの維持に使用することもできる。(クッキーは、サーバによってウェブブラウザへ送られ、その後ブラウザによってサーバへのアクセスの都度送り戻されるパケット型の情報である。)オプションとして、システムは、ロギングに参加するか否か、すなわち、自分自身を選択のロギングに含めるか除くかを、個人が決定できるようにできる。
オプションとして、システムは、ユーザとしてシステムと相互作用する個人のある属性または属性の組合せを処理することができる。属性はシステムによって観測できてもよく、例えば、使用されるIP(インターネットプロトコル)アドレスまたは使用される言語、または個人が提供する情報、例えば、住所の都市または国、またはシステムが提供するサービスへの加入であってもよい。こうして、例えば、システムはクパーティノからの個人を一ユーザとして、またレドモンドからの個人を別のユーザとして処理することもできよう。そのような寄集め型のクラスタリングの利点は、ログインまたは登録を要求することなく、システムのある程度の個人性への適合化が可能になることである。さらに、オプションとして、システムは全ての種類のユーザ、例えば、個人または集団を、同じクラスタに一緒にクラスタリングすることもでき、または別の種類のユーザについては別のクラスタを確立することもできる。
システムのユーザが行う選択は、単純な選択であることができ、またはオプションとして、複合的な選択であることができる。複合的な選択は一連の選択であり、例えば、第1のウェブページへナビゲート(navigate)し、それから直接に第2のウェブページへナビゲートする一連のナビゲーションである。ウェブページはリソース、通常はHTML(Hypertext Markup Language、ハイパーテキストマークアップ言語)文書、であり、ウェブサーバによってウェブブラウザにサービスされる。ウェブサーバは、通常はネットワークを介して受信されるHTTP(Hypertext Transfer Protocol、ハイパーテキスト転送プロトコル)要求を受け付けるコンピュータプログラムであり、要求者に対してHTTP応答を与える。HTTP応答は通常HTML文書を含むが、テキストファイル、動画、または何らかのその他のタイプの文書であってもよい。
ログされた選択に基づいて、ユーザは各々k個のクラスタに割り当てられる(ステップ312)が、これについては本明細書の別の箇所で説明されている。このユーザのクラスタリングは、システムに新しいユーザが現れたとき、および選択がログに追加または除去されたときに、更新することができる。オプションとして、ある状況では必ずしも全てのユーザがk個のクラスタに割り当てられるとは限らない。そのような状況では、特定のユーザへの推奨を見つけるために、1個以上でk個より少ないクラスタ識別子を取得することができる。例えば、一連の選択を持つ新しいユーザに推奨を提供する要求をシステムが受けると、オプションとして、システムはそれらの選択を使用して第1のクラスタの識別子を計算し、推奨を見つけるためにそれを使用し、続けて第2のクラスタを同様に計算して使用し、等々、システム定義による十分な数の推奨が見つかるまで続けることができる。
推奨者アプリケーションは次いで、特定ユーザへの推奨を行うためにそのユーザのクラスタを使用することができる(ステップ314)。各ユーザの単一クラスタへのグループ分けに基づいて推奨を行うどのような方法も、本明細書で説明された複数クラスタとともに使用することができる。例えば、そのような方法はk回適用可能であり、そのユーザについての推奨品目の和集合を得るためにk個の結果がマージされる。あるいは、ある品目が出現する結果の数をその品目のランク付けに使用することができる。または、ユーザに多様な推奨を提供するために、クラスタに基づく推奨結果の各々から若干ずつの品目をそのユーザに提供することができる。ユーザが割り当てられた複数のクラスタは、システムを使用する際にユーザが持った様々な種類の興味を反映しているかもしれず、そこでユーザにそのような多様な推奨を与えることは、単一のクラスタが使用された場合より、推奨がユーザのそのときの興味に触れる何かを含む可能性を高めることになる。
推奨者アプリケーションは協調フィルタリングの一例であり、本明細書で説明されたユーザのクラスタリングの方法は別の種類の協調フィルタリングにも同様に適用することができる。協調フィルタリングでは現ユーザに類似のユーザが見つかり、かれらの嗜好または行動から現ユーザ向けのランク付け、推奨または予測が行われる。ユーザを複数のクラスタへグループ分けすることにより、システムは暗黙裡にユーザの嗜好を判別し、ユーザのグループ分けを通して品目をグループ分けする。
図4に概略的に示されるように、本明細書で説明されたユーザをクラスタに割り当てる技術は、ユーザ402a、402bに提示されるニュース記事の推奨を、それらのユーザによって以前になされた記事の選択に基づいて提供することができるニュース推奨エンジン410において実施することができる。ユーザ402a、402bは、彼等それぞれのブラウザを通し、例えば、ローカル、広域、または仮想プライベートネットワーク、もしくはインターネット等の通信ネットワーク404を介して、1つ以上のウェブサーバ430と通信する。ニュースサービス420は、サーバ(1つまたは複数)430に収容されたコンピュータプログラムとして実施され、ユーザの要求に応えてユーザ402a、402bにウェブページをサービスする。ニュースサービス420によってサービスされるページには、ユーザが1つまたは複数のニュースを選択してユーザのブラウザで表示できるページが存在する。ユーザの選択に応えて、ニュースサービス420はユーザが選択した記事をサービスする(機能424)。ニュース推奨エンジン410が特定ユーザについて推奨を提供した場合、そのユーザについての推奨に応じて、ニュースサービスはそのユーザによる選択のための記事を表示するページをサービスすることができる(機能422)。
ニュース推奨エンジン410はサーバ(1つまたは複数)430で実行されるコンピュータプログラムとして実施される。ニュース推奨エンジン410はニュースサービス420のユーザから選択を受信し、それらの選択をログ440にログする(機能412)。本明細書の別の箇所での説明のように、ログ440中の情報を使用して、エンジンはユーザをクラスタに割り当てる(機能414)。クラスタに割り当てられたいずれの特定のユーザについても、エンジンはそのユーザが割り当てられたクラスタに基づいて推奨を決定し(機能416)、それらの推奨をニュースサービス420に提供する。
特定のユーザについてなされる推奨の決定に際して、エンジンはその特定ユーザと同じクラスタ(1つまたは複数)に割り当てられた他のユーザによってなされた選択を考慮する。可能性のある推奨の中から、オプションとして、エンジンはユーザが既に選択したニュース記事を消去することができる。エンジンまたはサービスは、あるニュース記事がそのユーザが割り当てられたクラスタに割り当てられている他のユーザによって選択された回数、そのニュース記事がどの程度新しいものか、問題のニュース記事の主題に関する記事を有するソースの数、等の種々の基準に基づいて推奨をランク付けすることができる。このようにして、ニュースサービスはそのユーザに対して個人性に適合化されたニュース記事の提示およびランク付けを提供することができる。
ある実施では、ニュース推奨エンジン410はユーザを個人として同定しており、そこで個人性に適合化した推奨を得るべく、ユーザにログインし登録するよう要求する。別の実施では、本明細書の別の箇所での説明のように、ユーザを暗黙裡にまたは寄集めグループとして同定することができる。
その他の種類のサービス、例えば、動画、ブログ、または買い物情報等の選択を提供するサービスの個人性への適合化をサポートするために、推奨エンジンをこの線に沿って実施することができる。
図4では別モジュールとして示されているが、エンジンおよびサービスの機能はこのようなやり方で実施される必要はなく、特に、エンジンはサービスの実施の一部として実施することができる。
以下の段落では、MapReduceプログラミングモデルおよび大きいデータ集合を処理し生成するためのモデルの実装について説明する。モデルおよびそれのライブラリの実装をともにMapReduceと呼ぶものとする。MapReduceを使用して、プログラマは、key/value対を処理して中間key/value対の集合を生成するmap関数、および同じ中間keyに対応する全ての中間valueを1つにまとめるreduce関数、の仕様を定める。この関数スタイルで作成されたプログラムは自動的に並列化され、日用品的コンピュータの大集団(cluster)上で実行することができる。ランタイムシステムまたはフレームワークは、入力データを分割し、一連のマシーン全域でのプログラム実行をスケジュールし、マシーン障害を処理し、そしてマシーン間で必要な通信を管理するように実装することができる。
MapReduce計算は一連の入力key/value対を取り込み、一連の出力key/value対を生成する。ユーザはその計算を2つの関数、mapとreduceで表現する。
map、ユーザにより作成、は入力key/value対を取り込み、一連の中間key/value対を生成する。MapReduceライブラリは同じ中間key Iに対応する全ての中間valueをまとめてグループ化し、それらをreduce関数に渡す。
reduce関数、これもユーザにより作成、は中間key Iとそのkeyに対応する一連のvalueを受け取る。それはこれらのvalueを一緒にマージして、可能性としてはより小さ目のvalue集合を形成する。通常はreduceを呼ぶ度に0または1個の出力valueが生成される。中間valueはイテレータ(iterator)を通してユーザのreduce関数に供給される。このようにして、大き過ぎてメモリに収まらないvalueのリストも手に負えるようになる。
文書の大量集積について各語の生起回数を計数する問題を考えよう。ユーザは以下の擬似コードに似たコードを作成することになろう。
map (String key, String value):
// key: document name
// value: document contents
for each word w in value:
Emitlntermediate (w, "1") ;
reduce (String key, Iterator values):
// key: a word
// values: a list of counts
int result = 0;
for each v in values:
result += Parselnt (v) ;
Emit (AsString (result) ) ;
map関数は各語および対応する生起回数(この簡単な例では只の「1」)を併せて出力する。reduce関数は特定の語について出力された全ての回数を足し合わせる。
ある実施では、計算を実行するために、ユーザは入力ファイルおよび出力ファイルの名前とともに仕様目的ならびにオプションの調整用パラメータを記入するコードを作成する。ユーザはそこでMapReduce関数を呼び出し、それに仕様目的を渡す。ユーザのコードはMapReduceライブラリと併せてリンクされる。
上記の擬似コードは入出力が文字列であるとして書かれたものであるが、概念上はユーザが提供するmap関数およびreduce関数は関連したタイプを有しており、
map(k1, v1)→list(k2, v2)
reduce(k2, list(v2))→list(v2)
すなわち、入力keyおよび入力valueは、出力keyおよび出力valueとは別のドメインから引き出される。さらに、中間keyおよび中間valueは、出力keyおよび出力valueと同じドメインから引き出される。
MapReduceモデルについては多くの異なった実装が可能である。
以下の段落では、スイッチ機能付きイーサネット(登録商標)で相互接続された日用品的パソコンの大集団からなる計算環境を目標とする実装について説明する。この環境では、マシーンはマシーン当り通常2から4GB(ギガバイト)のメモリを有し、集団は数百または数千のマシーンを有し、外部メモリは個々のマシーンに装着された低廉なIDE(Integrated Drive Electronics standard)ディスクにより与えられ、これらのディスクは低信頼度のハードウェア上で可用性および信頼性を備えるために複製を使用するが、そこに蓄積されたデータを管理するために分散型のファイルシステムが使用され、ユーザはスケジューリングシステムにジョブを提出する。各ジョブは一連の仕事からなり、スケジューリングシステムのスケジューラによって、集団中の一連の利用可能なマシーンへと計画的に割り振られる。
mapの呼び出しは、入力データを一連のM個のスプリット(split)へ自動的に分割することにより、複数マシーンにわたって分散化される。入力スプリットを異なるマシーンにより並行処理することができる。reduceの呼び出しは、分割関数(例えば、hash(key) mod R)を使用して中間key空間をR個に分割することにより分散化される。分割数(R)および分割関数はユーザが指定する。
ユーザプログラムがMapReduce関数を呼ぶと、以下の一連の動作が行われる。
1.ユーザプログラム中のMapReduceライブラリは、先ず、入力ファイルを1個当り(ユーザが制御可能な)通常16メガバイトから64メガバイト(MB)のM個へと分割する。それから、プログラムのコピー多数をマシーン集団上で起動する。
2.プログラムのコピーの内の1つはマスタ(master)である。残りは、マスタ(master)によって作業を割り付けられるワーカ(worker)である。割り付けるべきM個のmapタスクとR個のreduceタスクが存在する。マスタはアイドル状態(idle)のワーカを選び、各々にmapタスクまたはreduceタスクを割り付ける。
3.mapタスクを割り付けられたワーカは対応する入力スプリットの内容を読む。それは入力データからkey/value対を構文解析し、各対をユーザ定義のmap関数へ渡す。map関数によって生成された中間key/value対はメモリにバッファされる。
4.周期的に、バッファされた対は、分割関数によってR個の領域に分割(partition)されたローカルディスクへ書き込まれる。これらのバッファされた対のローカルディスク上の位置はマスタに戻され、マスタはこれらの位置をreduceワーカへ責任をもって転送する。
5.reduceワーカがマスタによってこれらの位置について知らされると、それは遠隔手順呼出しを使用して、バッファされたデータをmapワーカのローカルディスクから読み取る。全ての中間データを読み取ると、reduceワーカはそれを中間keyによってソート(sort)し、同一keyの全オカーレンス(occurrence)をグループにまとめる。通常多くの異なるkeyが同一のreduceタスクに割り振られるので、このソートが役に立つ。中間データの量が多過ぎてメモリに収まらない場合は、外付けのソートが使用される。
6.reduceワーカはソートされた中間データに対して繰り返し動作し、目新しい中間keyに出会う都度、そのkeyおよび対応する中間valueの集合をユーザのreduce関数に渡す。reduce関数の出力はこのreduceパーティションについての最終出力ファイルに付加される。
7.全てのmapタスクおよびreduceタスクが完了すると、マスタはユーザプログラムを呼び起こす。この時点で、ユーザプログラム中でのMapReduce呼出しはユーザコードへ戻る。
成功裏に完了した後、実行出力はR個の出力ファイル(reduceタスク当り1個、ユーザが指定したファイル名で)で利用可能となる。ユーザはこれらのR個の出力ファイルを1個のファイルに結合する必要はなく、これらのファイルを別のMapReduce呼び出しへの入力として渡すか、またはそれらを複数ファイルに分割された入力を処理可能な他の分散アプリケーションから使用することができる。
マスタは幾つかのデータ構造を保持する。各々のmapタスクおよびreduceタスクについて、マスタは状態(アイドル、進行中、または完了)および(非アイドルタスクについての)ワーカマシーンの識別子を蓄積する。
マスタは、中間ファイル領域の位置をmapタスクからreduceタスクへ伝えるパイプの役を果たす。したがって、完了したmapタスクの各々について、マスタはそのmapタスクによって生成されたR個の中間ファイル領域の位置と大きさを蓄積する。この位置と大きさの情報への更新は、mapタスクが完了したときに受信される。その情報は進行中reduceタスクを有するワーカに追加的に押し込まれる。
このMapReduceライブラリの実装は数百または数千のマシーンを使用して膨大な量のデータを処理するように設計されるので、このライブラリはマシーン故障にも耐用性がある。
マスタはどのワーカに対しても周期的に接続確認信号を発する(ping)。ある時間内にワーカから返答が受信されない場合、マスタはそのワーカに故障の印を付ける。そのワーカが完了したどのmapタスクもリセットされて初期のアイドル状態に戻され、したがって他のワーカ上でスケジューリングできるようになる。同様に、故障したワーカ上で進行中のどのmapタスクまたはreduceタスクもアイドル状態にリセットされ、再スケジュールできるようになる。
故障時には完了したmapタスクは再実行される。というのは、それらの出力が故障マシーンのローカルディスクに蓄積されており、アクセスできないからである。完了したreduceタスクは、それらの出力がグローバルファイルシステムに蓄積されるので再実行の必要はない。
Mapタスクが初めにワーカAによって実行され、その後、(ワーカAが故障したため)ワーカBによって実行された場合、reduceタスクを実行する全てのワーカにその再実行が知らされる。ワーカAからのデータ読み出しを実行済みでない全てのreduceタスクは、ワーカBからデータを読み出すことになる。
マスタは1つしか存在しないのでそれの故障は滅多にない。したがって、マスタが故障した場合、MapReduce計算は打ち切りとなる。ユーザまたはユーザプログラムは、この状況をチェックすることができ、かれらが望む場合、MapReduceの動作を再試行する。
ユーザ提供のmapおよびreduceオペレータ(operator)がそれらへの入力値の決定性関数である場合、この分散的実装は、全プログラムを故障なしで順番に実行することによって生成されるのと同じ出力を生成する。各進行中タスクはその出力を自分だけの一時ファイルへ書き出す。mapタスクが完了すると、ワーカはマスタにメッセージを送信し、そのメッセージ中にR個の一時ファイルの名前を含ませる。マスタが既に完了したmapタスクについて完了メッセージを受信した場合、そのメッセージを無視する。そうでない場合、マスタはR個の一時ファイルの名前をマスタのデータ構造中に記録する。reduceタスクが完了すると、reduceワーカはそれの一時出力ファイルを最終出力ファイルに原子レベルで名前変更する。同じreduceタスクが複数のマシーンで実行される場合、同じ最終出力ファイルについて複数の名前変更要求が実行されることになる。基盤的なファイルシステムによって提供される原子レベルの名前変更動作は、最終ファイルシステムの状態がreduceタスクの1回の実行によって生成されるデータだけを含むことを保証する。
本実装は、集団を構成するマシーンのローカルディスクに入力データを蓄積するという事実を活用して、ネットワーク帯域幅の浪費を防いでいる。ファイルシステムは各ファイルを64MBブロックに分割し、各ブロックのコピーを別々のマシーンに蓄積する。MapReduceマスタは、入力ファイルの位置情報を考慮にいれて、対応する入力データの複製を含むマシーン上のmapタスクのスケジュールを試みる。それに失敗すると、そのタスクの入力データの複製に近い(すなわち、そのデータを含むマシーンと同じネットワークスイッチ上にあるワーカマシーン上の)mapタスクのスケジュールを試みる。
負荷を動的に均衡させるためには、MおよびRはワーカマシーンの数より遥かに大きくあるべきである。先に述べたように、マスタはO(M+R)のスケジュール判断を実行し、O(M×R)の状態をメモリ中に保持しなければならないので、この実装においてMおよびRをどの程度に大きくできるかには実用上の限界がある。さらに、各reduceタスクの出力は別々の出力ファイル中で閉じているので、Rはユーザによってしばしば制限される。実用上は、Mは、先述の局地最適性が最も効果的となるよう個々のタスクの各々が大まかに16MBから64MBの入力ファイルを有するように選ばれ、Rは使用を期待できるワーカマシーン数の小さい倍数となろう。
MapReduceの実行にかかる総時間は、落ちこぼれ、すなわち、計算における最後の幾つかのmapまたはreduceタスクの1つを完了するのに異常に長時間を要するマシーン、によって大きく影響され得る。落ちこぼれ問題を軽減するために、MapReduceの実行が完了に近づくと、マスタはまだ進行中のタスクの支援実行をスケジュールする。本来の実行かまたは支援実行かが完了する都度、タスクは完了の印が付けられる。
以上の基本機能に加えて、本実装は以下の有用な拡張機能を提供する。
幾つかのケースでは、keyの何か特定の機能によりデータを分割するのが有用である。これをサポートするために、MapReduceライブラリのユーザは分割関数を提供することができる。
本実装は、所与のパーティション内では、中間key/value対がkeyの昇順に処理されることを保証する。これは、パーティション毎のソートされた出力ファイルの生成を容易化して、出力ファイルの形式がkeyによる効率的なランダムアクセス検索サポートする必要がある場合、または出力のユーザにとってデータがソートされていると好都合な場合に役に立つ。
幾つかのケースでは、各mapタスクによって生成される中間keyにおける繰り返しが膨大で、そしてユーザ仕様によるreduce関数が可換でありかつ結合法則が成立する。これの例は先述の語数を計数する例である。各mapタスクは<the, 1>の形式の数百または数千のレコードを生成する場合もある。これらの計数値は全て、ネットワークを介して単一のreduceタスクへ、そしてreduce関数によって総和を取られ1つの数を生成するために、送信される。そのようなケースに備えるため、本実装は、オプションとして、ネットワークを介してデータを送信する前にそれを部分的にマージするcombiner関数をユーザが指定できるようにする。
combiner関数は、mapタスクを実行する各マシーン上で実行される。combiner関数およびreduce関数の両者の実装に同じコードを使用できる。reduce関数とcombiner関数との間の唯一の違いは、MapReduceライブラリが関数の出力をどう処理するかである。reduce関数の出力は最終出力ファイルに書き出される。combiner関数の出力は、reduceタスクへ送信される中間ファイルに書き出される。
MapReduceライブラリは、複数の異なったフォーマットの入力データの読み取りをサポートする。例えば、「テキスト」モードの入力は各行をkey/value対として処理し、ここで、keyはファイル中のオフセット(offset)であり、valueは行の内容である。もう1つの一般的にサポートされるフォーマットは、keyでソートされた一連のkey/value対を蓄積する。入力タイプの各実装は、そのタイプのデータを、個別のmapタスクとして処理する意味がある領域に分割する方法を知っている(例えば、テキストモードの領域分割では、領域の分割は、確実に行の境界でのみ行われる)。ユーザは、簡単なreaderインタフェースの実装を提供することにより、新しい入力タイプへのサポートを追加できる。さらに、readerはファイルから読み出されたデータの提供に限定されない。例えば、readerはデータベースまたはメモリ中に割り振られたデータ構造からレコードを読み出すことができる。
同様のやり方で、本実装は様々なフォーマットでデータを生成する一連の出力タイプをサポートし、またユーザが新しい出力タイプのサポートを追加するためにコードを書くことは容易である。
ユーザまたは第3者のコード中のバグにより、map関数またはreduce関数があるレコードで決定的に機能停止することも時にはある。例えば、大きいデータ集合の統計的解析を行っているとき等、若干のレコードを無視することが受容可能な場合もある。本実装は、MapReduceライブラリが決定的機能停止を引き起こしたレコードを検出し、前進するためにこれらのレコードをスキップする、オプションとしての実行モードを提供する。
このモードのために、各ワーカのプロセスは、セグメンテーション違反およびバス誤りを捕捉する信号ハンドラ(handler)を組み込んでいる。ユーザのmapまたはreduceの実行を呼び出す前に、MapReduceライブラリは引数の順序番号をグローバル変数中に蓄積する。ユーザコードが信号を発生する場合、信号ハンドラはその順序番号を含む「最後のあえぎ(last gasp)」UDP(User Datagram Protocol)パケットをMapReduceマスタに送信する。特定のレコードについて1つ以上の故障を見つけると、マスタは対応するmapまたはreduceタスクの次の再実行の指令発出に際して、そのレコードをスキップ(skip)するべきことを知らせる。
MapReduceに関するさらに多くの情報は、その内容が参照によって本明細書に組み込まれた非特許文献1で見つけることができる。
ローカリティセンシティブハッシュ体系を使用してユーザを複数のクラスタにクラスタリングするもう1つの方法についてここで簡単に説明しよう。この方法では、各ユーザは、ユーザを特徴付ける高次元のベクトルで表現されたプロフィールを有する。そのようなベクトル上で動作する一連のk個のハッシュ関数が選択される。ユーザプロフィールについての第iのハッシュ値はユーザが割り当てられる第iのクラスタを表す。本方法に有用なローカリティセンシティブハッシュ関数については非特許文献2に説明がある。
そのような方法のある実装では、ユーザは<term, weight>対のリストにより表現される。先述と同様、kはクラスタの数およびユーザに対して計算されるハッシュ値の数である。シード値の数は説明では8kで与えられようが、定数で与えられている8は一般にはパラメータである。8k個のランダムなシード値は、s_1, s_2, ..., s_8kで示す文字列で表現され、例えば、2進表現でのビットの「0」または「1」が均等で、ランダムに見えるように選択される。どのユーザについても、第iのハッシュ値は以下のように計算される。
For b from 1 to 8:
do
initialize sum = 0;
for all <term_j, weight_j> pairs in the user's list:
do
if (fingerprint (term_j + s_((i-l)*8 + b)) has least significant bit = 1)
sum = sum + weight_j
else
sum = sum - weight_j
done
if (sum > 0)
b-th bit of i-th hash value is set to 1.
else
b-th bit of i-th hash value is set to 0.
done.
fingerprint (term_j + s_((i-l)*8 + b)なる項は、シード文字列s_((i-l)*8 + b)、すなわち第((i-l)*8 + b)のシード文字列と連結された第j項(term_j)のfingerprint関数(先述のように計算される)を表わす。
本発明の実施形態および本明細書で説明した全ての機能的動作は、本明細書で開示された構造またはそれらの構造的等価物もしくはそれらの組合せを含む、デジタル電子回路、もしくはコンピュータソフトウェア、ファームウェア、またはハードウェアで実施可能である。本発明の実施形態は、1つ以上のコンピュータプログラム製品、すなわち、例えば、マシーン可読蓄積装置、マシーン可読蓄積媒体、メモリ装置、またはマシーン可読伝播信号、等のコンピュータ可読媒体上にコード化された、データ処理装置による実行に使用されるか、またはその動作を制御する、コンピュータプログラム命令の1つ以上のモジュールとして実施可能である。用語「データ処理装置」は、例として、プログラム可能プロセッサ、コンピュータ、もしくは多重プロセッサまたは多重コンピュータを含む、データを処理するための全ての装置およびマシーンを包含する。装置は、ハードウェアに加えて、問題になっているコンピュータプログラムのための実行環境を創り出すコード、例えば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはそれらの組合せを構成するコード、を含む。伝播信号は、例えば、機械により発生された電気的、光学的または電磁的信号等の人工的に発生された信号であり、好適な受信装置への転送用に情報を符号化するために発生される。
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、またはコードとしても知られる)は、コンパイルまたはインタープリタ言語を含むどのような形式のプログラミング言語ででも書くことができ、スタンドアローンプログラムとしてもしくはモジュール、コンポーネント、サブルーチン、またはコンピュータ環境での使用に好適なその他の単位を含む任意の形式で配備できる。コンピュータプログラムは必ずしもファイルシステム中のファイルに対応しなくてもよい。プログラムは、他のプログラムまたはデータを保持するファイルの一部に(例えば、マークアップ言語文書中に蓄積された1つ以上のスクリプト)、問題になっているプログラムに専用の単一のファイルに、または複数の組織的なファイル(例えば、1つ以上のモジュール、サブプログラム、またはコードの一部を蓄積するファイル)に、蓄積することができる。コンピュータプログラムは、1つのコンピュータで、もしくは1つのサイトに配置された、または複数サイトにわたって分散され、通信ネットワークによって相互接続された、複数のコンピュータで、実行するために配備することができる。
本明細書で説明したプロセスおよび論理の流れは、入力データに対して動作して出力を生成することにより機能を実行する1つ以上のコンピュータプログラムを実行する、1つ以上のプログラム可能なプロセッサによって実行することができる。例えば、FPGA(Field Programmable Gate Array、フィールドプログラマブルゲートアレイ)またはASIC(Application-Specific Integrated Circuit、特定用途向け集積回路)等の特定用途論理回路により、そのプロセスおよび論理の流れを実行することもでき、装置を実装することもできる。
コンピュータプログラムの実行に好適なプロセッサには、例として、汎用および特定目的用の両方のマイクロプロセッサ、ならびに任意の種類のデジタルコンピュータの任意の1つ以上のプロセッサが含まれる。一般に、プロセッサは読み出し専用メモリまたはランダムアクセスメモリもしくはその両方から命令とデータを受け取るであろう。コンピュータの本質的要素は、命令を実行するプロセッサおよび命令とデータを蓄積する1つ以上のメモリである。コンピュータはまた、一般に、データを蓄積するための1つ以上の大容量記憶装置、例えば、磁気、磁気光学ディスク、または光学ディスク、を含むか、またはそれらからデータを受信しまたはそれらへデータを送信しもしくはその両方を実行できるようそれらに接続されよう。しかし、コンピュータはそのような装置を持たなくてもよい。さらに、コンピュータは別の装置、幾つか名前を上げれば、例えば、移動電話機、携帯情報端末(PDA、personal digital assistant)、携帯オーディオプレーヤ、全地球測位システム(GPS、Global Positioning System)受信機、等に埋め込むこともできる。コンピュータプログラム命令およびデータを具体化するのに好適な情報担体には、全ての形態の不揮発性メモリ、例としては、EPROM、EEPROM、およびフラッシュメモリ装置等の半導体メモリ装置、内蔵ハードディスクまたは取り外し可能ディスク等の磁気ディスク装置、磁気光学ディスク、およびCD−ROMおよびDVD−ROMディスク、が含まれる。プロセッサおよびメモリは特定用途論理回路で補足することができ、またはそれに組み込むことができる。
ユーザとの相互作用に備えて、本発明の実施形態は、情報をユーザに提示するための表示装置、例えば、CRT(cathode ray tube、陰極線管)またはLCD(liquid crystal display、液晶ディスプレイ)モニタ、ならびにユーザがコンピュータに入力を与えることができるキーボードおよび指示装置、例えば、マウスまたはトラックボール、を有するコンピュータ上で実施することができる。その他の種類の装置もまたユーザとの相互作用に備えて使用することができ、例えば、ユーザに提供されるフィードバックは、例えば、視覚的フィードバック、聴覚的フィードバック、または触覚的フィードバック等の任意の形式の感覚フィードバックであってよく、またユーザからの入力は、音響、音声または触覚入力を含む任意の形式で受信されてよい。
本発明の実施形態は、バックエンド構成要素、例えば、データサーバ等、を含む、またはミドルウェア構成要素、例えば、アプリケーションサーバ、を含む、またはフロントエンド構成要素、例えば、本発明の実装と相互作用できるようにするためのグラフィカルユーザインタフェースまたはウェブブラウザを有するクライアントコンピュータ、を含むコンピュータシステム中で実施することができ、もしくはそのようなバックエンド、ミドルウェア、またはフロントエンド構成要素の任意の組合せで実施することができる。システムの構成要素は、任意の形態または媒体の、通信ネットワーク等のデジタルデータ通信により相互接続することができる。通信ネットワークの例には、ローカルエリアネットワーク(「LAN」)およびインターネット等の広域ネットワーク(「WAN」)が含まれる。
コンピュータシステムはクライアントおよびサーバを含むことができる。クライアントおよびサーバは、一般には相互に遠く離れており、通常は通信ネットワークを通して相互作用する。クライアントおよびサーバの関係は、それぞれのコンピュータ上で実行され、相互にクライアント−サーバ関係にあるコンピュータプログラムによって、発生する。
本発明の特定の実施形態について説明をおこなった。その他の実施形態は添付の特許請求の範囲に含まれる。例えば、特許請求の範囲で列挙されるステップは、別の順序で実行することもでき、それでも所望の結果を得ることができる。
402a、402b ユーザ
404 通信ネットワーク
410 ニュース推奨エンジン
420 ニュースサービス
430 ウェブサーバ
440 ログ

Claims (22)

  1. 1つまたは複数のコンピュータと、該1つまたは複数のコンピュータに接続され、命令が記憶されたコンピュータ読み取り可能な媒体と、を備えるシステムであって、
    前記命令は、前記1つまたは複数のコンピュータによって実行されるとき、前記1つまたは複数のコンピュータに動作を実行させ、
    前記動作は、
    特定のユーザが1つまたは複数のウェブアプリケーションとの相互作用を通して興味を示した品目を表わすデータ要素の集合を取得し、
    前記データ要素の各々に指紋関数およびk個の異なるシード値を適用してk個のミンハッシュ値の集合を生成することを含み、kは整数のパラメータであり、各々のミンハッシュ値は前記データ要素の集合のそれぞれのデータ要素に対応し、
    前記動作は、前記特定のユーザをk個のクラスタに割り当てることをさらに含み、k個のクラスタの各々は前記k個のミンハッシュ値のうちそれぞれ対応する1つによって表わされるシステム。
  2. 前記データ要素はテキスト列または2進データである請求項1に記載のシステム。
  3. 前記指紋関数およびk個の異なるシード値を適用することは、
    前記データ要素の各々に指紋関数およびそれぞれのシード値を適用することによって、前記k個の異なるシード値の各々についてi個のハッシュ値を生成し、
    前記k個の異なるシード値の各々について、前記それぞれのシード値について生成されたi個のハッシュ値の中から最小のハッシュ値を選択し、
    前記k個のそれぞれの最小のハッシュ値をk個のミンハッシュ値の集合と定めることをさらに含み、
    iは前記集合におけるデータ要素の数を表わす請求項1に記載のシステム。
  4. kは、5と10を含む、5と10の間の整数パラメータである請求項1に記載のシステム。
  5. 各々の品目は、前記特定のユーザが選択した検索結果またはニュース記事である請求項1に記載のシステム。
  6. 各々の品目は、前記特定のユーザが購入した、または、買い物カートに追加した品目である請求項1に記載のシステム。
  7. 各々の品目は、ウェブページ間をナビゲートするために前記特定のユーザによってなされた一連の選択を表わす請求項1に記載のシステム。
  8. 前記動作は、データの対の寄集めを取得することをさらに含み、各々のデータの対は、ユーザおよび該ユーザが興味を示した品目を識別し、
    前記データ要素の集合を取得することは、前記特定のユーザを識別するデータをキーとして使用するreduceルーチンによって前記データの対の寄集めを処理することをさらに含む請求項1に記載のシステム。
  9. 前記指紋関数はRAND関数であり、かつ、ハッシュ値は32ビットの整数値であるか、または、
    前記指紋関数はMD5一方向ハッシュアルゴリズムを実行する関数であり、かつ、ハッシュ値は128ビットの値である請求項1に記載のシステム。
  10. 前記特定のユーザをk個のクラスタに割り当てることは、他のいずれのユーザをk個のクラスタのいずれに割り当てること、または、割り当てないことにも影響せずに行われる請求項1に記載のシステム。
  11. 前記動作は、
    前記特定のユーザが前記品目に見せかけの興味を示したと判定し、
    他のいずれのユーザをk個のクラスタのいずれに割り当てることにも影響せずに、前記k個のミンハッシュ値によって表わされるk個のクラスタから前記特定のユーザを割り当て解除することをさらに含む請求項1に記載のシステム。
  12. 前記動作は、前記特定のユーザが興味を示した品目を前記特定のユーザが明かそうと決心したことを前記コンピュータに入力したと判定することをさらに含み、
    前記特定のユーザをk個のクラスタに割り当てることは、前記特定のユーザが興味を示した品目を前記特定のユーザが明かそうと決心したことを前記コンピュータに入力したと判定したことに応答して、前記特定のユーザをk個のクラスタに割り当てることをさらに含む請求項1に記載のシステム。
  13. 前記動作は、前記特定のユーザが興味を示した品目を前記特定のユーザが編集したと判定することをさらに含み、
    前記特定のユーザをk個のクラスタに割り当てることは、前記特定のユーザが興味を示した品目を前記特定のユーザが編集したと判定したことに応答して、前記特定のユーザをk個のクラスタに割り当てることをさらに含む請求項1に記載のシステム。
  14. コンピュータに実装される方法であって、
    特定のユーザが1つまたは複数のウェブアプリケーションとの相互作用を通して興味を示した品目を表わすデータ要素の集合を取得するステップと、
    前記データ要素の各々に指紋関数およびk個の異なるシード値を適用してk個のミンハッシュ値の集合を生成するステップと、を含み、kは整数のパラメータであり、各々のミンハッシュ値は前記データ要素の集合のそれぞれのデータ要素に対応し、
    前記方法は、1つまたは複数のコンピュータにより、前記特定のユーザをk個のクラスタに割り当てるステップをさらに含み、k個のクラスタの各々は前記k個のミンハッシュ値のうちそれぞれ対応する1つによって表わされる方法。
  15. コンピュータプログラムで符号化されたコンピュータ記憶媒体であって、
    前記コンピュータプログラムは、1つまたは複数のコンピュータによって実行されるとき、前記1つまたは複数のコンピュータに動作を実行させる命令を含み、
    前記動作は、
    特定のユーザが1つまたは複数のウェブアプリケーションとの相互作用を通して興味を示した品目を表わすデータ要素の集合を取得し、
    前記データ要素の各々に指紋関数およびk個の異なるシード値を適用してk個のミンハッシュ値の集合を生成することを含み、kは整数のパラメータであり、各々のミンハッシュ値は前記データ要素の集合のそれぞれのデータ要素に対応し、
    前記動作は、前記特定のユーザをk個のクラスタに割り当てることをさらに含み、k個のクラスタの各々は前記k個のミンハッシュ値のうちそれぞれ対応する1つによって表わされるコンピュータ記憶媒体。
  16. 前記指紋関数およびk個の異なるシード値を適用することは、
    前記データ要素の各々に指紋関数およびそれぞれのシード値を適用することによって、前記k個の異なるシード値の各々についてi個のハッシュ値を生成し、
    前記k個の異なるシード値の各々について、前記それぞれのシード値について生成されたi個のハッシュ値の中から最小のハッシュ値を選択し、
    前記k個のそれぞれの最小のハッシュ値をk個のミンハッシュ値の集合と定めることをさらに含み、
    iは前記集合におけるデータ要素の数を表わす請求項15に記載のコンピュータ記憶媒体。
  17. 前記動作は、データの対の寄集めを取得することをさらに含み、各々のデータの対は、ユーザおよび該ユーザが興味を示した品目を識別し、
    前記データ要素の集合を取得することは、前記特定のユーザを識別するデータをキーとして使用するreduceルーチンによって前記データの対の寄集めを処理することをさらに含む請求項15に記載のコンピュータ記憶媒体。
  18. 前記特定のユーザをk個のクラスタに割り当てることは、他のいずれのユーザをk個のクラスタのいずれに割り当てること、または、割り当てないことにも影響せずに行われる請求項15に記載のコンピュータ記憶媒体。
  19. 前記動作は、
    前記特定のユーザが前記品目に見せかけの興味を示したと判定し、
    他のいずれのユーザをk個のクラスタのいずれに割り当てることにも影響せずに、前記k個のミンハッシュ値によって表わされるk個のクラスタから前記特定のユーザを割り当て解除することをさらに含む請求項15に記載のコンピュータ記憶媒体。
  20. 前記動作は、前記特定のユーザが興味を示した品目を前記特定のユーザが明かそうと決心したことを前記コンピュータに入力したと判定することをさらに含み、
    前記特定のユーザをk個のクラスタに割り当てることは、前記特定のユーザが興味を示した品目を前記特定のユーザが明かそうと決心したことを前記コンピュータに入力したと判定したことに応答して、前記特定のユーザをk個のクラスタに割り当てることをさらに含む請求項15に記載のコンピュータ記憶媒体。
  21. プロセッサにより、指紋関数、ランダムに選択されたk個のシード値からなる順序集合、および各ユーザの興味集合中の要素を用いて値を計算し、計算された値のうち前記順序集合の各要素に対する最小値を使用してデータ処理システムのユーザをk個のクラスタに割り当てるステップを含み、kは1より大きい整数であり、前記興味集合中の各要素は、前記データ処理システムを使用する前記ユーザによる行動を通して前記ユーザが興味を示した品目を表わす
    ことを特徴とするデータ処理システムの作動方法。
  22. データ処理システムを使用する複数ユーザによって選択された品目のログと、
    指紋関数、ランダムに選択されたk個のシード値、および各ユーザによって選択された品目のログを用いて値を計算し、計算された値のうち各シード値に対する最小値を使用して前記複数ユーザの各々をk個(ここでkは1より大きい整数)のクラスタに割り当てる手段と、
    k個のクラスタの1つ以上への第1のユーザの前記割り当てに基づいて前記複数ユーザ中の前記第1のユーザに情報を提供できる協調フィルタリングのコンピュータプログラムアプリケーションと
    を含むことを特徴とするシステム。
JP2012252056A 2005-08-15 2012-11-16 集合の類似性に基づく拡張性に富むユーザクラスタリング Expired - Fee Related JP5538510B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/204,922 2005-08-15
US11/204,922 US7739314B2 (en) 2005-08-15 2005-08-15 Scalable user clustering based on set similarity

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2008527069A Division JP5230421B2 (ja) 2005-08-15 2006-08-15 集合の類似性に基づく拡張性に富むユーザクラスタリング

Publications (2)

Publication Number Publication Date
JP2013033551A JP2013033551A (ja) 2013-02-14
JP5538510B2 true JP5538510B2 (ja) 2014-07-02

Family

ID=37743789

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2008527069A Expired - Fee Related JP5230421B2 (ja) 2005-08-15 2006-08-15 集合の類似性に基づく拡張性に富むユーザクラスタリング
JP2012252056A Expired - Fee Related JP5538510B2 (ja) 2005-08-15 2012-11-16 集合の類似性に基づく拡張性に富むユーザクラスタリング

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2008527069A Expired - Fee Related JP5230421B2 (ja) 2005-08-15 2006-08-15 集合の類似性に基づく拡張性に富むユーザクラスタリング

Country Status (6)

Country Link
US (4) US7739314B2 (ja)
EP (1) EP1915669A4 (ja)
JP (2) JP5230421B2 (ja)
CN (2) CN101535944A (ja)
CA (1) CA2619076C (ja)
WO (1) WO2007022199A2 (ja)

Families Citing this family (160)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6658423B1 (en) * 2001-01-24 2003-12-02 Google, Inc. Detecting duplicate and near-duplicate files
US7505964B2 (en) 2003-09-12 2009-03-17 Google Inc. Methods and systems for improving a search ranking using related queries
US7756919B1 (en) 2004-06-18 2010-07-13 Google Inc. Large-scale data processing in a distributed and parallel processing enviornment
US9065727B1 (en) 2012-08-31 2015-06-23 Google Inc. Device identifier similarity models derived from online event signals
US7937265B1 (en) 2005-09-27 2011-05-03 Google Inc. Paraphrase acquisition
US7617231B2 (en) * 2005-12-07 2009-11-10 Electronics And Telecommunications Research Institute Data hashing method, data processing method, and data processing system using similarity-based hashing algorithm
US7624117B2 (en) * 2006-06-12 2009-11-24 Sap Ag Complex data assembly identifier thesaurus
US8015162B2 (en) * 2006-08-04 2011-09-06 Google Inc. Detecting duplicate and near-duplicate files
US8190610B2 (en) * 2006-10-05 2012-05-29 Yahoo! Inc. MapReduce for distributed database processing
JP5233220B2 (ja) * 2006-10-11 2013-07-10 株式会社リコー ページ付加情報共有管理方法
US20080104066A1 (en) * 2006-10-27 2008-05-01 Yahoo! Inc. Validating segmentation criteria
US9110975B1 (en) 2006-11-02 2015-08-18 Google Inc. Search result inputs using variant generalized queries
US8661029B1 (en) 2006-11-02 2014-02-25 Google Inc. Modifying search result ranking based on implicit user feedback
US7801885B1 (en) 2007-01-25 2010-09-21 Neal Akash Verma Search engine system and method with user feedback on search results
US8135718B1 (en) 2007-02-16 2012-03-13 Google Inc. Collaborative filtering
US8407226B1 (en) 2007-02-16 2013-03-26 Google Inc. Collaborative filtering
US8065254B1 (en) 2007-02-19 2011-11-22 Google Inc. Presenting a diversity of recommendations
US8938463B1 (en) 2007-03-12 2015-01-20 Google Inc. Modifying search result ranking based on implicit user feedback and a model of presentation bias
US8694374B1 (en) 2007-03-14 2014-04-08 Google Inc. Detecting click spam
JP4538757B2 (ja) * 2007-12-04 2010-09-08 ソニー株式会社 情報処理装置、情報処理方法、およびプログラム
US7576370B2 (en) * 2007-04-20 2009-08-18 California Micro Devices Low operating voltage electro-static discharge device and method
US9092510B1 (en) 2007-04-30 2015-07-28 Google Inc. Modifying search result ranking based on a temporal element of user feedback
US8359309B1 (en) 2007-05-23 2013-01-22 Google Inc. Modifying search result ranking based on corpus search statistics
US8694511B1 (en) 2007-08-20 2014-04-08 Google Inc. Modifying search result ranking based on populations
US8909655B1 (en) 2007-10-11 2014-12-09 Google Inc. Time based ranking
US20090132571A1 (en) * 2007-11-16 2009-05-21 Microsoft Corporation Efficient use of randomness in min-hashing
US7925598B2 (en) * 2008-01-24 2011-04-12 Microsoft Corporation Efficient weighted consistent sampling
US20090198666A1 (en) * 2008-02-01 2009-08-06 Winston Ronald H Affinity matching system and method
US8184953B1 (en) * 2008-02-22 2012-05-22 Google Inc. Selection of hash lookup keys for efficient retrieval
US20090216757A1 (en) * 2008-02-27 2009-08-27 Robi Sen System and Method for Performing Frictionless Collaboration for Criteria Search
US8824422B2 (en) 2008-03-11 2014-09-02 Intel Corporation Techniques enabling dynamic bandwidth reservation in a wireless personal area network
CN101685458B (zh) * 2008-09-27 2012-09-19 华为技术有限公司 一种基于协同过滤的推荐方法和系统
US8640163B2 (en) * 2008-09-30 2014-01-28 Microsoft Corporation Determining user-to-user similarities in an online media environment
JP5229731B2 (ja) * 2008-10-07 2013-07-03 インターナショナル・ビジネス・マシーンズ・コーポレーション 更新頻度に基づくキャッシュ機構
US8682998B2 (en) * 2008-10-31 2014-03-25 Software Ag Method and server cluster for map reducing flow services and large documents
US8396865B1 (en) 2008-12-10 2013-03-12 Google Inc. Sharing search engine relevance data between corpora
US20100169258A1 (en) * 2008-12-31 2010-07-01 Microsoft Corporation Scalable Parallel User Clustering in Discrete Time Window
US20100191734A1 (en) * 2009-01-23 2010-07-29 Rajaram Shyam Sundar System and method for classifying documents
US20100228951A1 (en) * 2009-03-05 2010-09-09 Xerox Corporation Parallel processing management framework
US8239847B2 (en) * 2009-03-18 2012-08-07 Microsoft Corporation General distributed reduction for data parallel computing
US8209664B2 (en) * 2009-03-18 2012-06-26 Microsoft Corporation High level programming extensions for distributed data parallel processing
US9009146B1 (en) 2009-04-08 2015-04-14 Google Inc. Ranking search results based on similar queries
JP5331549B2 (ja) * 2009-04-09 2013-10-30 株式会社エヌ・ティ・ティ・ドコモ 分散処理システム及び分散処理方法
US8204838B2 (en) * 2009-04-10 2012-06-19 Microsoft Corporation Scalable clustering
US8510538B1 (en) * 2009-04-13 2013-08-13 Google Inc. System and method for limiting the impact of stragglers in large-scale parallel data processing
US20100301114A1 (en) * 2009-05-26 2010-12-02 Lo Faro Walter F Method and system for transaction based profiling of customers within a merchant network
US8321873B2 (en) * 2009-06-09 2012-11-27 Yahoo! Inc. System and method for offline data generation for online system analysis
US8447760B1 (en) 2009-07-20 2013-05-21 Google Inc. Generating a related set of documents for an initial set of documents
US8498974B1 (en) 2009-08-31 2013-07-30 Google Inc. Refining search results
CN102576438A (zh) * 2009-09-21 2012-07-11 瑞典爱立信有限公司 用于执行推荐的方法和设备
US20110077998A1 (en) * 2009-09-29 2011-03-31 Microsoft Corporation Categorizing online user behavior data
US8972391B1 (en) 2009-10-02 2015-03-03 Google Inc. Recent interest based relevance scoring
US8244767B2 (en) * 2009-10-09 2012-08-14 Stratify, Inc. Composite locality sensitive hash based processing of documents
US9355171B2 (en) * 2009-10-09 2016-05-31 Hewlett Packard Enterprise Development Lp Clustering of near-duplicate documents
US9009156B1 (en) * 2009-11-10 2015-04-14 Hrl Laboratories, Llc System for automatic data clustering utilizing bio-inspired computing models
US8874555B1 (en) 2009-11-20 2014-10-28 Google Inc. Modifying scoring data based on historical changes
CN102111392A (zh) * 2009-12-24 2011-06-29 王子嘉 以兴趣排名为基础的交友系统
CN102141995B (zh) * 2010-01-29 2013-06-12 国际商业机器公司 简化并行计算系统中的传输的系统与方法
US8874600B2 (en) 2010-01-30 2014-10-28 International Business Machines Corporation System and method for building a cloud aware massive data analytics solution background
US8615514B1 (en) 2010-02-03 2013-12-24 Google Inc. Evaluating website properties by partitioning user feedback
US8924379B1 (en) 2010-03-05 2014-12-30 Google Inc. Temporal-based score adjustments
US8959093B1 (en) 2010-03-15 2015-02-17 Google Inc. Ranking search results based on anchors
US8838587B1 (en) 2010-04-19 2014-09-16 Google Inc. Propagating query classifications
US8555265B2 (en) 2010-05-04 2013-10-08 Google Inc. Parallel processing of data
US8935232B2 (en) * 2010-06-04 2015-01-13 Yale University Query execution systems and methods
US9495427B2 (en) 2010-06-04 2016-11-15 Yale University Processing of data using a database system in communication with a data processing framework
US9336263B2 (en) 2010-06-04 2016-05-10 Yale University Data loading systems and methods
US9311403B1 (en) * 2010-06-16 2016-04-12 Google Inc. Hashing techniques for data set similarity determination
US9623119B1 (en) 2010-06-29 2017-04-18 Google Inc. Accentuating search results
US8832083B1 (en) 2010-07-23 2014-09-09 Google Inc. Combining user feedback
US9454763B2 (en) 2010-08-24 2016-09-27 Adobe Systems Incorporated Distribution of offer to a social group by sharing based on qualifications
US8661042B2 (en) * 2010-10-18 2014-02-25 Hewlett-Packard Development Company, L.P. Collaborative filtering with hashing
CN102467570B (zh) * 2010-11-17 2014-03-12 日电(中国)有限公司 用于分布式数据仓库的连接查询系统和方法
CN102480512B (zh) 2010-11-29 2015-08-12 国际商业机器公司 用于扩展服务器端处理能力的方法和装置
US20120144022A1 (en) * 2010-12-07 2012-06-07 Microsoft Corporation Content recommendation through consumer-defined authorities
US8499222B2 (en) * 2010-12-14 2013-07-30 Microsoft Corporation Supporting distributed key-based processes
US8631017B2 (en) * 2010-12-16 2014-01-14 Hewlett-Packard Development, L.P. Collaborative filtering with hashing
US9307048B2 (en) 2010-12-28 2016-04-05 Microsoft Technology Licensing, Llc System and method for proactive task scheduling of a copy of outlier task in a computing environment
US9002867B1 (en) 2010-12-30 2015-04-07 Google Inc. Modifying ranking data based on document changes
US8635226B2 (en) * 2011-03-02 2014-01-21 Adobe Systems Incorporated Computing user micro-segments for offer matching
US9177327B2 (en) 2011-03-02 2015-11-03 Adobe Systems Incorporated Sequential engine that computes user and offer matching into micro-segments
JP2012204894A (ja) * 2011-03-24 2012-10-22 Toshiba Corp 情報推薦装置
US20140223575A1 (en) * 2011-04-25 2014-08-07 Alcatel Lucent Privacy protection in recommendation services
CN102779137A (zh) * 2011-05-13 2012-11-14 北京搜狗科技发展有限公司 针对网页的用户个性化反馈信息的处理方法和装置
US8954967B2 (en) * 2011-05-31 2015-02-10 International Business Machines Corporation Adaptive parallel data processing
US8856047B2 (en) 2011-06-21 2014-10-07 Microsoft Corporation Fast personalized page rank on map reduce
CN103597473B (zh) * 2011-06-30 2018-06-05 慧与发展有限责任合伙企业 用于合并部分聚合查询结果的系统和方法
WO2013009503A2 (en) 2011-07-08 2013-01-17 Yale University Query execution systems and methods
CN102316167B (zh) * 2011-09-26 2013-11-06 中国科学院计算机网络信息中心 网站推荐方法和系统以及网络服务器
US9031992B1 (en) * 2011-09-30 2015-05-12 Emc Corporation Analyzing big data
JP5716966B2 (ja) * 2011-12-20 2015-05-13 株式会社日立製作所 データ分析装置、データ分析方法及びプログラム
US8838435B2 (en) 2012-01-11 2014-09-16 Motorola Mobility Llc Communication processing
US20130179252A1 (en) * 2012-01-11 2013-07-11 Yahoo! Inc. Method or system for content recommendations
JP5825122B2 (ja) * 2012-01-31 2015-12-02 富士通株式会社 生成プログラム、生成方法、および生成システム
US9262216B2 (en) 2012-02-14 2016-02-16 Microsoft Technologies Licensing, LLC Computing cluster with latency control
US8983998B1 (en) 2012-04-25 2015-03-17 Google Inc. Prioritizing points of interest in unfamiliar regions
US9053185B1 (en) 2012-04-30 2015-06-09 Google Inc. Generating a representative model for a plurality of models identified by similar feature data
US8527526B1 (en) 2012-05-02 2013-09-03 Google Inc. Selecting a list of network user identifiers based on long-term and short-term history data
US20150242906A1 (en) * 2012-05-02 2015-08-27 Google Inc. Generating a set of recommended network user identifiers from a first set of network user identifiers and advertiser bid data
AU2013261007B2 (en) * 2012-05-18 2016-03-17 Tata Consultancy Services Limited System and method for creating structured event objects
US8914500B1 (en) 2012-05-21 2014-12-16 Google Inc. Creating a classifier model to determine whether a network user should be added to a list
JP5853866B2 (ja) 2012-06-05 2016-02-09 富士通株式会社 割当プログラム、割当装置、および割当方法
CA2779235C (en) * 2012-06-06 2019-05-07 Ibm Canada Limited - Ibm Canada Limitee Identifying unvisited portions of visited information
US8886575B1 (en) 2012-06-27 2014-11-11 Google Inc. Selecting an algorithm for identifying similar user identifiers based on predicted click-through-rate
US8874589B1 (en) 2012-07-16 2014-10-28 Google Inc. Adjust similar users identification based on performance feedback
EP2688264B1 (en) 2012-07-16 2016-08-24 Alcatel Lucent Method and apparatus for privacy protected clustering of user interest profiles
US8782197B1 (en) 2012-07-17 2014-07-15 Google, Inc. Determining a model refresh rate
TWI459223B (zh) * 2012-08-15 2014-11-01 Hon Hai Prec Ind Co Ltd 海量資料索引建立系統及方法
US9104767B2 (en) * 2012-08-28 2015-08-11 Adobe Systems Incorporated Identifying web pages that are likely to guide browsing viewers to improve conversion rate
US8886799B1 (en) 2012-08-29 2014-11-11 Google Inc. Identifying a similar user identifier
WO2014034257A1 (ja) * 2012-09-03 2014-03-06 ソニー株式会社 情報処理装置、情報処理方法およびシステム
CN103679494B (zh) * 2012-09-17 2018-04-03 阿里巴巴集团控股有限公司 商品信息推荐方法及装置
US8983888B2 (en) 2012-11-07 2015-03-17 Microsoft Technology Licensing, Llc Efficient modeling system for user recommendation using matrix factorization
US9278255B2 (en) 2012-12-09 2016-03-08 Arris Enterprises, Inc. System and method for activity recognition
US10212986B2 (en) 2012-12-09 2019-02-26 Arris Enterprises Llc System, apparel, and method for identifying performance of workout routines
US9471390B2 (en) 2013-01-16 2016-10-18 International Business Machines Corporation Scheduling mapreduce jobs in a cluster of dynamically available servers
US10229367B2 (en) * 2013-02-06 2019-03-12 Jacob Drew Collaborative analytics map reduction classification learning systems and methods
US10939258B2 (en) * 2013-04-19 2021-03-02 xAd, Inc. System and method for marketing mobile advertising supplies
US9183499B1 (en) 2013-04-19 2015-11-10 Google Inc. Evaluating quality based on neighbor features
US9467452B2 (en) * 2013-05-13 2016-10-11 International Business Machines Corporation Transferring services in a networked environment
EP2824589A1 (en) * 2013-07-12 2015-01-14 Thomson Licensing Method for enriching a multimedia content, and corresponding device.
EP2827277A1 (en) * 2013-07-16 2015-01-21 Alcatel Lucent Privacy protection in personalisation services
CN103886003A (zh) * 2013-09-22 2014-06-25 天津思博科科技发展有限公司 一种协同过滤处理器
KR101482700B1 (ko) * 2013-09-27 2015-01-14 (주)잉카엔트웍스 해시를 이용한 프로그램의 무결성 검증 방법
WO2015050567A1 (en) * 2013-10-06 2015-04-09 Yahoo! Inc. System and method for performing set operations with defined sketch accuracy distribution
CN104035949B (zh) * 2013-12-10 2017-05-10 南京信息工程大学 一种基于局部敏感哈希改进算法的相似性数据检索方法
CN103678672B (zh) * 2013-12-25 2017-05-24 北京中兴通德网络科技有限公司 一种信息推荐方法
US10574508B1 (en) 2014-01-27 2020-02-25 Amazon Technologies, Inc. MapReduce optimization for partitioned intermediate output
US10055506B2 (en) 2014-03-18 2018-08-21 Excalibur Ip, Llc System and method for enhanced accuracy cardinality estimation
US20150379022A1 (en) * 2014-06-27 2015-12-31 General Electric Company Integrating Execution of Computing Analytics within a Mapreduce Processing Environment
KR101601820B1 (ko) * 2014-08-20 2016-03-14 경기대학교 산학협력단 유사 사용자 인덱스 방법 및 프로그램
US10831765B1 (en) * 2014-10-21 2020-11-10 Zoosk, Inc. System and method for providing information about users who performed internet-based activities
JP6334431B2 (ja) * 2015-02-18 2018-05-30 株式会社日立製作所 データ分析装置、データ分析方法、およびデータ分析プログラム
CN104715021B (zh) * 2015-02-27 2018-09-11 南京邮电大学 一种基于哈希方法的多标记学习的学习方法
US20160275169A1 (en) * 2015-03-17 2016-09-22 Infoutopia Co., Ltd. System and method of generating initial cluster centroids
CN104778234A (zh) * 2015-03-31 2015-07-15 南京邮电大学 基于局部敏感哈希技术的多标记文件近邻查询方法
US10095807B2 (en) * 2015-04-28 2018-10-09 Microsoft Technology Licensing, Llc Linked data processor for database storage
CN104899267B (zh) * 2015-05-22 2017-12-19 中国电子科技集团公司第二十八研究所 一种社交网站账号相似度的综合数据挖掘方法
CN106469163A (zh) * 2015-08-18 2017-03-01 中兴通讯股份有限公司 一种公众号推荐方法及系统
US10140327B2 (en) * 2015-08-24 2018-11-27 Palantir Technologies Inc. Feature clustering of users, user correlation database access, and user interface generation system
CN105162875B (zh) * 2015-09-23 2019-03-12 四川师范大学 大数据群体任务分配方法及装置
US10212255B2 (en) * 2015-09-28 2019-02-19 Microsoft Technology Licensing, Llc Processing requests for multi-versioned service
CN105224328A (zh) * 2015-10-08 2016-01-06 浪潮电子信息产业股份有限公司 一种用户界面生成方法以及系统、服务器
EP3283984A4 (en) 2015-11-03 2018-04-04 Hewlett-Packard Enterprise Development LP Relevance optimized representative content associated with a data storage system
US10116536B2 (en) * 2015-11-18 2018-10-30 Adobe Systems Incorporated Identifying multiple devices belonging to a single user
US10778707B1 (en) * 2016-05-12 2020-09-15 Amazon Technologies, Inc. Outlier detection for streaming data using locality sensitive hashing
CN106227881B (zh) * 2016-08-04 2021-11-09 腾讯科技(深圳)有限公司 一种信息处理方法及服务器
US20180052864A1 (en) * 2016-08-16 2018-02-22 International Business Machines Corporation Facilitating the sharing of relevant content
CN106355449B (zh) * 2016-08-31 2021-09-07 腾讯科技(深圳)有限公司 用户选取方法和装置
US10637940B2 (en) * 2016-11-21 2020-04-28 Roku, Inc. Streaming content based on skip histories
CN106543880B (zh) * 2016-12-12 2018-12-18 河北晨阳工贸集团有限公司 一种能提升眼镜框舒适度的环保涂料及其制备方法
CN106649781B (zh) * 2016-12-28 2020-11-20 北京小米移动软件有限公司 应用推荐方法及装置
CN107122390B (zh) * 2017-03-04 2020-09-25 华数传媒网络有限公司 基于用户群组的推荐系统构建方法
US20190057430A1 (en) * 2017-08-17 2019-02-21 Retailcommon Inc. Method and system for clustering products in an electronic commerce environment
US10769306B2 (en) * 2017-09-21 2020-09-08 International Business Machines Corporation Applying a differential privacy operation on a cluster of data
US11100573B1 (en) * 2018-02-28 2021-08-24 Intuit Inc. Credit score cohort analysis engine
US11023495B2 (en) * 2018-03-19 2021-06-01 Adobe Inc. Automatically generating meaningful user segments
WO2020046331A1 (en) * 2018-08-30 2020-03-05 Google Llc Percentile linkage clustering
US11501257B2 (en) * 2019-12-09 2022-11-15 Jpmorgan Chase Bank, N.A. Method and apparatus for implementing a role-based access control clustering machine learning model execution module
CN113420141B (zh) * 2021-06-24 2022-10-04 中国人民解放军陆军工程大学 基于哈希聚类和上下文信息的敏感数据搜索方法

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6850252B1 (en) * 1999-10-05 2005-02-01 Steven M. Hoffberg Intelligent electronic appliance system and method
US5832182A (en) * 1996-04-24 1998-11-03 Wisconsin Alumni Research Foundation Method and system for data clustering for very large databases
US5909677A (en) * 1996-06-18 1999-06-01 Digital Equipment Corporation Method for determining the resemblance of documents
US6134532A (en) * 1997-11-14 2000-10-17 Aptex Software, Inc. System and method for optimal adaptive matching of users to most relevant entity and information in real-time
US6374251B1 (en) * 1998-03-17 2002-04-16 Microsoft Corporation Scalable system for clustering of large databases
US6119124A (en) * 1998-03-26 2000-09-12 Digital Equipment Corporation Method for clustering closely resembling data objects
US6317722B1 (en) * 1998-09-18 2001-11-13 Amazon.Com, Inc. Use of electronic shopping carts to generate personal recommendations
US6415297B1 (en) * 1998-11-17 2002-07-02 International Business Machines Corporation Parallel database support for workflow management systems
US6564202B1 (en) * 1999-01-26 2003-05-13 Xerox Corporation System and method for visually representing the contents of a multiple data object cluster
US6347313B1 (en) * 1999-03-01 2002-02-12 Hewlett-Packard Company Information embedding based on user relevance feedback for object retrieval
US6564261B1 (en) * 1999-05-10 2003-05-13 Telefonaktiebolaget Lm Ericsson (Publ) Distributed system to intelligently establish sessions between anonymous users over various networks
US6542889B1 (en) * 2000-01-28 2003-04-01 International Business Machines Corporation Methods and apparatus for similarity text search based on conceptual indexing
US6854069B2 (en) * 2000-05-02 2005-02-08 Sun Microsystems Inc. Method and system for achieving high availability in a networked computer system
US6697800B1 (en) * 2000-05-19 2004-02-24 Roxio, Inc. System and method for determining affinity using objective and subjective data
JP4259861B2 (ja) * 2000-11-20 2009-04-30 ブリティッシュ・テレコミュニケーションズ・パブリック・リミテッド・カンパニー 情報プロバイダ
US7069367B2 (en) * 2000-12-29 2006-06-27 Intel Corporation Method and apparatus for avoiding race condition with edge-triggered interrupts
US6968334B2 (en) * 2001-05-15 2005-11-22 Nokia Corporation Method and business process to maintain privacy in distributed recommendation systems
US20030120593A1 (en) * 2001-08-15 2003-06-26 Visa U.S.A. Method and system for delivering multiple services electronically to customers via a centralized portal architecture
US7203343B2 (en) * 2001-09-21 2007-04-10 Hewlett-Packard Development Company, L.P. System and method for determining likely identity in a biometric database
US7512652B1 (en) * 2001-09-28 2009-03-31 Aol Llc, A Delaware Limited Liability Company Passive personalization of buddy lists
US7343365B2 (en) * 2002-02-20 2008-03-11 Microsoft Corporation Computer system architecture for automatic context associations
US7899067B2 (en) * 2002-05-31 2011-03-01 Cisco Technology, Inc. Method and apparatus for generating and using enhanced tree bitmap data structures in determining a longest prefix match
US7434220B2 (en) * 2002-09-16 2008-10-07 Clearcube Technology, Inc. Distributed computing infrastructure including autonomous intelligent management system
US7228351B2 (en) * 2002-12-31 2007-06-05 International Business Machines Corporation Method and apparatus for managing resource contention in a multisystem cluster
US20040139072A1 (en) * 2003-01-13 2004-07-15 Broder Andrei Z. System and method for locating similar records in a database
US20060168006A1 (en) * 2003-03-24 2006-07-27 Mr. Marvin Shannon System and method for the classification of electronic communication
US7831679B2 (en) * 2003-10-15 2010-11-09 Microsoft Corporation Guiding sensing and preferences for context-sensitive services
US7257571B2 (en) * 2004-01-26 2007-08-14 Microsoft Corporation Automatic query clustering
US7433869B2 (en) * 2005-07-01 2008-10-07 Ebrary, Inc. Method and apparatus for document clustering and document sketching

Also Published As

Publication number Publication date
US20120191714A1 (en) 2012-07-26
JP5230421B2 (ja) 2013-07-10
CN102682059A (zh) 2012-09-19
WO2007022199A2 (en) 2007-02-22
JP2009505290A (ja) 2009-02-05
US20070038659A1 (en) 2007-02-15
CA2619076A1 (en) 2007-02-22
US7739314B2 (en) 2010-06-15
CA2619076C (en) 2014-02-11
EP1915669A4 (en) 2011-01-05
CN102682059B (zh) 2014-11-12
CN101535944A (zh) 2009-09-16
US7962529B1 (en) 2011-06-14
EP1915669A2 (en) 2008-04-30
US8185561B1 (en) 2012-05-22
JP2013033551A (ja) 2013-02-14
WO2007022199A3 (en) 2009-05-22

Similar Documents

Publication Publication Date Title
JP5538510B2 (ja) 集合の類似性に基づく拡張性に富むユーザクラスタリング
US9177048B1 (en) Collaborative filtering
US10762539B2 (en) Resource estimation for queries in large-scale distributed database system
US10121169B2 (en) Table level distributed database system for big data storage and query
US8407226B1 (en) Collaborative filtering
US7890510B2 (en) Method and apparatus for analyzing community evolution in graph data streams
US10242388B2 (en) Systems and methods for efficiently selecting advertisements for scoring
KR20140056167A (ko) 검색 효율이 증가된 예비-쇼핑 예약 시스템을 위한 방법 및 시스템
US20110276583A1 (en) Automatic role determination for search configuration
WO2017141249A1 (en) Optimized data distribution system
Sisodia et al. Fast prediction of web user browsing behaviours using most interesting patterns
Makris et al. Efficient and adaptive discovery techniques of web services handling large data sets
Surianarayanan et al. An approach for selecting best available services through a new method of decomposing QoS constraints
Nguyen et al. Analyzing and visualizing web server access log file
US20030160609A9 (en) Method and facility for storing and indexing web browsing data
JP7230231B2 (ja) 同じグループ内の異種サブグループ間でのロバストなモデル性能
Zhang et al. Improving bandit learning via heterogeneous information networks: algorithms and applications
US20230169128A1 (en) Adversarial bandits policy for crawling highly dynamic content
US20150127635A1 (en) Mapping system for not provided keyword in secure search
Roy Mining Association Rules in Cloud
Varanasi User-based recommendation algorithm on Hadoop cluster
WO2023075774A1 (en) Machine learning techniques for user group based content distribution
Zhang Collaborative filtering based service ranking with invocation histories
Rana Query Processing in Distributed Database Systems
Westerski Overview of Cloud Computing large-scale processing technologies

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20121116

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131217

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140304

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140331

R150 Certificate of patent or registration of utility model

Ref document number: 5538510

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140428

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees