(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023183848
(43)【公開日】2023-12-28
(54)【発明の名称】クラスタリング装置、クラスタリング方法及びプログラム
(51)【国際特許分類】
G06F 17/16 20060101AFI20231221BHJP
G06F 17/18 20060101ALI20231221BHJP
G06F 16/35 20190101ALI20231221BHJP
【FI】
G06F17/16 P
G06F17/18 Z
G06F16/35
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2022097621
(22)【出願日】2022-06-16
(71)【出願人】
【識別番号】000004226
【氏名又は名称】日本電信電話株式会社
(71)【出願人】
【識別番号】592218300
【氏名又は名称】学校法人神奈川大学
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100124844
【弁理士】
【氏名又は名称】石原 隆治
(72)【発明者】
【氏名】青山 一生
(72)【発明者】
【氏名】斉藤 和巳
【テーマコード(参考)】
5B056
5B175
【Fターム(参考)】
5B056BB38
5B056BB62
5B056BB64
5B175DA01
5B175FA03
5B175HB03
(57)【要約】 (修正有)
【課題】疎データを効率的にクラスタリングする装置、方法及びプログラムを提供する。
【解決手段】オブジェクトを表す1以上の特徴とその特徴量で構成されるオブジェクト特徴ベクトルを複数のクラスタにクラスタリングするクラスタリング装置は、特徴を識別する特徴識別子毎に、クラスタを識別するクラスタ識別子と該クラスタに属するオブジェクト特徴ベクトルの平均を表すmean特徴ベクトルの特徴識別子に関する第1の非零特徴量とを対応付けた組を格納する配列要素で構成されるデータを記憶し、データに基づいて、オブジェクト特徴ベクトルの第2の非零特徴量と第2の非零特徴量の特徴識別子とを対応付けた組でオブジェクト特徴ベクトルを表したスパース表現のオブジェクト特徴ベクトルと、各クラスタのmean特徴ベクトルとの類似度を計算し、類似度に基づいて、オブジェクト特徴ベクトルを、複数のクラスタのうちの一のクラスタに割り当てる。
【選択図】
図7
【特許請求の範囲】
【請求項1】
オブジェクトを表す1以上の特徴と前記1以上の特徴の各々の値である1以上の特徴量とで構成されるオブジェクト特徴ベクトルを複数のクラスタにクラスタリングするクラスタリング装置であって、
前記特徴を識別する特徴識別子毎に、前記クラスタを識別するクラスタ識別子と該クラスタに属するオブジェクト特徴ベクトルの平均を表すmean特徴ベクトルの前記特徴識別子に関する第1の非零特徴量とを対応付けた組を格納する配列要素で構成されたデータを記憶部に記憶させるように構成されている記憶制御部と、
前記データに基づいて、前記オブジェクト特徴ベクトルの第2の非零特徴量と該第2の非零特徴量の特徴識別子とを対応付けた組で前記オブジェクト特徴ベクトルを表したスパース表現のオブジェクト特徴ベクトルと、各クラスタの前記mean特徴ベクトルとの類似度を計算するように構成されている類似度計算部と、
前記類似度に基づいて、前記オブジェクト特徴ベクトルを、前記複数のクラスタのうちの一のクラスタに割り当てるように構成されている割当部と、
を有し、
前記データは、
前記特徴識別子が第1の閾値未満の前記配列要素を表す第1の配列要素と、前記特徴識別子が前記第1の閾値以上かつ前記第1の非零特徴量が第2の閾値以上の前記配列要素を表す第2の配列要素と、前記特徴識別子が前記第1の閾値以上かつ前記第1の非零特徴量が第2の閾値未満の前記配列要素を表す第3の配列要素とで構成されている、クラスタリング装置。
【請求項2】
前記データは、
前記特徴識別子が第1の閾値未満の前記配列要素を表す第1の配列要素と、前記特徴識別子が前記第1の閾値以上かつ前記第1の非零特徴量が第2の閾値以上の前記配列要素を表す第2の配列要素と、前記特徴識別子が前記第1の閾値以上かつ前記第1の非零特徴量が第2の閾値未満の前記配列要素を表す第3の配列要素とが転置ファイルで構成されている、請求項1に記載のクラスタリング装置。
【請求項3】
前記データは、
前記特徴識別子が第1の閾値未満の前記配列要素を表す第1の配列要素と、前記特徴識別子が前記第1の閾値以上かつ前記第1の非零特徴量が第2の閾値以上の前記配列要素を表す第2の配列要素とが転置ファイルで構成されており、
前記特徴識別子が前記第1の閾値以上かつ前記第1の非零特徴量が第2の閾値未満の前記配列要素を表す第3の配列要素が標準的な転置ファイルで構成されている、請求項1に記載のクラスタリング装置。
【請求項4】
前記類似度計算部は、
前記スパース表現のオブジェクト特徴ベクトルに含まれる第2の非零特徴量の特徴識別子が前記第1の閾値未満である場合、前記第2の非零特徴量と、前記データを構成する配列要素のうち、前記特徴識別子に対応する配列要素に格納されている第1の非零特徴量と積を計算することで、前記類似度を計算し、
前記スパース表現のオブジェクト特徴ベクトルに含まれる第2の非零特徴量の特徴識別子が前記第1の閾値以上、かつ、前記第2の非零特徴量との類似度の計算対象となる第1の非零特徴量が前記第2の閾値以上である場合、前記第2の非零特徴量と前記第1の非零特徴量との積を計算することで、前記類似度を計算すると共に、前記スパース表現のオブジェクト特徴ベクトルの部分的なノルムを計算し、
前記スパース表現のオブジェクト特徴ベクトルに含まれる第2の非零特徴量の特徴識別子が前記第1の閾値以上、かつ、前記第2の非零特徴量との類似度の計算対象となる第1の非零特徴量が前記第2の閾値未満である場合、前記スパース表現のオブジェクト特徴ベクトルと該オブジェクト特徴ベクトルが現在属しているクラスタのmean特徴ベクトルとの類似度が、前記ノルムから計算される類似度上限値以下であるときに、前記第2の非零特徴量と前記第1の非零特徴量との積を計算することで、前記類似度を計算するように構成されている、請求項1に記載のクラスタリング装置。
【請求項5】
前記データは、
前記第1の配列要素及び前記第2の配列要素のそれぞれにおいて、前記割当部による割り当ての前後でクラスタに属するオブジェクト特徴ベクトルに変更あったクラスタを示す変更クラスタに対応するmean特徴ベクトルの第1の非零要素が含まれる組が格納される配列要素と、前記割当部による割り当ての前後でクラスタに属するオブジェクト特徴ベクトルが不変であったクラスタを示す不変クラスタに対応するmean特徴ベクトルの第1の非零要素が含まれる組が格納される配列要素とが区別可能に存在し、
前記類似度計算部は、
前記スパース表現のオブジェクト特徴ベクトルが属するクラスタが不変クラスタである場合、前記スパース表現のオブジェクト特徴ベクトルに含まれる第2の非零特徴量と、前記変更クラスタに対応するmean特徴ベクトルの第1の非零要素との積を計算することで、前記類似度を計算するように構成されている、請求項1乃至3の何れか一項に記載のクラスタリング装置。
【請求項6】
1つ前のイテレーションにおける前記類似度計算部による類似度の計算結果と前記割当部による割当結果とに基づいて、前記第2の閾値を最適化するように構成されている最適化部を更に有する請求項1に記載のクラスタリング装置。
【請求項7】
オブジェクトを表す1以上の特徴と前記1以上の特徴の各々の値である1以上の特徴量とで構成されるオブジェクト特徴ベクトルを複数のクラスタにクラスタリングするクラスタリング装置が、
前記特徴を識別する特徴識別子毎に、前記クラスタを識別するクラスタ識別子と該クラスタに属するオブジェクト特徴ベクトルの平均を表すmean特徴ベクトルの前記特徴識別子に関する第1の非零特徴量とを対応付けた組を格納する配列要素で構成されたデータを記憶部に記憶させる記憶制御手順と、
前記データに基づいて、前記オブジェクト特徴ベクトルの第2の非零特徴量と該第2の非零特徴量の特徴識別子とを対応付けた組で前記オブジェクト特徴ベクトルを表したスパース表現のオブジェクト特徴ベクトルと、各クラスタの前記mean特徴ベクトルとの類似度を計算する類似度計算手順と、
前記類似度に基づいて、前記オブジェクト特徴ベクトルを、前記複数のクラスタのうちの一のクラスタに割り当てる割当手順と、
を実行し、
前記データは、
前記特徴識別子が第1の閾値未満の前記配列要素を表す第1の配列要素と、前記特徴識別子が前記第1の閾値以上かつ前記第1の非零特徴量が第2の閾値以上の前記配列要素を表す第2の配列要素と、前記特徴識別子が前記第1の閾値以上かつ前記第1の非零特徴量が第2の閾値未満の前記配列要素を表す第3の配列要素とで構成されている、クラスタリング方法。
【請求項8】
コンピュータを、請求項1に記載のクラスタリング装置として機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、クラスタリング装置、クラスタリング方法及びプログラムに関する。
【背景技術】
【0002】
膨大な量の情報を効率的に処理するための方法の1つとして、k-means法に代表されるクラスタリング手法が知られている。クラスタリング手法では、各々の情報の間の関係性(類似度、非類似度、距離等)を表す尺度により、複数の情報を1つにまとめたり、与えられた情報群を複数の集合に分割したりできる。以下、クラスタリングの対象となる「情報」を「オブジェクト」と呼ぶ。
【0003】
k-means法は、例えば、オブジェクトの特徴を表すベクトルデータ(以下、オブジェクト特徴ベクトルという。)をxiとして、データ集合X={x0,x1,・・・,xN-1}とクラスタ数Kとが与えられたときに、データ集合XをK個のクラスタに分割する手法である。k-means法では、例えば、クラスタCjに属する各オブジェクト特徴ベクトルxiの平均を表すベクトルμj(以下、mean特徴ベクトルという。)との内積を目的関数として、その目的関数を最大化するように、各オブジェクト特徴ベクトルxiが割り当てられるクラスタCjが決定される。一方で、k-means法の厳密解を計算するには多くの計算量を要するため、Lloyd法と呼ばれる発見的手法が良く用いられる。
【0004】
ところで、近年では、オブジェクト特徴ベクトルが高次元かつ疎(スパース)なデータで表されることが多い。例えば、文書、購入者(又はユーザ)と購入品(又はアイテム)との関係を表す購買履歴、bag-of-visual wordsで表される画像等をオブジェクトとした場合、これらのオブジェクトは高次元かつ疎なオブジェクト特徴ベクトルで表現されることが多い。以下、大量の高次元かつ疎なデータの集合を大規模高次元疎データ集合と呼ぶ。
【0005】
Lloyd法は初期状態設定ステップ、割当ステップ、更新ステップ及び終了判定ステップで構成されるが、割当ステップでは各オブジェクト特徴ベクトルxiと各mean特徴ベクトルμjとの内積を計算する必要があるため、割当ステップの時間計算量が支配的である。このため、割当ステップの時間計算量を削減することが求められている。
【0006】
Lloyd法の割当ステップは、オブジェクト特徴ベクトルの集合をクエリオブジェクト集合、mean特徴ベクトルの集合を被探索データオブジェクト集合と見做せば、最類似探索問題と等価である。大規模高次元疎データ集合の最類似探索問題を高速に解くことが可能な代表的な手法の1つに、データ構造として転置ファイル(inverted file)(又は、転置インデックス(inverted index)とも呼ばれる。)を使用する方法が知られている。例えば、非特許文献1及び2では、転置ファイルを効率的に利用した高速化手法が提案されている。また、非特許文献3では、mean特徴ベクトル集合の転置ファイルで表現した高速化手法が提案されている。なお、転置ファイルを利用した手法ではないが、非特許文献4では、類似度の上限値(又は、距離の下限値)を用いて、Lloyd法を加速する手法(Ding法と呼ぶ。)が提案されている。
【先行技術文献】
【非特許文献】
【0007】
【非特許文献1】M. Fontoura, V. Josifovski, J. Liu, S. Venkatesan, X. Zhu, and J. Zien, "Evaluation strategies for top-k queries over memory-resident inverted indexes," Proc. VLDB Endowment, vol. 5, no. 12, 2011.
【非特許文献2】Y. Li, J. Wang, B. Pullman, N. Bandeira, and Y. Papakonstantinou, "Index-based, high-dimensional, cosine threshold querying with optimality guarantees," Proc. Int. Conf. Database Theory (ICDT), 2019.
【非特許文献3】Kazuo Aoyama and Kazumi Saito, "Structured inverted-file k-means clustering for high-dimensional sparse data," arXiv: 2103.16141, https://arxiv.org/abs/2103.16141.
【非特許文献4】Y. Ding, Y. Zhao, X. Shen, M. Musuvathi, and T. Mykowicz, "Yinyang K-means: A drop-in replacement of the classic K-means with consistent speedup," Proc. Int. Conf. Machine Learning (ICML), 2015.
【発明の概要】
【発明が解決しようとする課題】
【0008】
しかしながら、大規模高次元疎データ集合に対するクラスタリング手法の更なる高速化が望まれている。
【0009】
本開示は、上記の点に鑑みてなされたもので、疎データを効率的にクラスタリングする技術を提供する。
【課題を解決するための手段】
【0010】
本開示の一態様によるクラスタリング装置は、オブジェクトを表す1以上の特徴と前記1以上の特徴の各々の値である1以上の特徴量とで構成されるオブジェクト特徴ベクトルを複数のクラスタにクラスタリングするクラスタリング装置であって、前記特徴を識別する特徴識別子毎に、前記クラスタを識別するクラスタ識別子と該クラスタに属するオブジェクト特徴ベクトルの平均を表すmean特徴ベクトルの前記特徴識別子に関する第1の非零特徴量とを対応付けた組を格納する配列要素で構成されたデータを記憶部に記憶させるように構成されている記憶制御部と、前記データに基づいて、前記オブジェクト特徴ベクトルの第2の非零特徴量と該第2の非零特徴量の特徴識別子とを対応付けた組で前記オブジェクト特徴ベクトルを表したスパース表現のオブジェクト特徴ベクトルと、各クラスタの前記mean特徴ベクトルとの類似度を計算するように構成されている類似度計算部と、前記類似度に基づいて、前記オブジェクト特徴ベクトルを、前記複数のクラスタのうちの一のクラスタに割り当てるように構成されている割当部と、を有し、前記データは、前記特徴識別子が第1の閾値未満の前記配列要素を表す第1の配列要素と、前記特徴識別子が前記第1の閾値以上かつ前記第1の非零特徴量が第2の閾値以上の前記配列要素を表す第2の配列要素と、前記特徴識別子が前記第1の閾値以上かつ前記第1の非零特徴量が第2の閾値未満の前記配列要素を表す第3の配列要素とで構成されている。
【発明の効果】
【0011】
疎データを効率的にクラスタリングする技術が提供される。
【図面の簡単な説明】
【0012】
【
図1】dfとそのdfを持つ単語の数との関係の一例を模式的に示す図である。
【
図2】dfとそのdfを持つ単語の数との関係の一例を示す図(その1)である。
【
図3】dfとそのdfを持つ単語の数との関係の一例を示す図(その2)である。
【
図4】dfとそのdfを持つ単語の数との関係の一例を示す図(その3)である。
【
図5】或る単語に関するdfとその単語に関する特徴量を含むmean特徴ベクトル数との関係の一例を示す図である。
【
図6】k-means法の1イテレーションの類似度計算における乗算回数の一例を模式的に示す図である。
【
図7】実施例1における転置ファイル表現のmean特徴ベクトル集合の一例を模式的に示す図である。
【
図8】実施例1におけるクラスタリング装置のハードウェア構成の一例を示す図である。
【
図9】実施例1におけるクラスタリング装置の機能構成の一例を示す図である。
【
図10】実施例1におけるクラスタリング処理の一例を示すフローチャートである。
【
図11】実施例1における割当ステップの一例を示すアルゴリズムである。
【
図12】近似乗算回数の評価の一例を示す図である。
【
図13】実施例1の実験結果の一例を示す図(その1)である。
【
図14】実施例1の実験結果の一例を示す図(その2)である。
【
図15】実施例1の実験結果の一例を示す図(その3)である。
【
図16】実施例2における転置ファイル表現のmean特徴ベクトル集合の一例を模式的に示す図である。
【
図17】実施例2における割当ステップの一例を示すアルゴリズムである。
【
図18】実施例2の実験結果の一例を示す図(その1)である。
【
図19】実施例2の実験結果の一例を示す図(その2)である。
【発明を実施するための形態】
【0013】
以下、本発明の一実施形態について説明する。以下では、疎データを効率的にクラスタリングすることができるクラスタリング装置10について説明する。
【0014】
[準備]
まず、本実施形態の準備として、クラスタリングの対象となるデータ、k-means法及びLloyd法について説明する。
【0015】
・クラスタリングの対象となるデータ
以下では、大量の高次元かつ疎なデータの集合(大規模高次元疎データ集合)をクラスタリングの対象とする。このようなデータの一例としては、文書をオブジェクトとして大量の文書をクラスタリングする場合に、文書の特徴を表すオブジェクト特徴ベクトル等が挙げられる。
【0016】
オブジェクトが文書である場合は、bag-of-wordsモデル(以降、「BoW」と表す。)を用いて、オブジェクトを特徴空間であるユークリッド空間における点として扱うことがよく行われている。なお、文書はテキストやドキュメント等とも称されるが、これらを総称して「文書」と表す。
【0017】
BoWでは、文書をその中に出現する単語(word)に代表される一塊の文字列に分割し、各々の単語を文書の特徴の1つとする。そして、特徴に対応する或る量を特徴量として、文書をこれらの特徴量を要素するベクトルで表現する。なお、単語は語彙(vocabulary)やターム(term)等とも称されるが、以降では、単語、語彙及びタームを総称して、「単語」と表すことにする。
【0018】
特徴量は、文書中に或る単語が出現する頻度(term frequency)と、オブジェクト集合(文書集合)の各文書に当該単語が出現する頻度(document frequency)とを入力変数とする関数の値で表される。当該関数としては、例えば、tf-idf(term-frequency-inverse document frequency)であることが多く、一般的な関数は以下である。
【0019】
tf(th,xi;X):Xが与えられた場合に、xiに出現するthの頻度
df(th,X):Xが与えられた場合に、thを含む文書(オブジェクト)の数nh
idf(th;X)=log(N/nh)
tf-idf(th,xi;X)=tf(th,xi;X)×idf(th;X)
ここで、Xはオブジェクト集合(文書集合)に対応するオブジェクト特徴ベクトル集合X={x0,x1,・・・,xN-1}であり、xi(i=0,1,・・・,N-1)はオブジェクト特徴ベクトルである。xiの次元数(つまり、特徴数)はDであるものとする。また、オブジェクト数|X|は|X|=Nであり、nhは単語thを含む文書の数である。なお、idfを表す関数のlogの底は限定されない。また、hの最大値はオブジェクト集合中の異なり単語数である。なお、i等の添え字(インデックス)は1から開始してもよいが、後述する配列のインデックスと整合させるため、本実施形態ではインデックスは0から開始するものとする。
【0020】
このとき、オブジェクトに出現する1単語を1次元とした場合、特徴空間の次元数は、オブジェクト集合に含まれる全オブジェクトの異なり単語数であり、非常に大きくなる。すなわち、特徴空間は高次元空間となる。
【0021】
一方で、或るオブジェクト(文書)に出現する単語数が限られているため、オブジェクト特徴ベクトルxiは、疎(スパース)なベクトルとなる。すなわち、オブジェクト特徴ベクトルxiは、非零要素の数が非常に少ないベクトルとなる。
【0022】
このように、大量の文書をクラスタリングする場合、クラスタリング対象のデータ(オブジェクト特徴ベクトル)集合は大規模な集合となり、かつ、各オブジェクト特徴ベクトルは高次元で疎なベクトルとなる。
【0023】
なお、文書以外にも、例えば、購入者(又はユーザ)と購入品(又はアイテム)との関係を表す購買履歴、抽出される特徴がbag-of-visual wordsで表される画像等もオブジェクトとして、文書と同様に扱うことができる。すなわち、大量の購買履歴の特徴ベクトルやbag-of-visual wordsで表される大量の画像の特徴ベクトル等も大規模高次元疎データ集合となる。以下では、一例として、オブジェクトは文書であるものとして説明する。
【0024】
また、以下では、説明を簡単にするため、オブジェクト特徴ベクトル間の関係性は、正規化されたオブジェクト特徴ベクトルを用いたコサイン類似度とする。この場合、2つの特徴ベクトル(オブジェクト特徴ベクトル、mean特徴ベクトル)間の類似度はそれらの内積となる。
【0025】
・k-means法
k-means法(k平均法)は、オブジェクト特徴ベクトル集合X={x0,x1,・・・,xN-1}とクラスタ数Kとが与えられたときに、オブジェクト特徴ベクトル集合XをK個のクラスタに分割する手法である。上記の内積を類似度とするk-means法はspherical k-means法(超球k平均法)と呼ばれることもある。以下、k-means法とspherical k-means法とを同一視する。
【0026】
k-means法では、オブジェクト特徴ベクトル集合XをK個のクラスタに分割する際に、各オブジェクト特徴ベクトルxiと各クラスタCjのmean特徴ベクトルμjとの内積を目的関数として、その目的関数を最大化するように、各オブジェクト特徴ベクトルxiを割り当てるクラスタCjを決定する。すなわち、以下の式(1)に示す目的関数J(C;X,K)を最大化するように、各オブジェクト特徴ベクトルxiを割り当てるクラスタCjを決定する。ただし、C={C0,C1,・・・,CK-1}である。
【0027】
【数1】
ここで、x
i及びμ
jは列ベクトルであり、Tは転置を表す。また、x
i
Tμ
jは、x
iとμ
jの内積(dot product又はinner product)を表す。
【0028】
・Lloyd法
上記の式(1)を厳密に解くには多くの計算量を要するため、Lloyd法と呼ばれる発見的方法である反復法が用いられることが多々ある。以下、k-means法に利用されるLloyd法の概略について説明する。Lloyd法は、以下の初期状態設定ステップ、割当ステップ、更新ステップ及び終了判定ステップで構成される。
【0029】
S1:(初期状態設定ステップ)K個のmean特徴ベクトルμj(j=0,1,・・・,K-1)を適当な値に初期化する。
【0030】
S2:(割当ステップ)オブジェクト特徴ベクトルxiの各々について、現在のイテレーションのmean特徴ベクトルμjと、当該オブジェクト特徴ベクトルxiとの内積(式(1))を計算し、その内積が最大となるmean特徴ベクトルμjに対応するクラスタCjに当該オブジェクト特徴ベクトルxiを割り当てる。
【0031】
S3:(更新ステップ)全てのオブジェクト特徴ベクトルxiの割り当てが終了した後、各クラスタCjに属するオブジェクト特徴ベクトルxiによりmean特徴ベクトルμjを計算及び更新する。
【0032】
S4:(終了判定ステップ)所定の終了条件を満たすか否かを判定し、所定の終了条件を満たすと判定された場合は処理を終了する一方で、所定の終了条件を満たさないと判定された場合は上記のS2の割当ステップに戻る。これにより、所定の終了条件を満たすまで、S2及びS3が繰り返し実行される。この繰り返しはイテレーションとも称され、現在実行中の繰り返しを「現在のイテレーション」、現在のイテレーションの1つ前に実行した繰り返しを「1つ前のイテレーション」等と表す。なお、所定の終了条件としては、例えば、全てのオブジェクト特徴ベクトルxiが属するクラスタCjが不変になった場合等が挙げられる。
【0033】
ここで、Lloyd法は、上記のS2の割当ステップに多くの時間計算量を要する。このため、Lloyd法の高速化を図るためには、割当ステップに要する時間、すなわち、全てのオブジェクト特徴ベクトルxiと全てのmean特徴ベクトルμjとの内積計算に要する時間を低減させることが必要になる。そこで、以下では、この内積計算に要する時間を低減させる手法を提案し、この提案手法を用いて、クラスタリング装置10により大規模高次元疎データ集合をクラスタリングする。
【0034】
[実施例1]
以下、実施例1について説明する。
【0035】
<提案手法>
高次元かつ疎なオブジェクト特徴ベクトルを扱う際には、このオブジェクト特徴ベクトルをスパース表現する手法がよく用いられる(非特許文献3、参考文献1)。スパース表現のオブジェクト特徴ベクトルは、そのオブジェクト特徴ベクトルの非零要素の位置を示す特徴ID(例えば、文書の場合は単語ID等)と、その非零要素の値を示す特徴量(例えば、文書の場合はtf-idf等)との組(タプル)で表される。具体的には、オブジェクトが文書である場合、単語のIDを単語ID、その単語IDの単語に関する特徴量をnon-zero valueとすれば、(単語ID,non-zero value)という組で表される。このようなスパース表現を採用することにより、オブジェクト特徴ベクトル集合が使用するメモリサイズを抑制することができる。特に、オブジェクト集合が大規模である場合、スパース表現することは空間計算量に相当するメモリの効率的利用の観点から必須である。なお、特徴IDは、例えば、特徴識別子等と呼ばれてもよい。
【0036】
以下、非特許文献3や参考文献1と同様に、オブジェクト特徴ベクトルxiはスパース表現されているものとする。また、スパース表現のオブジェクト特徴ベクトルxiは、そのオブジェクト特徴ベクトルxiに含まれる非零要素の数をnum_terms[i]として、2次元配列Obj[i][t](t=0,1,・・・,num_terms[i]-1)で実現されており、Obj[i][t].termIDでxiのt番目の特徴ID(termID)、Obj[i][t].Featureでxiのt番目の特徴量にそれぞれアクセスできるものとする。また、特徴IDは、0≦Obj[i][0].termID<Obj[i][1].termID<・・・<Obj[i][num_terms[i]-1].termID≦D-1となるようにソートされているものとする。なお、2次元配列Obj[i][t]はtermIDとFeatureを持つ構造体配列であるものとしたが、これは一例であって、これに限られるものではない。例えば、termIDの2次元配列とFeatureの2次元配列とでオブジェクト特徴ベクトルxiが実現されてもよい。
【0037】
一方で、mean特徴ベクトルμjも内積計算に使用されるため、mean特徴ベクトルμjの表現方法又はデータ構造もLloyd法を効率的に実行するために重要な点である。非特許文献1及び2には、mean特徴ベクトル集合を転置ファイルで表現した素朴な方法(naive IVFと呼ぶ)が記載されている。また、非特許文献3及び参考文献1には、naive IVFに対してICP(invariant centroid-pair skipping filter)を導入した方法(SIVFと呼ぶ)が記載されている。ここで、転置ファイルで表現したmean特徴ベクトル集合は、特徴ID(termID)毎に、その特徴IDの特徴量が含まれるmean特徴ベクトルのID(以下、meanIDという。このmeanIDはクラスタIDのことである。)と、その特徴量との組(タプル)で表される。例えば、転置ファイル表現のmean特徴ベクトル集合は、特徴ID(termID)の総数をD、t番目の特徴IDの特徴量が含まれるmean特徴ベクトルの数をMF[t]として、2次元配列INV'[t][h](t=0,1,・・・,D-1,h=0,1,・・・,MF[t]-1)で実現できる。このとき、INV'[t][h].meanIDでt番目の特徴IDの特徴量が含まれるmean特徴ベクトルμjのうち、h番目のmean特徴ベクトルμjのmeanIDにアクセスできるものとする。また、INV'[t][h].Featureでそのmean特徴ベクトルμjの当該特徴量にアクセスできるものとする。なお、2次元配列INV'[t][h]はmeanIDとFeatureを持つ構造体配列であるものとしたが、これは一例であって、これに限られるものではない。例えば、termIDの2次元配列とFeatureの2次元配列とでmean特徴ベクトル集合が実現されてもよい。
【0038】
なお、以下では、転置ファイルで表現したmean特徴ベクトル集合INV'[t][h]の各列(つまり、INV'[t][0],・・・,INV'[t][MF[t]-1])のことをinverted-file arrayと呼ぶ。また、簡単のため、t番目の特徴IDはtであるものとする。
【0039】
本提案手法では、mean特徴ベクトル集合を転置ファイルで表現すると共に、オブジェクト特徴ベクトルとの内積計算に要する時間計算量に応じてその転置ファイルを3つの領域に分割する。また、それら3つの領域のうち、時間計算量が多い領域に関しては、類似度上限によって内積(類似度)を厳密計算する部分を抽出し、その時間計算量を削減する。以下、本提案手法における転置ファイルのデータ構造について説明する。
【0040】
文書に含まれる単語に関するdf(document frequency)とそのdfを持つ単語の数は、
図1に示すように、或る係数をa,bとして、f(x)=ax
-bという関係で概ね表現できる。ここで、xはdf、f(x)は単語数である。すなわち、大規模高次元疎データ集合の普遍的な性質の1つとして、dfと単語数との間でべき乗則がほぼ成り立つ。なお、
図1に示すグラフでは、縦軸は単語数の対数スケール、横軸はdfの対数スケールをそれぞれ表している。
【0041】
具体例を
図2~
図4に示す。
図2に示す例は、或るサイズのPubMedに含まれる単語に関するdfとそのdfを持つ単語の数との関係を表している。
図3に示す例は、
図2に示す例よりも大きなサイズのPubMedに含まれる単語に関するdfとそのdfを持つ単語の数との関係を表している。
図4に示す例は、或るサイズの新聞記事に含まれる単語に関するdfとそのdfを持つ単語の数との関係を表している。
図2~
図4のいずれの例でもべき乗則がほぼ成り立っていることがわかる。なお、
図2~
図4はいずれも縦軸は単語数の対数スケール、横軸はdfの対数スケールをそれぞれ表している。
【0042】
次に、k-means法でクラスタリングする場合、単語に関するdfとその単語に関する特徴量を含むmean特徴ベクトルの数(mf:mean frequency)は正の相関を持ち、その傾きはほぼ1となる。ただし、mfの最大値は最大クラスタ数Kであるため、dfが大きい領域では傾きが緩やかになりmfはKに漸近し、Kとなる場合もある。具体例を
図5に示す。
図5に示す例は、
図2で用いたのと同じPubMedに含まれる単語に関するdfとその単語に関する特徴量を含むmean特徴ベクトルの数(mf)との関係であり、dfとmfは正の相関を持ち、その傾きはほぼ1であることがわかる。なお、
図5に示す例では、縦軸はmfの対数スケール、横軸はdfの対数スケールをそれぞれ表している。
【0043】
上記の2つの関係を考慮すると、k-means法でクラスタリングする際の1イテレーションの類似度計算における乗算回数は、
図6に示すような直方体中の曲線で囲まれた領域の体積に相当する。すなわち、転置ファイル表現のmean特徴ベクトル集合INV'[t][h]を考えると、tが或る程度大きくなるとdfも増えるため、オブジェクト特徴ベクトルx
iとの乗算回数が増える。
【0044】
そこで、本実施例では、転置ファイルで表現したmean特徴ベクトル集合INV'[t][h]から以下の(a)~(c)により新たな転置ファイルで表現したmean特徴ベクトル集合INV[t][h]を構成する。
【0045】
(a)各特徴IDとINV'[t][h]でその特徴IDに対応するinverted-file arrayとを当該特徴IDに関する単語のdfの昇順にソートする。また、ソート後の特徴IDには新たに先頭から特徴IDを順に振り直す。ここで、新たに先頭から特徴IDを順に振り直すとは、例えば、特徴IDの列{0,・・・,D-1}がdfの昇順にソートされた結果{m0,・・・,mD-1}となった場合に、m0,・・・,mD-1に対してそれぞれ0,・・・,D-1と特徴IDを振り直すことである。
【0046】
(b)t番目の特徴IDを表すインデックスtに対して閾値ThTermを設定し、INV'[t][h](t<ThTerm)を満たす部分を領域R1とする。
【0047】
(c)t≧ThTermを満たす各tに対してINV'[t][h].Featureの降順にソートした上で、INV'[t][h].Featureに対して閾値ThValを設定し、t≧ThTermかつINV'[t][h].Feature≧ThValを満たす部分を領域R2、t≧ThTermかつINV'[t][h].Feature<ThValを満たす部分を領域R3とする。
【0048】
ただし、上記の(c)では、例えば、t≧ThTermを満たす各tに対してINV'[t][h].Featureと、INV'[t][h].Featureに対して設定された閾値ThValとを比較し、INV'[t][h].Feature≧ThValを満たす組(INV'[t][h].meanID,INV'[t][h].Feature)に対して局所番号としてh=0から順に番号を割り当て、その番号が割り当てられた転置ファイル部分を領域R2とし、残りの組を領域R3としてもよい。この場合、INV'[t][h].Featureをソートする必要がなく、また領域R3は転置ファイルとして表現されていなくてもよい(つまり領域Rは標準的なファイルで表現されていてもよい。)。
【0049】
以上の(a)~(c)により構成されたINV[t][h]を
図7に示す。
図7に示す例では、term-mf平面でINV[t][h]を表現している。このように、本実施例では、3分割構造の転置ファイルで表現されたmean特徴ベクトル集合を用いる。これにより、領域R1ではnaive IVFと同様の手法により類似度計算を行う一方で、特に乗算回数が多く時間計算量が大きい領域R3では類似度上限によって内積(類似度)を厳密計算する部分を抽出することでその時間計算量を削減することができる。なお、領域R2では類似度計算を行うと共に、類似度上限の算出に必要な計算も行われる。以下では、上記の(a)~(c)により構成されたINV[t][h]を「転置ファイル表現のmean特徴ベクトル集合」又は「3分割構造転置ファイル表現のmean特徴ベクトル集合」と呼ぶことにする。
【0050】
<クラスタリング装置10のハードウェア構成例>
実施例1におけるクラスタリング装置10のハードウェア構成例を
図8に示す。
図8に示すように、実施例1におけるクラスタリング装置10は、入力装置101と、表示装置102と、外部I/F103と、通信I/F104と、RAM(Random Access Memory)105と、ROM(Read Only Memory)106と、補助記憶装置107と、プロセッサ108とを有する。これらの各ハードウェアは、それぞれがバス109を介して通信可能に接続されている。
【0051】
入力装置101は、例えば、キーボード、マウス、タッチパネル、物理ボタン等である。表示装置102は、例えば、ディスプレイ、表示パネル等である。なお、クラスタリング装置10は、例えば、入力装置101及び表示装置102の少なくとも一方を有していなくてもよい。
【0052】
外部I/F103は、記録媒体103a等の外部装置とのインタフェースである。クラスタリング装置10は、外部I/F103を介して、記録媒体103aの読み取りや書き込み等を行うことができる。記録媒体103aとしては、例えば、フレキシブルディスク、CD(Compact Disc)、DVD(Digital Versatile Disk)、SDメモリカード(Secure Digital memory card)、USB(Universal Serial Bus)メモリカード等が挙げられる。
【0053】
通信I/F104は、クラスタリング装置10を通信ネットワークに接続するためのインタフェースである。RAM105は、プログラムやデータを一時保持する揮発性の半導体メモリ(記憶装置)である。ROM106は、電源を切ってもプログラムやデータを保持することができる不揮発性の半導体メモリ(記憶装置)である。補助記憶装置107は、例えば、HDD(Hard Disk Drive)、SSD(Solid State Drive)、フラッシュメモリ等のストレージ装置(記憶装置)である。プロセッサ108は、例えば、CPU(Central Processing Unit)やGPU(Graphics Processing Unit)等の演算装置である。
【0054】
実施例1におけるクラスタリング装置10は、
図8に示すハードウェア構成を有することにより、後述するクラスタリング処理を実現することができる。なお、
図8に示すハードウェア構成は一例であって、クラスタリング装置10のハードウェア構成はこれに限られるものではない。例えば、クラスタリング装置10は、複数の補助記憶装置107や複数のプロセッサ108を有していてもよいし、図示したハードウェアの一部を有していなくてもよいし、図示したハードウェア以外の様々なハードウェアを有していてもよい。
【0055】
<クラスタリング装置10の機能構成例>
実施例1におけるクラスタリング装置10の機能構成例を
図9に示す。
図9に示すように、実施例1におけるクラスタリング装置10は、前処理部110と、クラスタリング処理部120とを有する。これら各部は、例えば、クラスタリング装置10にインストールされた1以上のプログラムが、プロセッサ108に実行させる処理により実現される。また、実施例1におけるクラスタリング装置10は、記憶部130を有する。記憶部130は、例えば、RAM105や補助記憶装置107により実現される。なお、例えば、前処理部110とクラスタリング処理部120は、それぞれ異なるプログラムがプロセッサ108に実行させる処理により実現されていてもよい。
【0056】
前処理部110は、与えられたオブジェクト特徴ベクトル集合X={x0,x1,・・・,xN-1}に含まれる各オブジェクト特徴ベクトルxiの各々を、スパース表現のオブジェクト特徴ベクトルにする。スパース表現のオブジェクト特徴ベクトルは、例えば、非特許文献3や参考文献1に記載されている方法により作成すればよい。以下では、スパース表現のオブジェクト特徴ベクトルもxi(i=0,1,・・・,N-1)で表し、またその集合もXで表す。スパース表現のオブジェクト特徴ベクトルxiの集合Xは、例えば、記憶部130に格納される。なお、与えられたオブジェクト特徴ベクトルxiが既にスパース表現である場合は、前処理部110は、このオブジェクト特徴ベクトルxiをスパース表現にする必要はない。
【0057】
また、前処理部110は、クラスタリング処理が実行される前の前処理として、閾値ThTermを計算する。閾値ThTermは、例えば、記憶部130に格納される。
【0058】
クラスタリング処理部120は、スパース表現のオブジェクト特徴ベクトルxiの集合Xと、クラスタ数Kと、閾値ThTerm及びThValとを入力として、スパース表現のオブジェクト特徴ベクトルxiをK個のクラスタにクラスタリング(又は分割)する。ここで、クラスタリング処理部120には、入力部121と、初期設定部122と、割当部123と、更新部124と、終了判定部125と、出力部126とが含まれる。
【0059】
入力部121は、スパース表現のオブジェクト特徴ベクトルxiの集合Xと、クラスタ数Kとを入力する。なお、入力部121は、例えば、記憶部130から集合X及びクラスタ数Kを入力する。ただし、入力部121は、例えば、他の装置や他のプログラム等から出力された集合Xやクラスタ数Kを入力してもよい。
【0060】
初期設定部122は、上述した初期状態設定ステップに相当する処理を行う。このとき、初期設定部122は、3分割構造転置ファイル表現のmean特徴ベクトル集合INV[t][h]を作成する。
【0061】
割当部123は、上述した割当ステップに相当する処理を行う。このとき、割当部123は、3分割構造転置ファイル表現のmean特徴ベクトル集合INV[t][h]の領域R1ではnaive IVFと同様の手法により類似度計算を行う一方で、領域R2ではnaive IVFと同様の手法により類似度計算を行いつつ類似度上限の算出に必要な計算も行い、領域R3では類似度上限によって内積(類似度)を厳密計算する部分を抽出した上でその抽出した部分に関してのみ類似度計算を行う。
【0062】
更新部124は、上述した更新ステップに相当する処理を行う。また、更新部124は、イテレーション数が2以上のイテレーション(好ましくは、イテレーション数が2のイテレーション)で閾値ThValを最適化する。なお、更新部124によって閾値ThValが最適化される前は、閾値ThValとしてその初期値が用いられる。閾値ThValは記憶部130に格納されている。
【0063】
終了判定部125は、上述した終了判定ステップに相当する処理を行う。出力部126は、例えば、スパース表現のオブジェクト特徴ベクトルxiのクラスタCjへの割当結果(これは、オブジェクトのクラスタリング結果と同一視できる。)を出力する。なお、出力部126は、各クラスタCjのmean特徴ベクトルμjを出力してもよい。また、出力部126による出力先は、限定されない。出力先の具体例としては、例えば、ディスプレイ等の表示装置102、補助記憶装置107、記録媒体103a、通信ネットワークを介して接続される他の装置等が挙げられる。
【0064】
なお、
図9に示すクラスタリング装置10の機能構成は一例であって、これに限られるものではない。例えば、クラスタリング装置10が前処理部110を有さずに、他の装置が前処理部110を有していてもよい。この場合、クラスタリング装置10のクラスタリング処理部120は、当該他の装置の前処理部110によって作成されたスパース表現のオブジェクトベクトルx
iの集合Xと閾値ThTermとを入力すればよい。
【0065】
<クラスタリング処理>
以下、実施例1におけるクラスタリング処理について、
図10を参照しながら説明する。なお、以下では、前処理部110によって計算された閾値ThTermが記憶部130に記憶されているものとする。また、以下では、1イテレーション目では所定の初期値を持つ閾値ThTermが記憶部130に記憶されており、2イテレーション目以降では更新部124によって最適化された値を持つ閾値ThValが記憶部130に記憶されているものとする。なお、閾値ThTermの計算方法と閾値ThValの最適化方法については後述する。
【0066】
ステップS101:まず、クラスタリング処理部120の入力部121は、スパース表現のオブジェクト特徴ベクトルxiの集合Xと、クラスタ数Kと、閾値ThTerm及びThValとを入力する。なお、|X|=Nであり、Kは整数かつ1<K<Nであるものとする。以下、スパース表現のオブジェクト特徴ベクトル集合Xは2次元配列Obj[i][t](i=0,1,・・・,N-1,t=0,1,・・・,num_terms[i]-1)で実現されているものとする。
【0067】
ステップS102:次に、クラスタリング処理部120の初期設定部122は、各mean特徴ベクトルμj(j=0,1,・・・,K-1)を適当な値に初期化した上で、これらのmean特徴ベクトルμjの集合を3分割構造転置ファイルで表現する。すなわち、初期設定部122は、初期化後のmean特徴ベクトルμj(j=0,1,・・・,K-1)と閾値ThTerm及びThValとを用いて、3分割構造転置ファイル表現のmean特徴ベクトル集合を作成する。ただし、3分割構造転置ファイルは同一の転置ファイルでなくてもよい。なお、3分割構造転置ファイル表現のmean特徴ベクトル集合は、例えば、記憶部130に格納される。以下、3分割構造転置ファイル表現のmean特徴ベクトル集合は2次元配列INV[t][h](t=0,1,・・・,D-1,h=0,1,・・・,MF[t]-1)で実現されているものとする。
【0068】
なお、mean特徴ベクトルμjの初期化方法は任意の方法を用いればよい。例えば、各mean特徴ベクトルμjをランダムな値に初期化してもよいし、互いに異なる任意のK個のオブジェクト特徴ベクトルxiをそれぞれmean特徴ベクトルμjとしてもよいし、スパース表現の各オブジェクト特徴ベクトルxiをランダムにクラスタCjに割り当てた上で、各クラスタCjに属するxiからmean特徴ベクトルμjを計算することで初期化してもよい。
【0069】
ステップS103:次に、クラスタリング処理部120の割当部123は、3分割構造転置ファイル表現のmean特徴ベクトル集合を用いて、スパース表現のオブジェクト特徴ベクトルxiの各々について、現在のイテレーションにおけるmean特徴ベクトルμjとの類似度を計算し、その類似度によりいずれかのクラスタCjに割り当てる。本割当ステップの詳細については後述する。なお、スパース表現のオブジェクト特徴ベクトルxiのクラスタCjへの割当結果は、例えば、記憶部130に格納される。
【0070】
ステップS104:クラスタリング処理部120の更新部124は、各クラスタCjに属するスパース表現のオブジェクト特徴ベクトルxiにより、3分割構造転置ファイル表現のmean特徴ベクトル集合を更新する。例えば、更新部124は、各クラスタCjに属するスパース表現のオブジェクト特徴ベクトルxiによりそのクラスタCjのmean特徴ベクトルμjを計算した上で、これらのmean特徴ベクトルμjにより3分割構造転置ファイルを更新してもよいし、これらのmean特徴ベクトルμjから3分割構造転置ファイルを再作成してもよい。
【0071】
また、クラスタリング処理部120の更新部124は、例えば、現在のイテレーションが2イテレーション目である場合、閾値ThValを最適化する。これにより、最適化後の閾値ThValによって、記憶部130に記憶されている閾値ThValが更新される。ただし、閾値ThValの最適化が実行されるのは2イテレーション目に限定されるものではない。閾値ThValの最適化に要する計算量の削減のためには、或る程度クラスタリング結果が安定した後できるだけ早いイテレーションで最適化を実行することが望ましい。なお、閾値ThValの最適化方法の詳細については後述する。
【0072】
ステップS105:クラスタリング処理部120の終了判定部125は、所定の終了条件を満たすか否かを判定する。そして、所定の終了条件を満たすと判定した場合、クラスタリング処理部120は、ステップS106に進む。一方で、所定の終了条件を満たさないと判定された場合、クラスタリング処理部120は、イテレーションに1を加算した上で、ステップS103に戻る。
【0073】
ステップS106:最後に、クラスタリング処理部120の出力部126は、例えば、スパース表現のオブジェクト特徴ベクトルxiのクラスタCjへの割当結果等を出力する。
【0074】
・実施例1における割当ステップのアルゴリズム
実施例1における割当ステップ(
図10のステップS103)のアルゴリズムについて、
図11を参照しながら説明する。
【0075】
割当部123は、i=0,・・・,N-1に対して2行目~19行目を繰り返し実行する(1行目)。以下、或るiに関する2行目~19行目の繰り返しについて説明する。
【0076】
割当部123は、t=0,・・・,Local_ThTerm[i]-1に対して3行目~5行目を繰り返し実行する(2行目)。ここで、Local_ThTerm[i]とは、Obj[i][t].termID≧ThTermを満たす最小のtのことである。例えば、num_terms[i]=3であり、Obj[i][0].termID~Obj[i][1].termIDまでがThTermよりも小さい場合、Local_ThTerm[i]=2となる。以下、或るtに関する3行目~5行目の繰り返しについて説明する。
【0077】
割当部123は、tidに対してObj[i][t].termIDを設定する(3行目)。なお、Obj[i][t].termIDは{0,・・・,D-1}を取り得ることに留意されたい。次に、割当部123は、h=0,・・・,MF[tid]-1に対して5行目を繰り返し実行する。なお、MF[tid]は特徴ID「tid」の特徴量が含まれるmean特徴ベクトルの数(言い換えれば、特徴ID「tid」に対応するinverted-file arrayに含まれるタプル数)を表すことに留意されたい。以下、或るhに関する5行目の繰り返しについて説明する。
【0078】
割当部123は、k=INV[t][h].meanIDとして、Obj[i][t].FeatureとINV[t][h].Featureとの積をSim[k]に加算する(5行目)。ここで、Sim[k]は、オブジェクト特徴ベクトルxiとmean特徴ベクトルμkとの類似度(内積)が格納される変数である。なお、k=0,・・・,K-1であることに留意されたい。
【0079】
以上の2行目~5行目により、3分割構造転置ファイル表現のmean特徴ベクトル集合の領域R1に属する特徴量との内積が計算されたことになる。
【0080】
次に、割当部123は、t=Local_ThTerm[i],・・・,num_terms[i]-1に対して7行目~10行目を繰り返し実行する(6行目)。以下、或るtに関する7行目~10行目の繰り返しについて説明する。
【0081】
割当部123は、tidに対してObj[i][t].termIDを設定する(7行目)。次に、割当部123は、h=0,・・・,MF_ThVal[tid]-1に対して9行目~10行目を繰り返し実行する(8行目)。ここで、MF_ThVal[tid]は、INV[t][h].Feature<ThValを満たす最小のhのことである。例えば、MF[tid]=5であり、INV[t][0].Feature~INV[t][3].FeatureまでがThVal以上である場合、MF_ThVal[tid]=4となる。以下、或るhに関する9行目~10行目の繰り返しについて説明する。
【0082】
割当部123は、k=INV[t][h].meanIDとして、Obj[i][t].FeatureとINV[t][h].Featureとの積をSim[k]に加算する(9行目)。次に、割当部123は、k=INV[t][h].meanIDとして、Obj_Partial_L1norm[i][k]からObj[i][t].Featureを減算する(10行目)。ここで、Obj_Partial_L1norm[i][k](k=0,・・・,K-1)は部分L1ノルムと呼ぶものであり、例えば、割当ステップの開始時(又は、それよりも前であればいつでもよい。)において、k=0,・・・,K-1及びi=0,・・・,N-1に対して、Obj[i][t].Featureのt=Local_ThTerm[i]からt=num_terms[i]までの和として予め計算される。この部分L1ノルムObj_Partial_L1norm[i][k]は類似度上限を計算する際(後述する12行目)に用いられる。
【0083】
以上の6行目~10行目により、3分割構造転置ファイル表現のmean特徴ベクトル集合の領域R2に属する特徴量との内積が計算されたことになる。
【0084】
次に、割当部123は、k=0,・・・,Kに対して12行目~14行目を繰り返し実行する(11行目)。以下、或るkに関する12行目~14行目の繰り返しについて説明する。
【0085】
割当部123は、Sim[k]+ThVal×Obj_Partial_L1norm[i][k]をUpperBound[k]に設定する(12行目)。ここで、UpperBound[k]は、クラスタCkに関する類似度上限を表す。
【0086】
次に、割当部123は、UpperBound[k]<Prev_Sim[i]を満たすか否かを判定し(13行目)、UpperBound[k]<Prev_Sim[i]を満たす場合は14行目をスキップする。ここで、Prev_Sim[i]は、オブジェクト特徴ベクトルxiが現在のイテレーションで属しているクラスタのmean特徴ベクトルとの類似度を表す。この13行目は、オブジェクト特徴ベクトルxiが現在属しているクラスタのmean特徴ベクトルとの類似度よりも、クラスタkの類似度上限が小さい場合は、そのクラスタkに関する類似度の厳密計算をスキップすることを意味している。
【0087】
UpperBound[k]<Prev_Sim[i]を満たすと判定されなかった場合、割当部123は、Candidate[candMeans]にkを設定すると共にCandidateSim[candMeans]にSim[k]を設定した後、candMeansに1を加算する(14行目)。なお、candMeansの初期値は0であるものとする。これにより、類似度を厳密計算する対象のクラスタのインデックスkとそのSim[k]とがそれぞれCandidate[candMeans]とCandidateSim[candMeans]に設定される。
【0088】
次に、割当部123は、t=Local_ThTerm[i],・・・,num_terms[i]-1に対して16行目~18行目を繰り返し実行する(15行目)。以下、或るtに関する16行目~18行目の繰り返しについて説明する。
【0089】
割当部123は、s=0,・・・,candMeans-1に対して17行目~18行目を繰り返し実行する(16行目)。以下、或るsに関する17行目~18行目の繰り返しについて説明する。
【0090】
割当部123は、kにCandidate[s]を設定する(17行目)。次に、割当部123は、INV[t][h].meanID=kを満たすhを用いて、Obj[i][t].Feature×INV[t][h].FeatureをCandidateSim[s]に加算する(18行目)。
【0091】
そして、割当部123は、CandidateSim[s](s=0,・・・,candMeans-1)が最大となるCandidate[s]に対応するクラスタにオブジェクト特徴ベクトルxiを割り当てる(19行目)。なお、オブジェクト特徴ベクトルxiの割当は、オブジェクトの割当と同一視できる。
【0092】
以上により、割当ステップにてオブジェクトがクラスタに割り当てられる。このとき、実施例1では、12行目~18行目で現在属しているクラスタのmean特徴ベクトルとの類似度が、類似度上限によりも大きいクラスタに関しては、類似度の厳密計算をスキップしている。これにより、特に時間計算量が大きい領域R3における乗算回数を削減することが可能となり、時間計算量を削減させることが可能となる。
【0093】
なお、12行目の「ThVal×Obj_Partial_L1norm[i][k]」は、Cauchy-Schwarzの不等式に置換可能である。例えば、INV[t][h].meanID=kを満たすhを用いて、t≧ThTermのtに関するINV[t][h].FeatureのL2ノルムを計算したものをMean_Partial_L2norm[k]とする。また、例えば、k=0,・・・,K-1及びi=0,・・・,N-1に対して、Obj[i][t].Featureのt=Local_ThTerm[i]からt=num_terms[i]までの2乗和を予め計算しておき、この2乗和から10行目の各Obj[i][t].Featureの2乗を減算し、最後に平方根を取ったものをObj_Partial_L2norm[i][k]とする。このとき、Cauchy-Schwarzの不等式により、内積の上限値はMean_Partial_L2norm[k]+Obj_Partial_L2norm[i][k]となるため、この内積の上限値とSim[k]との和をUpperBound[k]としてもよい。
【0094】
<閾値ThTermの計算方法と閾値ThValの最適化方法>
以下、閾値ThTermの計算方法と閾値ThValの最適化方法について説明する。
【0095】
・閾値ThTermの計算方法
前処理部110は、クラスタリング処理が実行される前の前処理にて以下の手順11~手順12により閾値ThTermを計算する。
【0096】
手順11:
図1に示すように、文書に含まれる単語に関するdfとそのdfを持つ単語数の間にはべき乗則がほぼ成り立つ。つまり、xをdf、f(x)を単語数として或る係数a,bによりf(x)=ax
-bと表せる。そこで、このf(x)=ax
-bという関係に対して外挿を行って、単語数が1となるdf(つまり、f(x)=1となるx)を求める。
【0097】
手順12:上記の手順11により求めたxに対応する特徴ID(単語ID)をThTermとする。
【0098】
・閾値ThValの最適化方法
更新部124は、イテレーション数が2以上のイテレーション(イテレーション数が2のイテレーションであることが好ましい。)における更新ステップにて以下の手順21~手順22により閾値ThValを最適化する。
【0099】
手順21:ThValを変数とした近似乗算回数を求める。なお、近似乗算回数の計算方法については後述する。
【0100】
手順22:上記の手順21により求めた近似乗算回数が最小となる閾値をThValとする。このThValが最適化されたThValである。
【0101】
・近似乗算回数の計算方法
以下、近似乗算回数の計算方法について説明する。
【0102】
或るオブジェクト特徴ベクトルxiとmean特徴ベクトルとの類似度分布をp(x)とする。ただし、xは連続値緩和である。また、当該オブジェクト特徴ベクトルxiと各mean特徴ベクトルμjとの類似度の平均値をμ(i)、当該オブジェクト特徴ベクトルxiが現在所属しているクラスタのmean特徴ベクトルとの類似度をs(i)とする。なお、mean特徴ベクトルと、或るオブジェクト特徴ベクトルと各mean特徴ベクトルとの類似度の平均値とでいずれも記号「μ」を使用しているが、以下では、下付き文字が付与された「μ」がmean特徴ベクトルを表し、下付き文字が付与されていない「μ」が上記の類似度の平均値を表していることに留意されたい。後述する「μ'」も同様であり、類似度の平均値を表している。
【0103】
また、類似度上限値分布をp'(x)とする。更に、uをThTerm、vをThValとして、当該オブジェクト特徴ベクトルxiと各mean特徴ベクトルとの類似度上限値の平均値をμ'(n)=μ(i;u,v)とする。
【0104】
このとき、以下の3つを仮定する。
【0105】
仮定1:類似度分布関数を次式で表現する。
【0106】
p(x|x≧μ(i))=a・e-b(x-μ(i))
ここで、
【0107】
【数2】
である。ただし、Tは特徴IDの集合である。α(i,t)は、オブジェクト特徴ベクトルx
iに含まれる特徴量のうち、特徴ID「t」の特徴量(つまり、Obj[i][t].Feature)である。また、β(k,t)は、mean特徴ベクトルμ
kの特徴量のうち、特徴IDが「t」の特徴量(つまり、k=INV[t][h].meanIDとなるhに関するINV[t][h].Feature)である。
【0108】
仮定2:分布関数の中央値と平均値がほぼ一致する。すなわち、
【0109】
【0110】
仮定3:類似度上限値分布p'(x)は類似度分布p(x)の平行移動である。すなわち、p'(x-Δμ)=p(x)、Δμ=μ(i;u,v)-μ(i)=μ'-μと表すことができる。
【0111】
以上の仮定の下、以下の手順31~手順33により近似乗算回数c(u,v)を求める。
【0112】
手順31:上記の仮定1~仮定3を用いて分布関数を求める。すなわち、
【0113】
【0114】
【数5】
と類似度分布の分布関数p(x|x≧μ(i))が求まる。
【0115】
手順32;類似度上限値がs(i)以上となる確率(つまり、類似度の厳密計算をスキップできない確率)を求める。これは以下により求めることができる。
【0116】
【数6】
ここで、s(i,k;u,v)はオブジェクト特徴ベクトルx
iとmean特徴ベクトルμ
kとの間の部分類似度であり、
図11に示すアルゴリズムの12行目におけるSim[k]に該当する。また、q(i,k;u,v)はオブジェクト特徴ベクトルx
iとの部分L1ノルムであり、
図11に示すアルゴリズムの12行目におけるObj_Partial_L1norm[i][k]に該当する。
【0117】
手順33:以下の式(2)及び(3)の和を近似乗算回数c(u,v)とする。
【0118】
【数7】
ここで、T(u)はu=ThTerm以上の特徴IDの集合である。また、df(t)は特徴ID(単語ID)がtの単語に関するdfである。mf(t)は特徴ID(単語ID)がtの単語に関するmfである。mf(t;v)は特徴ID(単語ID)がtの単語に関して、特徴量がv=ThVal以上のmfである。
【0119】
【0120】
【0121】
すなわち、以下を近似乗算回数c(u,v)とする。
【0122】
【数10】
ここで、上記の第1項及び第2項はv=ThValが与えられたときに或るイテレーション時に計算可能である。第3項に関しては、その指数部分のμ(i)及びμ(i;u,v)を以下により計算できる。
【0123】
【数11】
ただし、上述したように、α(i,t)は、オブジェクト特徴ベクトルx
iに含まれる特徴量のうち、特徴ID「t」の特徴量(Obj[i][t].Feature)であり、β(k,t)は、mean特徴ベクトルμ
kの特徴量のうち、特徴IDが「t」の特徴量(k=INV[t][h].meanIDとなるhに関するINV[t][h].Feature)である。
【0124】
以上により近似乗算回数c(u,v)を計算することができる。ここで、一例として、
図3に示す例と同じPubMedを用いて上記の近似乗算回数c(u,v)を評価した結果を
図12に示す。
図12において、Actualが実際の乗算回数、Approximateが近似乗算回数c(u,v)を表している。
図12に示すように、近似乗算回数c(u,v)は実際の乗算回数を精度良く近似できていることがわかる。
【0125】
<実施例1の実験結果>
以下、実施例1におけるクラスタリング装置10を評価するために行った実験結果について説明する。本実験では、クラスタリング装置10を一般的なPCで実現した上で、文書としては
図3に示す例と同じPubMedを用いて、既存手法と比較した。
【0126】
1イテレーションあたりの類似度計算における乗算回数を
図13に示す。
図13において、Proposedが実施例1におけるクラスタリング装置10であり、naive IVF及びSIVFは既存手法である。
図13に示すように、実施例1におけるクラスタリング装置10は、既存手法によりも乗算回数が低減できていることがわかる。特に、naive IVFと比較した場合、乗算回数がおよそ1/34に低減できていることがわかる。
【0127】
次に、1イテレーションあたりの平均経過時間を
図14に示す。
図14に示すように、実施例1におけるクラスタリング装置10は、既存手法によりも平均経過時間が削減できていることがわかる。特に、Ding法と比較した場合、平均経過時間がおよそ1/28に低減できていることがわかる。
【0128】
次に、メモリ使用量を
図15に示す。
図15に示すように、実施例1におけるクラスタリング装置10は、Ding法と比較した場合、メモリ使用量がおよそ1/7に低減できていることがわかる。
【0129】
以上のように、実施例1におけるクラスタリング装置10によれば、k-means法における類似度計算の乗算回数を低減することが可能となり、その結果、1イテレーションあたりの平均経過時間を削減することができる。また、メモリ使用量も、Ding法と比較して削減することができる。
【0130】
[実施例2]
以下、実施例2について説明する。なお、実施例2では、実施例1と同様の構成要素についてはその説明を省略する。
【0131】
<提案手法>
実施例2では、3分割構造転置ファイル表現のmean特徴ベクトル集合に対してICP(invariant centroid-pair skipping filter)を導入する。ICPとは、或るオブジェクト特徴ベクトルxiに関して、Cj及びCj´が不変クラスタであり、(xi∈Cj)∧(Cj≠Cj´)であるならば、オブジェクト特徴ベクトルxiと、mean特徴ベクトルμj´との類似度計算は不要であるというものである。これは、或るオブジェクト特徴ベクトルxiが属するクラスタCjが不変クラスタである場合、現在のイテレーションで、当該オブジェクト特徴ベクトルxiが他の不変クラスタCj´(j´≠j)に新たに属することはないためである。なお、不変クラスタとは、1つ前のイテレーションでクラスタに属するメンバ(オブジェクト特徴ベクトルxi)に変更がなかったクラスタCjのことである。
【0132】
そこで、実施例2における3分割構造転置ファイルでは、各領域においてinverted-file arrayを前半部分と後半部分に分けて、前半部分には不変クラスタでないmean特徴ベクトルのタプルを格納し、後半部分には不変クラスタのmean特徴ベクトルのタプルを格納する。このように構成された3分割構造転置ファイルのmean特徴ベクトルを
図16に示す。
図16に示すように、領域R1では、inverted-file arrayの前半部分に不変クラスタでないmean特徴ベクトルのタプルが格納され、後半部分に不変クラスタのmean特徴ベクトルのタプルが格納される。一方で、領域R2及びR3では、inverted-file arrayの領域R2に属する部分と領域R3に属する部分とをそれぞれ前半部分と後半部分に分ける。すなわち、inverted-file arrayの領域R2に属する部分は、不変クラスタでなく、かつ、特徴量がThVal以上のmean特徴ベクトルのタプルが前半に、不変クラスタであり、かつ、特徴量がThVal以上のmean特徴ベクトルのタプルが後半に格納される。同様に、inverted-file arrayの領域R3に属する部分は、不変クラスタでなく、かつ、特徴量がThVal未満のmean特徴ベクトルのタプルが前半に、不変クラスタであり、かつ、特徴量がThVal未満のmean特徴ベクトルのタプルが後半に格納される。ただし、領域R3に属する部分は実施例1と同様の構成としてもよい。
【0133】
なお、クラスタCjが不変クラスタであるか否かは、参考文献1と同様にフラグf[j]により管理する。以下では、f[j]=0のときクラスタCjは不変クラスタ、f[j]=1のときクラスタCjは不変クラスタでないものとする。
【0134】
・実施例2における割当ステップのアルゴリズム
実施例2における割当ステップ(
図10のステップS103)のアルゴリズムについて、
図17を参照しながら説明する。
【0135】
割当部123は、i=0,・・・,N-1に対して2行目~20行目を繰り返し実行する(1行目)。以下、或るiに関する2行目~20行目の繰り返しについて説明する。
【0136】
割当部123は、オブジェクト特徴ベクトルxiが属するクラスタCjが不変クラスタであるか否かを判定(つまり、f[j]=0又は1のいずれであるかを判定)する(2行目)。割当部123は、f[j]=0の場合は3行目~18行目を実行し、f[j]=1の場合は20行目を実行する。
【0137】
f[j]=0の場合(3行目)、割当部123は、t=0,・・・,Local_ThTerm[i]-1に対して5行目~7行目を繰り返し実行する(4行目)。以下、或るtに関する5行目~7行目の繰り返しについて説明する。
【0138】
割当部123は、tidに対してObj[i][t].termIDを設定する(5行目)。次に、割当部123は、h=0,・・・,end0[tid]-1に対して7行目を繰り返し実行する(6行目)。ここでのend0[tid]は、特徴ID「tid」に対応するinverted-file arrayにおいて、不変クラスタのmean特徴ベクトルのタプルINV[tid][h]の中で最小のhを表す。例えば、INV[tid][0]~INV[tid][h'-1]までが不変クラスタでないmean特徴ベクトルのタプル、INV[tid][h']~INV[tid][MF[tid]-1]までが不変クラスタのmean特徴ベクトルのタプルである場合、end0[tid]=h'である。
【0139】
割当部123は、
図11の5行目と同様の処理を行う(7行目)。割当部123は、t=Local_ThTerm[i],・・・,num_terms[i]-1に対して9行目~11行目を繰り返し実行する(8行目)。以下、或るtに関する9行目~11行目の繰り返しについて説明する。
【0140】
割当部123は、tidに対してObj[i][t].termIDを設定する(9行目)。次に、割当部123は、h=0,・・・,end0[tid]-1に対して11行目を繰り返し実行する(10行目)。ここでのend0[tid]は、特徴ID「tid」に対応するinverted-file arrayのうちの領域R2の部分において、不変クラスタのmean特徴ベクトルのタプルINV[tid][h]の中で最小のhを表す。例えば、INV[tid][0]~INV[tid][h'-1]までが不変クラスタでないmean特徴ベクトルのタプル、INV[tid][h']~INV[tid][MF_ThVal[tid]-1]までが不変クラスタのmean特徴ベクトルのタプルである場合、end1[tid]=h'である。
【0141】
割当部123は、
図11の9行目~10行目と同様の処理を行う(11行目)。次に、割当部123は、
図11の11行目~14行目と同様の処理を行った後(12行目)、t=Local_ThTerm[i],・・・,num_terms[i]-1に対して14行目~17行目を繰り返し実行する(13行目)。以下、或るtに関する14行目~17行目の繰り返しについて説明する。
【0142】
割当部123は、tidに対してObj[i][t].termIDを設定する(14行目)。次に、割当部123は、s=0,・・・,candMeans-1に対して16行目~17行目を繰り返し実行する(15行目)。以下、或るsに関する16行目~17行目の繰り返しについて説明する。
【0143】
割当部123は、kにCandidate[s]を設定する(16行目)。次に、割当部123は、PartialMeanIVFMV[tid-ThTerm][k]を用いて、Obj[i][t].Feature×PartialMeanIVFMV[tid-ThTerm][k]をCandidateSim[s]に加算する(17行目)。ここで、PartialMeanIVFMVは、領域R3に属する特徴量のうち、不変クラスタでないクラスタのmean特徴ベクトルの特徴量が格納された配列である。この配列では、クラスタkのmean特徴ベクトルに含まれる、特徴ID「tid」の特徴量が、配列要素PartialMeanIVFMV[tid-ThTerm][k]に格納されている。そして、割当部123は、
図11の19行目と同様の処理を行う(18行目)。
【0144】
f[j]=1の場合(20行目)、割当部123は、
図11の2行目~19行目と同様の処理を行う(20行目)。
【0145】
以上により、割当ステップにてオブジェクトがクラスタに割り当てられる。このとき、実施例2では、オブジェクト特徴ベクトルxiが不変クラスタに属している場合に、不変クラスタのmean特徴ベクトルとの類似度計算をスキップできる。これにより、実施例1と比較して更に乗算回数を削減させることが可能となり、時間計算量を更に削減させることが可能となる。
【0146】
<実施例2の実験結果>
以下、実施例2におけるクラスタリング装置10を評価するために行った実験結果について説明する。本実験の設定は実施例1と同様とした。
【0147】
1イテレーションあたりの類似度計算における乗算回数を
図18に示す。
図18において、Proposedが実施例1におけるクラスタリング装置10、Advancedが実施例2におけるクラスタリング装置10である。
図18に示すように、実施例2におけるクラスタリング装置10は、実施例1よりも更に乗算回数が低減できていることがわかる。
【0148】
次に、1イテレーションあたりの平均経過時間を
図19に示す。
図19に示すように、実施例2におけるクラスタリング装置10は、実施例1よりも更に平均経過時間を削減できていることがわかる。
【0149】
以上のように、実施例2におけるクラスタリング装置10によれば、k-means法における類似度計算の乗算回数を更に低減することが可能となり、その結果、1イテレーションあたりの平均経過時間を更に削減することができる。
【0150】
本発明は、具体的に開示された上記の実施形態に限定されるものではなく、特許請求の範囲の記載から逸脱することなく、種々の変形や変更、既知の技術との組み合わせ等が可能である。
【0151】
[参考文献]
参考文献1:特開2019-204436号公報
【符号の説明】
【0152】
10 クラスタリング装置
101 入力装置
102 表示装置
103 外部I/F
103a 記録媒体
104 通信I/F
105 RAM
106 ROM
107 補助記憶装置
108 プロセッサ
109 バス
110 前処理部
120 クラスタリング処理部
121 入力部
122 初期設定部
123 割当部
124 更新部
125 終了判定部
126 出力部
130 記憶部