以下に、本願に係る情報処理装置、情報処理方法、及び情報処理プログラムを実施するための形態(以下、「実施形態」と呼ぶ)について図面を参照しつつ詳細に説明する。なお、この実施形態により本願に係る情報処理装置、情報処理方法、及び情報処理プログラムが限定されるものではない。また、以下の各実施形態において同一の部位には同一の符号を付し、重複する説明は省略される。
(実施形態)
〔1.情報処理〕
図1を用いて、実施形態に係る情報処理の一例について説明する。図1は、実施形態に係る情報処理の一例を示す図である。図1では、情報処理装置100(図4参照)が所定の基準に基づいて生成した複数のセントロイドを用いて、複数のオブジェクトをクラスタリングするための情報を生成する一例を示す。具体的には、情報処理装置100は、複数のセントロイドをグラフ構造化したグラフインデックス情報(以下「グラフ情報」ともいう)を生成する。また、情報処理装置100は、グラフ情報を用いて、各オブジェクトを複数のセントロイドのいずれかに割当オブジェクトとして割り当てた情報(以下「クラスタリング情報」ともいう)を生成する。すなわち、情報処理装置100は、グラフ情報を用いて、各オブジェクトが複数のセントロイドのいずれかに割り当てられ、セントロイドに基づいてクラスタリングされたクラスタリング情報を生成する。また、図2で、クラスタリング情報の更新の一例を説明するが詳細は後述する。
図1の例では、情報処理装置100が所定のデータ(オブジェクト)がベクトル化され、ベクトル化されたオブジェクトを対象としてクラスタリング情報を生成する場合を示す。すなわち、図1の例では、情報処理装置100がベクトルをオブジェクトに対応するオブジェクト値として処理を行う場合を示す。なお、情報処理装置100が用いる情報は、ベクトルに限らず、各対象の類似性を表現可能な情報であれば、どのような形式の情報であってもよい。例えば、情報処理装置100は、各対象に対応する所定のデータや値を用いて対象をグラフ構造化したグラフ情報を用いてもよい。例えば、情報処理装置100は、各対象から生成された所定の数値(例えば2進数の値や16進数の値)を用いて対象をグラフ構造化したグラフ情報を用いてもよい。例えば、ベクトルに代えて、データ間の距離(類似度)が定義されていれば任意の形態のデータであっても良い。また、以下では、画像情報をオブジェクトとした場合を一例として説明するが、オブジェクトは、動画情報や音声情報等の種々の対象であってもよい。
例えば、情報処理装置100は、数百万〜数億等の単位の膨大な画像情報に対応するオブジェクトを対象に処理を行うが、図面においてはその一部のみを図示する。例えば、情報処理装置100は、図1中の空間情報SP11に示すように、オブジェクトN1〜N21等に示すような複数のオブジェクト(ベクトル)に関する情報を取得する。このように「オブジェクトN*(*は任意の数値)」と記載した場合、そのオブジェクトはオブジェクトID「N*」により識別されるオブジェクトであることを示す。例えば、「オブジェクトN1」と記載した場合、そのオブジェクトはオブジェクトID「N1」により識別されるオブジェクトである。また、図1の例では、説明を簡単にするために、オブジェクトN1〜N21のオブジェクトを図示して処理の概要を説明するが、オブジェクトN1〜N21以外にも多数のオブジェクトが含まれる。また、各オブジェクトは、各オブジェクト(検索対象)に対応する。例えば、画像から抽出された複数の局所特徴量のそれぞれがオブジェクトであってもよい。また、例えば、オブジェクト間の距離が定義された種々のデータがオブジェクトであってもよい。
〔1−1.クラスタリング情報生成〕
まず、図1に示すように、情報処理装置100は、オブジェクトに各々対応する複数のオブジェクトを示すオブジェクト情報を取得する(ステップS11)。図1の例では、情報処理装置100は、空間情報SP11−1に示すようにオブジェクトN1〜N21等を含むオブジェクト情報を取得する。例えば、情報処理装置100は、オブジェクトN1〜N21等を含む空間情報SP11−1を取得する。
図1及び図2に示す例においては、ハッチングを付していない円形(○)にオブジェクトIDを付すことにより各オブジェクトを表現する。例えば、オブジェクトID「N1」により識別されるオブジェクト(オブジェクトN1)は、空間情報SP11−1中の上部のハッチングを付していない円形(○)として表現する。例えば、図1に示す例において、オブジェクトN1〜N21等は、オブジェクトがN次元の実数値にベクトル化されたベクトルデータに対応する。また、図1に示す空間情報SP11−1〜SP11−4は、空間情報の一部を模式的に示す図であり、空間情報SP11−1〜SP11−4は、情報処理により生成される情報に対応する空間情報である。また、以下では、空間情報SP11−1〜SP11−4について、特に区別なく説明する場合には、空間情報SP11と記載する。
なお、図1中の空間情報SP11は、ユークリッド空間であってもよい。また、図1に示す空間情報SP11は、各オブジェクト間の距離等の説明のための概念的な図である。なお、例えば、図1に示す空間情報SP11は、平面上に図示するため2次元の態様にて図示されるが、具体的には、例えば数次元〜数万次元等の多次元空間であるものとする。
本実施形態においては、空間情報SP11における各オブジェクトの距離を対応する各オブジェクト(例えば画像等)間の類似度とする。ここで、図1及び図2に示す例においては、空間情報SP11における各オブジェクト間の距離が小さいオブジェクト同士の類似度が高く、空間情報SP11における各オブジェクト間の距離が大きいオブジェクト同士の類似度が低い。例えば、図1中の空間情報SP11において、オブジェクトID「N21」により識別されるオブジェクト(オブジェクトN21)と、オブジェクトID「N20」により識別されるオブジェクト(オブジェクトN20)とは近接している、すなわち距離が小さい。そのため、オブジェクトN21に対応するオブジェクトと、オブジェクトN20に対応するオブジェクトとは類似度が高いことを示す。また、例えば、図1中の空間情報SP11において、オブジェクトID「N21」により識別されるオブジェクト(オブジェクトN21)と、オブジェクトID「N2」により識別されるオブジェクト(オブジェクトN2)とは遠隔にある、すなわち距離が大きい。そのため、オブジェクトN21に対応するオブジェクトと、オブジェクトN2に対応するオブジェクトとは類似度が低いことを示す。なお、類似度を示す指標は、本願の情報処理に適用可能であれば、どのような指標であってもよく、距離や向き等を対象とする指標であってもよい。例えば、類似度を示す指標は、本願の情報処理に適用可能であれば、ユークリッド距離やマハラノビス距離等の種々の指標が用いられてもよい。例えば、距離は、2つのオブジェクト間の類似度を反映するものであれば、どのような情報であってもよく、例えばコサイン類似度等の角度に関する情報であってもよい。
その後、情報処理装置100は、セントロイド情報(以下単に「セントロイド」ともいう)を生成する(ステップS12)。例えば、情報処理装置100は、所定の基準に基づいて複数のセントロイドを生成する。情報処理装置100は、所定の基準に基づいて決定される所定数のセントロイドを生成する。例えば、情報処理装置100は、オブジェクト数に基づいて決定される所定数のセントロイドを生成する。例えば、情報処理装置100は、オブジェクト数が「500万」である場合、「5万(=500万/100)」のセントロイドを生成してもよい。なお、上記は一例であり、情報処理装置100は、種々の情報に基づいて、所定数のセントロイドを生成してもよい。例えば、情報処理装置100は、k−means法やk−means++等の種々の従来技術を適宜用いて、所定数のセントロイドを生成してもよい。
例えば、情報処理装置100は、所定数のセントロイドをランダムに生成してもよい。また、情報処理装置100は、各セントロイド間の距離が遠くなるように所定数のセントロイドをランダムに生成してもよい。例えば、情報処理装置100は、任意のセントロイドを初期のセントロイドとして生成し、その後はセントロイドの数が所定数に達するまで、生成済みのセントロイドからの平均距離が最も遠い位置(ベクトル)に対応するセントロイドを生成する処理を繰り返す。なお、上記は一例であり、情報処理装置100は、種々の方法により、所定数のセントロイドを生成してもよい。
図1の例では、情報処理装置100は、所定数のセントロイドをランダムに生成するものとする。これにより、情報処理装置100は、図1中の空間情報SP11−2に示すように、セントロイドC1〜C6等を含む複数のセントロイドを生成する。このように、「セントロイドC*(*は任意の数値)」と記載した場合、そのセントロイドはセントロイドID「C*」により識別されるセントロイドであることを示す。例えば、「セントロイドC4」と記載した場合、そのセントロイドはセントロイドID「C4」により識別されるセントロイド(ベクトル)である。なお、情報処理装置100は、オブジェクトN1〜N21等から、セントロイドとするオブジェクトを選択することにより所定数のセントロイドを生成してもよい。例えば、情報処理装置100は、オブジェクトN1〜N21等から、所定数のオブジェクトを選択することにより所定数のセントロイドを生成してもよい。例えば、情報処理装置100は、オブジェクトN1〜N21等から、セントロイドとして利用するオブジェクトを選択、選択したオブジェクトのベクトルを自身のベクトルとするセントロイドを生成することにより、所定数のセントロイドを生成してもよい。情報処理装置100は、上記のオブジェクトN1〜N21等からの選択により、セントロイドC1〜C6等を含む複数のセントロイドを生成してもよい。図1の例では、情報処理装置100がベクトルをセントロイドに対応するセントロイド値として処理を行う場合を示す。図1の例では、説明を簡単にするためにセントロイドC1〜C6のみを図示するが、情報処理装置100は、オブジェクト数に基づいて、セントロイドC1〜C6を含む多数のセントロイドを生成してもよい。また、図1及び図2に示す例においては、ハッチングを付した円形(○)にセントロイドIDを付すことにより各セントロイドを表現する。例えば、セントロイドID「C1」により識別されるセントロイド(セントロイドC1)は、空間情報SP11−1中の左上のハッチングを付した円形(○)として表現する。なお、図1及び図2に示す例においては、識別性の向上のために、セントロイドに対応する円形(○)は、オブジェクトに対応する円形(○)よりも大きく図示する。
図1の例では、情報処理装置100は、セントロイド情報記憶部122−1に示すような複数のセントロイド情報(セントロイド)を生成する。このように、図1や図2では、セントロイド情報の更新に応じて、セントロイド情報記憶部122をセントロイド情報記憶部122−1、122−2として説明する。すなわち、図1や図2の例では、セントロイド情報記憶部122−1から、セントロイド情報記憶部122−2に更新されることを示す。また、セントロイド情報記憶部122−1、122−2は同一のセントロイド情報記憶部122である。また、以下では、セントロイド情報記憶部122−1、122−2について、特に区別することなく説明する場合には、セントロイド情報記憶部122と記載する。
図1中のセントロイド情報記憶部122に示す「セントロイドID」は、セントロイドを識別するための識別情報を示す。また、図1中のセントロイド情報記憶部122に示す「ベクトル情報」は、セントロイドIDにより識別されるセントロイド(ベクトル)に対応するベクトル情報を示す。例えば、セントロイドID「C1」により識別されるセントロイド(セントロイドC1)に対応するベクトル情報は、「10,24,54,2・・・」のN次元ベクトルであることを示す。また、例えば、セントロイドID「C4」により識別されるセントロイド(セントロイドC4)に対応するベクトル情報は、「32,1,120,31・・・」のN次元ベクトルであることを示す。情報処理装置100は、上記のようなセントロイドを生成し、生成したセントロイドの情報をセントロイド情報記憶部122−1に格納する。
そして、情報処理装置100は、グラフ情報を生成する(ステップS13)。例えば、情報処理装置100は、複数のセントロイドをグラフ構造化したグラフインデックスであるグラフ情報を生成する。情報処理装置100は、図1中の空間情報SP11−3に示すグラフ情報GR11のようなグラフ情報を生成する。図1の例では、情報処理装置100は、セントロイドC1〜C6等を距離(類似度)に基づいてエッジで連結したグラフインデックスであるグラフ情報を生成する。例えば、情報処理装置100は、グラフ生成に関する種々の従来技術を適宜用いて、グラフ情報を生成することにより、効率的にグラフ情報を生成してもよい。例えば、情報処理装置100は、グラフ型のインデックスの生成方法を適宜用いて、グラフ情報を生成することにより、効率的にグラフ情報を生成してもよい。ここでいうグラフ型のインデックスの生成方法は、例えば、ノードを逐次追加する手法であり、一ノードをグラフに追加する時に、そのグラフを用いて追加対象ノードの近傍ノードを検索してその近傍ノードと対象ノードを無向エッジで接続するものである。
例えば、情報処理装置100は、k近傍グラフ(k-nearest neighbor graph)に関する技術を用いて、セントロイドC1〜C6等をエッジで連結したグラフインデックスであるグラフ情報を生成する。例えば、情報処理装置100は、セントロイドC1〜C6等の各ノードをk個の近傍ノード(セントロイド)に接続する。これにより、情報処理装置100は、セントロイドC1〜C6等の各ノードがk個の近傍ノード(セントロイド)に接続されたグラフ情報を生成する。例えば、情報処理装置100は、特許文献4に記載されるような処理に基づいて、グラフ情報を生成してもよい。なお情報処理装置100は、各セントロイド間の距離と、所定の閾値(以下「閾値TH1」とする)とを比較し、距離が閾値TH1以下であるセントロイド間をエッジにより連結してもよい。図1の例では、セントロイドC1とセントロイドC2との間の距離は、閾値TH1以下であり、セントロイドC1とセントロイドC3との間の距離は、閾値TH1以下であってもよい。また、セントロイドC2とセントロイドC3との間の距離は、閾値TH1以下であり、セントロイドC2とセントロイドC4との間の距離は、閾値TH1以下であってもよい。また、セントロイドC3とセントロイドC4との間の距離は、閾値TH1より大きく、セントロイドC3とセントロイドC5との間の距離は、閾値TH1以下であり、セントロイドC3とセントロイドC6との間の距離は、閾値TH1以下であってもよい。また、セントロイドC4とセントロイドC6との間の距離は、閾値TH1以下であってもよい。また、セントロイドC5とセントロイドC6との間の距離は、閾値TH1以下であってもよい。
図1の例では、情報処理装置100は、各セントロイドC1〜C6間の距離と、閾値TH1とを比較し、距離が閾値TH1以下であるセントロイド間をエッジにより連結してもよい。具体的には、情報処理装置100は、セントロイドC1とセントロイドC2との間の距離は閾値TH1以下であるため、セントロイドC1とセントロイドC2との間を連結してもよい。また、情報処理装置100は、セントロイドC1とセントロイドC3との間の距離は閾値TH1以下であるため、セントロイドC1とセントロイドC3との間を連結してもよい。また、情報処理装置100は、セントロイドC3とセントロイドC4との間の距離は閾値TH1より大きいため、セントロイドC3とセントロイドC4との間を連結しない。なお、上記は一例であり、情報処理装置100は、グラフ情報を生成可能であれば、どのような方法によりグラフ情報を生成してもよい。
これにより、図1の例では、情報処理装置100は、セントロイドC1〜C6等の複数のセントロイドを、エッジE1〜E8等のエッジで連結するグラフ情報GR11を生成する。このように「エッジE*(*は任意の数値)」と記載した場合、そのエッジはエッジID「E*」により識別されるエッジであることを示す。例えば、「エッジE4」と記載した場合、そのエッジはエッジID「E4」により識別されるエッジである。図1の例では、情報処理装置100は、無向エッジであるエッジE1〜E8等に関する情報を含むグラフ情報GR11を生成する。具体的には、情報処理装置100は、セントロイドC1とセントロイドC2との間を連結するエッジE1やセントロイドC1とセントロイドC3との間を連結するエッジE2等を生成する。
図1中のグラフ情報GR11に示すように、セントロイドC1とセントロイドC3とは、エッジE2により連結される。すなわち、エッジE2は、セントロイドC1とセントロイドC3とを連結する。例えば、セントロイドC1またはセントロイドC3のうち一方を参照元とし、他方を参照先として連結されるエッジE2により、セントロイドC1とセントロイドC3との間を双方向に辿ることが可能となる。なお、各オブジェクトを連結するエッジは、無向エッジに限らず、種々のエッジであってもよい。例えば、各オブジェクトを連結するエッジは、相互に参照可能な双方向エッジであってもよい。また、例えば、各オブジェクトを連結するエッジは、オブジェクトを連結する方向が有る有向エッジであってもよい。ここでいう、有向エッジとは、一方向にしかデータを辿れないエッジを意味してもよい。例えば、エッジは、連結する一方から他方へのみ辿ることができる有向エッジであってもよい。
図1の例では、情報処理装置100は、グラフ情報記憶部123−1に示すような複数のセントロイド情報(セントロイド)を生成する。このように、図1や図2では、グラフ情報記憶部123の更新に応じて、グラフ情報記憶部123をグラフ情報記憶部123−1、123−2として説明する。すなわち、図1や図2の例では、グラフ情報記憶部123−1から、グラフ情報記憶部123−2に更新されることを示す。また、グラフ情報記憶部123−1、123−2は同一のグラフ情報記憶部123である。また、以下では、グラフ情報記憶部123−1、123−2について、特に区別することなく説明する場合には、グラフ情報記憶部123と記載する。
図1中のグラフ情報記憶部123に示す「セントロイドID」は、グラフ情報(グラフデータ)における各セントロイドを識別するための識別情報を示す。図1中のグラフ情報記憶部123に示す「エッジ情報」は、対応するセントロイドに接続されるエッジに関する情報を示す。また、「エッジID」は、セントロイド間を連結するエッジを識別するための識別情報を示す。また、「参照先」は、エッジにより連結された参照先(セントロイド)を示す情報を示す。
図1の例では、セントロイドID「C1」には、参照先をセントロイドID「C2」とするエッジID「E1」を含むエッジ情報が対応付けて記憶される。このように、セントロイドID「C1」により識別されるセントロイド(セントロイドC1)は、エッジID「E1」により識別されるエッジ(エッジE1)により、セントロイドID「C2」により識別されるセントロイド(セントロイドC2)と連結されることを示す。すなわち、図1の例では、セントロイドC1からはセントロイドC2に辿ることができることを示す。また、図1の例では、セントロイドID「C2」には、参照先をセントロイドID「C1」とするエッジID「E1」を含むエッジ情報が対応付けて記憶される。このように、セントロイドC2は、エッジE1により、セントロイドC1と連結されることを示す。すなわち、図1の例では、セントロイドC2からはセントロイドC1に辿ることができることを示す。このように、図1の例では、セントロイドC1とセントロイドC2とはエッジE1により双方向に辿ることができることを示す。
そして、情報処理装置100は、グラフ情報を用いて、クラスタリング情報を生成する(ステップS14)。例えば、情報処理装置100は、グラフ情報を探索し、複数のセントロイドのいずれかに各オブジェクトを割当オブジェクトとして割り当てることにより、クラスタリング情報を生成する。情報処理装置100は、図1中の空間情報SP11−4に示すようなクラスタリング情報を生成する。図1の例では、情報処理装置100は、グラフ情報GR11を用いて、オブジェクトN1〜N21等をクラスタリングC1〜C6等に割り当てたクラスタリング情報を生成する。これにより、情報処理装置100は、オブジェクトN1〜N21等をクラスタリングC1〜C6等に対応する複数のクラスタに分割したクラスタリング情報を生成する。
例えば、情報処理装置100は、複数のオブジェクトN1〜N21等のうち一のオブジェクトを対象オブジェクト(検索対象)として、グラフ情報GR11を探索することにより、複数のオブジェクトN1〜N21等の各々を割当オブジェクトとして複数のセントロイドC1〜C6等のいずれかに割り当てたクラスタリング情報を生成する。例えば、情報処理装置100は、オブジェクトN1を対象オブジェクトとする場合、オブジェクトN1を検索クエリとして、グラフ情報GR11を探索し、オブジェクトN1に近傍のセントロイドを抽出する。例えば、情報処理装置100は、オブジェクトN1を対象オブジェクトとする場合、オブジェクトN1を検索クエリとして、グラフ情報GR11を探索し、オブジェクトN1に最も近傍であると推定されるセントロイドC1を抽出する。このように、情報処理装置100は、オブジェクトN1を対象オブジェクトとする場合、オブジェクトN1の最近傍のセントロイドと推定されるセントロイドを抽出する。そして、情報処理装置100は、抽出したセントロイド(以下「割当先セントロイド」ともいう)にオブジェクトN1を割当オブジェクトとして割り当てる。
このように、情報処理装置100は、各オブジェクトを対象オブジェクトとして、グラフ情報GR11を検索(探索)することにより、各オブジェクトの近傍に位置するセントロイドを抽出する。まず、情報処理装置100は、セントロイドC1〜C6から、探索の起点となるセントロイド(以下「起点セントロイド」ともいう)を選択(抽出)する。図1の例では、情報処理装置100は、セントロイドC1〜C6から、探索の起点となる起点セントロイドをランダムに抽出する。なお、情報処理装置100は、種々の情報を用いて、起点セントロイドを抽出(決定)してもよいが、この点についての詳細は後述する。
そして、情報処理装置100は、起点セントロイドを起点として、グラフ情報GR11を検索することにより、各オブジェクトについて割当先セントロイドを抽出する。例えば、情報処理装置100は、1つ(所定数)のセントロイドを割当先セントロイドとして抽出する。例えば、情報処理装置100は、図12に示すような検索処理により、各オブジェクトの割当先セントロイドを抽出してもよいが、詳細は後述する。
例えば、情報処理装置100は、オブジェクトN1を対象オブジェクトとする場合、ランダムに抽出したセントロイドC3を起点セントロイドとして、グラフ情報GR11を探索することにより、セントロイドC1をオブジェクトN1の割当先セントロイドとして抽出する。図1の例では、情報処理装置100は、オブジェクトN1からの距離が最も近いセントロイドC1をオブジェクトN1の割当先セントロイドとして抽出する。例えば、情報処理装置100は、起点セントロイドであるセントロイドC3を起点として、グラフ情報GR11中のエッジを辿ることにより、セントロイドC1をオブジェクトN1の割当先セントロイドとして抽出する。
これにより、情報処理装置100は、セントロイドC1にオブジェクトN1を割当オブジェクトとして割り当てることを示す情報を生成する。図1の例では、情報処理装置100は、オブジェクトN1をセントロイドC1に割当エッジASにより連結することにより、セントロイドC1にオブジェクトN1を割り当てることを示す情報を生成する。なお、図1では、割当エッジASのみ符号を付すが、セントロイドとオブジェクトとを連結する点線は、オブジェクトのセントロイドへの割当てを示す。各オブジェクトは、点線で結ばれたセントロイドの割当オブジェクトとして割り当てられたことを示す。
また、例えば、情報処理装置100は、オブジェクトN2を対象オブジェクトとする場合、ランダムに抽出したセントロイドC2を起点セントロイドとして、グラフ情報GR11を探索することにより、セントロイドC1をオブジェクトN2の割当先セントロイドとして抽出する。これにより、情報処理装置100は、セントロイドC2にオブジェクトN1を割当オブジェクトとして割り当てることを示す情報を生成する。
また、例えば、情報処理装置100は、オブジェクトN7を対象オブジェクトとする場合、ランダムに抽出したセントロイドC2を起点セントロイドとして、グラフ情報GR11を探索することにより、セントロイドC2をオブジェクトN7の割当先セントロイドとして抽出する。これにより、情報処理装置100は、セントロイドC2にオブジェクトN7を割当オブジェクトとして割り当てることを示す情報を生成する。
また、例えば、情報処理装置100は、オブジェクトN9を対象オブジェクトとする場合、ランダムに抽出したセントロイドC2を起点セントロイドとして、グラフ情報GR11を探索することにより、セントロイドC3をオブジェクトN9の割当先セントロイドとして抽出する。これにより、情報処理装置100は、セントロイドC3にオブジェクトN9を割当オブジェクトとして割り当てることを示す情報を生成する。
また、例えば、情報処理装置100は、オブジェクトN13を対象オブジェクトとする場合、ランダムに抽出したセントロイドC5を起点セントロイドとして、グラフ情報GR11を探索することにより、セントロイドC4をオブジェクトN13の割当先セントロイドとして抽出する。これにより、情報処理装置100は、セントロイドC4にオブジェクトN13を割当オブジェクトとして割り当てることを示す情報を生成する。
また、例えば、情報処理装置100は、オブジェクトN16を対象オブジェクトとする場合、ランダムに抽出したセントロイドC1を起点セントロイドとして、グラフ情報GR11を探索することにより、セントロイドC5をオブジェクトN16の割当先セントロイドとして抽出する。これにより、情報処理装置100は、セントロイドC5にオブジェクトN16を割当オブジェクトとして割り当てることを示す情報を生成する。
また、例えば、情報処理装置100は、オブジェクトN21を対象オブジェクトとする場合、ランダムに抽出したセントロイドC1を起点セントロイドとして、グラフ情報GR11を探索することにより、セントロイドC6をオブジェクトN21の割当先セントロイドとして抽出する。これにより、情報処理装置100は、セントロイドC6にオブジェクトN21を割当オブジェクトとして割り当てることを示す情報を生成する。
図1の例では、情報処理装置100は、上記のような処理により、オブジェクトN1〜N21等をセントロイドC1〜C6のいずれかに割り当てたクラスタリング情報を生成する。情報処理装置100は、図1中のクラスタリング情報記憶部124−1に示すようなクラスタリング情報を生成する。このように、図1や図2では、クラスタリング情報記憶部124の更新に応じて、クラスタリング情報記憶部124をクラスタリング情報記憶部124−1、124−2として説明する。すなわち、図1や図2の例では、クラスタリング情報記憶部124−1から、クラスタリング情報記憶部124−2に更新されることを示す。また、クラスタリング情報記憶部124−1、124−2は同一のクラスタリング情報記憶部124である。また、以下では、クラスタリング情報記憶部124−1、124−2について、特に区別することなく説明する場合には、クラスタリング情報記憶部124と記載する。
図1中のクラスタリング情報記憶部124に示す「セントロイドID」は、セントロイドを識別するための識別情報を示す。また、図1中のクラスタリング情報記憶部124に示す「オブジェクトID」は、セントロイドIDにより識別されるセントロイドに対応付けられたオブジェクトを示す。
図1に示す例においては、セントロイドID「C1」により識別されるセントロイド(セントロイドC1)に対応付けられたオブジェクトは、オブジェクトN1、N2、N3、N4等のオブジェクトであることを示す。また、図1に示す例においては、セントロイドID「C2」により識別されるセントロイド(セントロイドC2)に対応付けられたオブジェクトは、オブジェクトN5、N6、N7、N8等のオブジェクトであることを示す。
これにより、情報処理装置100は、各オブジェクトN1〜N21等が、セントロイドC1〜C6の各々に対応するクラスタのうち、いずれのクラスタに属するかを示すクラスタリング情報を適切に生成することができる。具体的には、情報処理装置100は、オブジェクトN1〜N4がセントロイドC1に対応するクラスタに属することを示すクラスタリング情報を生成する。また、情報処理装置100は、オブジェクトN5〜N8がセントロイドC2に対応するクラスタに属することを示すクラスタリング情報を生成する。また、情報処理装置100は、オブジェクトN9〜N11がセントロイドC3に対応するクラスタに属することを示すクラスタリング情報を生成する。また、情報処理装置100は、オブジェクトN12〜N14がセントロイドC4に対応するクラスタに属することを示すクラスタリング情報を生成する。また、情報処理装置100は、オブジェクトN15〜N17がセントロイドC5に対応するクラスタに属することを示すクラスタリング情報を生成する。また、情報処理装置100は、オブジェクトN18〜N21がセントロイドC6に対応するクラスタに属することを示すクラスタリング情報を生成する。
上述したように、情報処理装置100は、グラフ情報GR11を用いることにより、オブジェクトN1〜N21をセントロイドC1〜C6のいずれかに割り当てたクラスタリング情報を適切に生成することができる。具体的には、情報処理装置100は、各オブジェクトN1〜N21等を対象オブジェクトとして、グラフ情報GR11を探索し、割当先セントロイドを抽出することにより、各オブジェクトN1〜N21等が属するクラスタを適切に決定することができる。例えば、情報処理装置100は、各オブジェクトN1〜N21等を対象オブジェクトとして、グラフ情報GR11を探索することにより、対象オブジェクトと全セントロイドとの類似度(距離)を比較することなく、対象オブジェクトの割当先セントロイドを抽出することができる。したがって、情報処理装置100は、対象オブジェクトと全セントロイドとの類似度(距離)を比較する場合に比べて、より高速に各オブジェクトをクラスタリングすることができる。すなわち、情報処理装置100は、複数のセントロイドをグラフ構造化したグラフインデックス(グラフ情報)を用いることにより、効率的なクラスタリングを可能にすることができる。
〔1−2.割当オブジェクトの更新〕
情報処理装置100は、各セントロイドの空間情報SP11における位置を割当オブジェクトに応じて更新する。情報処理装置100は、各セントロイドのベクトルを割当オブジェクトのベクトルに応じて更新する。例えば、情報処理装置100は、一のセントロイドに割り当てられた複数データ(割当オブジェクト)の中央座標(重心)を一のセントロイドの座標(セントロイド値)としてもよい。例えば、情報処理装置100は、一のセントロイドの割当オブジェクトに対応するベクトルの平均値を、一のセントロイドのベクトルとして生成する。この点について図2を用いて説明する。図2は、実施形態に係る情報処理の一例を示す図である。図2の例では、セントロイドC3のベクトルの更新を一例として説明する。
図2の例では、情報処理装置100は、セントロイドC3にオブジェクトN9〜N11が割当オブジェクトとして割り当てられたため、セントロイドC3の割当オブジェクトの変更に応じて、セントロイドC3を更新する。このように、情報処理装置100は、一のセントロイド(「第1セントロイド」ともいう)の割当オブジェクト(「第1割当オブジェクト」ともいう)に変更があった場合、変更後の第1割当オブジェクトに基づいて、第1セントロイド(更新前セントロイド)を更新後セントロイドに更新する。
図2に示す空間情報SP11−4は、図1に示す空間情報SP11−4と同様である。また、図2に示す空間情報SP11−4〜SP11−7は、空間情報の一部を模式的に示す図であり、空間情報SP11−4〜SP11−7は、情報処理により生成される情報に対応する空間情報である。また、以下では、空間情報SP11−4〜SP11−7について、特に区別なく説明する場合には、空間情報SP11と記載する。また、空間情報SP11−4〜SP11−7においては、図の見易さのため、他の空間情報SP11で示した符号の図示を適宜省略する。例えば、空間情報SP11−5では、空間情報SP11−4に示したセントロイドC1やオブジェクトN1等に対応する符号の図示を省略する。
図2の例では、情報処理装置100は、セントロイドC3を更新する(ステップS21)。なお、図2の例では、更新前後のセントロイドC3の識別のために、更新前のセントロイドC3を更新前セントロイドOC3とし、更新後のセントロイドC3を更新後セントロイドNC3とする場合がある。情報処理装置100は、セントロイドC3の割当オブジェクトであるオブジェクトN9〜N11に基づいて、セントロイドC3を更新する。具体的には、情報処理装置100は、オブジェクトN9〜N11のオブジェクト値であるベクトルに基づいて、セントロイドC3のセントロイド値であるベクトルを更新する。情報処理装置100は、オブジェクトN9〜N11のオブジェクト値であるベクトルに基づいて、更新前セントロイドOC3のベクトルから、更新後セントロイドNC3のベクトルにセントロイドC3のベクトルを更新する。
これにより、情報処理装置100は、セントロイド情報記憶部122に記憶されたセントロイドC3のベクトルを更新する(ステップS21−1)。図2の例では、情報処理装置100は、セントロイド情報記憶部122−1に示すセントロイドC3のベクトルからセントロイド情報記憶部122−2に示すセントロイドC3のベクトルに更新する。具体的には、情報処理装置100は、セントロイド情報記憶部122−1に示す更新前セントロイドOC3のベクトル「25,8,55,2・・・」から、セントロイド情報記憶部122−2に示す更新後セントロイドNC3のベクトル「28,11,43,3・・・」にセントロイドC3のベクトルを更新する。これにより、情報処理装置100は、空間情報SP11−5に示すように、更新前セントロイドOC3から更新後セントロイドNC3にセントロイドC3を更新する。
そして、情報処理装置100は、グラフ情報を更新する(ステップS22)。情報処理装置100は、セントロイドC3の更新に応じて、グラフ情報GR11を更新する。情報処理装置100は、図2中の空間情報SP11−6に示すようにグラフ情報GR11を更新する。なお、通常クラスタリングの終盤になるほどセントロイドの更新による移動距離は大きくなくなる。したがって、セントロイドが更新されたからといってグラフを必ずしも更新しなければならないわけではない。セントロイドの更新回数や移動距離に対する閾値を事前に決めておき、その閾値を越えた場合にのみ、グラフを更新しても良い。例えば、情報処理装置100は、セントロイドの更新回数や移動距離に対する閾値を用いて、グラフの更新を行うかを決定(判定)してもよい。すなわち、情報処理装置100は、セントロイドの更新における所定の基準に基づいて、グラフの更新を行うかを決定(判定)してもよい。例えば、情報処理装置100は、セントロイドの更新回数に関する基準(例えば閾値等)を用いる場合、セントロイドの更新回数を示す情報(更新回数情報)を記憶部120(図4参照)に記憶してもよい。そして、情報処理装置100は、記憶部120(図4参照)に記憶されたセントロイドの更新回数に対する閾値(回数閾値)を取得し、取得した回数閾値と、更新回数情報が示す更新回数とを比較することにより、グラフの更新を行うかを決定(判定)してもよい。例えば、情報処理装置100は、更新回数が回数閾値以下である場合、グラフを更新すると決定し、グラフを更新してもよい。例えば、情報処理装置100は、更新回数が回数閾値より大きい場合、グラフを更新しないと決定し、グラフを更新しなくてもよい。
例えば、情報処理装置100は、更新前のセントロイド(ノード)を探索開始セントロイド(ノード)として更新後のセントロイドの近傍セントロイド(ノード)を検索し、更新後のセントロイド(ノード)を追加して、その近傍セントロイド(ノード)へエッジで接続する。この場合、情報処理装置100は、検索結果として得られた近傍セントロイド(ノード)と更新後のセントロイド(ノード)をエッジにより接続する。そして、情報処理装置100は、更新前のセントロイド(ノード)を削除する。例えば、情報処理装置100は、更新前のセントロイド(ノード)と更新前のセントロイド(ノード)に接続されるエッジを削除する。すなわち、情報処理装置100は、更新前のセントロイド(ノード)を削除するとともに、更新前のセントロイド(ノード)の接続先との関係を削除する。
図2の例では、情報処理装置100は、更新前セントロイドOC3を探索開始(起点セントロイド)として更新後セントロイドNC3の近傍セントロイドを検索し、更新後セントロイドNC3をグラフ情報GR11に追加して、更新後セントロイドNC3と近傍セントロイドとをエッジで接続する。例えば、情報処理装置100は、検索結果として得られたセントロイドC1、C2、C4〜C6と更新後セントロイドNC3とをエッジにより接続する。そして、情報処理装置100は、更新前セントロイドOC3を削除する。例えば、情報処理装置100は、更新前セントロイドOC3に接続されるエッジを削除する。なお、図2の例では、更新前セントロイドOC3と更新後セントロイドNC3とで同じ接続先(セントロイド)であるエッジは、同じエッジIDのエッジとして処理(管理)する場合を示すが、更新後のエッジは更新前のエッジは異なるエッジIDにより処理(管理)されてもよい。
図2の例では、情報処理装置100は、更新後セントロイドNC3の接続先には、更新後セントロイドNC3の接続先であったセントロイドC1、C2、C5、C6が含まれるため、セントロイドC1、C2、C5、C6からのエッジの接続先を更新前セントロイドOC3から更新後セントロイドNC3に変更する。この場合、更新前セントロイドOC3のエッジの一部または全部が除かれるため、例えば、情報処理装置100は、更新前セントロイドOC3に接続する残りのエッジと更新前セントロイドOC3とを削除する。図2の例では、セントロイドC1、C2、C5、C6からのエッジE2、E3、E5、E6の接続先を更新前セントロイドOC3から更新後セントロイドNC3に変更する。そして、情報処理装置100は、更新前セントロイドOC3により、更新後セントロイドNC3をセントロイドC3として管理する。また、図2の例では、情報処理装置100は、更新後セントロイドNC3とセントロイドC4との間をエッジE50により連結する。そして、情報処理装置100は、更新前セントロイドOC3により、更新後セントロイドNC3をセントロイドC3として管理する。これにより、情報処理装置100は、セントロイドC3とセントロイドC4との間をエッジE50により連結する。このように、図2の例では、情報処理装置100は、上述したグラフ情報GR11を用いた処理により、セントロイドC3とセントロイドC4との間を連結するエッジE50をグラフ情報GR11に追加することにより、グラフ情報GR11を更新する。
これにより、情報処理装置100は、グラフ情報記憶部123に記憶されたグラフ情報を更新する(ステップS22−1)。図2の例では、情報処理装置100は、グラフ情報記憶部123−1に示すグラフ情報からグラフ情報記憶部123−2に示すグラフ情報に更新する。具体的には、情報処理装置100は、グラフ情報記憶部123−1に示すグラフ情報GR11にセントロイドC3とセントロイドC4との間を連結するエッジE50を追加することにより、グラフ情報記憶部123−2に示すグラフ情報GR11に更新する。例えば、情報処理装置100は、グラフ情報記憶部123−2に示すように、参照先をセントロイドC4とするエッジE50を示すエッジ情報をセントロイドID「C3」に対応付けて記憶する。また、図2では図示を省略するが、情報処理装置100は、グラフ情報記憶部123(図7参照)に示すように、参照先をセントロイドC3とするエッジE50を示すエッジ情報をセントロイドID「C4」に対応付けて記憶する。
なお、情報処理装置100は、グラフの更新は、変更があったセントロイドに関する追加及び削除により行ってもよいが、一からグラフを生成し直してもよい。例えば、図2の例では、情報処理装置100は、更新後セントロイドNC3をセントロイドC3とし、k近傍グラフ(k-nearest neighbor graph)に関する技術を用いて、セントロイドC1〜C6等をエッジで連結したグラフ情報を再度生成してもよい。例えば、情報処理装置100は、グラフ情報GR11から全エッジを除き、セントロイドC1〜C6等の各ノードをk個の近傍ノード(セントロイド)に新たなエッジを接続する。これにより、情報処理装置100は、セントロイド更新後におけるセントロイドC1〜C6等がk個の近傍セントロイドに接続されたグラフ情報GR11に更新してもよい。
そして、情報処理装置100は、割当オブジェクトを更新する(ステップS23)。例えば、情報処理装置100は、ベクトルが更新された第1セントロイドであるセントロイドC3の割当オブジェクトや、他のセントロイドC1、C2、C4〜6の割当オブジェクトを更新する。情報処理装置100は、図2中の空間情報SP11−7に示すように割当オブジェクトを更新したクラスタリング情報を生成する。
情報処理装置100は、ベクトルが更新されたセントロイドC3の割当オブジェクトを更新する。情報処理装置100は、セントロイドC3の更新前セントロイド値(第1セントロイド値)と、セントロイドC3の更新後セントロイド値と、第1割当オブジェクトであるオブジェクトN9〜N11のオブジェクト値(第1オブジェクト値)とに基づいて、オブジェクトN9〜N11を更新後のセントロイドC3または他のセントロイドC1、C2、C4〜6に割り当てたクラスタリング情報を生成する。図2の例では、情報処理装置100は、更新前セントロイドOC3のベクトル及びオブジェクトN9〜N11のベクトルの類似度と、更新後セントロイドNC3のベクトル及びオブジェクトN9〜N11のベクトルの類似度との比較に基づいて、オブジェクトN9〜N11を更新後のセントロイドC3または他のセントロイドC1、C2、C4〜6に割り当てたクラスタリング情報を生成する。
例えば、情報処理装置100は、第1割当オブジェクトのベクトルが更新前セントロイドOC3のベクトルよりも更新後セントロイドNC3のベクトルに類似する場合、第1割当オブジェクトを更新後のセントロイドC3に割り当てたクラスタリング情報を生成する。例えば、第1割当オブジェクトのベクトルが更新前セントロイドOC3のベクトルよりも更新後セントロイドNC3のベクトルに類似する場合、その第1割当オブジェクトの最近傍セントロイドは、セントロイドC3のままであると推定される。そのため、情報処理装置100は、第1割当オブジェクトのベクトルが更新前セントロイドOC3のベクトルよりも更新後セントロイドNC3のベクトルに類似する場合、第1割当オブジェクトのセントロイドC3への割当てを維持したクラスタリング情報を生成する。
図2の例では、第1割当オブジェクトであるオブジェクトN9のベクトルは、更新前セントロイドOC3のベクトルよりも更新後セントロイドNC3のベクトルに類似する。また、図2の例では、第1割当オブジェクトであるオブジェクトN10のベクトルは、更新前セントロイドOC3のベクトルよりも更新後セントロイドNC3のベクトルに類似する。また、図2の例では、第1割当オブジェクトであるオブジェクトN11のベクトルは、更新前セントロイドOC3のベクトルよりも更新後セントロイドNC3のベクトルに類似する。
情報処理装置100は、更新前セントロイドOC3のベクトル及びオブジェクトN9のベクトルの類似度と、更新後セントロイドNC3のベクトル及びオブジェクトN9のベクトルの類似度との比較に基づいて、オブジェクトN9を更新後のセントロイドC3に割り当てたクラスタリング情報を生成する。すなわち、情報処理装置100は、オブジェクトN9が更新前セントロイドOC3よりも更新後セントロイドNC3の近傍に位置するため、オブジェクトN9のセントロイドC3への割当てを維持したクラスタリング情報を生成する。
情報処理装置100は、更新前セントロイドOC3のベクトル及びオブジェクトN10のベクトルの類似度と、更新後セントロイドNC3のベクトル及びオブジェクトN10のベクトルの類似度との比較に基づいて、オブジェクトN10を更新後のセントロイドC3に割り当てたクラスタリング情報を生成する。すなわち、情報処理装置100は、オブジェクトN10が更新前セントロイドOC3よりも更新後セントロイドNC3の近傍に位置するため、オブジェクトN10のセントロイドC3への割当てを維持したクラスタリング情報を生成する。
情報処理装置100は、更新前セントロイドOC3のベクトル及びオブジェクトN11のベクトルの類似度と、更新後セントロイドNC3のベクトル及びオブジェクトN11のベクトルの類似度との比較に基づいて、オブジェクトN11を更新後のセントロイドC3に割り当てたクラスタリング情報を生成する。すなわち、情報処理装置100は、オブジェクトN11が更新前セントロイドOC3よりも更新後セントロイドNC3の近傍に位置するため、オブジェクトN11のセントロイドC3への割当てを維持したクラスタリング情報を生成する。
このように、図2の例では、セントロイドC3の割当オブジェクトは更新前のセントロイドC3よりも更新後のセントロイドC3の近傍に位置するため、情報処理装置100は、オブジェクトN9〜N11のセントロイドC3への割当てを維持したクラスタリング情報を生成する。なお、情報処理装置100は、第1割当オブジェクトのベクトルが更新後のセントロイドのベクトルよりも更新前のセントロイドのベクトルの近傍に位置する場合、第1割当オブジェクトを対象オブジェクトとし、更新前のセントロイド(第1セントロイド)を起点として、グラフ情報を探索することにより、第1割当オブジェクトの割当先セントロイドを決定(抽出)するが、詳細は後述する。
また、情報処理装置100は、ベクトルが更新されたセントロイドとは異なる他のセントロイドの割当オブジェクトを更新する。情報処理装置100は、セントロイドC3以外のセントロイドC1、C2、C4〜6等の第2セントロイドの割当オブジェクトを更新する。情報処理装置100は、セントロイドC1、C2、C4〜6等の第2セントロイドのセントロイド値(第2セントロイド値)と、セントロイドC3の更新後セントロイド値と、第2セントロイドの割当オブジェクト(第2割当オブジェクト)のオブジェクト値(第2オブジェクト値)とに基づいて、第2割当オブジェクトを更新後のセントロイドC3または他のセントロイドC1、C2、C4〜6に割り当てたクラスタリング情報を生成する。このように、情報処理装置100は、第1セントロイドとされたセントロイド以外のセントロイドを「第2セントロイド」と記載する場合がある。例えば、セントロイドC3が第1セントロイドである場合、その他のセントロイドC1、C2、C4〜6が第2セントロイドとなる。すなわち、どのセントロイドを第1セントロイドとするかにより、各セントロイドは第1セントロイドになったり、第2セントロイドになったりする。また、第2セントロイドの割当オブジェクトを「第2割当オブジェクト」と記載する場合がある。すなわち、どのセントロイドを第1セントロイドとするかにより、各オブジェクトは第1割当オブジェクトになったり、第2割当オブジェクトになったりする。
例えば、情報処理装置100は、他のセントロイドC1、C2、C4〜6の各割当オブジェクトの割当先を、他のセントロイドC1、C2、C4〜6と、更新後セントロイドNC3とに基づいて決定する。図2の例では、情報処理装置100は、セントロイドC1のオブジェクトN1〜N4の割当先セントロイドを、セントロイドC1のベクトルと、更新後セントロイドNC3のベクトルと、オブジェクトN1〜N4のベクトルとに基づいて決定する。情報処理装置100は、セントロイドC1のベクトル及びオブジェクトN1〜N4のベクトルの類似度と、更新後セントロイドNC3のベクトル及びオブジェクトN1〜N4のベクトルの類似度との比較に基づいて、オブジェクトN1〜N4を更新後のセントロイドC3またはセントロイドC1に割り当てたクラスタリング情報を生成する。
例えば、情報処理装置100は、第2割当オブジェクトのベクトルが更新後セントロイドNC3のベクトルよりも、その第2割当オブジェクトが割り当てられた第2セントロイドのベクトルに類似する場合、その第2割当オブジェクトの第2セントロイドへの割り当てを維持したクラスタリング情報を生成する。例えば、セントロイドC1に割り当てられた第2割当オブジェクトのベクトルが、更新後セントロイドNC3のベクトルよりもセントロイドC1のベクトルに類似する場合、その第2割当オブジェクトの最近傍セントロイドは、セントロイドC1のままであると推定される。そのため、情報処理装置100は、第2セントロイドであるセントロイドC1に割り当てられた第2割当オブジェクト(例えばオブジェクトN1〜N4)のベクトルが、更新後セントロイドNC3のベクトルよりもセントロイドC1のベクトルに類似する場合、その第2割当オブジェクトのセントロイドC1への割当てを維持したクラスタリング情報を生成する。
図2の例では、セントロイドC1の第2割当オブジェクトであるオブジェクトN1〜N4のベクトルは、更新後セントロイドNC3のベクトルよりもセントロイドC1のベクトルに類似する。そのため、情報処理装置100は、オブジェクトN1〜N4が更新後セントロイドNC3よりもセントロイドC1の近傍に位置するため、オブジェクトN1〜N4のセントロイドC1への割当てを維持したクラスタリング情報を生成する。
具体的には、情報処理装置100は、セントロイドC1のベクトル及びオブジェクトN1〜N4のベクトルの類似度と、更新後セントロイドNC3のベクトル及びオブジェクトN1〜N4のベクトルの類似度との比較に基づいて、オブジェクトN1〜N4をセントロイドC1に割り当てたクラスタリング情報を生成する。すなわち、情報処理装置100は、オブジェクトN1〜N4が更新後セントロイドNC3よりもセントロイドC1の近傍に位置するため、オブジェクトN1〜NのセントロイドC1への割当てを維持したクラスタリング情報を生成する。
また、図2の例では、情報処理装置100は、第2セントロイドであるセントロイドC4の第2割当オブジェクトであるオブジェクトN12〜N14の割当先セントロイドC4を、セントロイドC4のベクトルと、更新後セントロイドNC3のベクトルと、オブジェクトN12〜N14のベクトルとに基づいて決定する。例えば、情報処理装置100は、第2セントロイド(例えばセントロイドC4)に割り当てられている第2割当オブジェクト(例えばオブジェクトN12〜N14)が、その第2セントロイドと、第1セントロイドの更新後セントロイド(例えば更新後セントロイドNC3)と、のいずれに近い(類似している)かに応じて、その第2割当オブジェクトの割当先を、その第2割当オブジェクトが割り当てられていた第2セントロイドと、更新後セントロイドとのいずれにするかを決定する。情報処理装置100は、セントロイドC4のベクトル及びオブジェクトN12〜N14のベクトルの類似度と、更新後セントロイドNC3のベクトル及びオブジェクトN12〜N14のベクトルの類似度との比較に基づいて、オブジェクトN12〜N14を更新後のセントロイドC3またはセントロイドC4に割り当てたクラスタリング情報を生成する。
例えば、情報処理装置100は、第2割当オブジェクトのベクトルが更新後セントロイドNC3のベクトルよりもセントロイドC4のベクトルに類似する場合、第2割当オブジェクトをセントロイドC4に割り当てたクラスタリング情報を生成する。図2の例では、セントロイドC4の第2割当オブジェクトであるオブジェクトN13、N14のベクトルは、更新後セントロイドNC3のベクトルよりもセントロイドC4のベクトルに類似する。そのため、情報処理装置100は、オブジェクトN13、N14が更新後セントロイドNC3よりもセントロイドC4の近傍に位置するため、オブジェクトN13、N14のセントロイドC4への割当てを維持したクラスタリング情報を生成する。
具体的には、情報処理装置100は、セントロイドC4のベクトル及びオブジェクトN13、N14のベクトルの類似度と、更新後セントロイドNC3のベクトル及びオブジェクトN13、N14のベクトルの類似度との比較に基づいて、オブジェクトN13、N14をセントロイドC4に割り当てたクラスタリング情報を生成する。すなわち、情報処理装置100は、オブジェクトN13、N14が更新後セントロイドNC3よりもセントロイドC4の近傍に位置するため、オブジェクトN13、N14のセントロイドC4への割当てを維持したクラスタリング情報を生成する。
一方で、情報処理装置100は、第2割当オブジェクトのベクトルがセントロイドC4のベクトルよりも更新後セントロイドNC3のベクトルに類似する場合、第2割当オブジェクトを更新後のセントロイドC3に割り当てたクラスタリング情報を生成する。例えば、第2割当オブジェクトのベクトルがセントロイドC4のベクトルよりも更新後セントロイドNC3のベクトルに類似する場合、その第2割当オブジェクトの最近傍セントロイドは、セントロイドC4からセントロイドC3に変更されたと推定される。そのため、情報処理装置100は、第2割当オブジェクトのベクトルがセントロイドC4のベクトルよりも更新後セントロイドNC3のベクトルに類似する場合、セントロイドC4の第2割当オブジェクトの割当先セントロイドを、セントロイドC4からセントロイドC3へ変更したクラスタリング情報を生成する。
図2の例では、セントロイドC4の第2割当オブジェクトであるオブジェクトN12のベクトルは、セントロイドC4のベクトルよりも更新後セントロイドNC3のベクトルに類似する。情報処理装置100は、セントロイドC4のベクトル及びオブジェクトN12のベクトルの類似度と、更新後セントロイドNC3のベクトル及びオブジェクトN12のベクトルの類似度との比較に基づいて、オブジェクトN12を更新後のセントロイドC3に割り当てたクラスタリング情報を生成する。すなわち、情報処理装置100は、オブジェクトN12がセントロイドC4よりも更新後セントロイドNC3の近傍に位置するため、オブジェクトN12の割当先セントロイドを、セントロイドC4からセントロイドC3へ変更したクラスタリング情報を生成する。
また、図2の例では、情報処理装置100は、残りの第2セントロイドであるセントロイドC2、C5、C6についても同様の処理を行うことにより、各第2セントロイドの第2割当オブジェクトの割当先セントロイドを決定し、クラスタリング情報を生成する。なお、図2の例では、情報処理装置100は、残りの第2セントロイドであるセントロイドC2、C5、C6については、上記のような類似度に比較に基づいて、第2割当オブジェクトの割当先セントロイドを維持すると決定する。そして、情報処理装置100は、更新前のセントロイドC3に関する情報(更新前セントロイドOC3のベクトル)等を除外し、更新後セントロイドNC3のみをセントロイドC3として用いてもよい。
これにより、情報処理装置100は、クラスタリング情報記憶部124に記憶されたクラスタリング情報における割当オブジェクトを更新する(ステップS23−1)。図2の例では、情報処理装置100は、クラスタリング情報記憶部124−1に示すクラスタリング情報(割当情報)からクラスタリング情報記憶部124−2に示すクラスタリング情報(割当情報)に更新する。具体的には、情報処理装置100は、オブジェクトN12の割当先セントロイドを、セントロイドC4からセントロイドC3へ変更する。情報処理装置100は、クラスタリング情報記憶部124−2に示すように、オブジェクトN12をセントロイドC3に対応付けて記憶する。すなわち、情報処理装置100は、オブジェクトN12のセントロイドC4への対応付けを解除し、オブジェクトN12をセントロイドC3に対応付けることにより、オブジェクトN12の割当先セントロイドを、セントロイドC4からセントロイドC3へ変更する。また、情報処理装置100は、所定の終了条件に基づいて、更新処理の繰り返しの終了を判定してもよい。例えば、所定の終了条件は、k−means法と同一であってもよい。ここでいう所定の終了条件は、例えば、セントロイドの座標の変化がなくなることや、変化量が一定量以下になることや、量子化誤差が一定量以下になること等、種々の条件であってもよい。情報処理装置100は、所定の終了条件を満たすまで、更新処理を繰り返す。例えば、情報処理装置100は、割当オブジェクトの変更が無くなるまで、上記のような更新処理を繰り返し実行してもよい。この場合、例えば、情報処理装置100は、割当オブジェクトが変更されたセントロイドC3について、再度上記の更新処理を行ってもよい。また、情報処理装置100は、割当オブジェクトが変更されたセントロイドC4について、更新処理を行ってもよい。
上述したように、情報処理装置100は、割当オブジェクトの変更に応じて更新処理を行うことにより、効率的にクラスタリング情報を生成することができる。具体的には、情報処理装置100は、割当オブジェクトの変更に応じてセントロイド値が更新されたセントロイドについて、更新前よりも更新後に、第1割当オブジェクトが類似する(近傍に位置する)場合、第1割当オブジェクトの割当てを維持することにより、グラフを再度検索することなく、適切に割当先セントロイドを決定することができる。そして、情報処理装置100は、第2セントロイドの第2割当オブジェクトについては、第2セントロイドよりも更新後セントロイドに類似する場合、その第2割当オブジェクトの割当先セントロイドを、更新後セントロイドに変更する。また、情報処理装置100は、更新後セントロイドよりも第2セントロイドに類似する場合、その第2割当オブジェクトの割当先セントロイドを維持する。これにより、情報処理装置100は、更新されたセントロイド以外のセントロイドの割当オブジェクトについても、グラフを再度検索することなく、適切に割当先セントロイドを決定することができる。したがって、情報処理装置100は、全割当オブジェクトについてグラフを用いて割当先セントロイドを決定する場合に比べて、より高速に各オブジェクトの割当先セントロイドを決定し、クラスタリングを更新することができる。すなわち、情報処理装置100は、効率的なクラスタリングを可能にすることができる。
〔1−2−1.グラフを用いた割当オブジェクトの更新について〕
図2の例では、セントロイドC3の第1割当オブジェクトであるオブジェクトN9〜N11が更新前よりも更新後に類似するため、オブジェクトN9〜N11のセントロイドC3への割当てが維持される場合を示したが、情報処理装置100は、第1割当オブジェクトが更新後よりも更新前に類似する場合、グラフを用いて第1割当オブジェクトの割当先セントロイドを決定する。この点について、図11を用いて説明する。図11は、実施形態に係る割当オブジェクトの更新の一例を示す図である。なお、図11において、図1や図2と同様の点については、適宜説明を省略する。
図11に示す空間情報SP11−51は、図2に示す空間情報SP11−6にセントロイドC3の割当オブジェクトとしてオブジェクトN100を追加した状態を示す。また、図11に示す空間情報SP11−51、SP11−52は、空間情報の一部を模式的に示す図であり、空間情報SP11−51、SP11−52は、情報処理により生成される情報に対応する空間情報である。また、以下では、空間情報SP11−51、SP11−52について、特に区別なく説明する場合には、空間情報SP11と記載する。また、空間情報SP11−51、SP11−52においては、図の見易さのため、図1や図2中の他の空間情報SP11で示した符号の図示を適宜省略する。例えば、空間情報SP11−51では、空間情報SP11−4に示したセントロイドC2やオブジェクトN1等に対応する符号の図示を省略する。
図11の例では、セントロイドC3の第1割当オブジェクトのうち、オブジェクトN9〜N11は、図2の場合と同様に、更新前セントロイドOC3のベクトルよりも更新後セントロイドNC3のベクトルに類似する。そのため、情報処理装置100は、オブジェクトN9〜N11のセントロイドC3への割当てを維持すると決定する。
一方、図11の例では、セントロイドC3の第1割当オブジェクトのうち、オブジェクトN100は、更新後セントロイドNC3よりも更新前セントロイドOC3に類似する。情報処理装置100は、オブジェクトN100及び更新前セントロイドOC3の類似度(距離)と、オブジェクトN100及び更新後セントロイドNC3の類似度(距離)とを比較する(ステップS51)。情報処理装置100は、オブジェクトN100のベクトルと更新前セントロイドOC3のベクトルとを用いて、オブジェクトN100及び更新前セントロイドOC3の類似度(距離)を類似度DS51と算出する。また、情報処理装置100は、オブジェクトN100のベクトルと更新後セントロイドNC3のベクトルとを用いて、オブジェクトN100及び更新後セントロイドNC3の類似度(距離)を類似度DS52と算出する。そして、情報処理装置100は、類似度DS51と類似度DS52とを比較することにより、オブジェクトN100が更新前セントロイドOC3及び更新後セントロイドNC3のいずれに類似するかを決定(判定)する。なお、類似度(距離)が小さい程、そのオブジェクトとセントロイドとが類似していることを示すものとする。
図11の例では、類似度DS51が類似度DS52よりも小さいため、情報処理装置100は、オブジェクトN100が更新後セントロイドNC3よりも更新前セントロイドOC3に類似するかと決定(判定)する。したがって、情報処理装置100は、第1割当オブジェクトであるオブジェクトN100が更新後セントロイドNC3よりも更新前セントロイドOC3に類似するため、オブジェクトN100を対象オブジェクト(検索対象)とし、セントロイドC3(更新前セントロイドOC3)を起点として、グラフ情報GR11を探索することにより、オブジェクトN100の割当先セントロイドを抽出する(ステップS52)。
すなわち、情報処理装置100は、第1割当オブジェクトであるオブジェクトN100が更新後セントロイドNC3よりも更新前セントロイドOC3に類似するため、オブジェクトN100を対象オブジェクト(検索対象)とし、更新後セントロイドNC3を起点として、グラフ情報GR11を探索することにより、オブジェクトN100の割当先セントロイドを抽出する。このように、情報処理装置100は、更新後セントロイドNC3を起点セントロイドとして、グラフ情報GR11を検索することにより、オブジェクトN100について割当先セントロイドを抽出する。例えば、情報処理装置100は、1つ(所定数)のセントロイドをオブジェクトN100の割当先セントロイドとして抽出する。例えば、情報処理装置100は、グラフの探索時(検索時)においては、更新後セントロイドNC3をセントロイドC3として、オブジェクトN100について割当先セントロイドを抽出する。例えば、情報処理装置100は、グラフの探索時(検索時)においては、更新後セントロイドNC3のベクトルをセントロイドC3のベクトルとして、オブジェクトN100について割当先セントロイドを抽出する。
例えば、情報処理装置100は、図12に示すような検索処理により、オブジェクトN100の割当先セントロイドを抽出する。図11の例では、情報処理装置100は、オブジェクトN100からの距離が最も近いセントロイドC1をオブジェクトN100の割当先セントロイドとして抽出する。例えば、情報処理装置100は、起点セントロイドであるセントロイドC3を起点として、グラフ情報GR11中のエッジを辿ることにより、セントロイドC1をオブジェクトN100の割当先セントロイドとして抽出する。
そして、情報処理装置100は、割当オブジェクトを更新する(ステップS53)。図11の例では、情報処理装置100は、オブジェクトN100をセントロイドC1の割当オブジェクトに更新する。すなわち、情報処理装置100は、オブジェクトN100をセントロイドC3の割当オブジェクトから除外し、セントロイドC1の割当オブジェクトに追加する。これにより、情報処理装置100は、図11中の空間情報SP11−52に示すように割当オブジェクトを更新したクラスタリング情報を生成する。
このように、第1割当オブジェクトのベクトルが更新後セントロイドNC3のベクトルよりもセントロイドC1のベクトルに類似するため、その第1割当オブジェクトの最近傍セントロイドは、セントロイドC3からセントロイドC1に変更されたと推定される。そのため、図11の例では、情報処理装置100は、セントロイドC3の第1割当オブジェクトの割当先セントロイドを、セントロイドC3からセントロイドC1へ変更したクラスタリング情報を生成する。図11の例では、情報処理装置100は、オブジェクトN100を対象オブジェクトとするグラフ検索により抽出したセントロイドC1を、オブジェクトN100の割当先セントロイドとしたクラスタリング情報を生成する。
〔1−2−2.繰り返し処理について〕
なお、情報処理装置100は、割当オブジェクトに変更があったセントロイドを、処理候補セントロイドとして記憶し、各処理候補セントロイドを順次対象として、上記のような更新処理を行ってもよい。
例えば、情報処理装置100は、配列や連結リスト等の所定のデータ構造により、割当オブジェクトに変更があったセントロイドを、処理候補セントロイドとして記憶し、各処理候補セントロイドを順次対象として更新処理を行ってもよい。例えば、情報処理装置100は、キューやスタック等の所定のデータ構造により、割当オブジェクトに変更があったセントロイドを、処理候補セントロイドとして記憶し、各処理候補セントロイドを順次対象として更新処理を行ってもよい。この場合、情報処理装置100は、処理候補セントロイドからデータ構造に基づいて、処理の対象とするセントロイドを抽出(選択)して、処理候補セントロイドが無くなるまで順次処理を行う。なお、情報処理装置100は、処理候補セントロイドのうち、いずれを対象として処理するかをランダムに抽出(選択)して、処理候補セントロイドが無くなるまで順次処理を行ってもよい。
図1及び図2の例では、情報処理装置100は、割当オブジェクトに変更があったセントロイドC1〜C6を処理候補セントロイドとして記憶し、上記のような所定の基準により処理対象とするセントロイドを抽出(選択)して、処理候補セントロイドが無くなるまで順次処理を行ってもよい。図2の例では、情報処理装置100は、処理対象として更新処理を行ったセントロイドC3について、新たにオブジェクトN12が割当オブジェクトとして追加されたため、再度セントロイドC3を処理候補セントロイドとして記憶し、繰り返し更新処理を行ってもよい。このように、情報処理装置100は、各セントロイドを対象に割当オブジェクトに変更が無くなるまで、繰り返し処理を行うことにより、クラスタリング情報を生成する。
〔1−3.起点用インデックスについて〕
また、情報処理装置100は、探索の対象オブジェクトや検索クエリ(以下「探索対象」ともいう)について探索を行う場合、探索の起点となるセントロイド(起点セントロイド)を決定(抽出)するために起点用インデックス情報を用いてもよい。例えば、情報処理装置100は、高次元ベクトルを検索する検索インデックスを起点用インデックス情報として用いてもよい。ここでいう高次元ベクトルとは、例えば、数次元、数十次元、数百次元、数千次元、数万次元のベクトルであってもよいし、それ以上の次元のベクトルであってもよい。例えば、情報処理装置100は、図2に示すように、起点用インデックスを用いることなく起点セントロイドが決定できる場合以外においては、起点用インデックスを用いて、起点セントロイドを決定してもよい。
また、例えば、情報処理装置100は、非特許文献1に記載されるようなグラフ型の検索インデックスに関する情報を起点用インデックス情報として用いてもよい。また、例えば、情報処理装置100は、ツリー構造(木構造)に関する検索インデックスを起点用インデックス情報として用いてもよい。例えば、情報処理装置100は、kd木(k-dimensional tree)に関する検索インデックスを起点用インデックス情報として用いてもよい。例えば、情報処理装置100は、VP木(vantage-point tree)に関する検索インデックスを起点用インデックス情報として用いてもよい。このように、情報処理装置100は、複数のセントロイド情報に関する木構造型のインデックス、グラフ構造型のインデックスを起点用インデックス情報として用いてもよい。また、例えば、情報処理装置100は、転置インデックスを起点用インデックス情報として用いてもよい。
また、例えば、情報処理装置100は、図10に示すような、その他の木構造を有する起点用インデックス情報ST11として用いてもよい。図10は、実施形態に係る起点用インデックス情報の概念図を示す図である。例えば、情報処理装置100は、図10に概念的に示すような起点用インデックス情報を記憶部120(図4参照)に記憶してもよい。また、例えば、情報処理装置100は、高次元データを検索できるハッシュ型などその他のインデックスを起点用インデックス情報として用いてもよい。例えば、情報処理装置100は、高次元データを検索できるハッシュ型などその他のインデックスを起点用インデックス情報として記憶部120(図4参照)に記憶してもよい。
図10中の起点用インデックス情報ST11は、ルートRT1や節点ND1、ND2やセントロイドC1、C3等を含む。例えば、情報処理装置100は、起点用インデックス情報ST11を用いて、探索対象となるオブジェクトや検索クエリである探索対象に最も近いセントロイドを特定する。例えば、情報処理装置100は、起点用インデックス情報ST11を上から下(例えばルートRT1からセントロイド)へ辿ることにより、探索対象の近傍候補となるセントロイドを特定してもよい。
なお、上述したような複数のセントロイド情報に関する木構造やグラフ型の検索インデックスは一例であり、情報処理装置100は、クエリに対応するセントロイド情報を高速に特定することが可能であれば、どのようなデータ構造の起点用インデックス情報を用いてもよい。例えば、情報処理装置100は、クエリに対応するセントロイド情報を高速に特定することが可能であれば、バイナリ空間分割に関する技術等の種々の従来技術を適宜用いて、起点用インデックス情報を用いてもよい。例えば、情報処理装置100は、高次元ベクトルの検索に対応可能なインデックスであれば、どのようなデータ構造の起点用インデックス情報を用いてもよい。また、情報処理装置100は、上述した種々のインデックスを生成してもよい。
情報処理装置100は、上記のような起点用インデックスを用いて、起点セントロイドを決定し、種々の処理を行ってもよい。
〔2.情報処理システムの構成〕
図3に示すように、情報処理システム1は、端末装置10と、情報提供装置50と、情報処理装置100とが含まれる。端末装置10と、情報提供装置50と、情報処理装置100とは所定のネットワークNを介して、有線または無線により通信可能に接続される。図3は、実施形態に係る情報処理システムの構成例を示す図である。なお、図3に示した情報処理システム1には、複数台の端末装置10や、複数台の情報提供装置50や、複数台の情報処理装置100が含まれてもよい。
端末装置10は、ユーザによって利用される情報処理装置である。端末装置10は、ユーザによる種々の操作を受け付ける。なお、以下では、端末装置10をユーザと表記する場合がある。すなわち、以下では、ユーザを端末装置10と読み替えることもできる。なお、上述した端末装置10は、例えば、スマートフォンや、タブレット型端末や、ノート型PC(Personal Computer)や、デスクトップPCや、携帯電話機や、PDA(Personal Digital Assistant)等により実現される。
情報提供装置50は、ユーザ等に種々の情報提供を行うための情報が格納された情報処理装置である。例えば、情報提供装置50は、ウェブサーバ等の種々の外部装置から収集した文字情報等に基づくベクトル識別情報が格納される。例えば、情報提供装置50は、ユーザ等に画像検索サービスを提供する情報処理装置である。例えば、情報提供装置50は、画像検索サービスを提供するための各情報が格納される。例えば、情報提供装置50は、画像検索サービスの対象となる画像に対応するベクトル情報を情報処理装置100に提供する。また、情報提供装置50は、クエリを情報処理装置100に送信することにより、情報処理装置100からクエリに対応する画像を示すベクトル識別情報等を受信する。
情報処理装置100は、第1セントロイドに対応付けられた第1ベクトル群に関する情報が所定の条件を満たす場合、第1ベクトル群に含まれるベクトルである対象ベクトルの各々が距離に応じて対応付けられる複数の第2セントロイドを生成する。例えば、情報処理装置100は、第1セントロイドの対象ベクトルの数が所定の閾値以上である場合、複数の第2セントロイドを生成する。また、本実施形態において情報処理装置100は、クエリを取得した場合、生成した情報に基づいて、クエリに対応するベクトル識別情報を提供する。なお、情報処理装置100は、情報提供装置50等の種々の外部装置から収集したベクトル情報に基づいてセントロイド情報を生成してもよい。また、情報処理装置100は、情報提供装置50と一体であってもよい。
〔3.情報処理装置の構成〕
次に、図4を用いて、実施形態に係る情報処理装置100の構成について説明する。図4は、実施形態に係る情報処理装置100の構成例を示す図である。図4に示すように、情報処理装置100は、通信部110と、記憶部120と、制御部130とを有する。なお、情報処理装置100は、情報処理装置100の管理者等から各種操作を受け付ける入力部(例えば、キーボードやマウス等)や、各種情報を表示するための表示部(例えば、液晶ディスプレイ等)を有してもよい。
(通信部110)
通信部110は、例えば、NIC(Network Interface Card)等によって実現される。そして、通信部110は、ネットワーク(例えば図3中のネットワークN)と有線または無線で接続され、端末装置10や情報提供装置50との間で情報の送受信を行う。
(記憶部120)
記憶部120は、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。実施形態に係る記憶部120は、図4に示すように、オブジェクト情報記憶部121と、セントロイド情報記憶部122と、グラフ情報記憶部123と、クラスタリング情報記憶部124とを有する。なお、図示を省略するが、記憶部120には、上述した起点用インデックスに関する各種情報が記憶されてもよい。
(オブジェクト情報記憶部121)
実施形態に係るオブジェクト情報記憶部121は、オブジェクトに関する各種情報を記憶する。例えば、オブジェクト情報記憶部121は、オブジェクトIDやベクトルデータを記憶する。図5は、実施形態に係るオブジェクト情報記憶部の一例を示す図である。図5に示すオブジェクト情報記憶部121は、「オブジェクトID」、「ベクトル情報」といった項目が含まれる。
「オブジェクトID」は、オブジェクトを識別するための識別情報を示す。また、「ベクトル情報」は、オブジェクトIDにより識別されるオブジェクトに対応するベクトル情報を示す。このように、図5の例では、オブジェクトを識別するオブジェクトIDに対して、オブジェクトに対応するベクトルデータ(ベクトル情報)が対応付けられて登録されている。
図5の例では、オブジェクトID「N1」により識別されるオブジェクト(対象)は、「10,24,51,2・・・」の多次元のベクトル情報が対応付けられることを示す。例えば、オブジェクトID「N1」により識別されるオブジェクト(対象)は、空間情報SP11中のオブジェクトN1に対応することを示す。
なお、オブジェクト情報記憶部121は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
(セントロイド情報記憶部122)
実施形態に係るセントロイド情報記憶部122は、セントロイドに関する各種情報を記憶する。例えば、セントロイド情報記憶部122は、セントロイドIDやベクトル情報(ベクトルデータ)を記憶する。図6は、実施形態に係るセントロイド情報記憶部の一例を示す図である。図6に示すセントロイド情報記憶部122は、「セントロイドID」、「ベクトル情報」といった項目が含まれる。
「セントロイドID」は、セントロイドを識別するための識別情報を示す。また、「ベクトル情報」は、セントロイドIDにより識別されるセントロイド(ベクトル)に対応するベクトル情報を示す。
図6に示す例においては、セントロイドID「C1」により識別されるセントロイド(セントロイドC1)に対応するベクトル情報は、「10,24,54,2・・・」のN次元ベクトルであることを示す。
また、図6に示す例においては、セントロイドID「C4」により識別されるセントロイド(セントロイドC4)に対応するベクトル情報は、「32,1,120,31・・・」のN次元ベクトルであることを示す。
なお、セントロイド情報記憶部122は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
(グラフ情報記憶部123)
実施形態に係るグラフ情報記憶部123は、グラフ情報に関する各種情報を記憶する。図7は、実施形態に係るグラフ情報記憶部の一例を示す図である。図7は、セントロイドをグラフ構造化したグラフインデックス(グラフ情報)を示す。グラフ情報記憶部123は、グラフ情報に関する各種情報を記憶する。図7の例では、グラフ情報記憶部123は、「セントロイドID」および「エッジ情報」といった項目を有する。また、「エッジ情報」には、「エッジID」や「参照先」といった情報が含まれる。
「セントロイドID」は、グラフ情報(グラフデータ)における各セントロイドを識別するための識別情報を示す。
また、「エッジ情報」は、対応するセントロイドに接続されるエッジに関する情報を示す。図7の例では、「エッジ情報」は、エッジが無向エッジである場合を示し、対応するセントロイドと参照先のセントロイドとを連結するエッジに関する情報を示す。また、「エッジID」は、セントロイド間を連結するエッジを識別するための識別情報を示す。また、「参照先」は、エッジにより連結された参照先(セントロイド)を示す情報を示す。すなわち、図7の例では、セントロイドを識別するセントロイドIDに対して、そのセントロイドとエッジにより連結される参照先(セントロイド)が対応付けられて登録されている。
図7の例では、セントロイドID「C1」には、参照先をセントロイドID「C2」とするエッジID「E1」を含むエッジ情報が対応付けて記憶される。このように、セントロイドID「C1」により識別されるセントロイド(セントロイドC1)は、エッジID「E1」により識別されるエッジ(エッジE1)により、セントロイドID「C2」により識別されるセントロイド(セントロイドC2)と連結されることを示す。すなわち、図7の例では、セントロイドC1からはセントロイドC2に辿ることができることを示す。
また。図7の例では、セントロイドID「C2」には、参照先をセントロイドID「C1」とするエッジID「E1」を含むエッジ情報が対応付けて記憶される。このように、セントロイドC2は、エッジE1により、セントロイドC1と連結されることを示す。すなわち、図7の例では、セントロイドC2からはセントロイドC1に辿ることができることを示す。
なお、グラフ情報記憶部123は、上記に限らず、目的に応じて種々の情報を記憶してもよい。例えば、グラフ情報記憶部123は、各セントロイド(ベクトル)間を連結するエッジの長さが記憶されてもよい。すなわち、グラフ情報記憶部123は、各セントロイド(ベクトル)間の距離を示す情報が記憶されてもよい。なお、グラフ情報記憶部123は、上記に限らず、種々のデータ構造によりグラフ情報を記憶してもよい。例えば、グラフ情報記憶部123は、エッジIDに、そのエッジIDにより識別されるエッジが連結するセントロイドを識別する情報を対応付けて記憶してもよい。
(クラスタリング情報記憶部124)
実施形態に係るクラスタリング情報記憶部124は、セントロイドに対応付けられたオブジェクトを識別する各種情報を記憶する。例えば、クラスタリング情報記憶部124は、セントロイド情報記憶部122に記憶された各セントロイドに対応付けられたオブジェクトを識別する各種情報を記憶する。図8は、実施形態に係るクラスタリング情報記憶部の一例を示す図である。図8の例では、クラスタリング情報記憶部124は、「セントロイドID」、「オブジェクトID」といった項目が含まれる。
「セントロイドID」は、セントロイドを識別するための識別情報を示す。また、「オブジェクトID」は、セントロイドIDにより識別されるセントロイドに対応付けられたオブジェクト(オブジェクト)を示す。
図8に示す例においては、セントロイドID「C1」により識別されるセントロイド(セントロイドC1)に対応付けられたオブジェクトは、オブジェクトN1、N2、N3、N4等のオブジェクトであることを示す。また、セントロイドID「C4」により識別されるセントロイド(セントロイドC4)に対応付けられたオブジェクトは、オブジェクトN13、N14等のオブジェクトであることを示す。
なお、クラスタリング情報記憶部124は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
(制御部130)
図4の説明に戻って、制御部130は、コントローラ(controller)であり、例えば、CPU(Central Processing Unit)やMPU(Micro Processing Unit)等によって、情報処理装置100内部の記憶装置に記憶されている各種プログラム(情報処理プログラムの一例に相当)がRAMを作業領域として実行されることにより実現される。また、制御部130は、コントローラであり、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等の集積回路により実現される。
図4に示すように、制御部130は、取得部131と、生成部132と、抽出部133と、提供部134とを有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部130の内部構成は、図4に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。
(取得部131)
取得部131は、各種情報を取得する。取得部131は、記憶部120から各種情報を取得する。取得部131は、オブジェクト情報記憶部121や、セントロイド情報記憶部122や、グラフ情報記憶部123や、クラスタリング情報記憶部124等から各種情報を取得する。また、取得部131は、各種情報を外部の情報処理装置から取得する。取得部131は、端末装置10や情報提供装置50から各種情報を取得する。
取得部131は、所定の基準に基づいて生成された複数のセントロイドが類似性に応じてエッジにより連結されたグラフ情報と、複数のオブジェクトとを取得する。取得部131は、所定の基準に基づいて生成された複数のセントロイドが類似性に応じてエッジにより連結されたグラフ情報と、データ検索の対象となる複数のオブジェクトとを取得する。例えば、取得部131は、検索クエリに関する情報を取得する。例えば、取得部131は、画像検索に関する検索クエリを取得する。
図1の例では、取得部131は、オブジェクトに各々対応する複数のオブジェクトを示すオブジェクト情報を取得する。取得部131は、空間情報SP11−1に示すようにオブジェクトN1〜N21等を含むオブジェクト情報を取得する。取得部131は、オブジェクトN1〜N21等を含む空間情報SP11−1を取得する。取得部131は、グラフ情報記憶部123からグラフ情報GR11を取得する。
(生成部132)
生成部132は、各種情報を生成する。生成部132は、記憶部120に記憶された情報に基づいて、種々の情報を生成する。生成部132は、オブジェクト情報記憶部121や、セントロイド情報記憶部122や、グラフ情報記憶部123や、クラスタリング情報記憶部124等に記憶された情報に基づいて、種々の情報を生成する。生成部132は、取得部131により取得された情報に基づいて、種々の情報を生成する。生成部132は、外部の情報処理装置から取得された情報に基づいて、種々の情報を生成する。生成部132は、端末装置10や情報提供装置50から取得された情報に基づいて、種々の情報を生成する。生成部132は、生成した情報に基づいて、種々の情報を生成する。生成部132は、抽出部133により抽出された情報に基づいて、種々の情報を生成する。例えば、生成部132は、オブジェクト情報記憶部121や、セントロイド情報記憶部122や、グラフ情報記憶部123や、クラスタリング情報記憶部124等に記憶される各種情報を生成する。また、生成部132は、各種情報を決定する。生成部132は、各オブジェクトの割当先セントロイドを決定する。生成部132は、第1割当オブジェクトや第2割当オブジェクトの割当先セントロイドを決定する。
生成部132は、複数のオブジェクトのうち一のオブジェクトを対象オブジェクトとして、グラフ情報を探索し、複数のセントロイドのいずれかに対象オブジェクトを割当オブジェクトとして割り当てることにより、複数のオブジェクトの各々を割当オブジェクトとして複数のセントロイドのいずれかに割り当てたクラスタリング情報を生成する。生成部132は、複数のセントロイドの各々と、対象オブジェクトとの類似性に基づいて、複数のセントロイドのいずれかに対象オブジェクトを割当オブジェクトとして割り当てることにより、クラスタリング情報を生成する。
生成部132は、対複数のセントロイドの各々の割当オブジェクトに対応する値であるオブジェクト値に基づいて、複数のセントロイドの各々に対応する値であるセントロイド値を生成する。生成部132は、複数のセントロイドの各々の割当オブジェクトに対応するベクトルをオブジェクト値として、複数のセントロイドの各々に対応するベクトルをセントロイド値として生成する。生成部132は、複数のセントロイドの各々の割当オブジェクトのオブジェクト値の平均値を、複数のセントロイドの各々のセントロイド値として生成する。
生成部132は、複数のセントロイドのうち、一のセントロイドである第1セントロイドの割当オブジェクトである第1割当オブジェクトに変更があった場合、変更後の第1割当オブジェクトに基づいて、第1セントロイドを更新後セントロイドに更新する。生成部132は、第1セントロイドが更新後セントロイドに更新された場合、更新後セントロイドに基づいて、グラフ情報を更新する。生成部132は、グラフ情報が更新された場合、更新後のグラフ情報を用いて、更新後セントロイドの割当オブジェクトを更新することにより、クラスタリング情報を生成する。
生成部132は、更新後セントロイドに対応する値である更新後セントロイド値を生成する。生成部132は、変更後の第1割当オブジェクトに基づいて、更新後セントロイドの更新後セントロイド値を生成する。生成部132は、更新後セントロイドの更新後セントロイド値に基づいて、更新後セントロイドの割当オブジェクトを更新することにより、クラスタリング情報を生成する。生成部132は、第1セントロイドに対応する値である第1セントロイド値と、更新後セントロイド値と、第1割当オブジェクトに対応する値である第1オブジェクト値とに基づいて、第1割当オブジェクトを更新後セントロイドまたは他のセントロイドに割り当てたクラスタリング情報を生成する。
生成部132は、第1セントロイド値及び第1オブジェクト値の類似度と、更新後セントロイド値及び第1オブジェクト値の類似度との比較に基づいて、第1割当オブジェクトを更新後セントロイドまたは他のセントロイドに割り当てたクラスタリング情報を生成する。生成部132は、第1割当オブジェクトが第1セントロイドよりも更新後セントロイドに類似する場合、第1割当オブジェクトを更新後セントロイドに割り当てたクラスタリング情報を生成する。生成部132は、第1割当オブジェクトが更新後セントロイドよりも第1セントロイドに類似する場合、第1割当オブジェクトを対象オブジェクトとし、第1セントロイドを起点として、グラフ情報を探索することにより、第1割当オブジェクトを更新後セントロイドまたは他のセントロイドに割り当てたクラスタリング情報を生成する。
生成部132は、複数のセントロイドのうち、第1セントロイドとは異なる第2セントロイドに対応する値である第2セントロイド値と、更新後セントロイド値と、第2セントロイドの割当オブジェクトである第2割当オブジェクトに対応する値である第2オブジェクト値とに基づいて、第2割当オブジェクトを更新後セントロイドまたは第2セントロイドに割り当てたクラスタリング情報を生成する。生成部132は、第2セントロイド値及び第2オブジェクト値の類似度と、更新後セントロイド値及び第2オブジェクト値の類似度との比較に基づいて、第2割当オブジェクトを更新後セントロイドまたは第2セントロイドに割り当てたクラスタリング情報を生成する。生成部132は、第2割当オブジェクトが第2セントロイドよりも更新後セントロイドに類似する場合、第2割当オブジェクトを更新後セントロイドに割り当てたクラスタリング情報を生成する。生成部132は、第2割当オブジェクトが更新後セントロイドよりも第2セントロイドに類似する場合、第2割当オブジェクトを第2セントロイドに割り当てたクラスタリング情報を生成する。
図1の例では、生成部132は、セントロイドを生成する。例えば、生成部132は、所定の基準に基づいて複数のセントロイドを生成する。生成部132は、所定の基準に基づいて決定される所定数のセントロイドを生成する。生成部132は、図1中の空間情報SP11−2に示すように、セントロイドC1〜C6等を含む複数のセントロイドを生成する。
生成部132は、複数のセントロイドをグラフ構造化したグラフインデックスであるグラフ情報を生成する。生成部132は、図1中の空間情報SP11−3に示すグラフ情報GR11のようなグラフ情報を生成する。図1の例では、生成部132は、セントロイドC1〜C6等を類似度(距離)に基づいてエッジで連結したグラフインデックスであるグラフ情報を生成する。生成部132は、無向エッジであるエッジE1〜E8等に関する情報を含むグラフ情報GR11を生成する。具体的には、生成部132は、セントロイドC1とセントロイドC2との間を連結するエッジE1やセントロイドC1とセントロイドC3との間を連結するエッジE2等を生成する。
生成部132は、グラフ情報を用いて、クラスタリング情報を生成する。例えば、生成部132は、グラフ情報を探索し、複数のセントロイドのいずれかに各オブジェクトを割当オブジェクトとして割り当てることにより、クラスタリング情報を生成する。生成部132は、図1中の空間情報SP11−4に示すようなクラスタリング情報を生成する。図1の例では、生成部132は、グラフ情報GR11を用いて、オブジェクトN1〜N21等をクラスタリングC1〜C6等に割り当てたクラスタリング情報を生成する。生成部132は、オブジェクトN1〜N21等をクラスタリングC1〜C6等に対応する複数のクラスタに分割したクラスタリング情報を生成する。
生成部132は、複数のオブジェクトN1〜N21等のうち一のオブジェクトを対象オブジェクト(検索対象)として、グラフ情報GR11を探索することにより、複数のオブジェクトN1〜N21等の各々を割当オブジェクトとして複数のセントロイドC1〜C6等のいずれかに割り当てたクラスタリング情報を生成する。生成部132は、オブジェクトN1〜N21等をセントロイドC1〜C6のいずれかに割り当てたクラスタリング情報を生成する。生成部132は、図1中のクラスタリング情報記憶部124−1に示すようなクラスタリング情報を生成する。
図2の例では、生成部132は、セントロイドC3にオブジェクトN9〜N11が割当オブジェクトとして割り当てられたため、セントロイドC3の割当オブジェクトの変更に応じて、セントロイドC3を更新する。生成部132は、セントロイド情報記憶部122−1に示すセントロイドC3のベクトルからセントロイド情報記憶部122−2に示すセントロイドC3のベクトルに更新する。生成部132は、セントロイドC3の更新に応じて、グラフ情報GR11を更新する。生成部132は、図2中の空間情報SP11−6に示すようにグラフ情報GR11を更新する。
生成部132は、割当オブジェクトを更新する。例えば、生成部132は、ベクトルが更新された第1セントロイドであるセントロイドC3の割当オブジェクトや、他のセントロイドC1、C2、C4〜6の割当オブジェクトを更新する。生成部132は、図2中の空間情報SP11−7に示すように割当オブジェクトを更新したクラスタリング情報を生成する。
生成部132は、オブジェクトN1〜N4が更新後セントロイドNC3よりもセントロイドC1に類似するため、オブジェクトN1〜NのセントロイドC1への割当てを維持したクラスタリング情報を生成する。生成部132は、オブジェクトN12がセントロイドC4よりも更新後セントロイドNC3に類似するため、オブジェクトN12の割当先セントロイドを、セントロイドC4からセントロイドC3へ変更したクラスタリング情報を生成する。
(抽出部133)
抽出部133は、各種情報を抽出する。抽出部133は、各種情報を選択する。抽出部133は、記憶部120に記憶された情報に基づいて、種々の情報を抽出する。抽出部133は、オブジェクト情報記憶部121や、セントロイド情報記憶部122や、グラフ情報記憶部123や、クラスタリング情報記憶部124等に記憶された情報に基づいて、種々の情報を抽出する。抽出部133は、取得部131により取得された情報に基づいて、種々の情報を抽出する。抽出部133は、外部の情報処理装置から取得された情報に基づいて、種々の情報を抽出する。抽出部133は、端末装置10や情報提供装置50から取得された情報に基づいて、種々の情報を抽出する。抽出部133は、生成部132により生成された情報に基づいて、種々の情報を抽出する。抽出部133は、抽出した情報に基づいて、種々の情報を抽出する。例えば、抽出部133は、オブジェクト情報記憶部121や、セントロイド情報記憶部122や、グラフ情報記憶部123や、クラスタリング情報記憶部124等に記憶される各種情報を抽出する。また、抽出部133は、各種情報を決定する。抽出部133は、探索時における起点セントロイドを決定する。抽出部133は、起点用インデックスを用いて起点セントロイドを決定する。抽出部133は、起決定した起点セントロイドを起点として、グラフを探索することにより、検索対象に類似するセントロイドを抽出する。そして、抽出部133は、抽出したセントロイドの割当オブジェクトを、検索対象に類似するオブジェクトとして抽出する。
図1の例では、抽出部133は、オブジェクトN1を対象オブジェクトとする場合、オブジェクトN1を検索クエリとして、グラフ情報GR11を探索し、オブジェクトN1に近似(類似)するセントロイドを抽出する。例えば、抽出部133は、オブジェクトN1を対象オブジェクトとする場合、オブジェクトN1を検索クエリとして、グラフ情報GR11を探索し、オブジェクトN1に最も類似すると推定されるセントロイドを抽出する。抽出部133は、オブジェクトN1を対象オブジェクトとする場合、オブジェクトN1の最近傍のセントロイドと推定されるセントロイドを抽出する。
抽出部133は、起点セントロイドを起点として、グラフ情報GR11を検索することにより、各オブジェクトについて割当先セントロイドを抽出する。例えば、抽出部133は、1つ(所定数)のセントロイドを割当先セントロイドとして抽出する。例えば、抽出部133は、図12に示すような検索処理により、各オブジェクトの割当先セントロイドを抽出する。
例えば、抽出部133は、取得部131により検索クエリが取得された場合、検索クエリを用いてグラフ情報を検索することにより、検索クエリに類似するセントロイドを抽出する。そして、抽出部133は、抽出したセントロイドに割り当てられたオブジェクトを、検索クエリの類似オブジェクトとして抽出する。
(提供部134)
提供部134は、各種情報を提供する。提供部134は、外部の情報処理装置へ各種情報を提供する。提供部134は、端末装置10や情報提供装置50に各種情報を提供する。例えば、提供部134は、外部の情報処理装置に記憶部120に記憶された各種情報を提供する。提供部134は、端末装置10に各種情報を送信する。提供部134は、端末装置10に各種情報を配信する。提供部134は、取得部131により取得された各種情報に基づいて、種々の情報を提供する。提供部134は、生成部132により生成された各種情報に基づいて、種々の情報を提供する。提供部134は、抽出部133により抽出された各種情報に基づいて、種々のサービスを提供する。例えば、提供部134は、空間情報SP11等の各種情報を提供する。
例えば、提供部134は、クエリに対応するオブジェクトを示す情報を検索結果として提供する。例えば、提供部134は、抽出部133により抽出されたオブジェクトを示す情報を情報提供装置50へ提供する。
〔4.情報処理のフロー〕
次に、図9を用いて、実施形態に係る情報処理システム1による情報処理の手順について説明する。図9は、実施形態に係る情報処理の一例を示すフローチャートである。
図9に示すように、情報処理装置100は、複数のセントロイドが類似性に応じてエッジにより連結されたグラフ情報を取得する(ステップS101)。情報処理装置100は、複数のオブジェクトを取得する(ステップS102)。そして、情報処理装置100は、複数のオブジェクトのうち一のオブジェクトを対象オブジェクトとして、グラフ情報を探索し、複数のオブジェクトの各々を割当オブジェクトとして複数のセントロイドのいずれかに割り当てたクラスタリング情報を生成する(ステップS103)。
〔5.検索(探索)処理のフロー〕
次に、情報処理装置100による検索(探索)処理のフローについて、図12を一例として説明する。図12は、実施形態に係る検索処理の一例を示すフローチャートである。具体的には、図12は、グラフデータを用いた検索処理の一例を示すフローチャートである。なお、図12に示す検索処理には、選択処理も含まれる。以下に説明する検索処理は、情報処理装置100によって行われる。また、以下でいうセントロイドは、オブジェクトと読み替えてもよい。なお、情報処理装置100によるグラフデータを用いた検索は下記に限らず、種々の手順により行われてもよい。
ここでは、近傍集合N(G,x)は、セントロイドxに付与されているエッジにより関連付けられている近傍のセントロイドの集合である。例えば、近傍集合N(G,x)は、セントロイドxからのエッジが連結されたセントロイドの集合である。「G」は、所定のグラフデータ(例えば、グラフ情報GR11等)であってもよい。例えば、情報処理装置100は、k近傍検索処理を実行する。
例えば、情報処理装置100は、超球の半径rを∞(無限大)に設定し(ステップS300)、既存のセントロイド集合から集合Sを抽出する(ステップS301)。例えば、情報処理装置100は、起点オブジェクトとして決定(選択)されたセントロイドを集合Sとして抽出してもよい。図1の例では、情報処理装置100は、オブジェクトN1が検索対象yである場合、その起点セントロイドであるセントロイドC3を集合Sとして抽出してもよい。また、例えば、超球とは、検索範囲を示す仮想的な球である。なお、ステップS301において抽出された集合Sに含まれるセントロイドは、検索結果の集合Rの初期集合にも含められる。また、ステップS301において抽出された集合Sに含まれるセントロイドは、集合Cに含められてもよい。集合Cは、重複検索を回避するために便宜上設けられるものであり、処理開始時には空集合に設定されてもよい。
次に、情報処理装置100は、集合Sに含まれるセントロイドの中で、検索対象(検索クエリや対象オブジェクト)をyとすると検索対象yとの距離が最も短いセントロイドを抽出し、セントロイドsとする(ステップS302)。図1の例では、情報処理装置100は、検索対象yとなるオブジェクトN1に対応する起点セントロイドであるセントロイドC3が含まれる集合Sから、一のセントロイドをセントロイドs(対象セントロイド)として抽出する。例えば、情報処理装置100は、起点セントロイドとして選択されたセントロイドのみがセントロイド集合Sの要素の場合には、その起点セントロイドがセントロイドsとして抽出される。次に、情報処理装置100は、セントロイドsを集合Sから除外する(ステップS303)。
次に、情報処理装置100は、セントロイドsと検索対象yとの距離d(s,y)がr(1+ε)を超えるか否かを判定する(ステップS304)。ここで、εは拡張要素であり、r(1+ε)は、探索範囲(この範囲内のオブジェクトのみを探索する。検索範囲よりも大きくすることで精度を高めることができる)の半径を示す値である。セントロイドsと検索対象yとの距離d(s,y)がr(1+ε)を超える場合(ステップS304:Yes)、情報処理装置100は、集合Rを検索対象yの近傍集合として出力し(ステップS305)、処理を終了する。
セントロイドsと検索対象yとの距離d(s,y)がr(1+ε)を超えない場合(ステップS304:No)、情報処理装置100は、セントロイドsの近傍集合N(G,s)の要素であるセントロイドの中から集合Cに含まれないセントロイドを、所定の基準に基づいて一つ選択し、選択したセントロイドuを、集合Cに格納する(ステップS306)。例えば、図1の例では、情報処理装置100は、セントロイドC3と連結するセントロイドC1、C2、C5、C6のうち、検索対象yと最も近いセントロイドC1をセントロイドu(判定対象セントロイド)として選択する。
次に、情報処理装置100は、セントロイドuと検索対象yとの距離d(u,y)がr(1+ε)以下であるか否かを判定する(ステップS307)。セントロイドuと検索対象yとの距離d(u,y)がr(1+ε)以下である場合(ステップS307:Yes)、情報処理装置100は、セントロイドuを集合Sに追加する(ステップS308)。また、セントロイドuと検索対象yとの距離d(u,y)がr(1+ε)以下ではない場合(ステップS307:No)、情報処理装置100は、ステップS309の判定(処理)を行う。
次に、情報処理装置100は、セントロイドuと検索対象yとの距離d(u,y)がr以下であるか否かを判定する(ステップS309)。セントロイドuと検索対象yとの距離d(u,y)がrを超える場合、情報処理装置100は、ステップS315の判定(処理)を行う。また、セントロイドuと検索対象yとの距離d(u,y)がr以下ではない場合(ステップS309:No)、情報処理装置100は、ステップS315の判定(処理)を行う。
セントロイドuと検索対象yとの距離d(u,y)がr以下である場合(ステップS309:Yes)、情報処理装置100は、セントロイドuを集合Rに追加する(ステップS310)。そして、情報処理装置100は、集合Rに含まれるセントロイド数がksを超えるか否かを判定する(ステップS311)。所定数ksは、任意に定められる自然数である。例えば、ksは、検索における抽出数を示し、「3」や「20」や「100」等の任意の値であってもよい。例えば、ksは、オブジェクトの割当先セントロイドを決定するための検索処理の場合、「1」に設定されてもよい。集合Rに含まれるセントロイド数がksを超えない場合(ステップS311:No)、情報処理装置100は、ステップS313の判定(処理)を行う。
集合Rに含まれるセントロイド数がksを超える場合(ステップS311:Yes)、情報処理装置100は、集合Rに含まれるセントロイドの中で検索対象yとの距離が最も長い(遠い)セントロイドを、集合Rから除外する(ステップS312)。例えば、ksが「1」の場合、情報処理装置100は、ステップS310において集合Rに新たに追加したセントロイドを残し、他のもう一つのセントロイドを集合Rから除外する
次に、情報処理装置100は、集合Rに含まれるセントロイド数がksと一致するか否かを判定する(ステップS313)。集合Rに含まれるセントロイド数がksと一致しない場合(ステップS313:No)、情報処理装置100は、ステップS315の判定(処理)を行う。また、集合Rに含まれるセントロイド数がksと一致する場合(ステップS313:Yes)、情報処理装置100は、集合Rに含まれるセントロイドの中で検索対象yとの距離が最も長い(遠い)セントロイドと、検索対象yとの距離を、新たなrに設定する(ステップS314)。
そして、情報処理装置100は、セントロイドsの近傍集合N(G,s)の要素であるセントロイドから全てのセントロイドを選択してセントロイド集合Cに格納し終えたか否かを判定する(ステップS315)。セントロイドsの近傍セントロイド集合N(G,s)の要素であるセントロイドから全てのセントロイドを選択してセントロイド集合Cに格納し終えていない場合(ステップS315:No)、情報処理装置100は、ステップS306に戻って処理を繰り返す。
セントロイドsの近傍セントロイド集合N(G,s)の要素であるセントロイドから全てのセントロイドを選択してセントロイド集合Cに格納し終えた場合(ステップS315:Yes)、情報処理装置100は、セントロイド集合Sが空集合であるか否かを判定する(ステップS316)。セントロイド集合Sが空集合でない場合(ステップS316:No)、情報処理装置100は、ステップS302に戻って処理を繰り返す。また、セントロイド集合Sが空集合である場合(ステップS316:Yes)、情報処理装置100は、セントロイド集合Rを出力し、処理を終了する(ステップS317)。
例えば、オブジェクトの割当先セントロイドを決定するための検索処理である場合、情報処理装置100は、集合Rに含まれるセントロイドを対象オブジェクト(検索対象y)の割当先セントロイドとして抽出してもよい。この場合、情報処理装置100は、集合Rに含まれるセントロイドを対象オブジェクト(検索対象y)の割当先セントロイドとするクラスタリング情報を生成してもよい。図1の例では、情報処理装置100は、対象オブジェクトがオブジェクトN1である場合、集合Rに含まれるセントロイドC1をオブジェクトN1の割当先セントロイドに決定する。すなわち、図1の例では、情報処理装置100は、対象オブジェクトがオブジェクトN1である場合、オブジェクトN1を、集合Rに含まれるセントロイドC1の割当オブジェクトに決定する。そして、情報処理装置100は、オブジェクトN1をセントロイドC1に割り当てたクラスタリング情報を生成する。
また、例えば、類似オブジェクトの検索等の検索処理である場合、情報処理装置100は、集合Rに含まれるセントロイドを検索クエリ(検索対象y)に対応する近傍セントロイドとして抽出する。そして、情報処理装置100は、抽出した近傍セントロイドに対応付けられたオブジェクトを検索クエリの類似オブジェクトとしてもよい。このように、情報処理装置100は、グラフ構造化されたセントロイドに基づいて、類似オブジェクトを検索することにより、量子化によるデータ検索を行ってもよい。例えば、情報処理装置100は、ユーザが利用する端末装置10から検索クエリを取得した場合、検索クエリ(検索対象y)に対応する近傍セントロイドを抽出し、抽出した近傍セントロイドに対応付けられたオブジェクトを検索結果として、端末装置10へ提供してもよい。
〔6.効果〕
上述してきたように、実施形態に係る情報処理装置100は、取得部131と、生成部132とを有する。取得部131は、所定の基準に基づいて生成された複数のセントロイドが類似性に応じてエッジにより連結されたグラフ情報と、複数のオブジェクトとを取得する。生成部132は、複数のオブジェクトのうち一のオブジェクトを対象オブジェクトとして、グラフ情報を探索し、複数のセントロイドのいずれかに対象オブジェクトを割当オブジェクトとして割り当てることにより、複数のオブジェクトの各々を割当オブジェクトとして複数のセントロイドのいずれかに割り当てたクラスタリング情報を生成する。
このように、実施形態に係る情報処理装置100は、複数のオブジェクトのうち一のオブジェクトを対象オブジェクトとして、複数のセントロイドが類似性に応じてエッジにより連結されたグラフ情報を探索し、複数のセントロイドのいずれかに対象オブジェクトを割当オブジェクトとして割り当てることにより、複数のオブジェクトの各々を割当オブジェクトとして複数のセントロイドのいずれかに割り当てたクラスタリング情報を生成することにより、効率的なクラスタリングを可能にすることができる。
また、実施形態に係る情報処理装置100において、生成部132は、複数のセントロイドの各々と、対象オブジェクトとの類似性に基づいて、複数のセントロイドのいずれかに対象オブジェクトを割当オブジェクトとして割り当てることにより、クラスタリング情報を生成する。
このように、実施形態に係る情報処理装置100は、複数のセントロイドの各々と、対象オブジェクトとの類似性に基づいて、複数のセントロイドのいずれかに対象オブジェクトを割当オブジェクトとして割り当てることにより、クラスタリング情報を生成することにより、効率的なクラスタリングを可能にすることができる。
また、実施形態に係る情報処理装置100において、生成部132は、対複数のセントロイドの各々の割当オブジェクトに対応する値であるオブジェクト値に基づいて、複数のセントロイドの各々に対応する値であるセントロイド値を生成する。
このように、実施形態に係る情報処理装置100は、複数のセントロイドの各々の割当オブジェクトに対応する値であるオブジェクト値に基づいて、複数のセントロイドの各々に対応する値であるセントロイド値を生成することにより、効率的なクラスタリングを可能にすることができる。
また、実施形態に係る情報処理装置100において、生成部132は、複数のセントロイドの各々の割当オブジェクトに対応するベクトルをオブジェクト値として、複数のセントロイドの各々に対応するベクトルをセントロイド値として生成する。
このように、実施形態に係る情報処理装置100は、複数のセントロイドの各々の割当オブジェクトに対応するベクトルをオブジェクト値として、複数のセントロイドの各々に対応するベクトルをセントロイド値として生成することにより、効率的なクラスタリングを可能にすることができる。
また、実施形態に係る情報処理装置100において、生成部132は、複数のセントロイドの各々の割当オブジェクトのオブジェクト値の平均値を、複数のセントロイドの各々のセントロイド値として生成する。
このように、実施形態に係る情報処理装置100は、複数のセントロイドの各々の割当オブジェクトのオブジェクト値の平均値を、複数のセントロイドの各々のセントロイド値として生成することにより、効率的なクラスタリングを可能にすることができる。
また、実施形態に係る情報処理装置100において、生成部132は、複数のセントロイドのうち、一のセントロイドである第1セントロイドの割当オブジェクトである第1割当オブジェクトに変更があった場合、変更後の第1割当オブジェクトに基づいて、第1セントロイドを更新後セントロイドに更新する。
このように、実施形態に係る情報処理装置100は、複数のセントロイドのうち、一のセントロイドである第1セントロイドの割当オブジェクトである第1割当オブジェクトに変更があった場合、変更後の第1割当オブジェクトに基づいて、第1セントロイドを更新後セントロイドに更新することにより、効率的なクラスタリングを可能にすることができる。
また、実施形態に係る情報処理装置100において、生成部132は、第1セントロイドが更新後セントロイドに更新された場合、更新後セントロイドに基づいて、グラフ情報を更新する。
このように、実施形態に係る情報処理装置100は、第1セントロイドが更新後セントロイドに更新された場合、更新後セントロイドに基づいて、グラフ情報を更新することにより、効率的なクラスタリングを可能にすることができる。
また、実施形態に係る情報処理装置100において、生成部132は、グラフ情報が更新された場合、更新後のグラフ情報を用いて、更新後セントロイドの割当オブジェクトを更新することにより、クラスタリング情報を生成する。
このように、実施形態に係る情報処理装置100は、グラフ情報が更新された場合、更新後のグラフ情報を用いて、更新後セントロイドの割当オブジェクトを更新することにより、クラスタリング情報を生成することにより、効率的なクラスタリングを可能にすることができる。
また、実施形態に係る情報処理装置100において、生成部132は、更新後セントロイドに対応する値である更新後セントロイド値を生成する。
このように、実施形態に係る情報処理装置100は、更新後セントロイドに対応する値である更新後セントロイド値を生成することにより、効率的なクラスタリングを可能にすることができる。
また、実施形態に係る情報処理装置100において、生成部132は、変更後の第1割当オブジェクトに基づいて、更新後セントロイドの更新後セントロイド値を生成する。
このように、実施形態に係る情報処理装置100は、変更後の第1割当オブジェクトに基づいて、更新後セントロイドの更新後セントロイド値を生成することにより、効率的なクラスタリングを可能にすることができる。
また、実施形態に係る情報処理装置100において、生成部132は、更新後セントロイドの更新後セントロイド値に基づいて、更新後セントロイドの割当オブジェクトを更新することにより、クラスタリング情報を生成する。
このように、実施形態に係る情報処理装置100は、更新後セントロイドの更新後セントロイド値に基づいて、更新後セントロイドの割当オブジェクトを更新することにより、クラスタリング情報を生成することにより、効率的なクラスタリングを可能にすることができる。
また、実施形態に係る情報処理装置100において、生成部132は、第1セントロイドに対応する値である第1セントロイド値と、更新後セントロイド値と、第1割当オブジェクトに対応する値である第1オブジェクト値とに基づいて、第1割当オブジェクトを更新後セントロイドまたは他のセントロイドに割り当てたクラスタリング情報を生成する。
このように、実施形態に係る情報処理装置100は、第1セントロイドに対応する値である第1セントロイド値と、更新後セントロイド値と、第1割当オブジェクトに対応する値である第1オブジェクト値とに基づいて、第1割当オブジェクトを更新後セントロイドまたは他のセントロイドに割り当てたクラスタリング情報を生成することにより、効率的なクラスタリングを可能にすることができる。
また、実施形態に係る情報処理装置100において、生成部132は、第1セントロイド値及び第1オブジェクト値の類似度と、更新後セントロイド値及び第1オブジェクト値の類似度との比較に基づいて、第1割当オブジェクトを更新後セントロイドまたは他のセントロイドに割り当てたクラスタリング情報を生成する。
このように、実施形態に係る情報処理装置100は、第1セントロイド値及び第1オブジェクト値の類似度と、更新後セントロイド値及び第1オブジェクト値の類似度との比較に基づいて、第1割当オブジェクトを更新後セントロイドまたは他のセントロイドに割り当てたクラスタリング情報を生成することにより、効率的なクラスタリングを可能にすることができる。
また、実施形態に係る情報処理装置100において、生成部132は、第1割当オブジェクトが第1セントロイドよりも更新後セントロイドに類似する場合、第1割当オブジェクトを更新後セントロイドに割り当てたクラスタリング情報を生成する。
このように、実施形態に係る情報処理装置100は、第1割当オブジェクトが第1セントロイドよりも更新後セントロイドに類似する場合、第1割当オブジェクトを更新後セントロイドに割り当てたクラスタリング情報を生成することにより、効率的なクラスタリングを可能にすることができる。
また、実施形態に係る情報処理装置100において、生成部132は、第1割当オブジェクトが更新後セントロイドよりも第1セントロイドに類似する場合、第1割当オブジェクトを対象オブジェクトとし、第1セントロイドを起点として、グラフ情報を探索することにより、第1割当オブジェクトを更新後セントロイドまたは他のセントロイドに割り当てたクラスタリング情報を生成する。
このように、実施形態に係る情報処理装置100は、第1割当オブジェクトが更新後セントロイドよりも第1セントロイドに類似する場合、第1割当オブジェクトを対象オブジェクトとし、第1セントロイドを起点として、グラフ情報を探索することにより、第1割当オブジェクトを更新後セントロイドまたは他のセントロイドに割り当てたクラスタリング情報を生成することにより、効率的なクラスタリングを可能にすることができる。
また、実施形態に係る情報処理装置100において、生成部132は、複数のセントロイドのうち、第1セントロイドとは異なる第2セントロイドに対応する値である第2セントロイド値と、更新後セントロイド値と、第2セントロイドの割当オブジェクトである第2割当オブジェクトに対応する値である第2オブジェクト値とに基づいて、第2割当オブジェクトを更新後セントロイドまたは第2セントロイドに割り当てたクラスタリング情報を生成する。
このように、実施形態に係る情報処理装置100は、複数のセントロイドのうち、第1セントロイドとは異なる第2セントロイドに対応する値である第2セントロイド値と、更新後セントロイド値と、第2セントロイドの割当オブジェクトである第2割当オブジェクトに対応する値である第2オブジェクト値とに基づいて、第2割当オブジェクトを更新後セントロイドまたは第2セントロイドに割り当てたクラスタリング情報を生成することにより、効率的なクラスタリングを可能にすることができる。
また、実施形態に係る情報処理装置100において、生成部132は、第2セントロイド値及び第2オブジェクト値の類似度と、更新後セントロイド値及び第2オブジェクト値の類似度との比較に基づいて、第2割当オブジェクトを更新後セントロイドまたは第2セントロイドに割り当てたクラスタリング情報を生成する。
このように、実施形態に係る情報処理装置100は、第2セントロイド値及び第2オブジェクト値の類似度と、更新後セントロイド値及び第2オブジェクト値の類似度との比較に基づいて、第2割当オブジェクトを更新後セントロイドまたは第2セントロイドに割り当てたクラスタリング情報を生成することにより、効率的なクラスタリングを可能にすることができる。
また、実施形態に係る情報処理装置100において、生成部132は、第2割当オブジェクトが第2セントロイドよりも更新後セントロイドに類似する場合、第2割当オブジェクトを更新後セントロイドに割り当てたクラスタリング情報を生成する。
このように、実施形態に係る情報処理装置100は、第2割当オブジェクトが第2セントロイドよりも更新後セントロイドに類似する場合、第2割当オブジェクトを更新後セントロイドに割り当てたクラスタリング情報を生成することにより、効率的なクラスタリングを可能にすることができる。
また、実施形態に係る情報処理装置100において、生成部132は、第2割当オブジェクトが更新後セントロイドよりも第2セントロイドに類似する場合、第2割当オブジェクトを第2セントロイドに割り当てたクラスタリング情報を生成する。
このように、実施形態に係る情報処理装置100は、第2割当オブジェクトが更新後セントロイドよりも第2セントロイドに類似する場合、第2割当オブジェクトを第2セントロイドに割り当てたクラスタリング情報を生成することにより、効率的なクラスタリングを可能にすることができる。
〔7.ハードウェア構成〕
上述してきた実施形態に係る情報処理装置100は、例えば図13に示すような構成のコンピュータ1000によって実現される。図13は、情報処理装置の機能を実現するコンピュータの一例を示すハードウェア構成図である。コンピュータ1000は、CPU1100、RAM1200、ROM(Read Only Memory)1300、HDD(Hard Disk Drive)1400、通信インターフェイス(I/F)1500、入出力インターフェイス(I/F)1600、及びメディアインターフェイス(I/F)1700を有する。
CPU1100は、ROM1300またはHDD1400に格納されたプログラムに基づいて動作し、各部の制御を行う。ROM1300は、コンピュータ1000の起動時にCPU1100によって実行されるブートプログラムや、コンピュータ1000のハードウェアに依存するプログラム等を格納する。
HDD1400は、CPU1100によって実行されるプログラム、及び、かかるプログラムによって使用されるデータ等を格納する。通信インターフェイス1500は、ネットワークNを介して他の機器からデータを受信してCPU1100へ送り、CPU1100が生成したデータをネットワークNを介して他の機器へ送信する。
CPU1100は、入出力インターフェイス1600を介して、ディスプレイやプリンタ等の出力装置、及び、キーボードやマウス等の入力装置を制御する。CPU1100は、入出力インターフェイス1600を介して、入力装置からデータを取得する。また、CPU1100は、生成したデータを入出力インターフェイス1600を介して出力装置へ出力する。
メディアインターフェイス1700は、記録媒体1800に格納されたプログラムまたはデータを読み取り、RAM1200を介してCPU1100に提供する。CPU1100は、かかるプログラムを、メディアインターフェイス1700を介して記録媒体1800からRAM1200上にロードし、ロードしたプログラムを実行する。記録媒体1800は、例えばDVD(Digital Versatile Disc)、PD(Phase change rewritable Disk)等の光学記録媒体、MO(Magneto-Optical disk)等の光磁気記録媒体、テープ媒体、磁気記録媒体、または半導体メモリ等である。
例えば、コンピュータ1000が実施形態に係る情報処理装置100として機能する場合、コンピュータ1000のCPU1100は、RAM1200上にロードされたプログラムを実行することにより、制御部130の機能を実現する。コンピュータ1000のCPU1100は、これらのプログラムを記録媒体1800から読み取って実行するが、他の例として、他の装置からネットワークNを介してこれらのプログラムを取得してもよい。
以上、本願の実施形態のいくつかを図面に基づいて詳細に説明したが、これらは例示であり、発明の開示の行に記載の態様を始めとして、当業者の知識に基づいて種々の変形、改良を施した他の形態で本発明を実施することが可能である。
〔8.その他〕
また、上記実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。例えば、各図に示した各種情報は、図示した情報に限られない。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
また、上述してきた各実施形態に記載された各処理は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
また、上述してきた「部(section、module、unit)」は、「手段」や「回路」などに読み替えることができる。例えば、取得部は、取得手段や取得回路に読み替えることができる。