(57)【要約】【課題】効率的なクラスタリングを可能にする。【解決手段】本願に係る情報処理装置は、取得部と、生成部とを有する。取得部は、所定の基準に基づいて生成された複数のセントロイドが類似性に応じてエッジにより連結されたグラフ情報と、複数のオブジェクトとを取得する。生成部は、複数のオブジェクトのうち一のオブジェクトを対象オブジェクトとして、グラフ情報を探索し、複数のセントロイドのいずれかに対象オブジェクトを割当オブジェクトとして割り当てることにより、複数のオブジェクトの各々を割当オブジェクトとして複数のセントロイドのいずれかに割り当てたクラスタリング情報を生成する。【選択図】図４
2020027590.tif 000002
【特許請求の範囲】
【請求項１】
所定の基準に基づいて生成された複数のセントロイドが類似性に応じてエッジにより連結されたグラフ情報と、複数のオブジェクトとを取得する取得部と、
前記複数のオブジェクトのうち一のオブジェクトを対象オブジェクトとして、前記グラフ情報を探索し、前記複数のセントロイドのいずれかに前記対象オブジェクトを割当オブジェクトとして割り当てることにより、前記複数のオブジェクトの各々を前記割当オブジェクトとして前記複数のセントロイドのいずれかに割り当てたクラスタリング情報を生成する生成部と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記生成部は、
前記複数のセントロイドの各々と、前記対象オブジェクトとの類似性に基づいて、前記複数のセントロイドのいずれかに前記対象オブジェクトを前記割当オブジェクトとして割り当てることにより、前記クラスタリング情報を生成する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記生成部は、
前記複数のセントロイドの各々の前記割当オブジェクトに対応する値であるオブジェクト値に基づいて、前記複数のセントロイドの各々に対応する値であるセントロイド値を生成する
ことを特徴とする請求項１または請求項２に記載の情報処理装置。
【請求項４】
前記生成部は、
前記複数のセントロイドの各々の前記割当オブジェクトに対応するベクトルを前記オブジェクト値として、前記複数のセントロイドの各々に対応するベクトルを前記セントロイド値として生成する
ことを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記生成部は、
前記複数のセントロイドの各々の前記割当オブジェクトの前記オブジェクト値の平均値を、前記複数のセントロイドの各々のセントロイド値として生成する
ことを特徴とする請求項３または請求項４に記載の情報処理装置。
【請求項６】
前記生成部は、
前記複数のセントロイドのうち、一のセントロイドである第１セントロイドの前記割当オブジェクトである第１割当オブジェクトに変更があった場合、変更後の前記第１割当オブジェクトに基づいて、前記第１セントロイドを更新後セントロイドに更新する
ことを特徴とする請求項１〜５のいずれか１項に記載の情報処理装置。
【請求項７】
前記生成部は、
前記第１セントロイドが前記更新後セントロイドに更新された場合、前記更新後セントロイドに基づいて、前記グラフ情報を更新する
ことを特徴とする請求項６に記載の情報処理装置。
【請求項８】
前記生成部は、
前記グラフ情報が更新された場合、更新後の前記グラフ情報を用いて、前記更新後セントロイドの前記割当オブジェクトを更新することにより、前記クラスタリング情報を生成する
ことを特徴とする請求項７に記載の情報処理装置。
【請求項９】
前記生成部は、
前記更新後セントロイドに対応する値である更新後セントロイド値を生成する
ことを特徴とする請求項６〜８のいずれか１項に記載の情報処理装置。
【請求項１０】
前記生成部は、
変更後の前記第１割当オブジェクトに基づいて、前記更新後セントロイドの前記更新後セントロイド値を生成する
ことを特徴とする請求項９に記載の情報処理装置。
【請求項１１】
前記生成部は、
前記更新後セントロイドの前記更新後セントロイド値に基づいて、前記更新後セントロイドの前記割当オブジェクトを更新することにより、前記クラスタリング情報を生成する
ことを特徴とする請求項９または請求項１０に記載の情報処理装置。
【請求項１２】
前記生成部は、
前記第１セントロイドに対応する値である第１セントロイド値と、前記更新後セントロイド値と、前記第１割当オブジェクトに対応する値である第１オブジェクト値とに基づいて、前記第１割当オブジェクトを前記更新後セントロイドまたは他のセントロイドに割り当てた前記クラスタリング情報を生成する
ことを特徴とする請求項９〜１１のいずれか１項に記載の情報処理装置。
【請求項１３】
前記生成部は、
前記第１セントロイド値及び前記第１オブジェクト値の類似度と、前記更新後セントロイド値及び前記第１オブジェクト値の類似度との比較に基づいて、前記第１割当オブジェクトを前記更新後セントロイドまたは前記他のセントロイドに割り当てた前記クラスタリング情報を生成する
ことを特徴とする請求項１２に記載の情報処理装置。
【請求項１４】
前記生成部は、
前記第１割当オブジェクトが前記第１セントロイドよりも前記更新後セントロイドに類似する場合、前記第１割当オブジェクトを前記更新後セントロイドに割り当てた前記クラスタリング情報を生成する
ことを特徴とする請求項１２または請求項１３に記載の情報処理装置。
【請求項１５】
前記生成部は、
前記第１割当オブジェクトが前記更新後セントロイドよりも前記第１セントロイドに類似する場合、前記第１割当オブジェクトを前記対象オブジェクトとし、前記第１セントロイドを起点として、前記グラフ情報を探索することにより、前記第１割当オブジェクトを前記更新後セントロイドまたは前記他のセントロイドに割り当てた前記クラスタリング情報を生成する
ことを特徴とする請求項１２〜１４のいずれか１項に記載の情報処理装置。
【請求項１６】
前記生成部は、
前記複数のセントロイドのうち、前記第１セントロイドとは異なる第２セントロイドに対応する値である第２セントロイド値と、前記更新後セントロイド値と、前記第２セントロイドの前記割当オブジェクトである第２割当オブジェクトに対応する値である第２オブジェクト値とに基づいて、前記第２割当オブジェクトを前記更新後セントロイドまたは前記第２セントロイドに割り当てた前記クラスタリング情報を生成する
ことを特徴とする請求項９〜１５のいずれか１項に記載の情報処理装置。
【請求項１７】
前記生成部は、
前記第２セントロイド値及び前記第２オブジェクト値の類似度と、前記更新後セントロイド値及び前記第２オブジェクト値の類似度との比較に基づいて、前記第２割当オブジェクトを前記更新後セントロイドまたは前記第２セントロイドに割り当てた前記クラスタリング情報を生成する
ことを特徴とする請求項１６に記載の情報処理装置。
【請求項１８】
前記生成部は、
前記第２割当オブジェクトが前記第２セントロイドよりも前記更新後セントロイドに類似する場合、前記第２割当オブジェクトを前記更新後セントロイドに割り当てた前記クラスタリング情報を生成する
ことを特徴とする請求項１６または請求項１７に記載の情報処理装置。
【請求項１９】
前記生成部は、
前記第２割当オブジェクトが前記更新後セントロイドよりも前記第２セントロイドに類似する場合、前記第２割当オブジェクトを前記第２セントロイドに割り当てた前記クラスタリング情報を生成する
ことを特徴とする請求項１６〜１８のいずれか１項に記載の情報処理装置。
【請求項２０】
コンピュータが実行する情報処理方法であって、
所定の基準に基づいて生成された複数のセントロイドが類似性に応じてエッジにより連結されたグラフ情報と、複数のオブジェクトとを取得する取得工程と、
前記複数のオブジェクトのうち一のオブジェクトを対象オブジェクトとして、前記グラフ情報を探索し、前記複数のセントロイドのいずれかに前記対象オブジェクトを割当オブジェクトとして割り当てることにより、前記複数のオブジェクトの各々を前記割当オブジェクトとして前記複数のセントロイドのいずれかに割り当てたクラスタリング情報を生成する生成工程と、
を含むことを特徴とする情報処理方法。
【請求項２１】
所定の基準に基づいて生成された複数のセントロイドが類似性に応じてエッジにより連結されたグラフ情報と、複数のオブジェクトとを取得する取得手順と、
前記複数のオブジェクトのうち一のオブジェクトを対象オブジェクトとして、前記グラフ情報を探索し、前記複数のセントロイドのいずれかに前記対象オブジェクトを割当オブジェクトとして割り当てることにより、前記複数のオブジェクトの各々を前記割当オブジェクトとして前記複数のセントロイドのいずれかに割り当てたクラスタリング情報を生成する生成手順と、
をコンピュータに実行させることを特徴とする情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法、及び情報処理プログラムに関する。
【背景技術】
【０００２】
従来、種々のクラスタリングに関する技術が提供されている。例えば、新たな特徴データが属するクラスタのセントロイド移動量を算出し、累積の移動量が閾値を超えている場合にのみ、近似近傍探索用インデックスを更新する技術が提供されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１６−２１８８４７号公報
【特許文献２】特開２０１３−１８２３４１号公報
【特許文献３】特開２０１８−１０１２２５号公報
【特許文献４】特開２０１０−７９８７１号公報
【非特許文献】
【０００４】
【非特許文献１】岩崎雅二郎  "木構造型インデックスを利用した近似k最近傍グラフによる近傍検索",  情報処理学会論文誌,  2011/2,  Vol.  52,  No.  2.  pp.817-828.
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記の従来技術では、効率的なクラスタリングを可能にすることが難しい場合がある。例えば、上記の従来技術では、インデックスの更新については考慮されているものの、最初に行うクラスタリング処理については特に考慮されていない。そのため、適切にクラスタリングが行われない場合がある。このように適切にクラスタリングが行われない場合、最初のクラスタリング処理やその後の更新等に要する時間や処理負荷が増大する等、効率的なクラスタリングを行うことが難しい場合がある。
【０００６】
本願は、上記に鑑みてなされたものであって、効率的なクラスタリングを可能にする情報処理装置、情報処理方法、及び情報処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本願に係る情報処理装置は、所定の基準に基づいて生成された複数のセントロイドが類似性に応じてエッジにより連結されたグラフ情報と、複数のオブジェクトとを取得する取得部と、前記複数のオブジェクトのうち一のオブジェクトを対象オブジェクトとして、前記グラフ情報を探索し、前記複数のセントロイドのいずれかに前記対象オブジェクトを割当オブジェクトとして割り当てることにより、前記複数のオブジェクトの各々を前記割当オブジェクトとして前記複数のセントロイドのいずれかに割り当てたクラスタリング情報を生成する生成部と、を備えたことを特徴とする。
【発明の効果】
【０００８】
実施形態の一態様によれば、効率的なクラスタリングを可能にすることができるという効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】図１は、実施形態に係る情報処理の一例を示す図である。
【図２】図２は、実施形態に係る情報処理の一例を示す図である。
【図３】図３は、実施形態に係る情報処理システムの構成例を示す図である。
【図４】図４は、実施形態に係る情報処理装置の構成例を示す図である。
【図５】図５は、実施形態に係るオブジェクト情報記憶部の一例を示す図である。
【図６】図６は、実施形態に係るセントロイド情報記憶部の一例を示す図である。
【図７】図７は、実施形態に係るグラフ情報記憶部の一例を示す図である。
【図８】図８は、実施形態に係るクラスタリング情報記憶部の一例を示す図である。
【図９】図９は、実施形態に係る情報処理の一例を示すフローチャートである。
【図１０】図１０は、実施形態に係る起点用インデックス情報の概念図を示す図である。
【図１１】図１１は、実施形態に係る割当オブジェクトの更新の一例を示す図である。
【図１２】図１２は、実施形態に係る検索処理の一例を示すフローチャートである。
【図１３】図１３は、情報処理装置の機能を実現するコンピュータの一例を示すハードウェア構成図である。
【発明を実施するための形態】
【００１０】
以下に、本願に係る情報処理装置、情報処理方法、及び情報処理プログラムを実施するための形態（以下、「実施形態」と呼ぶ）について図面を参照しつつ詳細に説明する。なお、この実施形態により本願に係る情報処理装置、情報処理方法、及び情報処理プログラムが限定されるものではない。また、以下の各実施形態において同一の部位には同一の符号を付し、重複する説明は省略される。
【００１１】
（実施形態）
〔１．情報処理〕
図１を用いて、実施形態に係る情報処理の一例について説明する。図１は、実施形態に係る情報処理の一例を示す図である。図１では、情報処理装置１００（図４参照）が所定の基準に基づいて生成した複数のセントロイドを用いて、複数のオブジェクトをクラスタリングするための情報を生成する一例を示す。具体的には、情報処理装置１００は、複数のセントロイドをグラフ構造化したグラフインデックス情報（以下「グラフ情報」ともいう）を生成する。また、情報処理装置１００は、グラフ情報を用いて、各オブジェクトを複数のセントロイドのいずれかに割当オブジェクトとして割り当てた情報（以下「クラスタリング情報」ともいう）を生成する。すなわち、情報処理装置１００は、グラフ情報を用いて、各オブジェクトが複数のセントロイドのいずれかに割り当てられ、セントロイドに基づいてクラスタリングされたクラスタリング情報を生成する。また、図２で、クラスタリング情報の更新の一例を説明するが詳細は後述する。
【００１２】
図１の例では、情報処理装置１００が所定のデータ（オブジェクト）がベクトル化され、ベクトル化されたオブジェクトを対象としてクラスタリング情報を生成する場合を示す。すなわち、図１の例では、情報処理装置１００がベクトルをオブジェクトに対応するオブジェクト値として処理を行う場合を示す。なお、情報処理装置１００が用いる情報は、ベクトルに限らず、各対象の類似性を表現可能な情報であれば、どのような形式の情報であってもよい。例えば、情報処理装置１００は、各対象に対応する所定のデータや値を用いて対象をグラフ構造化したグラフ情報を用いてもよい。例えば、情報処理装置１００は、各対象から生成された所定の数値（例えば２進数の値や１６進数の値）を用いて対象をグラフ構造化したグラフ情報を用いてもよい。例えば、ベクトルに代えて、データ間の距離（類似度）が定義されていれば任意の形態のデータであっても良い。また、以下では、画像情報をオブジェクトとした場合を一例として説明するが、オブジェクトは、動画情報や音声情報等の種々の対象であってもよい。
【００１３】
例えば、情報処理装置１００は、数百万〜数億等の単位の膨大な画像情報に対応するオブジェクトを対象に処理を行うが、図面においてはその一部のみを図示する。例えば、情報処理装置１００は、図１中の空間情報ＳＰ１１に示すように、オブジェクトＮ１〜Ｎ２１等に示すような複数のオブジェクト（ベクトル）に関する情報を取得する。このように「オブジェクトＮ＊（＊は任意の数値）」と記載した場合、そのオブジェクトはオブジェクトＩＤ「Ｎ＊」により識別されるオブジェクトであることを示す。例えば、「オブジェクトＮ１」と記載した場合、そのオブジェクトはオブジェクトＩＤ「Ｎ１」により識別されるオブジェクトである。また、図１の例では、説明を簡単にするために、オブジェクトＮ１〜Ｎ２１のオブジェクトを図示して処理の概要を説明するが、オブジェクトＮ１〜Ｎ２１以外にも多数のオブジェクトが含まれる。また、各オブジェクトは、各オブジェクト（検索対象）に対応する。例えば、画像から抽出された複数の局所特徴量のそれぞれがオブジェクトであってもよい。また、例えば、オブジェクト間の距離が定義された種々のデータがオブジェクトであってもよい。
【００１４】
〔１−１．クラスタリング情報生成〕
まず、図１に示すように、情報処理装置１００は、オブジェクトに各々対応する複数のオブジェクトを示すオブジェクト情報を取得する（ステップＳ１１）。図１の例では、情報処理装置１００は、空間情報ＳＰ１１−１に示すようにオブジェクトＮ１〜Ｎ２１等を含むオブジェクト情報を取得する。例えば、情報処理装置１００は、オブジェクトＮ１〜Ｎ２１等を含む空間情報ＳＰ１１−１を取得する。
【００１５】
図１及び図２に示す例においては、ハッチングを付していない円形（○）にオブジェクトＩＤを付すことにより各オブジェクトを表現する。例えば、オブジェクトＩＤ「Ｎ１」により識別されるオブジェクト（オブジェクトＮ１）は、空間情報ＳＰ１１−１中の上部のハッチングを付していない円形（○）として表現する。例えば、図１に示す例において、オブジェクトＮ１〜Ｎ２１等は、オブジェクトがＮ次元の実数値にベクトル化されたベクトルデータに対応する。また、図１に示す空間情報ＳＰ１１−１〜ＳＰ１１−４は、空間情報の一部を模式的に示す図であり、空間情報ＳＰ１１−１〜ＳＰ１１−４は、情報処理により生成される情報に対応する空間情報である。また、以下では、空間情報ＳＰ１１−１〜ＳＰ１１−４について、特に区別なく説明する場合には、空間情報ＳＰ１１と記載する。
【００１６】
なお、図１中の空間情報ＳＰ１１は、ユークリッド空間であってもよい。また、図１に示す空間情報ＳＰ１１は、各オブジェクト間の距離等の説明のための概念的な図である。なお、例えば、図１に示す空間情報ＳＰ１１は、平面上に図示するため２次元の態様にて図示されるが、具体的には、例えば数次元〜数万次元等の多次元空間であるものとする。
【００１７】
本実施形態においては、空間情報ＳＰ１１における各オブジェクトの距離を対応する各オブジェクト（例えば画像等）間の類似度とする。ここで、図１及び図２に示す例においては、空間情報ＳＰ１１における各オブジェクト間の距離が小さいオブジェクト同士の類似度が高く、空間情報ＳＰ１１における各オブジェクト間の距離が大きいオブジェクト同士の類似度が低い。例えば、図１中の空間情報ＳＰ１１において、オブジェクトＩＤ「Ｎ２１」により識別されるオブジェクト（オブジェクトＮ２１）と、オブジェクトＩＤ「Ｎ２０」により識別されるオブジェクト（オブジェクトＮ２０）とは近接している、すなわち距離が小さい。そのため、オブジェクトＮ２１に対応するオブジェクトと、オブジェクトＮ２０に対応するオブジェクトとは類似度が高いことを示す。また、例えば、図１中の空間情報ＳＰ１１において、オブジェクトＩＤ「Ｎ２１」により識別されるオブジェクト（オブジェクトＮ２１）と、オブジェクトＩＤ「Ｎ２」により識別されるオブジェクト（オブジェクトＮ２）とは遠隔にある、すなわち距離が大きい。そのため、オブジェクトＮ２１に対応するオブジェクトと、オブジェクトＮ２に対応するオブジェクトとは類似度が低いことを示す。なお、類似度を示す指標は、本願の情報処理に適用可能であれば、どのような指標であってもよく、距離や向き等を対象とする指標であってもよい。例えば、類似度を示す指標は、本願の情報処理に適用可能であれば、ユークリッド距離やマハラノビス距離等の種々の指標が用いられてもよい。例えば、距離は、２つのオブジェクト間の類似度を反映するものであれば、どのような情報であってもよく、例えばコサイン類似度等の角度に関する情報であってもよい。
【００１８】
その後、情報処理装置１００は、セントロイド情報（以下単に「セントロイド」ともいう）を生成する（ステップＳ１２）。例えば、情報処理装置１００は、所定の基準に基づいて複数のセントロイドを生成する。情報処理装置１００は、所定の基準に基づいて決定される所定数のセントロイドを生成する。例えば、情報処理装置１００は、オブジェクト数に基づいて決定される所定数のセントロイドを生成する。例えば、情報処理装置１００は、オブジェクト数が「５００万」である場合、「５万（＝５００万／１００）」のセントロイドを生成してもよい。なお、上記は一例であり、情報処理装置１００は、種々の情報に基づいて、所定数のセントロイドを生成してもよい。例えば、情報処理装置１００は、ｋ−ｍｅａｎｓ法やｋ−ｍｅａｎｓ＋＋等の種々の従来技術を適宜用いて、所定数のセントロイドを生成してもよい。
【００１９】
例えば、情報処理装置１００は、所定数のセントロイドをランダムに生成してもよい。また、情報処理装置１００は、各セントロイド間の距離が遠くなるように所定数のセントロイドをランダムに生成してもよい。例えば、情報処理装置１００は、任意のセントロイドを初期のセントロイドとして生成し、その後はセントロイドの数が所定数に達するまで、生成済みのセントロイドからの平均距離が最も遠い位置（ベクトル）に対応するセントロイドを生成する処理を繰り返す。なお、上記は一例であり、情報処理装置１００は、種々の方法により、所定数のセントロイドを生成してもよい。
【００２０】
図１の例では、情報処理装置１００は、所定数のセントロイドをランダムに生成するものとする。これにより、情報処理装置１００は、図１中の空間情報ＳＰ１１−２に示すように、セントロイドＣ１〜Ｃ６等を含む複数のセントロイドを生成する。このように、「セントロイドＣ＊（＊は任意の数値）」と記載した場合、そのセントロイドはセントロイドＩＤ「Ｃ＊」により識別されるセントロイドであることを示す。例えば、「セントロイドＣ４」と記載した場合、そのセントロイドはセントロイドＩＤ「Ｃ４」により識別されるセントロイド（ベクトル）である。なお、情報処理装置１００は、オブジェクトＮ１〜Ｎ２１等から、セントロイドとするオブジェクトを選択することにより所定数のセントロイドを生成してもよい。例えば、情報処理装置１００は、オブジェクトＮ１〜Ｎ２１等から、所定数のオブジェクトを選択することにより所定数のセントロイドを生成してもよい。例えば、情報処理装置１００は、オブジェクトＮ１〜Ｎ２１等から、セントロイドとして利用するオブジェクトを選択、選択したオブジェクトのベクトルを自身のベクトルとするセントロイドを生成することにより、所定数のセントロイドを生成してもよい。情報処理装置１００は、上記のオブジェクトＮ１〜Ｎ２１等からの選択により、セントロイドＣ１〜Ｃ６等を含む複数のセントロイドを生成してもよい。図１の例では、情報処理装置１００がベクトルをセントロイドに対応するセントロイド値として処理を行う場合を示す。図１の例では、説明を簡単にするためにセントロイドＣ１〜Ｃ６のみを図示するが、情報処理装置１００は、オブジェクト数に基づいて、セントロイドＣ１〜Ｃ６を含む多数のセントロイドを生成してもよい。また、図１及び図２に示す例においては、ハッチングを付した円形（○）にセントロイドＩＤを付すことにより各セントロイドを表現する。例えば、セントロイドＩＤ「Ｃ１」により識別されるセントロイド（セントロイドＣ１）は、空間情報ＳＰ１１−１中の左上のハッチングを付した円形（○）として表現する。なお、図１及び図２に示す例においては、識別性の向上のために、セントロイドに対応する円形（○）は、オブジェクトに対応する円形（○）よりも大きく図示する。
【００２１】
図１の例では、情報処理装置１００は、セントロイド情報記憶部１２２−１に示すような複数のセントロイド情報（セントロイド）を生成する。このように、図１や図２では、セントロイド情報の更新に応じて、セントロイド情報記憶部１２２をセントロイド情報記憶部１２２−１、１２２−２として説明する。すなわち、図１や図２の例では、セントロイド情報記憶部１２２−１から、セントロイド情報記憶部１２２−２に更新されることを示す。また、セントロイド情報記憶部１２２−１、１２２−２は同一のセントロイド情報記憶部１２２である。また、以下では、セントロイド情報記憶部１２２−１、１２２−２について、特に区別することなく説明する場合には、セントロイド情報記憶部１２２と記載する。
【００２２】
図１中のセントロイド情報記憶部１２２に示す「セントロイドＩＤ」は、セントロイドを識別するための識別情報を示す。また、図１中のセントロイド情報記憶部１２２に示す「ベクトル情報」は、セントロイドＩＤにより識別されるセントロイド（ベクトル）に対応するベクトル情報を示す。例えば、セントロイドＩＤ「Ｃ１」により識別されるセントロイド（セントロイドＣ１）に対応するベクトル情報は、「１０，２４，５４，２・・・」のＮ次元ベクトルであることを示す。また、例えば、セントロイドＩＤ「Ｃ４」により識別されるセントロイド（セントロイドＣ４）に対応するベクトル情報は、「３２，１，１２０，３１・・・」のＮ次元ベクトルであることを示す。情報処理装置１００は、上記のようなセントロイドを生成し、生成したセントロイドの情報をセントロイド情報記憶部１２２−１に格納する。
【００２３】
そして、情報処理装置１００は、グラフ情報を生成する（ステップＳ１３）。例えば、情報処理装置１００は、複数のセントロイドをグラフ構造化したグラフインデックスであるグラフ情報を生成する。情報処理装置１００は、図１中の空間情報ＳＰ１１−３に示すグラフ情報ＧＲ１１のようなグラフ情報を生成する。図１の例では、情報処理装置１００は、セントロイドＣ１〜Ｃ６等を距離（類似度）に基づいてエッジで連結したグラフインデックスであるグラフ情報を生成する。例えば、情報処理装置１００は、グラフ生成に関する種々の従来技術を適宜用いて、グラフ情報を生成することにより、効率的にグラフ情報を生成してもよい。例えば、情報処理装置１００は、グラフ型のインデックスの生成方法を適宜用いて、グラフ情報を生成することにより、効率的にグラフ情報を生成してもよい。ここでいうグラフ型のインデックスの生成方法は、例えば、ノードを逐次追加する手法であり、一ノードをグラフに追加する時に、そのグラフを用いて追加対象ノードの近傍ノードを検索してその近傍ノードと対象ノードを無向エッジで接続するものである。
【００２４】
例えば、情報処理装置１００は、ｋ近傍グラフ（k-nearest  neighbor  graph）に関する技術を用いて、セントロイドＣ１〜Ｃ６等をエッジで連結したグラフインデックスであるグラフ情報を生成する。例えば、情報処理装置１００は、セントロイドＣ１〜Ｃ６等の各ノードをｋ個の近傍ノード（セントロイド）に接続する。これにより、情報処理装置１００は、セントロイドＣ１〜Ｃ６等の各ノードがｋ個の近傍ノード（セントロイド）に接続されたグラフ情報を生成する。例えば、情報処理装置１００は、特許文献４に記載されるような処理に基づいて、グラフ情報を生成してもよい。なお情報処理装置１００は、各セントロイド間の距離と、所定の閾値（以下「閾値ＴＨ１」とする）とを比較し、距離が閾値ＴＨ１以下であるセントロイド間をエッジにより連結してもよい。図１の例では、セントロイドＣ１とセントロイドＣ２との間の距離は、閾値ＴＨ１以下であり、セントロイドＣ１とセントロイドＣ３との間の距離は、閾値ＴＨ１以下であってもよい。また、セントロイドＣ２とセントロイドＣ３との間の距離は、閾値ＴＨ１以下であり、セントロイドＣ２とセントロイドＣ４との間の距離は、閾値ＴＨ１以下であってもよい。また、セントロイドＣ３とセントロイドＣ４との間の距離は、閾値ＴＨ１より大きく、セントロイドＣ３とセントロイドＣ５との間の距離は、閾値ＴＨ１以下であり、セントロイドＣ３とセントロイドＣ６との間の距離は、閾値ＴＨ１以下であってもよい。また、セントロイドＣ４とセントロイドＣ６との間の距離は、閾値ＴＨ１以下であってもよい。また、セントロイドＣ５とセントロイドＣ６との間の距離は、閾値ＴＨ１以下であってもよい。
【００２５】
図１の例では、情報処理装置１００は、各セントロイドＣ１〜Ｃ６間の距離と、閾値ＴＨ１とを比較し、距離が閾値ＴＨ１以下であるセントロイド間をエッジにより連結してもよい。具体的には、情報処理装置１００は、セントロイドＣ１とセントロイドＣ２との間の距離は閾値ＴＨ１以下であるため、セントロイドＣ１とセントロイドＣ２との間を連結してもよい。また、情報処理装置１００は、セントロイドＣ１とセントロイドＣ３との間の距離は閾値ＴＨ１以下であるため、セントロイドＣ１とセントロイドＣ３との間を連結してもよい。また、情報処理装置１００は、セントロイドＣ３とセントロイドＣ４との間の距離は閾値ＴＨ１より大きいため、セントロイドＣ３とセントロイドＣ４との間を連結しない。なお、上記は一例であり、情報処理装置１００は、グラフ情報を生成可能であれば、どのような方法によりグラフ情報を生成してもよい。
【００２６】
これにより、図１の例では、情報処理装置１００は、セントロイドＣ１〜Ｃ６等の複数のセントロイドを、エッジＥ１〜Ｅ８等のエッジで連結するグラフ情報ＧＲ１１を生成する。このように「エッジＥ＊（＊は任意の数値）」と記載した場合、そのエッジはエッジＩＤ「Ｅ＊」により識別されるエッジであることを示す。例えば、「エッジＥ４」と記載した場合、そのエッジはエッジＩＤ「Ｅ４」により識別されるエッジである。図１の例では、情報処理装置１００は、無向エッジであるエッジＥ１〜Ｅ８等に関する情報を含むグラフ情報ＧＲ１１を生成する。具体的には、情報処理装置１００は、セントロイドＣ１とセントロイドＣ２との間を連結するエッジＥ１やセントロイドＣ１とセントロイドＣ３との間を連結するエッジＥ２等を生成する。
【００２７】
図１中のグラフ情報ＧＲ１１に示すように、セントロイドＣ１とセントロイドＣ３とは、エッジＥ２により連結される。すなわち、エッジＥ２は、セントロイドＣ１とセントロイドＣ３とを連結する。例えば、セントロイドＣ１またはセントロイドＣ３のうち一方を参照元とし、他方を参照先として連結されるエッジＥ２により、セントロイドＣ１とセントロイドＣ３との間を双方向に辿ることが可能となる。なお、各オブジェクトを連結するエッジは、無向エッジに限らず、種々のエッジであってもよい。例えば、各オブジェクトを連結するエッジは、相互に参照可能な双方向エッジであってもよい。また、例えば、各オブジェクトを連結するエッジは、オブジェクトを連結する方向が有る有向エッジであってもよい。ここでいう、有向エッジとは、一方向にしかデータを辿れないエッジを意味してもよい。例えば、エッジは、連結する一方から他方へのみ辿ることができる有向エッジであってもよい。
【００２８】
図１の例では、情報処理装置１００は、グラフ情報記憶部１２３−１に示すような複数のセントロイド情報（セントロイド）を生成する。このように、図１や図２では、グラフ情報記憶部１２３の更新に応じて、グラフ情報記憶部１２３をグラフ情報記憶部１２３−１、１２３−２として説明する。すなわち、図１や図２の例では、グラフ情報記憶部１２３−１から、グラフ情報記憶部１２３−２に更新されることを示す。また、グラフ情報記憶部１２３−１、１２３−２は同一のグラフ情報記憶部１２３である。また、以下では、グラフ情報記憶部１２３−１、１２３−２について、特に区別することなく説明する場合には、グラフ情報記憶部１２３と記載する。
【００２９】
図１中のグラフ情報記憶部１２３に示す「セントロイドＩＤ」は、グラフ情報（グラフデータ）における各セントロイドを識別するための識別情報を示す。図１中のグラフ情報記憶部１２３に示す「エッジ情報」は、対応するセントロイドに接続されるエッジに関する情報を示す。また、「エッジＩＤ」は、セントロイド間を連結するエッジを識別するための識別情報を示す。また、「参照先」は、エッジにより連結された参照先（セントロイド）を示す情報を示す。
【００３０】
図１の例では、セントロイドＩＤ「Ｃ１」には、参照先をセントロイドＩＤ「Ｃ２」とするエッジＩＤ「Ｅ１」を含むエッジ情報が対応付けて記憶される。このように、セントロイドＩＤ「Ｃ１」により識別されるセントロイド（セントロイドＣ１）は、エッジＩＤ「Ｅ１」により識別されるエッジ（エッジＥ１）により、セントロイドＩＤ「Ｃ２」により識別されるセントロイド（セントロイドＣ２）と連結されることを示す。すなわち、図１の例では、セントロイドＣ１からはセントロイドＣ２に辿ることができることを示す。また、図１の例では、セントロイドＩＤ「Ｃ２」には、参照先をセントロイドＩＤ「Ｃ１」とするエッジＩＤ「Ｅ１」を含むエッジ情報が対応付けて記憶される。このように、セントロイドＣ２は、エッジＥ１により、セントロイドＣ１と連結されることを示す。すなわち、図１の例では、セントロイドＣ２からはセントロイドＣ１に辿ることができることを示す。このように、図１の例では、セントロイドＣ１とセントロイドＣ２とはエッジＥ１により双方向に辿ることができることを示す。
【００３１】
そして、情報処理装置１００は、グラフ情報を用いて、クラスタリング情報を生成する（ステップＳ１４）。例えば、情報処理装置１００は、グラフ情報を探索し、複数のセントロイドのいずれかに各オブジェクトを割当オブジェクトとして割り当てることにより、クラスタリング情報を生成する。情報処理装置１００は、図１中の空間情報ＳＰ１１−４に示すようなクラスタリング情報を生成する。図１の例では、情報処理装置１００は、グラフ情報ＧＲ１１を用いて、オブジェクトＮ１〜Ｎ２１等をクラスタリングＣ１〜Ｃ６等に割り当てたクラスタリング情報を生成する。これにより、情報処理装置１００は、オブジェクトＮ１〜Ｎ２１等をクラスタリングＣ１〜Ｃ６等に対応する複数のクラスタに分割したクラスタリング情報を生成する。
【００３２】
例えば、情報処理装置１００は、複数のオブジェクトＮ１〜Ｎ２１等のうち一のオブジェクトを対象オブジェクト（検索対象）として、グラフ情報ＧＲ１１を探索することにより、複数のオブジェクトＮ１〜Ｎ２１等の各々を割当オブジェクトとして複数のセントロイドＣ１〜Ｃ６等のいずれかに割り当てたクラスタリング情報を生成する。例えば、情報処理装置１００は、オブジェクトＮ１を対象オブジェクトとする場合、オブジェクトＮ１を検索クエリとして、グラフ情報ＧＲ１１を探索し、オブジェクトＮ１に近傍のセントロイドを抽出する。例えば、情報処理装置１００は、オブジェクトＮ１を対象オブジェクトとする場合、オブジェクトＮ１を検索クエリとして、グラフ情報ＧＲ１１を探索し、オブジェクトＮ１に最も近傍であると推定されるセントロイドＣ１を抽出する。このように、情報処理装置１００は、オブジェクトＮ１を対象オブジェクトとする場合、オブジェクトＮ１の最近傍のセントロイドと推定されるセントロイドを抽出する。そして、情報処理装置１００は、抽出したセントロイド（以下「割当先セントロイド」ともいう）にオブジェクトＮ１を割当オブジェクトとして割り当てる。
【００３３】
このように、情報処理装置１００は、各オブジェクトを対象オブジェクトとして、グラフ情報ＧＲ１１を検索（探索）することにより、各オブジェクトの近傍に位置するセントロイドを抽出する。まず、情報処理装置１００は、セントロイドＣ１〜Ｃ６から、探索の起点となるセントロイド（以下「起点セントロイド」ともいう）を選択（抽出）する。図１の例では、情報処理装置１００は、セントロイドＣ１〜Ｃ６から、探索の起点となる起点セントロイドをランダムに抽出する。なお、情報処理装置１００は、種々の情報を用いて、起点セントロイドを抽出（決定）してもよいが、この点についての詳細は後述する。
【００３４】
そして、情報処理装置１００は、起点セントロイドを起点として、グラフ情報ＧＲ１１を検索することにより、各オブジェクトについて割当先セントロイドを抽出する。例えば、情報処理装置１００は、１つ（所定数）のセントロイドを割当先セントロイドとして抽出する。例えば、情報処理装置１００は、図１２に示すような検索処理により、各オブジェクトの割当先セントロイドを抽出してもよいが、詳細は後述する。
【００３５】
例えば、情報処理装置１００は、オブジェクトＮ１を対象オブジェクトとする場合、ランダムに抽出したセントロイドＣ３を起点セントロイドとして、グラフ情報ＧＲ１１を探索することにより、セントロイドＣ１をオブジェクトＮ１の割当先セントロイドとして抽出する。図１の例では、情報処理装置１００は、オブジェクトＮ１からの距離が最も近いセントロイドＣ１をオブジェクトＮ１の割当先セントロイドとして抽出する。例えば、情報処理装置１００は、起点セントロイドであるセントロイドＣ３を起点として、グラフ情報ＧＲ１１中のエッジを辿ることにより、セントロイドＣ１をオブジェクトＮ１の割当先セントロイドとして抽出する。
【００３６】
これにより、情報処理装置１００は、セントロイドＣ１にオブジェクトＮ１を割当オブジェクトとして割り当てることを示す情報を生成する。図１の例では、情報処理装置１００は、オブジェクトＮ１をセントロイドＣ１に割当エッジＡＳにより連結することにより、セントロイドＣ１にオブジェクトＮ１を割り当てることを示す情報を生成する。なお、図１では、割当エッジＡＳのみ符号を付すが、セントロイドとオブジェクトとを連結する点線は、オブジェクトのセントロイドへの割当てを示す。各オブジェクトは、点線で結ばれたセントロイドの割当オブジェクトとして割り当てられたことを示す。
【００３７】
また、例えば、情報処理装置１００は、オブジェクトＮ２を対象オブジェクトとする場合、ランダムに抽出したセントロイドＣ２を起点セントロイドとして、グラフ情報ＧＲ１１を探索することにより、セントロイドＣ１をオブジェクトＮ２の割当先セントロイドとして抽出する。これにより、情報処理装置１００は、セントロイドＣ２にオブジェクトＮ１を割当オブジェクトとして割り当てることを示す情報を生成する。
【００３８】
また、例えば、情報処理装置１００は、オブジェクトＮ７を対象オブジェクトとする場合、ランダムに抽出したセントロイドＣ２を起点セントロイドとして、グラフ情報ＧＲ１１を探索することにより、セントロイドＣ２をオブジェクトＮ７の割当先セントロイドとして抽出する。これにより、情報処理装置１００は、セントロイドＣ２にオブジェクトＮ７を割当オブジェクトとして割り当てることを示す情報を生成する。
【００３９】
また、例えば、情報処理装置１００は、オブジェクトＮ９を対象オブジェクトとする場合、ランダムに抽出したセントロイドＣ２を起点セントロイドとして、グラフ情報ＧＲ１１を探索することにより、セントロイドＣ３をオブジェクトＮ９の割当先セントロイドとして抽出する。これにより、情報処理装置１００は、セントロイドＣ３にオブジェクトＮ９を割当オブジェクトとして割り当てることを示す情報を生成する。
【００４０】
また、例えば、情報処理装置１００は、オブジェクトＮ１３を対象オブジェクトとする場合、ランダムに抽出したセントロイドＣ５を起点セントロイドとして、グラフ情報ＧＲ１１を探索することにより、セントロイドＣ４をオブジェクトＮ１３の割当先セントロイドとして抽出する。これにより、情報処理装置１００は、セントロイドＣ４にオブジェクトＮ１３を割当オブジェクトとして割り当てることを示す情報を生成する。
【００４１】
また、例えば、情報処理装置１００は、オブジェクトＮ１６を対象オブジェクトとする場合、ランダムに抽出したセントロイドＣ１を起点セントロイドとして、グラフ情報ＧＲ１１を探索することにより、セントロイドＣ５をオブジェクトＮ１６の割当先セントロイドとして抽出する。これにより、情報処理装置１００は、セントロイドＣ５にオブジェクトＮ１６を割当オブジェクトとして割り当てることを示す情報を生成する。
【００４２】
また、例えば、情報処理装置１００は、オブジェクトＮ２１を対象オブジェクトとする場合、ランダムに抽出したセントロイドＣ１を起点セントロイドとして、グラフ情報ＧＲ１１を探索することにより、セントロイドＣ６をオブジェクトＮ２１の割当先セントロイドとして抽出する。これにより、情報処理装置１００は、セントロイドＣ６にオブジェクトＮ２１を割当オブジェクトとして割り当てることを示す情報を生成する。
【００４３】
図１の例では、情報処理装置１００は、上記のような処理により、オブジェクトＮ１〜Ｎ２１等をセントロイドＣ１〜Ｃ６のいずれかに割り当てたクラスタリング情報を生成する。情報処理装置１００は、図１中のクラスタリング情報記憶部１２４−１に示すようなクラスタリング情報を生成する。このように、図１や図２では、クラスタリング情報記憶部１２４の更新に応じて、クラスタリング情報記憶部１２４をクラスタリング情報記憶部１２４−１、１２４−２として説明する。すなわち、図１や図２の例では、クラスタリング情報記憶部１２４−１から、クラスタリング情報記憶部１２４−２に更新されることを示す。また、クラスタリング情報記憶部１２４−１、１２４−２は同一のクラスタリング情報記憶部１２４である。また、以下では、クラスタリング情報記憶部１２４−１、１２４−２について、特に区別することなく説明する場合には、クラスタリング情報記憶部１２４と記載する。
【００４４】
図１中のクラスタリング情報記憶部１２４に示す「セントロイドＩＤ」は、セントロイドを識別するための識別情報を示す。また、図１中のクラスタリング情報記憶部１２４に示す「オブジェクトＩＤ」は、セントロイドＩＤにより識別されるセントロイドに対応付けられたオブジェクトを示す。
【００４５】
図１に示す例においては、セントロイドＩＤ「Ｃ１」により識別されるセントロイド（セントロイドＣ１）に対応付けられたオブジェクトは、オブジェクトＮ１、Ｎ２、Ｎ３、Ｎ４等のオブジェクトであることを示す。また、図１に示す例においては、セントロイドＩＤ「Ｃ２」により識別されるセントロイド（セントロイドＣ２）に対応付けられたオブジェクトは、オブジェクトＮ５、Ｎ６、Ｎ７、Ｎ８等のオブジェクトであることを示す。
【００４６】
これにより、情報処理装置１００は、各オブジェクトＮ１〜Ｎ２１等が、セントロイドＣ１〜Ｃ６の各々に対応するクラスタのうち、いずれのクラスタに属するかを示すクラスタリング情報を適切に生成することができる。具体的には、情報処理装置１００は、オブジェクトＮ１〜Ｎ４がセントロイドＣ１に対応するクラスタに属することを示すクラスタリング情報を生成する。また、情報処理装置１００は、オブジェクトＮ５〜Ｎ８がセントロイドＣ２に対応するクラスタに属することを示すクラスタリング情報を生成する。また、情報処理装置１００は、オブジェクトＮ９〜Ｎ１１がセントロイドＣ３に対応するクラスタに属することを示すクラスタリング情報を生成する。また、情報処理装置１００は、オブジェクトＮ１２〜Ｎ１４がセントロイドＣ４に対応するクラスタに属することを示すクラスタリング情報を生成する。また、情報処理装置１００は、オブジェクトＮ１５〜Ｎ１７がセントロイドＣ５に対応するクラスタに属することを示すクラスタリング情報を生成する。また、情報処理装置１００は、オブジェクトＮ１８〜Ｎ２１がセントロイドＣ６に対応するクラスタに属することを示すクラスタリング情報を生成する。
【００４７】
上述したように、情報処理装置１００は、グラフ情報ＧＲ１１を用いることにより、オブジェクトＮ１〜Ｎ２１をセントロイドＣ１〜Ｃ６のいずれかに割り当てたクラスタリング情報を適切に生成することができる。具体的には、情報処理装置１００は、各オブジェクトＮ１〜Ｎ２１等を対象オブジェクトとして、グラフ情報ＧＲ１１を探索し、割当先セントロイドを抽出することにより、各オブジェクトＮ１〜Ｎ２１等が属するクラスタを適切に決定することができる。例えば、情報処理装置１００は、各オブジェクトＮ１〜Ｎ２１等を対象オブジェクトとして、グラフ情報ＧＲ１１を探索することにより、対象オブジェクトと全セントロイドとの類似度（距離）を比較することなく、対象オブジェクトの割当先セントロイドを抽出することができる。したがって、情報処理装置１００は、対象オブジェクトと全セントロイドとの類似度（距離）を比較する場合に比べて、より高速に各オブジェクトをクラスタリングすることができる。すなわち、情報処理装置１００は、複数のセントロイドをグラフ構造化したグラフインデックス（グラフ情報）を用いることにより、効率的なクラスタリングを可能にすることができる。
【００４８】
〔１−２．割当オブジェクトの更新〕
情報処理装置１００は、各セントロイドの空間情報ＳＰ１１における位置を割当オブジェクトに応じて更新する。情報処理装置１００は、各セントロイドのベクトルを割当オブジェクトのベクトルに応じて更新する。例えば、情報処理装置１００は、一のセントロイドに割り当てられた複数データ（割当オブジェクト）の中央座標（重心）を一のセントロイドの座標（セントロイド値）としてもよい。例えば、情報処理装置１００は、一のセントロイドの割当オブジェクトに対応するベクトルの平均値を、一のセントロイドのベクトルとして生成する。この点について図２を用いて説明する。図２は、実施形態に係る情報処理の一例を示す図である。図２の例では、セントロイドＣ３のベクトルの更新を一例として説明する。
【００４９】
図２の例では、情報処理装置１００は、セントロイドＣ３にオブジェクトＮ９〜Ｎ１１が割当オブジェクトとして割り当てられたため、セントロイドＣ３の割当オブジェクトの変更に応じて、セントロイドＣ３を更新する。このように、情報処理装置１００は、一のセントロイド（「第１セントロイド」ともいう）の割当オブジェクト（「第１割当オブジェクト」ともいう）に変更があった場合、変更後の第１割当オブジェクトに基づいて、第１セントロイド（更新前セントロイド）を更新後セントロイドに更新する。
【００５０】
図２に示す空間情報ＳＰ１１−４は、図１に示す空間情報ＳＰ１１−４と同様である。また、図２に示す空間情報ＳＰ１１−４〜ＳＰ１１−７は、空間情報の一部を模式的に示す図であり、空間情報ＳＰ１１−４〜ＳＰ１１−７は、情報処理により生成される情報に対応する空間情報である。また、以下では、空間情報ＳＰ１１−４〜ＳＰ１１−７について、特に区別なく説明する場合には、空間情報ＳＰ１１と記載する。また、空間情報ＳＰ１１−４〜ＳＰ１１−７においては、図の見易さのため、他の空間情報ＳＰ１１で示した符号の図示を適宜省略する。例えば、空間情報ＳＰ１１−５では、空間情報ＳＰ１１−４に示したセントロイドＣ１やオブジェクトＮ１等に対応する符号の図示を省略する。
【００５１】
図２の例では、情報処理装置１００は、セントロイドＣ３を更新する（ステップＳ２１）。なお、図２の例では、更新前後のセントロイドＣ３の識別のために、更新前のセントロイドＣ３を更新前セントロイドＯＣ３とし、更新後のセントロイドＣ３を更新後セントロイドＮＣ３とする場合がある。情報処理装置１００は、セントロイドＣ３の割当オブジェクトであるオブジェクトＮ９〜Ｎ１１に基づいて、セントロイドＣ３を更新する。具体的には、情報処理装置１００は、オブジェクトＮ９〜Ｎ１１のオブジェクト値であるベクトルに基づいて、セントロイドＣ３のセントロイド値であるベクトルを更新する。情報処理装置１００は、オブジェクトＮ９〜Ｎ１１のオブジェクト値であるベクトルに基づいて、更新前セントロイドＯＣ３のベクトルから、更新後セントロイドＮＣ３のベクトルにセントロイドＣ３のベクトルを更新する。
【００５２】
これにより、情報処理装置１００は、セントロイド情報記憶部１２２に記憶されたセントロイドＣ３のベクトルを更新する（ステップＳ２１−１）。図２の例では、情報処理装置１００は、セントロイド情報記憶部１２２−１に示すセントロイドＣ３のベクトルからセントロイド情報記憶部１２２−２に示すセントロイドＣ３のベクトルに更新する。具体的には、情報処理装置１００は、セントロイド情報記憶部１２２−１に示す更新前セントロイドＯＣ３のベクトル「２５，８，５５，２・・・」から、セントロイド情報記憶部１２２−２に示す更新後セントロイドＮＣ３のベクトル「２８，１１，４３，３・・・」にセントロイドＣ３のベクトルを更新する。これにより、情報処理装置１００は、空間情報ＳＰ１１−５に示すように、更新前セントロイドＯＣ３から更新後セントロイドＮＣ３にセントロイドＣ３を更新する。
【００５３】
そして、情報処理装置１００は、グラフ情報を更新する（ステップＳ２２）。情報処理装置１００は、セントロイドＣ３の更新に応じて、グラフ情報ＧＲ１１を更新する。情報処理装置１００は、図２中の空間情報ＳＰ１１−６に示すようにグラフ情報ＧＲ１１を更新する。なお、通常クラスタリングの終盤になるほどセントロイドの更新による移動距離は大きくなくなる。したがって、セントロイドが更新されたからといってグラフを必ずしも更新しなければならないわけではない。セントロイドの更新回数や移動距離に対する閾値を事前に決めておき、その閾値を越えた場合にのみ、グラフを更新しても良い。例えば、情報処理装置１００は、セントロイドの更新回数や移動距離に対する閾値を用いて、グラフの更新を行うかを決定（判定）してもよい。すなわち、情報処理装置１００は、セントロイドの更新における所定の基準に基づいて、グラフの更新を行うかを決定（判定）してもよい。例えば、情報処理装置１００は、セントロイドの更新回数に関する基準（例えば閾値等）を用いる場合、セントロイドの更新回数を示す情報（更新回数情報）を記憶部１２０（図４参照）に記憶してもよい。そして、情報処理装置１００は、記憶部１２０（図４参照）に記憶されたセントロイドの更新回数に対する閾値（回数閾値）を取得し、取得した回数閾値と、更新回数情報が示す更新回数とを比較することにより、グラフの更新を行うかを決定（判定）してもよい。例えば、情報処理装置１００は、更新回数が回数閾値以下である場合、グラフを更新すると決定し、グラフを更新してもよい。例えば、情報処理装置１００は、更新回数が回数閾値より大きい場合、グラフを更新しないと決定し、グラフを更新しなくてもよい。
【００５４】
例えば、情報処理装置１００は、更新前のセントロイド（ノード）を探索開始セントロイド（ノード）として更新後のセントロイドの近傍セントロイド（ノード）を検索し、更新後のセントロイド（ノード）を追加して、その近傍セントロイド（ノード）へエッジで接続する。この場合、情報処理装置１００は、検索結果として得られた近傍セントロイド（ノード）と更新後のセントロイド（ノード）をエッジにより接続する。そして、情報処理装置１００は、更新前のセントロイド（ノード）を削除する。例えば、情報処理装置１００は、更新前のセントロイド（ノード）と更新前のセントロイド（ノード）に接続されるエッジを削除する。すなわち、情報処理装置１００は、更新前のセントロイド（ノード）を削除するとともに、更新前のセントロイド（ノード）の接続先との関係を削除する。
【００５５】
図２の例では、情報処理装置１００は、更新前セントロイドＯＣ３を探索開始（起点セントロイド）として更新後セントロイドＮＣ３の近傍セントロイドを検索し、更新後セントロイドＮＣ３をグラフ情報ＧＲ１１に追加して、更新後セントロイドＮＣ３と近傍セントロイドとをエッジで接続する。例えば、情報処理装置１００は、検索結果として得られたセントロイドＣ１、Ｃ２、Ｃ４〜Ｃ６と更新後セントロイドＮＣ３とをエッジにより接続する。そして、情報処理装置１００は、更新前セントロイドＯＣ３を削除する。例えば、情報処理装置１００は、更新前セントロイドＯＣ３に接続されるエッジを削除する。なお、図２の例では、更新前セントロイドＯＣ３と更新後セントロイドＮＣ３とで同じ接続先（セントロイド）であるエッジは、同じエッジＩＤのエッジとして処理（管理）する場合を示すが、更新後のエッジは更新前のエッジは異なるエッジＩＤにより処理（管理）されてもよい。
【００５６】
図２の例では、情報処理装置１００は、更新後セントロイドＮＣ３の接続先には、更新後セントロイドＮＣ３の接続先であったセントロイドＣ１、Ｃ２、Ｃ５、Ｃ６が含まれるため、セントロイドＣ１、Ｃ２、Ｃ５、Ｃ６からのエッジの接続先を更新前セントロイドＯＣ３から更新後セントロイドＮＣ３に変更する。この場合、更新前セントロイドＯＣ３のエッジの一部または全部が除かれるため、例えば、情報処理装置１００は、更新前セントロイドＯＣ３に接続する残りのエッジと更新前セントロイドＯＣ３とを削除する。図２の例では、セントロイドＣ１、Ｃ２、Ｃ５、Ｃ６からのエッジＥ２、Ｅ３、Ｅ５、Ｅ６の接続先を更新前セントロイドＯＣ３から更新後セントロイドＮＣ３に変更する。そして、情報処理装置１００は、更新前セントロイドＯＣ３により、更新後セントロイドＮＣ３をセントロイドＣ３として管理する。また、図２の例では、情報処理装置１００は、更新後セントロイドＮＣ３とセントロイドＣ４との間をエッジＥ５０により連結する。そして、情報処理装置１００は、更新前セントロイドＯＣ３により、更新後セントロイドＮＣ３をセントロイドＣ３として管理する。これにより、情報処理装置１００は、セントロイドＣ３とセントロイドＣ４との間をエッジＥ５０により連結する。このように、図２の例では、情報処理装置１００は、上述したグラフ情報ＧＲ１１を用いた処理により、セントロイドＣ３とセントロイドＣ４との間を連結するエッジＥ５０をグラフ情報ＧＲ１１に追加することにより、グラフ情報ＧＲ１１を更新する。
【００５７】
これにより、情報処理装置１００は、グラフ情報記憶部１２３に記憶されたグラフ情報を更新する（ステップＳ２２−１）。図２の例では、情報処理装置１００は、グラフ情報記憶部１２３−１に示すグラフ情報からグラフ情報記憶部１２３−２に示すグラフ情報に更新する。具体的には、情報処理装置１００は、グラフ情報記憶部１２３−１に示すグラフ情報ＧＲ１１にセントロイドＣ３とセントロイドＣ４との間を連結するエッジＥ５０を追加することにより、グラフ情報記憶部１２３−２に示すグラフ情報ＧＲ１１に更新する。例えば、情報処理装置１００は、グラフ情報記憶部１２３−２に示すように、参照先をセントロイドＣ４とするエッジＥ５０を示すエッジ情報をセントロイドＩＤ「Ｃ３」に対応付けて記憶する。また、図２では図示を省略するが、情報処理装置１００は、グラフ情報記憶部１２３（図７参照）に示すように、参照先をセントロイドＣ３とするエッジＥ５０を示すエッジ情報をセントロイドＩＤ「Ｃ４」に対応付けて記憶する。
【００５８】
なお、情報処理装置１００は、グラフの更新は、変更があったセントロイドに関する追加及び削除により行ってもよいが、一からグラフを生成し直してもよい。例えば、図２の例では、情報処理装置１００は、更新後セントロイドＮＣ３をセントロイドＣ３とし、ｋ近傍グラフ（k-nearest  neighbor  graph）に関する技術を用いて、セントロイドＣ１〜Ｃ６等をエッジで連結したグラフ情報を再度生成してもよい。例えば、情報処理装置１００は、グラフ情報ＧＲ１１から全エッジを除き、セントロイドＣ１〜Ｃ６等の各ノードをｋ個の近傍ノード（セントロイド）に新たなエッジを接続する。これにより、情報処理装置１００は、セントロイド更新後におけるセントロイドＣ１〜Ｃ６等がｋ個の近傍セントロイドに接続されたグラフ情報ＧＲ１１に更新してもよい。
【００５９】
そして、情報処理装置１００は、割当オブジェクトを更新する（ステップＳ２３）。例えば、情報処理装置１００は、ベクトルが更新された第１セントロイドであるセントロイドＣ３の割当オブジェクトや、他のセントロイドＣ１、Ｃ２、Ｃ４〜６の割当オブジェクトを更新する。情報処理装置１００は、図２中の空間情報ＳＰ１１−７に示すように割当オブジェクトを更新したクラスタリング情報を生成する。
【００６０】
情報処理装置１００は、ベクトルが更新されたセントロイドＣ３の割当オブジェクトを更新する。情報処理装置１００は、セントロイドＣ３の更新前セントロイド値（第１セントロイド値）と、セントロイドＣ３の更新後セントロイド値と、第１割当オブジェクトであるオブジェクトＮ９〜Ｎ１１のオブジェクト値（第１オブジェクト値）とに基づいて、オブジェクトＮ９〜Ｎ１１を更新後のセントロイドＣ３または他のセントロイドＣ１、Ｃ２、Ｃ４〜６に割り当てたクラスタリング情報を生成する。図２の例では、情報処理装置１００は、更新前セントロイドＯＣ３のベクトル及びオブジェクトＮ９〜Ｎ１１のベクトルの類似度と、更新後セントロイドＮＣ３のベクトル及びオブジェクトＮ９〜Ｎ１１のベクトルの類似度との比較に基づいて、オブジェクトＮ９〜Ｎ１１を更新後のセントロイドＣ３または他のセントロイドＣ１、Ｃ２、Ｃ４〜６に割り当てたクラスタリング情報を生成する。
【００６１】
例えば、情報処理装置１００は、第１割当オブジェクトのベクトルが更新前セントロイドＯＣ３のベクトルよりも更新後セントロイドＮＣ３のベクトルに類似する場合、第１割当オブジェクトを更新後のセントロイドＣ３に割り当てたクラスタリング情報を生成する。例えば、第１割当オブジェクトのベクトルが更新前セントロイドＯＣ３のベクトルよりも更新後セントロイドＮＣ３のベクトルに類似する場合、その第１割当オブジェクトの最近傍セントロイドは、セントロイドＣ３のままであると推定される。そのため、情報処理装置１００は、第１割当オブジェクトのベクトルが更新前セントロイドＯＣ３のベクトルよりも更新後セントロイドＮＣ３のベクトルに類似する場合、第１割当オブジェクトのセントロイドＣ３への割当てを維持したクラスタリング情報を生成する。
【００６２】
図２の例では、第１割当オブジェクトであるオブジェクトＮ９のベクトルは、更新前セントロイドＯＣ３のベクトルよりも更新後セントロイドＮＣ３のベクトルに類似する。また、図２の例では、第１割当オブジェクトであるオブジェクトＮ１０のベクトルは、更新前セントロイドＯＣ３のベクトルよりも更新後セントロイドＮＣ３のベクトルに類似する。また、図２の例では、第１割当オブジェクトであるオブジェクトＮ１１のベクトルは、更新前セントロイドＯＣ３のベクトルよりも更新後セントロイドＮＣ３のベクトルに類似する。
【００６３】
情報処理装置１００は、更新前セントロイドＯＣ３のベクトル及びオブジェクトＮ９のベクトルの類似度と、更新後セントロイドＮＣ３のベクトル及びオブジェクトＮ９のベクトルの類似度との比較に基づいて、オブジェクトＮ９を更新後のセントロイドＣ３に割り当てたクラスタリング情報を生成する。すなわち、情報処理装置１００は、オブジェクトＮ９が更新前セントロイドＯＣ３よりも更新後セントロイドＮＣ３の近傍に位置するため、オブジェクトＮ９のセントロイドＣ３への割当てを維持したクラスタリング情報を生成する。
【００６４】
情報処理装置１００は、更新前セントロイドＯＣ３のベクトル及びオブジェクトＮ１０のベクトルの類似度と、更新後セントロイドＮＣ３のベクトル及びオブジェクトＮ１０のベクトルの類似度との比較に基づいて、オブジェクトＮ１０を更新後のセントロイドＣ３に割り当てたクラスタリング情報を生成する。すなわち、情報処理装置１００は、オブジェクトＮ１０が更新前セントロイドＯＣ３よりも更新後セントロイドＮＣ３の近傍に位置するため、オブジェクトＮ１０のセントロイドＣ３への割当てを維持したクラスタリング情報を生成する。
【００６５】
情報処理装置１００は、更新前セントロイドＯＣ３のベクトル及びオブジェクトＮ１１のベクトルの類似度と、更新後セントロイドＮＣ３のベクトル及びオブジェクトＮ１１のベクトルの類似度との比較に基づいて、オブジェクトＮ１１を更新後のセントロイドＣ３に割り当てたクラスタリング情報を生成する。すなわち、情報処理装置１００は、オブジェクトＮ１１が更新前セントロイドＯＣ３よりも更新後セントロイドＮＣ３の近傍に位置するため、オブジェクトＮ１１のセントロイドＣ３への割当てを維持したクラスタリング情報を生成する。
【００６６】
このように、図２の例では、セントロイドＣ３の割当オブジェクトは更新前のセントロイドＣ３よりも更新後のセントロイドＣ３の近傍に位置するため、情報処理装置１００は、オブジェクトＮ９〜Ｎ１１のセントロイドＣ３への割当てを維持したクラスタリング情報を生成する。なお、情報処理装置１００は、第１割当オブジェクトのベクトルが更新後のセントロイドのベクトルよりも更新前のセントロイドのベクトルの近傍に位置する場合、第１割当オブジェクトを対象オブジェクトとし、更新前のセントロイド（第１セントロイド）を起点として、グラフ情報を探索することにより、第１割当オブジェクトの割当先セントロイドを決定（抽出）するが、詳細は後述する。
【００６７】
また、情報処理装置１００は、ベクトルが更新されたセントロイドとは異なる他のセントロイドの割当オブジェクトを更新する。情報処理装置１００は、セントロイドＣ３以外のセントロイドＣ１、Ｃ２、Ｃ４〜６等の第２セントロイドの割当オブジェクトを更新する。情報処理装置１００は、セントロイドＣ１、Ｃ２、Ｃ４〜６等の第２セントロイドのセントロイド値（第２セントロイド値）と、セントロイドＣ３の更新後セントロイド値と、第２セントロイドの割当オブジェクト（第２割当オブジェクト）のオブジェクト値（第２オブジェクト値）とに基づいて、第２割当オブジェクトを更新後のセントロイドＣ３または他のセントロイドＣ１、Ｃ２、Ｃ４〜６に割り当てたクラスタリング情報を生成する。このように、情報処理装置１００は、第１セントロイドとされたセントロイド以外のセントロイドを「第２セントロイド」と記載する場合がある。例えば、セントロイドＣ３が第１セントロイドである場合、その他のセントロイドＣ１、Ｃ２、Ｃ４〜６が第２セントロイドとなる。すなわち、どのセントロイドを第１セントロイドとするかにより、各セントロイドは第１セントロイドになったり、第２セントロイドになったりする。また、第２セントロイドの割当オブジェクトを「第２割当オブジェクト」と記載する場合がある。すなわち、どのセントロイドを第１セントロイドとするかにより、各オブジェクトは第１割当オブジェクトになったり、第２割当オブジェクトになったりする。
【００６８】
例えば、情報処理装置１００は、他のセントロイドＣ１、Ｃ２、Ｃ４〜６の各割当オブジェクトの割当先を、他のセントロイドＣ１、Ｃ２、Ｃ４〜６と、更新後セントロイドＮＣ３とに基づいて決定する。図２の例では、情報処理装置１００は、セントロイドＣ１のオブジェクトＮ１〜Ｎ４の割当先セントロイドを、セントロイドＣ１のベクトルと、更新後セントロイドＮＣ３のベクトルと、オブジェクトＮ１〜Ｎ４のベクトルとに基づいて決定する。情報処理装置１００は、セントロイドＣ１のベクトル及びオブジェクトＮ１〜Ｎ４のベクトルの類似度と、更新後セントロイドＮＣ３のベクトル及びオブジェクトＮ１〜Ｎ４のベクトルの類似度との比較に基づいて、オブジェクトＮ１〜Ｎ４を更新後のセントロイドＣ３またはセントロイドＣ１に割り当てたクラスタリング情報を生成する。
【００６９】
例えば、情報処理装置１００は、第２割当オブジェクトのベクトルが更新後セントロイドＮＣ３のベクトルよりも、その第２割当オブジェクトが割り当てられた第２セントロイドのベクトルに類似する場合、その第２割当オブジェクトの第２セントロイドへの割り当てを維持したクラスタリング情報を生成する。例えば、セントロイドＣ１に割り当てられた第２割当オブジェクトのベクトルが、更新後セントロイドＮＣ３のベクトルよりもセントロイドＣ１のベクトルに類似する場合、その第２割当オブジェクトの最近傍セントロイドは、セントロイドＣ１のままであると推定される。そのため、情報処理装置１００は、第２セントロイドであるセントロイドＣ１に割り当てられた第２割当オブジェクト（例えばオブジェクトＮ１〜Ｎ４）のベクトルが、更新後セントロイドＮＣ３のベクトルよりもセントロイドＣ１のベクトルに類似する場合、その第２割当オブジェクトのセントロイドＣ１への割当てを維持したクラスタリング情報を生成する。
【００７０】
図２の例では、セントロイドＣ１の第２割当オブジェクトであるオブジェクトＮ１〜Ｎ４のベクトルは、更新後セントロイドＮＣ３のベクトルよりもセントロイドＣ１のベクトルに類似する。そのため、情報処理装置１００は、オブジェクトＮ１〜Ｎ４が更新後セントロイドＮＣ３よりもセントロイドＣ１の近傍に位置するため、オブジェクトＮ１〜Ｎ４のセントロイドＣ１への割当てを維持したクラスタリング情報を生成する。
【００７１】
具体的には、情報処理装置１００は、セントロイドＣ１のベクトル及びオブジェクトＮ１〜Ｎ４のベクトルの類似度と、更新後セントロイドＮＣ３のベクトル及びオブジェクトＮ１〜Ｎ４のベクトルの類似度との比較に基づいて、オブジェクトＮ１〜Ｎ４をセントロイドＣ１に割り当てたクラスタリング情報を生成する。すなわち、情報処理装置１００は、オブジェクトＮ１〜Ｎ４が更新後セントロイドＮＣ３よりもセントロイドＣ１の近傍に位置するため、オブジェクトＮ１〜ＮのセントロイドＣ１への割当てを維持したクラスタリング情報を生成する。
【００７２】
また、図２の例では、情報処理装置１００は、第２セントロイドであるセントロイドＣ４の第２割当オブジェクトであるオブジェクトＮ１２〜Ｎ１４の割当先セントロイドＣ４を、セントロイドＣ４のベクトルと、更新後セントロイドＮＣ３のベクトルと、オブジェクトＮ１２〜Ｎ１４のベクトルとに基づいて決定する。例えば、情報処理装置１００は、第２セントロイド（例えばセントロイドＣ４）に割り当てられている第２割当オブジェクト（例えばオブジェクトＮ１２〜Ｎ１４）が、その第２セントロイドと、第１セントロイドの更新後セントロイド（例えば更新後セントロイドＮＣ３）と、のいずれに近い（類似している）かに応じて、その第２割当オブジェクトの割当先を、その第２割当オブジェクトが割り当てられていた第２セントロイドと、更新後セントロイドとのいずれにするかを決定する。情報処理装置１００は、セントロイドＣ４のベクトル及びオブジェクトＮ１２〜Ｎ１４のベクトルの類似度と、更新後セントロイドＮＣ３のベクトル及びオブジェクトＮ１２〜Ｎ１４のベクトルの類似度との比較に基づいて、オブジェクトＮ１２〜Ｎ１４を更新後のセントロイドＣ３またはセントロイドＣ４に割り当てたクラスタリング情報を生成する。
【００７３】
例えば、情報処理装置１００は、第２割当オブジェクトのベクトルが更新後セントロイドＮＣ３のベクトルよりもセントロイドＣ４のベクトルに類似する場合、第２割当オブジェクトをセントロイドＣ４に割り当てたクラスタリング情報を生成する。図２の例では、セントロイドＣ４の第２割当オブジェクトであるオブジェクトＮ１３、Ｎ１４のベクトルは、更新後セントロイドＮＣ３のベクトルよりもセントロイドＣ４のベクトルに類似する。そのため、情報処理装置１００は、オブジェクトＮ１３、Ｎ１４が更新後セントロイドＮＣ３よりもセントロイドＣ４の近傍に位置するため、オブジェクトＮ１３、Ｎ１４のセントロイドＣ４への割当てを維持したクラスタリング情報を生成する。
【００７４】
具体的には、情報処理装置１００は、セントロイドＣ４のベクトル及びオブジェクトＮ１３、Ｎ１４のベクトルの類似度と、更新後セントロイドＮＣ３のベクトル及びオブジェクトＮ１３、Ｎ１４のベクトルの類似度との比較に基づいて、オブジェクトＮ１３、Ｎ１４をセントロイドＣ４に割り当てたクラスタリング情報を生成する。すなわち、情報処理装置１００は、オブジェクトＮ１３、Ｎ１４が更新後セントロイドＮＣ３よりもセントロイドＣ４の近傍に位置するため、オブジェクトＮ１３、Ｎ１４のセントロイドＣ４への割当てを維持したクラスタリング情報を生成する。
【００７５】
一方で、情報処理装置１００は、第２割当オブジェクトのベクトルがセントロイドＣ４のベクトルよりも更新後セントロイドＮＣ３のベクトルに類似する場合、第２割当オブジェクトを更新後のセントロイドＣ３に割り当てたクラスタリング情報を生成する。例えば、第２割当オブジェクトのベクトルがセントロイドＣ４のベクトルよりも更新後セントロイドＮＣ３のベクトルに類似する場合、その第２割当オブジェクトの最近傍セントロイドは、セントロイドＣ４からセントロイドＣ３に変更されたと推定される。そのため、情報処理装置１００は、第２割当オブジェクトのベクトルがセントロイドＣ４のベクトルよりも更新後セントロイドＮＣ３のベクトルに類似する場合、セントロイドＣ４の第２割当オブジェクトの割当先セントロイドを、セントロイドＣ４からセントロイドＣ３へ変更したクラスタリング情報を生成する。
【００７６】
図２の例では、セントロイドＣ４の第２割当オブジェクトであるオブジェクトＮ１２のベクトルは、セントロイドＣ４のベクトルよりも更新後セントロイドＮＣ３のベクトルに類似する。情報処理装置１００は、セントロイドＣ４のベクトル及びオブジェクトＮ１２のベクトルの類似度と、更新後セントロイドＮＣ３のベクトル及びオブジェクトＮ１２のベクトルの類似度との比較に基づいて、オブジェクトＮ１２を更新後のセントロイドＣ３に割り当てたクラスタリング情報を生成する。すなわち、情報処理装置１００は、オブジェクトＮ１２がセントロイドＣ４よりも更新後セントロイドＮＣ３の近傍に位置するため、オブジェクトＮ１２の割当先セントロイドを、セントロイドＣ４からセントロイドＣ３へ変更したクラスタリング情報を生成する。
【００７７】
また、図２の例では、情報処理装置１００は、残りの第２セントロイドであるセントロイドＣ２、Ｃ５、Ｃ６についても同様の処理を行うことにより、各第２セントロイドの第２割当オブジェクトの割当先セントロイドを決定し、クラスタリング情報を生成する。なお、図２の例では、情報処理装置１００は、残りの第２セントロイドであるセントロイドＣ２、Ｃ５、Ｃ６については、上記のような類似度に比較に基づいて、第２割当オブジェクトの割当先セントロイドを維持すると決定する。そして、情報処理装置１００は、更新前のセントロイドＣ３に関する情報（更新前セントロイドＯＣ３のベクトル）等を除外し、更新後セントロイドＮＣ３のみをセントロイドＣ３として用いてもよい。
【００７８】
これにより、情報処理装置１００は、クラスタリング情報記憶部１２４に記憶されたクラスタリング情報における割当オブジェクトを更新する（ステップＳ２３−１）。図２の例では、情報処理装置１００は、クラスタリング情報記憶部１２４−１に示すクラスタリング情報（割当情報）からクラスタリング情報記憶部１２４−２に示すクラスタリング情報（割当情報）に更新する。具体的には、情報処理装置１００は、オブジェクトＮ１２の割当先セントロイドを、セントロイドＣ４からセントロイドＣ３へ変更する。情報処理装置１００は、クラスタリング情報記憶部１２４−２に示すように、オブジェクトＮ１２をセントロイドＣ３に対応付けて記憶する。すなわち、情報処理装置１００は、オブジェクトＮ１２のセントロイドＣ４への対応付けを解除し、オブジェクトＮ１２をセントロイドＣ３に対応付けることにより、オブジェクトＮ１２の割当先セントロイドを、セントロイドＣ４からセントロイドＣ３へ変更する。また、情報処理装置１００は、所定の終了条件に基づいて、更新処理の繰り返しの終了を判定してもよい。例えば、所定の終了条件は、ｋ−ｍｅａｎｓ法と同一であってもよい。ここでいう所定の終了条件は、例えば、セントロイドの座標の変化がなくなることや、変化量が一定量以下になることや、量子化誤差が一定量以下になること等、種々の条件であってもよい。情報処理装置１００は、所定の終了条件を満たすまで、更新処理を繰り返す。例えば、情報処理装置１００は、割当オブジェクトの変更が無くなるまで、上記のような更新処理を繰り返し実行してもよい。この場合、例えば、情報処理装置１００は、割当オブジェクトが変更されたセントロイドＣ３について、再度上記の更新処理を行ってもよい。また、情報処理装置１００は、割当オブジェクトが変更されたセントロイドＣ４について、更新処理を行ってもよい。
【００７９】
上述したように、情報処理装置１００は、割当オブジェクトの変更に応じて更新処理を行うことにより、効率的にクラスタリング情報を生成することができる。具体的には、情報処理装置１００は、割当オブジェクトの変更に応じてセントロイド値が更新されたセントロイドについて、更新前よりも更新後に、第１割当オブジェクトが類似する（近傍に位置する）場合、第１割当オブジェクトの割当てを維持することにより、グラフを再度検索することなく、適切に割当先セントロイドを決定することができる。そして、情報処理装置１００は、第２セントロイドの第２割当オブジェクトについては、第２セントロイドよりも更新後セントロイドに類似する場合、その第２割当オブジェクトの割当先セントロイドを、更新後セントロイドに変更する。また、情報処理装置１００は、更新後セントロイドよりも第２セントロイドに類似する場合、その第２割当オブジェクトの割当先セントロイドを維持する。これにより、情報処理装置１００は、更新されたセントロイド以外のセントロイドの割当オブジェクトについても、グラフを再度検索することなく、適切に割当先セントロイドを決定することができる。したがって、情報処理装置１００は、全割当オブジェクトについてグラフを用いて割当先セントロイドを決定する場合に比べて、より高速に各オブジェクトの割当先セントロイドを決定し、クラスタリングを更新することができる。すなわち、情報処理装置１００は、効率的なクラスタリングを可能にすることができる。
【００８０】
〔１−２−１．グラフを用いた割当オブジェクトの更新について〕
図２の例では、セントロイドＣ３の第１割当オブジェクトであるオブジェクトＮ９〜Ｎ１１が更新前よりも更新後に類似するため、オブジェクトＮ９〜Ｎ１１のセントロイドＣ３への割当てが維持される場合を示したが、情報処理装置１００は、第１割当オブジェクトが更新後よりも更新前に類似する場合、グラフを用いて第１割当オブジェクトの割当先セントロイドを決定する。この点について、図１１を用いて説明する。図１１は、実施形態に係る割当オブジェクトの更新の一例を示す図である。なお、図１１において、図１や図２と同様の点については、適宜説明を省略する。
【００８１】
図１１に示す空間情報ＳＰ１１−５１は、図２に示す空間情報ＳＰ１１−６にセントロイドＣ３の割当オブジェクトとしてオブジェクトＮ１００を追加した状態を示す。また、図１１に示す空間情報ＳＰ１１−５１、ＳＰ１１−５２は、空間情報の一部を模式的に示す図であり、空間情報ＳＰ１１−５１、ＳＰ１１−５２は、情報処理により生成される情報に対応する空間情報である。また、以下では、空間情報ＳＰ１１−５１、ＳＰ１１−５２について、特に区別なく説明する場合には、空間情報ＳＰ１１と記載する。また、空間情報ＳＰ１１−５１、ＳＰ１１−５２においては、図の見易さのため、図１や図２中の他の空間情報ＳＰ１１で示した符号の図示を適宜省略する。例えば、空間情報ＳＰ１１−５１では、空間情報ＳＰ１１−４に示したセントロイドＣ２やオブジェクトＮ１等に対応する符号の図示を省略する。
【００８２】
図１１の例では、セントロイドＣ３の第１割当オブジェクトのうち、オブジェクトＮ９〜Ｎ１１は、図２の場合と同様に、更新前セントロイドＯＣ３のベクトルよりも更新後セントロイドＮＣ３のベクトルに類似する。そのため、情報処理装置１００は、オブジェクトＮ９〜Ｎ１１のセントロイドＣ３への割当てを維持すると決定する。
【００８３】
一方、図１１の例では、セントロイドＣ３の第１割当オブジェクトのうち、オブジェクトＮ１００は、更新後セントロイドＮＣ３よりも更新前セントロイドＯＣ３に類似する。情報処理装置１００は、オブジェクトＮ１００及び更新前セントロイドＯＣ３の類似度（距離）と、オブジェクトＮ１００及び更新後セントロイドＮＣ３の類似度（距離）とを比較する（ステップＳ５１）。情報処理装置１００は、オブジェクトＮ１００のベクトルと更新前セントロイドＯＣ３のベクトルとを用いて、オブジェクトＮ１００及び更新前セントロイドＯＣ３の類似度（距離）を類似度ＤＳ５１と算出する。また、情報処理装置１００は、オブジェクトＮ１００のベクトルと更新後セントロイドＮＣ３のベクトルとを用いて、オブジェクトＮ１００及び更新後セントロイドＮＣ３の類似度（距離）を類似度ＤＳ５２と算出する。そして、情報処理装置１００は、類似度ＤＳ５１と類似度ＤＳ５２とを比較することにより、オブジェクトＮ１００が更新前セントロイドＯＣ３及び更新後セントロイドＮＣ３のいずれに類似するかを決定（判定）する。なお、類似度（距離）が小さい程、そのオブジェクトとセントロイドとが類似していることを示すものとする。
【００８４】
図１１の例では、類似度ＤＳ５１が類似度ＤＳ５２よりも小さいため、情報処理装置１００は、オブジェクトＮ１００が更新後セントロイドＮＣ３よりも更新前セントロイドＯＣ３に類似するかと決定（判定）する。したがって、情報処理装置１００は、第１割当オブジェクトであるオブジェクトＮ１００が更新後セントロイドＮＣ３よりも更新前セントロイドＯＣ３に類似するため、オブジェクトＮ１００を対象オブジェクト（検索対象）とし、セントロイドＣ３（更新前セントロイドＯＣ３）を起点として、グラフ情報ＧＲ１１を探索することにより、オブジェクトＮ１００の割当先セントロイドを抽出する（ステップＳ５２）。
【００８５】
すなわち、情報処理装置１００は、第１割当オブジェクトであるオブジェクトＮ１００が更新後セントロイドＮＣ３よりも更新前セントロイドＯＣ３に類似するため、オブジェクトＮ１００を対象オブジェクト（検索対象）とし、更新後セントロイドＮＣ３を起点として、グラフ情報ＧＲ１１を探索することにより、オブジェクトＮ１００の割当先セントロイドを抽出する。このように、情報処理装置１００は、更新後セントロイドＮＣ３を起点セントロイドとして、グラフ情報ＧＲ１１を検索することにより、オブジェクトＮ１００について割当先セントロイドを抽出する。例えば、情報処理装置１００は、１つ（所定数）のセントロイドをオブジェクトＮ１００の割当先セントロイドとして抽出する。例えば、情報処理装置１００は、グラフの探索時（検索時）においては、更新後セントロイドＮＣ３をセントロイドＣ３として、オブジェクトＮ１００について割当先セントロイドを抽出する。例えば、情報処理装置１００は、グラフの探索時（検索時）においては、更新後セントロイドＮＣ３のベクトルをセントロイドＣ３のベクトルとして、オブジェクトＮ１００について割当先セントロイドを抽出する。
【００８６】
例えば、情報処理装置１００は、図１２に示すような検索処理により、オブジェクトＮ１００の割当先セントロイドを抽出する。図１１の例では、情報処理装置１００は、オブジェクトＮ１００からの距離が最も近いセントロイドＣ１をオブジェクトＮ１００の割当先セントロイドとして抽出する。例えば、情報処理装置１００は、起点セントロイドであるセントロイドＣ３を起点として、グラフ情報ＧＲ１１中のエッジを辿ることにより、セントロイドＣ１をオブジェクトＮ１００の割当先セントロイドとして抽出する。
【００８７】
そして、情報処理装置１００は、割当オブジェクトを更新する（ステップＳ５３）。図１１の例では、情報処理装置１００は、オブジェクトＮ１００をセントロイドＣ１の割当オブジェクトに更新する。すなわち、情報処理装置１００は、オブジェクトＮ１００をセントロイドＣ３の割当オブジェクトから除外し、セントロイドＣ１の割当オブジェクトに追加する。これにより、情報処理装置１００は、図１１中の空間情報ＳＰ１１−５２に示すように割当オブジェクトを更新したクラスタリング情報を生成する。
【００８８】
このように、第１割当オブジェクトのベクトルが更新後セントロイドＮＣ３のベクトルよりもセントロイドＣ１のベクトルに類似するため、その第１割当オブジェクトの最近傍セントロイドは、セントロイドＣ３からセントロイドＣ１に変更されたと推定される。そのため、図１１の例では、情報処理装置１００は、セントロイドＣ３の第１割当オブジェクトの割当先セントロイドを、セントロイドＣ３からセントロイドＣ１へ変更したクラスタリング情報を生成する。図１１の例では、情報処理装置１００は、オブジェクトＮ１００を対象オブジェクトとするグラフ検索により抽出したセントロイドＣ１を、オブジェクトＮ１００の割当先セントロイドとしたクラスタリング情報を生成する。
【００８９】
〔１−２−２．繰り返し処理について〕
なお、情報処理装置１００は、割当オブジェクトに変更があったセントロイドを、処理候補セントロイドとして記憶し、各処理候補セントロイドを順次対象として、上記のような更新処理を行ってもよい。
【００９０】
例えば、情報処理装置１００は、配列や連結リスト等の所定のデータ構造により、割当オブジェクトに変更があったセントロイドを、処理候補セントロイドとして記憶し、各処理候補セントロイドを順次対象として更新処理を行ってもよい。例えば、情報処理装置１００は、キューやスタック等の所定のデータ構造により、割当オブジェクトに変更があったセントロイドを、処理候補セントロイドとして記憶し、各処理候補セントロイドを順次対象として更新処理を行ってもよい。この場合、情報処理装置１００は、処理候補セントロイドからデータ構造に基づいて、処理の対象とするセントロイドを抽出（選択）して、処理候補セントロイドが無くなるまで順次処理を行う。なお、情報処理装置１００は、処理候補セントロイドのうち、いずれを対象として処理するかをランダムに抽出（選択）して、処理候補セントロイドが無くなるまで順次処理を行ってもよい。
【００９１】
図１及び図２の例では、情報処理装置１００は、割当オブジェクトに変更があったセントロイドＣ１〜Ｃ６を処理候補セントロイドとして記憶し、上記のような所定の基準により処理対象とするセントロイドを抽出（選択）して、処理候補セントロイドが無くなるまで順次処理を行ってもよい。図２の例では、情報処理装置１００は、処理対象として更新処理を行ったセントロイドＣ３について、新たにオブジェクトＮ１２が割当オブジェクトとして追加されたため、再度セントロイドＣ３を処理候補セントロイドとして記憶し、繰り返し更新処理を行ってもよい。このように、情報処理装置１００は、各セントロイドを対象に割当オブジェクトに変更が無くなるまで、繰り返し処理を行うことにより、クラスタリング情報を生成する。
【００９２】
〔１−３．起点用インデックスについて〕
また、情報処理装置１００は、探索の対象オブジェクトや検索クエリ（以下「探索対象」ともいう）について探索を行う場合、探索の起点となるセントロイド（起点セントロイド）を決定（抽出）するために起点用インデックス情報を用いてもよい。例えば、情報処理装置１００は、高次元ベクトルを検索する検索インデックスを起点用インデックス情報として用いてもよい。ここでいう高次元ベクトルとは、例えば、数次元、数十次元、数百次元、数千次元、数万次元のベクトルであってもよいし、それ以上の次元のベクトルであってもよい。例えば、情報処理装置１００は、図２に示すように、起点用インデックスを用いることなく起点セントロイドが決定できる場合以外においては、起点用インデックスを用いて、起点セントロイドを決定してもよい。
【００９３】
また、例えば、情報処理装置１００は、非特許文献１に記載されるようなグラフ型の検索インデックスに関する情報を起点用インデックス情報として用いてもよい。また、例えば、情報処理装置１００は、ツリー構造（木構造）に関する検索インデックスを起点用インデックス情報として用いてもよい。例えば、情報処理装置１００は、ｋｄ木（k-dimensional  tree）に関する検索インデックスを起点用インデックス情報として用いてもよい。例えば、情報処理装置１００は、ＶＰ木（vantage-point  tree）に関する検索インデックスを起点用インデックス情報として用いてもよい。このように、情報処理装置１００は、複数のセントロイド情報に関する木構造型のインデックス、グラフ構造型のインデックスを起点用インデックス情報として用いてもよい。また、例えば、情報処理装置１００は、転置インデックスを起点用インデックス情報として用いてもよい。
【００９４】
また、例えば、情報処理装置１００は、図１０に示すような、その他の木構造を有する起点用インデックス情報ＳＴ１１として用いてもよい。図１０は、実施形態に係る起点用インデックス情報の概念図を示す図である。例えば、情報処理装置１００は、図１０に概念的に示すような起点用インデックス情報を記憶部１２０（図４参照）に記憶してもよい。また、例えば、情報処理装置１００は、高次元データを検索できるハッシュ型などその他のインデックスを起点用インデックス情報として用いてもよい。例えば、情報処理装置１００は、高次元データを検索できるハッシュ型などその他のインデックスを起点用インデックス情報として記憶部１２０（図４参照）に記憶してもよい。
【００９５】
図１０中の起点用インデックス情報ＳＴ１１は、ルートＲＴ１や節点ＮＤ１、ＮＤ２やセントロイドＣ１、Ｃ３等を含む。例えば、情報処理装置１００は、起点用インデックス情報ＳＴ１１を用いて、探索対象となるオブジェクトや検索クエリである探索対象に最も近いセントロイドを特定する。例えば、情報処理装置１００は、起点用インデックス情報ＳＴ１１を上から下（例えばルートＲＴ１からセントロイド）へ辿ることにより、探索対象の近傍候補となるセントロイドを特定してもよい。
【００９６】
なお、上述したような複数のセントロイド情報に関する木構造やグラフ型の検索インデックスは一例であり、情報処理装置１００は、クエリに対応するセントロイド情報を高速に特定することが可能であれば、どのようなデータ構造の起点用インデックス情報を用いてもよい。例えば、情報処理装置１００は、クエリに対応するセントロイド情報を高速に特定することが可能であれば、バイナリ空間分割に関する技術等の種々の従来技術を適宜用いて、起点用インデックス情報を用いてもよい。例えば、情報処理装置１００は、高次元ベクトルの検索に対応可能なインデックスであれば、どのようなデータ構造の起点用インデックス情報を用いてもよい。また、情報処理装置１００は、上述した種々のインデックスを生成してもよい。
【００９７】
情報処理装置１００は、上記のような起点用インデックスを用いて、起点セントロイドを決定し、種々の処理を行ってもよい。
【００９８】
〔２．情報処理システムの構成〕
図３に示すように、情報処理システム１は、端末装置１０と、情報提供装置５０と、情報処理装置１００とが含まれる。端末装置１０と、情報提供装置５０と、情報処理装置１００とは所定のネットワークＮを介して、有線または無線により通信可能に接続される。図３は、実施形態に係る情報処理システムの構成例を示す図である。なお、図３に示した情報処理システム１には、複数台の端末装置１０や、複数台の情報提供装置５０や、複数台の情報処理装置１００が含まれてもよい。
【００９９】
端末装置１０は、ユーザによって利用される情報処理装置である。端末装置１０は、ユーザによる種々の操作を受け付ける。なお、以下では、端末装置１０をユーザと表記する場合がある。すなわち、以下では、ユーザを端末装置１０と読み替えることもできる。なお、上述した端末装置１０は、例えば、スマートフォンや、タブレット型端末や、ノート型ＰＣ（Personal  Computer）や、デスクトップＰＣや、携帯電話機や、ＰＤＡ（Personal  Digital  Assistant）等により実現される。
【０１００】
情報提供装置５０は、ユーザ等に種々の情報提供を行うための情報が格納された情報処理装置である。例えば、情報提供装置５０は、ウェブサーバ等の種々の外部装置から収集した文字情報等に基づくベクトル識別情報が格納される。例えば、情報提供装置５０は、ユーザ等に画像検索サービスを提供する情報処理装置である。例えば、情報提供装置５０は、画像検索サービスを提供するための各情報が格納される。例えば、情報提供装置５０は、画像検索サービスの対象となる画像に対応するベクトル情報を情報処理装置１００に提供する。また、情報提供装置５０は、クエリを情報処理装置１００に送信することにより、情報処理装置１００からクエリに対応する画像を示すベクトル識別情報等を受信する。
【０１０１】
情報処理装置１００は、第１セントロイドに対応付けられた第１ベクトル群に関する情報が所定の条件を満たす場合、第１ベクトル群に含まれるベクトルである対象ベクトルの各々が距離に応じて対応付けられる複数の第２セントロイドを生成する。例えば、情報処理装置１００は、第１セントロイドの対象ベクトルの数が所定の閾値以上である場合、複数の第２セントロイドを生成する。また、本実施形態において情報処理装置１００は、クエリを取得した場合、生成した情報に基づいて、クエリに対応するベクトル識別情報を提供する。なお、情報処理装置１００は、情報提供装置５０等の種々の外部装置から収集したベクトル情報に基づいてセントロイド情報を生成してもよい。また、情報処理装置１００は、情報提供装置５０と一体であってもよい。
【０１０２】
〔３．情報処理装置の構成〕
次に、図４を用いて、実施形態に係る情報処理装置１００の構成について説明する。図４は、実施形態に係る情報処理装置１００の構成例を示す図である。図４に示すように、情報処理装置１００は、通信部１１０と、記憶部１２０と、制御部１３０とを有する。なお、情報処理装置１００は、情報処理装置１００の管理者等から各種操作を受け付ける入力部（例えば、キーボードやマウス等）や、各種情報を表示するための表示部（例えば、液晶ディスプレイ等）を有してもよい。
【０１０３】
（通信部１１０）
通信部１１０は、例えば、ＮＩＣ（Network  Interface  Card）等によって実現される。そして、通信部１１０は、ネットワーク（例えば図３中のネットワークＮ）と有線または無線で接続され、端末装置１０や情報提供装置５０との間で情報の送受信を行う。
【０１０４】
（記憶部１２０）
記憶部１２０は、例えば、ＲＡＭ（Random  Access  Memory）、フラッシュメモリ（Flash  Memory）等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。実施形態に係る記憶部１２０は、図４に示すように、オブジェクト情報記憶部１２１と、セントロイド情報記憶部１２２と、グラフ情報記憶部１２３と、クラスタリング情報記憶部１２４とを有する。なお、図示を省略するが、記憶部１２０には、上述した起点用インデックスに関する各種情報が記憶されてもよい。
【０１０５】
（オブジェクト情報記憶部１２１）
実施形態に係るオブジェクト情報記憶部１２１は、オブジェクトに関する各種情報を記憶する。例えば、オブジェクト情報記憶部１２１は、オブジェクトＩＤやベクトルデータを記憶する。図５は、実施形態に係るオブジェクト情報記憶部の一例を示す図である。図５に示すオブジェクト情報記憶部１２１は、「オブジェクトＩＤ」、「ベクトル情報」といった項目が含まれる。
【０１０６】
「オブジェクトＩＤ」は、オブジェクトを識別するための識別情報を示す。また、「ベクトル情報」は、オブジェクトＩＤにより識別されるオブジェクトに対応するベクトル情報を示す。このように、図５の例では、オブジェクトを識別するオブジェクトＩＤに対して、オブジェクトに対応するベクトルデータ（ベクトル情報）が対応付けられて登録されている。
【０１０７】
図５の例では、オブジェクトＩＤ「Ｎ１」により識別されるオブジェクト（対象）は、「１０，２４，５１，２・・・」の多次元のベクトル情報が対応付けられることを示す。例えば、オブジェクトＩＤ「Ｎ１」により識別されるオブジェクト（対象）は、空間情報ＳＰ１１中のオブジェクトＮ１に対応することを示す。
【０１０８】
なお、オブジェクト情報記憶部１２１は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
【０１０９】
（セントロイド情報記憶部１２２）
実施形態に係るセントロイド情報記憶部１２２は、セントロイドに関する各種情報を記憶する。例えば、セントロイド情報記憶部１２２は、セントロイドＩＤやベクトル情報（ベクトルデータ）を記憶する。図６は、実施形態に係るセントロイド情報記憶部の一例を示す図である。図６に示すセントロイド情報記憶部１２２は、「セントロイドＩＤ」、「ベクトル情報」といった項目が含まれる。
【０１１０】
「セントロイドＩＤ」は、セントロイドを識別するための識別情報を示す。また、「ベクトル情報」は、セントロイドＩＤにより識別されるセントロイド（ベクトル）に対応するベクトル情報を示す。
【０１１１】
図６に示す例においては、セントロイドＩＤ「Ｃ１」により識別されるセントロイド（セントロイドＣ１）に対応するベクトル情報は、「１０，２４，５４，２・・・」のＮ次元ベクトルであることを示す。
【０１１２】
また、図６に示す例においては、セントロイドＩＤ「Ｃ４」により識別されるセントロイド（セントロイドＣ４）に対応するベクトル情報は、「３２，１，１２０，３１・・・」のＮ次元ベクトルであることを示す。
【０１１３】
なお、セントロイド情報記憶部１２２は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
【０１１４】
（グラフ情報記憶部１２３）
実施形態に係るグラフ情報記憶部１２３は、グラフ情報に関する各種情報を記憶する。図７は、実施形態に係るグラフ情報記憶部の一例を示す図である。図７は、セントロイドをグラフ構造化したグラフインデックス（グラフ情報）を示す。グラフ情報記憶部１２３は、グラフ情報に関する各種情報を記憶する。図７の例では、グラフ情報記憶部１２３は、「セントロイドＩＤ」および「エッジ情報」といった項目を有する。また、「エッジ情報」には、「エッジＩＤ」や「参照先」といった情報が含まれる。
【０１１５】
「セントロイドＩＤ」は、グラフ情報（グラフデータ）における各セントロイドを識別するための識別情報を示す。
【０１１６】
また、「エッジ情報」は、対応するセントロイドに接続されるエッジに関する情報を示す。図７の例では、「エッジ情報」は、エッジが無向エッジである場合を示し、対応するセントロイドと参照先のセントロイドとを連結するエッジに関する情報を示す。また、「エッジＩＤ」は、セントロイド間を連結するエッジを識別するための識別情報を示す。また、「参照先」は、エッジにより連結された参照先（セントロイド）を示す情報を示す。すなわち、図７の例では、セントロイドを識別するセントロイドＩＤに対して、そのセントロイドとエッジにより連結される参照先（セントロイド）が対応付けられて登録されている。
【０１１７】
図７の例では、セントロイドＩＤ「Ｃ１」には、参照先をセントロイドＩＤ「Ｃ２」とするエッジＩＤ「Ｅ１」を含むエッジ情報が対応付けて記憶される。このように、セントロイドＩＤ「Ｃ１」により識別されるセントロイド（セントロイドＣ１）は、エッジＩＤ「Ｅ１」により識別されるエッジ（エッジＥ１）により、セントロイドＩＤ「Ｃ２」により識別されるセントロイド（セントロイドＣ２）と連結されることを示す。すなわち、図７の例では、セントロイドＣ１からはセントロイドＣ２に辿ることができることを示す。
【０１１８】
また。図７の例では、セントロイドＩＤ「Ｃ２」には、参照先をセントロイドＩＤ「Ｃ１」とするエッジＩＤ「Ｅ１」を含むエッジ情報が対応付けて記憶される。このように、セントロイドＣ２は、エッジＥ１により、セントロイドＣ１と連結されることを示す。すなわち、図７の例では、セントロイドＣ２からはセントロイドＣ１に辿ることができることを示す。
【０１１９】
なお、グラフ情報記憶部１２３は、上記に限らず、目的に応じて種々の情報を記憶してもよい。例えば、グラフ情報記憶部１２３は、各セントロイド（ベクトル）間を連結するエッジの長さが記憶されてもよい。すなわち、グラフ情報記憶部１２３は、各セントロイド（ベクトル）間の距離を示す情報が記憶されてもよい。なお、グラフ情報記憶部１２３は、上記に限らず、種々のデータ構造によりグラフ情報を記憶してもよい。例えば、グラフ情報記憶部１２３は、エッジＩＤに、そのエッジＩＤにより識別されるエッジが連結するセントロイドを識別する情報を対応付けて記憶してもよい。
【０１２０】
（クラスタリング情報記憶部１２４）
実施形態に係るクラスタリング情報記憶部１２４は、セントロイドに対応付けられたオブジェクトを識別する各種情報を記憶する。例えば、クラスタリング情報記憶部１２４は、セントロイド情報記憶部１２２に記憶された各セントロイドに対応付けられたオブジェクトを識別する各種情報を記憶する。図８は、実施形態に係るクラスタリング情報記憶部の一例を示す図である。図８の例では、クラスタリング情報記憶部１２４は、「セントロイドＩＤ」、「オブジェクトＩＤ」といった項目が含まれる。
【０１２１】
「セントロイドＩＤ」は、セントロイドを識別するための識別情報を示す。また、「オブジェクトＩＤ」は、セントロイドＩＤにより識別されるセントロイドに対応付けられたオブジェクト（オブジェクト）を示す。
【０１２２】
図８に示す例においては、セントロイドＩＤ「Ｃ１」により識別されるセントロイド（セントロイドＣ１）に対応付けられたオブジェクトは、オブジェクトＮ１、Ｎ２、Ｎ３、Ｎ４等のオブジェクトであることを示す。また、セントロイドＩＤ「Ｃ４」により識別されるセントロイド（セントロイドＣ４）に対応付けられたオブジェクトは、オブジェクトＮ１３、Ｎ１４等のオブジェクトであることを示す。
【０１２３】
なお、クラスタリング情報記憶部１２４は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
【０１２４】
（制御部１３０）
図４の説明に戻って、制御部１３０は、コントローラ（controller）であり、例えば、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）等によって、情報処理装置１００内部の記憶装置に記憶されている各種プログラム（情報処理プログラムの一例に相当）がＲＡＭを作業領域として実行されることにより実現される。また、制御部１３０は、コントローラであり、例えば、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）等の集積回路により実現される。
【０１２５】
図４に示すように、制御部１３０は、取得部１３１と、生成部１３２と、抽出部１３３と、提供部１３４とを有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部１３０の内部構成は、図４に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。
【０１２６】
（取得部１３１）
取得部１３１は、各種情報を取得する。取得部１３１は、記憶部１２０から各種情報を取得する。取得部１３１は、オブジェクト情報記憶部１２１や、セントロイド情報記憶部１２２や、グラフ情報記憶部１２３や、クラスタリング情報記憶部１２４等から各種情報を取得する。また、取得部１３１は、各種情報を外部の情報処理装置から取得する。取得部１３１は、端末装置１０や情報提供装置５０から各種情報を取得する。
【０１２７】
取得部１３１は、所定の基準に基づいて生成された複数のセントロイドが類似性に応じてエッジにより連結されたグラフ情報と、複数のオブジェクトとを取得する。取得部１３１は、所定の基準に基づいて生成された複数のセントロイドが類似性に応じてエッジにより連結されたグラフ情報と、データ検索の対象となる複数のオブジェクトとを取得する。例えば、取得部１３１は、検索クエリに関する情報を取得する。例えば、取得部１３１は、画像検索に関する検索クエリを取得する。
【０１２８】
図１の例では、取得部１３１は、オブジェクトに各々対応する複数のオブジェクトを示すオブジェクト情報を取得する。取得部１３１は、空間情報ＳＰ１１−１に示すようにオブジェクトＮ１〜Ｎ２１等を含むオブジェクト情報を取得する。取得部１３１は、オブジェクトＮ１〜Ｎ２１等を含む空間情報ＳＰ１１−１を取得する。取得部１３１は、グラフ情報記憶部１２３からグラフ情報ＧＲ１１を取得する。
【０１２９】
（生成部１３２）
生成部１３２は、各種情報を生成する。生成部１３２は、記憶部１２０に記憶された情報に基づいて、種々の情報を生成する。生成部１３２は、オブジェクト情報記憶部１２１や、セントロイド情報記憶部１２２や、グラフ情報記憶部１２３や、クラスタリング情報記憶部１２４等に記憶された情報に基づいて、種々の情報を生成する。生成部１３２は、取得部１３１により取得された情報に基づいて、種々の情報を生成する。生成部１３２は、外部の情報処理装置から取得された情報に基づいて、種々の情報を生成する。生成部１３２は、端末装置１０や情報提供装置５０から取得された情報に基づいて、種々の情報を生成する。生成部１３２は、生成した情報に基づいて、種々の情報を生成する。生成部１３２は、抽出部１３３により抽出された情報に基づいて、種々の情報を生成する。例えば、生成部１３２は、オブジェクト情報記憶部１２１や、セントロイド情報記憶部１２２や、グラフ情報記憶部１２３や、クラスタリング情報記憶部１２４等に記憶される各種情報を生成する。また、生成部１３２は、各種情報を決定する。生成部１３２は、各オブジェクトの割当先セントロイドを決定する。生成部１３２は、第１割当オブジェクトや第２割当オブジェクトの割当先セントロイドを決定する。
【０１３０】
生成部１３２は、複数のオブジェクトのうち一のオブジェクトを対象オブジェクトとして、グラフ情報を探索し、複数のセントロイドのいずれかに対象オブジェクトを割当オブジェクトとして割り当てることにより、複数のオブジェクトの各々を割当オブジェクトとして複数のセントロイドのいずれかに割り当てたクラスタリング情報を生成する。生成部１３２は、複数のセントロイドの各々と、対象オブジェクトとの類似性に基づいて、複数のセントロイドのいずれかに対象オブジェクトを割当オブジェクトとして割り当てることにより、クラスタリング情報を生成する。
【０１３１】
生成部１３２は、対複数のセントロイドの各々の割当オブジェクトに対応する値であるオブジェクト値に基づいて、複数のセントロイドの各々に対応する値であるセントロイド値を生成する。生成部１３２は、複数のセントロイドの各々の割当オブジェクトに対応するベクトルをオブジェクト値として、複数のセントロイドの各々に対応するベクトルをセントロイド値として生成する。生成部１３２は、複数のセントロイドの各々の割当オブジェクトのオブジェクト値の平均値を、複数のセントロイドの各々のセントロイド値として生成する。
【０１３２】
生成部１３２は、複数のセントロイドのうち、一のセントロイドである第１セントロイドの割当オブジェクトである第１割当オブジェクトに変更があった場合、変更後の第１割当オブジェクトに基づいて、第１セントロイドを更新後セントロイドに更新する。生成部１３２は、第１セントロイドが更新後セントロイドに更新された場合、更新後セントロイドに基づいて、グラフ情報を更新する。生成部１３２は、グラフ情報が更新された場合、更新後のグラフ情報を用いて、更新後セントロイドの割当オブジェクトを更新することにより、クラスタリング情報を生成する。
【０１３３】
生成部１３２は、更新後セントロイドに対応する値である更新後セントロイド値を生成する。生成部１３２は、変更後の第１割当オブジェクトに基づいて、更新後セントロイドの更新後セントロイド値を生成する。生成部１３２は、更新後セントロイドの更新後セントロイド値に基づいて、更新後セントロイドの割当オブジェクトを更新することにより、クラスタリング情報を生成する。生成部１３２は、第１セントロイドに対応する値である第１セントロイド値と、更新後セントロイド値と、第１割当オブジェクトに対応する値である第１オブジェクト値とに基づいて、第１割当オブジェクトを更新後セントロイドまたは他のセントロイドに割り当てたクラスタリング情報を生成する。
【０１３４】
生成部１３２は、第１セントロイド値及び第１オブジェクト値の類似度と、更新後セントロイド値及び第１オブジェクト値の類似度との比較に基づいて、第１割当オブジェクトを更新後セントロイドまたは他のセントロイドに割り当てたクラスタリング情報を生成する。生成部１３２は、第１割当オブジェクトが第１セントロイドよりも更新後セントロイドに類似する場合、第１割当オブジェクトを更新後セントロイドに割り当てたクラスタリング情報を生成する。生成部１３２は、第１割当オブジェクトが更新後セントロイドよりも第１セントロイドに類似する場合、第１割当オブジェクトを対象オブジェクトとし、第１セントロイドを起点として、グラフ情報を探索することにより、第１割当オブジェクトを更新後セントロイドまたは他のセントロイドに割り当てたクラスタリング情報を生成する。
【０１３５】
生成部１３２は、複数のセントロイドのうち、第１セントロイドとは異なる第２セントロイドに対応する値である第２セントロイド値と、更新後セントロイド値と、第２セントロイドの割当オブジェクトである第２割当オブジェクトに対応する値である第２オブジェクト値とに基づいて、第２割当オブジェクトを更新後セントロイドまたは第２セントロイドに割り当てたクラスタリング情報を生成する。生成部１３２は、第２セントロイド値及び第２オブジェクト値の類似度と、更新後セントロイド値及び第２オブジェクト値の類似度との比較に基づいて、第２割当オブジェクトを更新後セントロイドまたは第２セントロイドに割り当てたクラスタリング情報を生成する。生成部１３２は、第２割当オブジェクトが第２セントロイドよりも更新後セントロイドに類似する場合、第２割当オブジェクトを更新後セントロイドに割り当てたクラスタリング情報を生成する。生成部１３２は、第２割当オブジェクトが更新後セントロイドよりも第２セントロイドに類似する場合、第２割当オブジェクトを第２セントロイドに割り当てたクラスタリング情報を生成する。
【０１３６】
図１の例では、生成部１３２は、セントロイドを生成する。例えば、生成部１３２は、所定の基準に基づいて複数のセントロイドを生成する。生成部１３２は、所定の基準に基づいて決定される所定数のセントロイドを生成する。生成部１３２は、図１中の空間情報ＳＰ１１−２に示すように、セントロイドＣ１〜Ｃ６等を含む複数のセントロイドを生成する。
【０１３７】
生成部１３２は、複数のセントロイドをグラフ構造化したグラフインデックスであるグラフ情報を生成する。生成部１３２は、図１中の空間情報ＳＰ１１−３に示すグラフ情報ＧＲ１１のようなグラフ情報を生成する。図１の例では、生成部１３２は、セントロイドＣ１〜Ｃ６等を類似度（距離）に基づいてエッジで連結したグラフインデックスであるグラフ情報を生成する。生成部１３２は、無向エッジであるエッジＥ１〜Ｅ８等に関する情報を含むグラフ情報ＧＲ１１を生成する。具体的には、生成部１３２は、セントロイドＣ１とセントロイドＣ２との間を連結するエッジＥ１やセントロイドＣ１とセントロイドＣ３との間を連結するエッジＥ２等を生成する。
【０１３８】
生成部１３２は、グラフ情報を用いて、クラスタリング情報を生成する。例えば、生成部１３２は、グラフ情報を探索し、複数のセントロイドのいずれかに各オブジェクトを割当オブジェクトとして割り当てることにより、クラスタリング情報を生成する。生成部１３２は、図１中の空間情報ＳＰ１１−４に示すようなクラスタリング情報を生成する。図１の例では、生成部１３２は、グラフ情報ＧＲ１１を用いて、オブジェクトＮ１〜Ｎ２１等をクラスタリングＣ１〜Ｃ６等に割り当てたクラスタリング情報を生成する。生成部１３２は、オブジェクトＮ１〜Ｎ２１等をクラスタリングＣ１〜Ｃ６等に対応する複数のクラスタに分割したクラスタリング情報を生成する。
【０１３９】
生成部１３２は、複数のオブジェクトＮ１〜Ｎ２１等のうち一のオブジェクトを対象オブジェクト（検索対象）として、グラフ情報ＧＲ１１を探索することにより、複数のオブジェクトＮ１〜Ｎ２１等の各々を割当オブジェクトとして複数のセントロイドＣ１〜Ｃ６等のいずれかに割り当てたクラスタリング情報を生成する。生成部１３２は、オブジェクトＮ１〜Ｎ２１等をセントロイドＣ１〜Ｃ６のいずれかに割り当てたクラスタリング情報を生成する。生成部１３２は、図１中のクラスタリング情報記憶部１２４−１に示すようなクラスタリング情報を生成する。
【０１４０】
図２の例では、生成部１３２は、セントロイドＣ３にオブジェクトＮ９〜Ｎ１１が割当オブジェクトとして割り当てられたため、セントロイドＣ３の割当オブジェクトの変更に応じて、セントロイドＣ３を更新する。生成部１３２は、セントロイド情報記憶部１２２−１に示すセントロイドＣ３のベクトルからセントロイド情報記憶部１２２−２に示すセントロイドＣ３のベクトルに更新する。生成部１３２は、セントロイドＣ３の更新に応じて、グラフ情報ＧＲ１１を更新する。生成部１３２は、図２中の空間情報ＳＰ１１−６に示すようにグラフ情報ＧＲ１１を更新する。
【０１４１】
生成部１３２は、割当オブジェクトを更新する。例えば、生成部１３２は、ベクトルが更新された第１セントロイドであるセントロイドＣ３の割当オブジェクトや、他のセントロイドＣ１、Ｃ２、Ｃ４〜６の割当オブジェクトを更新する。生成部１３２は、図２中の空間情報ＳＰ１１−７に示すように割当オブジェクトを更新したクラスタリング情報を生成する。
【０１４２】
生成部１３２は、オブジェクトＮ１〜Ｎ４が更新後セントロイドＮＣ３よりもセントロイドＣ１に類似するため、オブジェクトＮ１〜ＮのセントロイドＣ１への割当てを維持したクラスタリング情報を生成する。生成部１３２は、オブジェクトＮ１２がセントロイドＣ４よりも更新後セントロイドＮＣ３に類似するため、オブジェクトＮ１２の割当先セントロイドを、セントロイドＣ４からセントロイドＣ３へ変更したクラスタリング情報を生成する。
【０１４３】
（抽出部１３３）
抽出部１３３は、各種情報を抽出する。抽出部１３３は、各種情報を選択する。抽出部１３３は、記憶部１２０に記憶された情報に基づいて、種々の情報を抽出する。抽出部１３３は、オブジェクト情報記憶部１２１や、セントロイド情報記憶部１２２や、グラフ情報記憶部１２３や、クラスタリング情報記憶部１２４等に記憶された情報に基づいて、種々の情報を抽出する。抽出部１３３は、取得部１３１により取得された情報に基づいて、種々の情報を抽出する。抽出部１３３は、外部の情報処理装置から取得された情報に基づいて、種々の情報を抽出する。抽出部１３３は、端末装置１０や情報提供装置５０から取得された情報に基づいて、種々の情報を抽出する。抽出部１３３は、生成部１３２により生成された情報に基づいて、種々の情報を抽出する。抽出部１３３は、抽出した情報に基づいて、種々の情報を抽出する。例えば、抽出部１３３は、オブジェクト情報記憶部１２１や、セントロイド情報記憶部１２２や、グラフ情報記憶部１２３や、クラスタリング情報記憶部１２４等に記憶される各種情報を抽出する。また、抽出部１３３は、各種情報を決定する。抽出部１３３は、探索時における起点セントロイドを決定する。抽出部１３３は、起点用インデックスを用いて起点セントロイドを決定する。抽出部１３３は、起決定した起点セントロイドを起点として、グラフを探索することにより、検索対象に類似するセントロイドを抽出する。そして、抽出部１３３は、抽出したセントロイドの割当オブジェクトを、検索対象に類似するオブジェクトとして抽出する。
【０１４４】
図１の例では、抽出部１３３は、オブジェクトＮ１を対象オブジェクトとする場合、オブジェクトＮ１を検索クエリとして、グラフ情報ＧＲ１１を探索し、オブジェクトＮ１に近似（類似）するセントロイドを抽出する。例えば、抽出部１３３は、オブジェクトＮ１を対象オブジェクトとする場合、オブジェクトＮ１を検索クエリとして、グラフ情報ＧＲ１１を探索し、オブジェクトＮ１に最も類似すると推定されるセントロイドを抽出する。抽出部１３３は、オブジェクトＮ１を対象オブジェクトとする場合、オブジェクトＮ１の最近傍のセントロイドと推定されるセントロイドを抽出する。
【０１４５】
抽出部１３３は、起点セントロイドを起点として、グラフ情報ＧＲ１１を検索することにより、各オブジェクトについて割当先セントロイドを抽出する。例えば、抽出部１３３は、１つ（所定数）のセントロイドを割当先セントロイドとして抽出する。例えば、抽出部１３３は、図１２に示すような検索処理により、各オブジェクトの割当先セントロイドを抽出する。
【０１４６】
例えば、抽出部１３３は、取得部１３１により検索クエリが取得された場合、検索クエリを用いてグラフ情報を検索することにより、検索クエリに類似するセントロイドを抽出する。そして、抽出部１３３は、抽出したセントロイドに割り当てられたオブジェクトを、検索クエリの類似オブジェクトとして抽出する。
【０１４７】
（提供部１３４）
提供部１３４は、各種情報を提供する。提供部１３４は、外部の情報処理装置へ各種情報を提供する。提供部１３４は、端末装置１０や情報提供装置５０に各種情報を提供する。例えば、提供部１３４は、外部の情報処理装置に記憶部１２０に記憶された各種情報を提供する。提供部１３４は、端末装置１０に各種情報を送信する。提供部１３４は、端末装置１０に各種情報を配信する。提供部１３４は、取得部１３１により取得された各種情報に基づいて、種々の情報を提供する。提供部１３４は、生成部１３２により生成された各種情報に基づいて、種々の情報を提供する。提供部１３４は、抽出部１３３により抽出された各種情報に基づいて、種々のサービスを提供する。例えば、提供部１３４は、空間情報ＳＰ１１等の各種情報を提供する。
【０１４８】
例えば、提供部１３４は、クエリに対応するオブジェクトを示す情報を検索結果として提供する。例えば、提供部１３４は、抽出部１３３により抽出されたオブジェクトを示す情報を情報提供装置５０へ提供する。
【０１４９】
〔４．情報処理のフロー〕
次に、図９を用いて、実施形態に係る情報処理システム１による情報処理の手順について説明する。図９は、実施形態に係る情報処理の一例を示すフローチャートである。
【０１５０】
図９に示すように、情報処理装置１００は、複数のセントロイドが類似性に応じてエッジにより連結されたグラフ情報を取得する（ステップＳ１０１）。情報処理装置１００は、複数のオブジェクトを取得する（ステップＳ１０２）。そして、情報処理装置１００は、複数のオブジェクトのうち一のオブジェクトを対象オブジェクトとして、グラフ情報を探索し、複数のオブジェクトの各々を割当オブジェクトとして複数のセントロイドのいずれかに割り当てたクラスタリング情報を生成する（ステップＳ１０３）。
【０１５１】
〔５．検索（探索）処理のフロー〕
次に、情報処理装置１００による検索（探索）処理のフローについて、図１２を一例として説明する。図１２は、実施形態に係る検索処理の一例を示すフローチャートである。具体的には、図１２は、グラフデータを用いた検索処理の一例を示すフローチャートである。なお、図１２に示す検索処理には、選択処理も含まれる。以下に説明する検索処理は、情報処理装置１００によって行われる。また、以下でいうセントロイドは、オブジェクトと読み替えてもよい。なお、情報処理装置１００によるグラフデータを用いた検索は下記に限らず、種々の手順により行われてもよい。
【０１５２】
ここでは、近傍集合Ｎ（Ｇ，ｘ）は、セントロイドｘに付与されているエッジにより関連付けられている近傍のセントロイドの集合である。例えば、近傍集合Ｎ（Ｇ，ｘ）は、セントロイドｘからのエッジが連結されたセントロイドの集合である。「Ｇ」は、所定のグラフデータ（例えば、グラフ情報ＧＲ１１等）であってもよい。例えば、情報処理装置１００は、ｋ近傍検索処理を実行する。
【０１５３】
例えば、情報処理装置１００は、超球の半径ｒを∞（無限大）に設定し（ステップＳ３００）、既存のセントロイド集合から集合Ｓを抽出する（ステップＳ３０１）。例えば、情報処理装置１００は、起点オブジェクトとして決定（選択）されたセントロイドを集合Ｓとして抽出してもよい。図１の例では、情報処理装置１００は、オブジェクトＮ１が検索対象ｙである場合、その起点セントロイドであるセントロイドＣ３を集合Ｓとして抽出してもよい。また、例えば、超球とは、検索範囲を示す仮想的な球である。なお、ステップＳ３０１において抽出された集合Ｓに含まれるセントロイドは、検索結果の集合Ｒの初期集合にも含められる。また、ステップＳ３０１において抽出された集合Ｓに含まれるセントロイドは、集合Ｃに含められてもよい。集合Ｃは、重複検索を回避するために便宜上設けられるものであり、処理開始時には空集合に設定されてもよい。
【０１５４】
次に、情報処理装置１００は、集合Ｓに含まれるセントロイドの中で、検索対象（検索クエリや対象オブジェクト）をｙとすると検索対象ｙとの距離が最も短いセントロイドを抽出し、セントロイドｓとする（ステップＳ３０２）。図１の例では、情報処理装置１００は、検索対象ｙとなるオブジェクトＮ１に対応する起点セントロイドであるセントロイドＣ３が含まれる集合Ｓから、一のセントロイドをセントロイドｓ（対象セントロイド）として抽出する。例えば、情報処理装置１００は、起点セントロイドとして選択されたセントロイドのみがセントロイド集合Ｓの要素の場合には、その起点セントロイドがセントロイドｓとして抽出される。次に、情報処理装置１００は、セントロイドｓを集合Ｓから除外する（ステップＳ３０３）。
【０１５５】
次に、情報処理装置１００は、セントロイドｓと検索対象ｙとの距離ｄ（ｓ，ｙ）がｒ（１＋ε）を超えるか否かを判定する（ステップＳ３０４）。ここで、εは拡張要素であり、ｒ（１＋ε）は、探索範囲（この範囲内のオブジェクトのみを探索する。検索範囲よりも大きくすることで精度を高めることができる）の半径を示す値である。セントロイドｓと検索対象ｙとの距離ｄ（ｓ，ｙ）がｒ（１＋ε）を超える場合（ステップＳ３０４：Ｙｅｓ）、情報処理装置１００は、集合Ｒを検索対象ｙの近傍集合として出力し（ステップＳ３０５）、処理を終了する。
【０１５６】
セントロイドｓと検索対象ｙとの距離ｄ（ｓ，ｙ）がｒ（１＋ε）を超えない場合（ステップＳ３０４：Ｎｏ）、情報処理装置１００は、セントロイドｓの近傍集合Ｎ（Ｇ，ｓ）の要素であるセントロイドの中から集合Ｃに含まれないセントロイドを、所定の基準に基づいて一つ選択し、選択したセントロイドｕを、集合Ｃに格納する（ステップＳ３０６）。例えば、図１の例では、情報処理装置１００は、セントロイドＣ３と連結するセントロイドＣ１、Ｃ２、Ｃ５、Ｃ６のうち、検索対象ｙと最も近いセントロイドＣ１をセントロイドｕ（判定対象セントロイド）として選択する。
【０１５７】
次に、情報処理装置１００は、セントロイドｕと検索対象ｙとの距離ｄ（ｕ，ｙ）がｒ（１＋ε）以下であるか否かを判定する（ステップＳ３０７）。セントロイドｕと検索対象ｙとの距離ｄ（ｕ，ｙ）がｒ（１＋ε）以下である場合（ステップＳ３０７：Ｙｅｓ）、情報処理装置１００は、セントロイドｕを集合Ｓに追加する（ステップＳ３０８）。また、セントロイドｕと検索対象ｙとの距離ｄ（ｕ，ｙ）がｒ（１＋ε）以下ではない場合（ステップＳ３０７：Ｎｏ）、情報処理装置１００は、ステップＳ３０９の判定（処理）を行う。
【０１５８】
次に、情報処理装置１００は、セントロイドｕと検索対象ｙとの距離ｄ（ｕ，ｙ）がｒ以下であるか否かを判定する（ステップＳ３０９）。セントロイドｕと検索対象ｙとの距離ｄ（ｕ，ｙ）がｒを超える場合、情報処理装置１００は、ステップＳ３１５の判定（処理）を行う。また、セントロイドｕと検索対象ｙとの距離ｄ（ｕ，ｙ）がｒ以下ではない場合（ステップＳ３０９：Ｎｏ）、情報処理装置１００は、ステップＳ３１５の判定（処理）を行う。
【０１５９】
セントロイドｕと検索対象ｙとの距離ｄ（ｕ，ｙ）がｒ以下である場合（ステップＳ３０９：Ｙｅｓ）、情報処理装置１００は、セントロイドｕを集合Ｒに追加する（ステップＳ３１０）。そして、情報処理装置１００は、集合Ｒに含まれるセントロイド数がｋｓを超えるか否かを判定する（ステップＳ３１１）。所定数ｋｓは、任意に定められる自然数である。例えば、ｋｓは、検索における抽出数を示し、「３」や「２０」や「１００」等の任意の値であってもよい。例えば、ｋｓは、オブジェクトの割当先セントロイドを決定するための検索処理の場合、「１」に設定されてもよい。集合Ｒに含まれるセントロイド数がｋｓを超えない場合（ステップＳ３１１：Ｎｏ）、情報処理装置１００は、ステップＳ３１３の判定（処理）を行う。
【０１６０】
集合Ｒに含まれるセントロイド数がｋｓを超える場合（ステップＳ３１１：Ｙｅｓ）、情報処理装置１００は、集合Ｒに含まれるセントロイドの中で検索対象ｙとの距離が最も長い（遠い）セントロイドを、集合Ｒから除外する（ステップＳ３１２）。例えば、ｋｓが「１」の場合、情報処理装置１００は、ステップＳ３１０において集合Ｒに新たに追加したセントロイドを残し、他のもう一つのセントロイドを集合Ｒから除外する
【０１６１】
次に、情報処理装置１００は、集合Ｒに含まれるセントロイド数がｋｓと一致するか否かを判定する（ステップＳ３１３）。集合Ｒに含まれるセントロイド数がｋｓと一致しない場合（ステップＳ３１３：Ｎｏ）、情報処理装置１００は、ステップＳ３１５の判定（処理）を行う。また、集合Ｒに含まれるセントロイド数がｋｓと一致する場合（ステップＳ３１３：Ｙｅｓ）、情報処理装置１００は、集合Ｒに含まれるセントロイドの中で検索対象ｙとの距離が最も長い（遠い）セントロイドと、検索対象ｙとの距離を、新たなｒに設定する（ステップＳ３１４）。
【０１６２】
そして、情報処理装置１００は、セントロイドｓの近傍集合Ｎ（Ｇ，ｓ）の要素であるセントロイドから全てのセントロイドを選択してセントロイド集合Ｃに格納し終えたか否かを判定する（ステップＳ３１５）。セントロイドｓの近傍セントロイド集合Ｎ（Ｇ，ｓ）の要素であるセントロイドから全てのセントロイドを選択してセントロイド集合Ｃに格納し終えていない場合（ステップＳ３１５：Ｎｏ）、情報処理装置１００は、ステップＳ３０６に戻って処理を繰り返す。
【０１６３】
セントロイドｓの近傍セントロイド集合Ｎ（Ｇ，ｓ）の要素であるセントロイドから全てのセントロイドを選択してセントロイド集合Ｃに格納し終えた場合（ステップＳ３１５：Ｙｅｓ）、情報処理装置１００は、セントロイド集合Ｓが空集合であるか否かを判定する（ステップＳ３１６）。セントロイド集合Ｓが空集合でない場合（ステップＳ３１６：Ｎｏ）、情報処理装置１００は、ステップＳ３０２に戻って処理を繰り返す。また、セントロイド集合Ｓが空集合である場合（ステップＳ３１６：Ｙｅｓ）、情報処理装置１００は、セントロイド集合Ｒを出力し、処理を終了する（ステップＳ３１７）。
【０１６４】
例えば、オブジェクトの割当先セントロイドを決定するための検索処理である場合、情報処理装置１００は、集合Ｒに含まれるセントロイドを対象オブジェクト（検索対象ｙ）の割当先セントロイドとして抽出してもよい。この場合、情報処理装置１００は、集合Ｒに含まれるセントロイドを対象オブジェクト（検索対象ｙ）の割当先セントロイドとするクラスタリング情報を生成してもよい。図１の例では、情報処理装置１００は、対象オブジェクトがオブジェクトＮ１である場合、集合Ｒに含まれるセントロイドＣ１をオブジェクトＮ１の割当先セントロイドに決定する。すなわち、図１の例では、情報処理装置１００は、対象オブジェクトがオブジェクトＮ１である場合、オブジェクトＮ１を、集合Ｒに含まれるセントロイドＣ１の割当オブジェクトに決定する。そして、情報処理装置１００は、オブジェクトＮ１をセントロイドＣ１に割り当てたクラスタリング情報を生成する。
【０１６５】
また、例えば、類似オブジェクトの検索等の検索処理である場合、情報処理装置１００は、集合Ｒに含まれるセントロイドを検索クエリ（検索対象ｙ）に対応する近傍セントロイドとして抽出する。そして、情報処理装置１００は、抽出した近傍セントロイドに対応付けられたオブジェクトを検索クエリの類似オブジェクトとしてもよい。このように、情報処理装置１００は、グラフ構造化されたセントロイドに基づいて、類似オブジェクトを検索することにより、量子化によるデータ検索を行ってもよい。例えば、情報処理装置１００は、ユーザが利用する端末装置１０から検索クエリを取得した場合、検索クエリ（検索対象ｙ）に対応する近傍セントロイドを抽出し、抽出した近傍セントロイドに対応付けられたオブジェクトを検索結果として、端末装置１０へ提供してもよい。
【０１６６】
〔６．効果〕
上述してきたように、実施形態に係る情報処理装置１００は、取得部１３１と、生成部１３２とを有する。取得部１３１は、所定の基準に基づいて生成された複数のセントロイドが類似性に応じてエッジにより連結されたグラフ情報と、複数のオブジェクトとを取得する。生成部１３２は、複数のオブジェクトのうち一のオブジェクトを対象オブジェクトとして、グラフ情報を探索し、複数のセントロイドのいずれかに対象オブジェクトを割当オブジェクトとして割り当てることにより、複数のオブジェクトの各々を割当オブジェクトとして複数のセントロイドのいずれかに割り当てたクラスタリング情報を生成する。
【０１６７】
このように、実施形態に係る情報処理装置１００は、複数のオブジェクトのうち一のオブジェクトを対象オブジェクトとして、複数のセントロイドが類似性に応じてエッジにより連結されたグラフ情報を探索し、複数のセントロイドのいずれかに対象オブジェクトを割当オブジェクトとして割り当てることにより、複数のオブジェクトの各々を割当オブジェクトとして複数のセントロイドのいずれかに割り当てたクラスタリング情報を生成することにより、効率的なクラスタリングを可能にすることができる。
【０１６８】
また、実施形態に係る情報処理装置１００において、生成部１３２は、複数のセントロイドの各々と、対象オブジェクトとの類似性に基づいて、複数のセントロイドのいずれかに対象オブジェクトを割当オブジェクトとして割り当てることにより、クラスタリング情報を生成する。
【０１６９】
このように、実施形態に係る情報処理装置１００は、複数のセントロイドの各々と、対象オブジェクトとの類似性に基づいて、複数のセントロイドのいずれかに対象オブジェクトを割当オブジェクトとして割り当てることにより、クラスタリング情報を生成することにより、効率的なクラスタリングを可能にすることができる。
【０１７０】
また、実施形態に係る情報処理装置１００において、生成部１３２は、対複数のセントロイドの各々の割当オブジェクトに対応する値であるオブジェクト値に基づいて、複数のセントロイドの各々に対応する値であるセントロイド値を生成する。
【０１７１】
このように、実施形態に係る情報処理装置１００は、複数のセントロイドの各々の割当オブジェクトに対応する値であるオブジェクト値に基づいて、複数のセントロイドの各々に対応する値であるセントロイド値を生成することにより、効率的なクラスタリングを可能にすることができる。
【０１７２】
また、実施形態に係る情報処理装置１００において、生成部１３２は、複数のセントロイドの各々の割当オブジェクトに対応するベクトルをオブジェクト値として、複数のセントロイドの各々に対応するベクトルをセントロイド値として生成する。
【０１７３】
このように、実施形態に係る情報処理装置１００は、複数のセントロイドの各々の割当オブジェクトに対応するベクトルをオブジェクト値として、複数のセントロイドの各々に対応するベクトルをセントロイド値として生成することにより、効率的なクラスタリングを可能にすることができる。
【０１７４】
また、実施形態に係る情報処理装置１００において、生成部１３２は、複数のセントロイドの各々の割当オブジェクトのオブジェクト値の平均値を、複数のセントロイドの各々のセントロイド値として生成する。
【０１７５】
このように、実施形態に係る情報処理装置１００は、複数のセントロイドの各々の割当オブジェクトのオブジェクト値の平均値を、複数のセントロイドの各々のセントロイド値として生成することにより、効率的なクラスタリングを可能にすることができる。
【０１７６】
また、実施形態に係る情報処理装置１００において、生成部１３２は、複数のセントロイドのうち、一のセントロイドである第１セントロイドの割当オブジェクトである第１割当オブジェクトに変更があった場合、変更後の第１割当オブジェクトに基づいて、第１セントロイドを更新後セントロイドに更新する。
【０１７７】
このように、実施形態に係る情報処理装置１００は、複数のセントロイドのうち、一のセントロイドである第１セントロイドの割当オブジェクトである第１割当オブジェクトに変更があった場合、変更後の第１割当オブジェクトに基づいて、第１セントロイドを更新後セントロイドに更新することにより、効率的なクラスタリングを可能にすることができる。
【０１７８】
また、実施形態に係る情報処理装置１００において、生成部１３２は、第１セントロイドが更新後セントロイドに更新された場合、更新後セントロイドに基づいて、グラフ情報を更新する。
【０１７９】
このように、実施形態に係る情報処理装置１００は、第１セントロイドが更新後セントロイドに更新された場合、更新後セントロイドに基づいて、グラフ情報を更新することにより、効率的なクラスタリングを可能にすることができる。
【０１８０】
また、実施形態に係る情報処理装置１００において、生成部１３２は、グラフ情報が更新された場合、更新後のグラフ情報を用いて、更新後セントロイドの割当オブジェクトを更新することにより、クラスタリング情報を生成する。
【０１８１】
このように、実施形態に係る情報処理装置１００は、グラフ情報が更新された場合、更新後のグラフ情報を用いて、更新後セントロイドの割当オブジェクトを更新することにより、クラスタリング情報を生成することにより、効率的なクラスタリングを可能にすることができる。
【０１８２】
また、実施形態に係る情報処理装置１００において、生成部１３２は、更新後セントロイドに対応する値である更新後セントロイド値を生成する。
【０１８３】
このように、実施形態に係る情報処理装置１００は、更新後セントロイドに対応する値である更新後セントロイド値を生成することにより、効率的なクラスタリングを可能にすることができる。
【０１８４】
また、実施形態に係る情報処理装置１００において、生成部１３２は、変更後の第１割当オブジェクトに基づいて、更新後セントロイドの更新後セントロイド値を生成する。
【０１８５】
このように、実施形態に係る情報処理装置１００は、変更後の第１割当オブジェクトに基づいて、更新後セントロイドの更新後セントロイド値を生成することにより、効率的なクラスタリングを可能にすることができる。
【０１８６】
また、実施形態に係る情報処理装置１００において、生成部１３２は、更新後セントロイドの更新後セントロイド値に基づいて、更新後セントロイドの割当オブジェクトを更新することにより、クラスタリング情報を生成する。
【０１８７】
このように、実施形態に係る情報処理装置１００は、更新後セントロイドの更新後セントロイド値に基づいて、更新後セントロイドの割当オブジェクトを更新することにより、クラスタリング情報を生成することにより、効率的なクラスタリングを可能にすることができる。
【０１８８】
また、実施形態に係る情報処理装置１００において、生成部１３２は、第１セントロイドに対応する値である第１セントロイド値と、更新後セントロイド値と、第１割当オブジェクトに対応する値である第１オブジェクト値とに基づいて、第１割当オブジェクトを更新後セントロイドまたは他のセントロイドに割り当てたクラスタリング情報を生成する。
【０１８９】
このように、実施形態に係る情報処理装置１００は、第１セントロイドに対応する値である第１セントロイド値と、更新後セントロイド値と、第１割当オブジェクトに対応する値である第１オブジェクト値とに基づいて、第１割当オブジェクトを更新後セントロイドまたは他のセントロイドに割り当てたクラスタリング情報を生成することにより、効率的なクラスタリングを可能にすることができる。
【０１９０】
また、実施形態に係る情報処理装置１００において、生成部１３２は、第１セントロイド値及び第１オブジェクト値の類似度と、更新後セントロイド値及び第１オブジェクト値の類似度との比較に基づいて、第１割当オブジェクトを更新後セントロイドまたは他のセントロイドに割り当てたクラスタリング情報を生成する。
【０１９１】
このように、実施形態に係る情報処理装置１００は、第１セントロイド値及び第１オブジェクト値の類似度と、更新後セントロイド値及び第１オブジェクト値の類似度との比較に基づいて、第１割当オブジェクトを更新後セントロイドまたは他のセントロイドに割り当てたクラスタリング情報を生成することにより、効率的なクラスタリングを可能にすることができる。
【０１９２】
また、実施形態に係る情報処理装置１００において、生成部１３２は、第１割当オブジェクトが第１セントロイドよりも更新後セントロイドに類似する場合、第１割当オブジェクトを更新後セントロイドに割り当てたクラスタリング情報を生成する。
【０１９３】
このように、実施形態に係る情報処理装置１００は、第１割当オブジェクトが第１セントロイドよりも更新後セントロイドに類似する場合、第１割当オブジェクトを更新後セントロイドに割り当てたクラスタリング情報を生成することにより、効率的なクラスタリングを可能にすることができる。
【０１９４】
また、実施形態に係る情報処理装置１００において、生成部１３２は、第１割当オブジェクトが更新後セントロイドよりも第１セントロイドに類似する場合、第１割当オブジェクトを対象オブジェクトとし、第１セントロイドを起点として、グラフ情報を探索することにより、第１割当オブジェクトを更新後セントロイドまたは他のセントロイドに割り当てたクラスタリング情報を生成する。
【０１９５】
このように、実施形態に係る情報処理装置１００は、第１割当オブジェクトが更新後セントロイドよりも第１セントロイドに類似する場合、第１割当オブジェクトを対象オブジェクトとし、第１セントロイドを起点として、グラフ情報を探索することにより、第１割当オブジェクトを更新後セントロイドまたは他のセントロイドに割り当てたクラスタリング情報を生成することにより、効率的なクラスタリングを可能にすることができる。
【０１９６】
また、実施形態に係る情報処理装置１００において、生成部１３２は、複数のセントロイドのうち、第１セントロイドとは異なる第２セントロイドに対応する値である第２セントロイド値と、更新後セントロイド値と、第２セントロイドの割当オブジェクトである第２割当オブジェクトに対応する値である第２オブジェクト値とに基づいて、第２割当オブジェクトを更新後セントロイドまたは第２セントロイドに割り当てたクラスタリング情報を生成する。
【０１９７】
このように、実施形態に係る情報処理装置１００は、複数のセントロイドのうち、第１セントロイドとは異なる第２セントロイドに対応する値である第２セントロイド値と、更新後セントロイド値と、第２セントロイドの割当オブジェクトである第２割当オブジェクトに対応する値である第２オブジェクト値とに基づいて、第２割当オブジェクトを更新後セントロイドまたは第２セントロイドに割り当てたクラスタリング情報を生成することにより、効率的なクラスタリングを可能にすることができる。
【０１９８】
また、実施形態に係る情報処理装置１００において、生成部１３２は、第２セントロイド値及び第２オブジェクト値の類似度と、更新後セントロイド値及び第２オブジェクト値の類似度との比較に基づいて、第２割当オブジェクトを更新後セントロイドまたは第２セントロイドに割り当てたクラスタリング情報を生成する。
【０１９９】
このように、実施形態に係る情報処理装置１００は、第２セントロイド値及び第２オブジェクト値の類似度と、更新後セントロイド値及び第２オブジェクト値の類似度との比較に基づいて、第２割当オブジェクトを更新後セントロイドまたは第２セントロイドに割り当てたクラスタリング情報を生成することにより、効率的なクラスタリングを可能にすることができる。
【０２００】
また、実施形態に係る情報処理装置１００において、生成部１３２は、第２割当オブジェクトが第２セントロイドよりも更新後セントロイドに類似する場合、第２割当オブジェクトを更新後セントロイドに割り当てたクラスタリング情報を生成する。
【０２０１】
このように、実施形態に係る情報処理装置１００は、第２割当オブジェクトが第２セントロイドよりも更新後セントロイドに類似する場合、第２割当オブジェクトを更新後セントロイドに割り当てたクラスタリング情報を生成することにより、効率的なクラスタリングを可能にすることができる。
【０２０２】
また、実施形態に係る情報処理装置１００において、生成部１３２は、第２割当オブジェクトが更新後セントロイドよりも第２セントロイドに類似する場合、第２割当オブジェクトを第２セントロイドに割り当てたクラスタリング情報を生成する。
【０２０３】
このように、実施形態に係る情報処理装置１００は、第２割当オブジェクトが更新後セントロイドよりも第２セントロイドに類似する場合、第２割当オブジェクトを第２セントロイドに割り当てたクラスタリング情報を生成することにより、効率的なクラスタリングを可能にすることができる。
【０２０４】
〔７．ハードウェア構成〕
上述してきた実施形態に係る情報処理装置１００は、例えば図１３に示すような構成のコンピュータ１０００によって実現される。図１３は、情報処理装置の機能を実現するコンピュータの一例を示すハードウェア構成図である。コンピュータ１０００は、ＣＰＵ１１００、ＲＡＭ１２００、ＲＯＭ（Read  Only  Memory）１３００、ＨＤＤ（Hard  Disk  Drive）１４００、通信インターフェイス（Ｉ／Ｆ）１５００、入出力インターフェイス（Ｉ／Ｆ）１６００、及びメディアインターフェイス（Ｉ／Ｆ）１７００を有する。
【０２０５】
ＣＰＵ１１００は、ＲＯＭ１３００またはＨＤＤ１４００に格納されたプログラムに基づいて動作し、各部の制御を行う。ＲＯＭ１３００は、コンピュータ１０００の起動時にＣＰＵ１１００によって実行されるブートプログラムや、コンピュータ１０００のハードウェアに依存するプログラム等を格納する。
【０２０６】
ＨＤＤ１４００は、ＣＰＵ１１００によって実行されるプログラム、及び、かかるプログラムによって使用されるデータ等を格納する。通信インターフェイス１５００は、ネットワークＮを介して他の機器からデータを受信してＣＰＵ１１００へ送り、ＣＰＵ１１００が生成したデータをネットワークＮを介して他の機器へ送信する。
【０２０７】
ＣＰＵ１１００は、入出力インターフェイス１６００を介して、ディスプレイやプリンタ等の出力装置、及び、キーボードやマウス等の入力装置を制御する。ＣＰＵ１１００は、入出力インターフェイス１６００を介して、入力装置からデータを取得する。また、ＣＰＵ１１００は、生成したデータを入出力インターフェイス１６００を介して出力装置へ出力する。
【０２０８】
メディアインターフェイス１７００は、記録媒体１８００に格納されたプログラムまたはデータを読み取り、ＲＡＭ１２００を介してＣＰＵ１１００に提供する。ＣＰＵ１１００は、かかるプログラムを、メディアインターフェイス１７００を介して記録媒体１８００からＲＡＭ１２００上にロードし、ロードしたプログラムを実行する。記録媒体１８００は、例えばＤＶＤ（Digital  Versatile  Disc）、ＰＤ（Phase  change  rewritable  Disk）等の光学記録媒体、ＭＯ（Magneto-Optical  disk）等の光磁気記録媒体、テープ媒体、磁気記録媒体、または半導体メモリ等である。
【０２０９】
例えば、コンピュータ１０００が実施形態に係る情報処理装置１００として機能する場合、コンピュータ１０００のＣＰＵ１１００は、ＲＡＭ１２００上にロードされたプログラムを実行することにより、制御部１３０の機能を実現する。コンピュータ１０００のＣＰＵ１１００は、これらのプログラムを記録媒体１８００から読み取って実行するが、他の例として、他の装置からネットワークＮを介してこれらのプログラムを取得してもよい。
【０２１０】
以上、本願の実施形態のいくつかを図面に基づいて詳細に説明したが、これらは例示であり、発明の開示の行に記載の態様を始めとして、当業者の知識に基づいて種々の変形、改良を施した他の形態で本発明を実施することが可能である。
【０２１１】
〔８．その他〕
また、上記実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。例えば、各図に示した各種情報は、図示した情報に限られない。
【０２１２】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
【０２１３】
また、上述してきた各実施形態に記載された各処理は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【０２１４】
また、上述してきた「部（section、module、unit）」は、「手段」や「回路」などに読み替えることができる。例えば、取得部は、取得手段や取得回路に読み替えることができる。
【符号の説明】
【０２１５】
１  情報処理システム
１００  情報処理装置
１２１  オブジェクト情報記憶部
１２２  セントロイド情報記憶部
１２３  グラフ情報記憶部
１２４  クラスタリング情報記憶部
１３０  制御部
１３１  取得部
１３２  生成部
１３３  抽出部
１３４  提供部
１０  端末装置
５０  情報提供装置
Ｎ  ネットワーク
【図１】
2020027590.tif 000003
【図２】
2020027590.tif 000004
【図３】
2020027590.tif 000005
【図４】
2020027590.tif 000006
【図５】
2020027590.tif 000007
【図６】
2020027590.tif 000008
【図７】
2020027590.tif 000009
【図８】
2020027590.tif 000010
【図９】
2020027590.tif 000011
【図１０】
2020027590.tif 000012
【図１１】
2020027590.tif 000013
【図１２】
2020027590.tif 000014
【図１３】
2020027590.tif 000015