(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-06-27
(45)【発行日】2022-07-05
(54)【発明の名称】クラスタリング装置、クラスタリング方法及びクラスタリングプログラム
(51)【国際特許分類】
G06F 16/906 20190101AFI20220628BHJP
【FI】
G06F16/906
(21)【出願番号】P 2018232364
(22)【出願日】2018-12-12
【審査請求日】2020-12-01
【国等の委託研究の成果に係る記載事項】(出願人による申告)平成30年度、国立研究開発法人科学技術振興機構、戦略的創造研究推進事業、CREST、「ビッグデータ統合利活用促進のためのセキュリティ基盤技術の体系化」委託研究、産業技術力強化法第19条の適用を受ける特許出願
(73)【特許権者】
【識別番号】000208891
【氏名又は名称】KDDI株式会社
(74)【代理人】
【識別番号】100106002
【氏名又は名称】正林 真之
(74)【代理人】
【識別番号】100120891
【氏名又は名称】林 一好
(72)【発明者】
【氏名】三本 知明
(72)【発明者】
【氏名】清本 晋作
【審査官】三橋 竜太郎
(56)【参考文献】
【文献】国際公開第2015/151155(WO,A1)
【文献】特開2016-149099(JP,A)
【文献】特開2018-055610(JP,A)
【文献】ソレム ジャン・エリク,実践 コンピュータビジョン,第1版,株式会社オライリー・ジャパン ,2013年03月21日,p.131
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00-16/958
(57)【特許請求の範囲】
【請求項1】
暗号化されたデータセットのレコードを所定数のクラスタに分割する際に、各クラスタに少なくとも1つの初期レコードを割り当てる初期処理部と、
前記クラスタそれぞれについて、所属するレコード全体の重心を
暗号文上で算出する重心算出部と、
前記クラスタ毎に、前記データセットのうち、
暗号文上で算出した前記重心との距離が近いレコードから順に当該クラスタに所属させる分割処理を
、前記クラスタの数と同数に並列
化して実行する分割処理部と、を備えるクラスタリング装置。
【請求項2】
前記重心算出部は、前記クラスタ毎に、前記分割処理を複数回実行した後に当該クラスタの前記重心を算出する請求項1に記載のクラスタリング装置。
【請求項3】
前記初期処理部は、前記初期レコードをランダムに選択する請求項1又は請求項2に記載のクラスタリング装置。
【請求項4】
前記分割処理部による処理結果として、複数のクラスタに重複して所属したレコードがある場合、当該レコード毎に、最も前記重心との距離が近いクラスタのみに所属させる第1調整処理を並列に実行する第1調整部を備える請求項1から請求項3のいずれかに記載のクラスタリング装置。
【請求項5】
前記分割処理部による処理結果として、いずれのクラスタにも所属しなかったレコードがある場合、当該レコード毎に、最も前記重心との距離が近いクラスタに所属させる第2調整処理を並列に実行する第2調整部を備える請求項1から請求項4のいずれかに記載のクラスタリング装置。
【請求項6】
前記分割処理部による処理結果として、所定の大きさに満たないクラスタがある場合、当該クラスタ毎に、当該クラスタに所属しているレコードを重心間の距離が最も近いクラスタに所属させる第3調整処理を並列に実行する第3調整部を備える請求項1から請求項5のいずれかに記載のクラスタリング装置。
【請求項7】
暗号化されたデータセットのレコードを所定数のクラスタに分割する際に、各クラスタに少なくとも1つの初期レコードを割り当てる初期処理ステップと、
前記クラスタそれぞれについて、所属するレコード全体の重心を
暗号文上で算出する重心算出ステップと、
前記クラスタ毎に、前記データセットのうち、
暗号文上で算出した前記重心との距離が近いレコードから順に当該クラスタに所属させる分割処理を
、前記クラスタの数と同数に並列
化して実行する分割処理ステップと、をコンピュータが実行するクラスタリング方法。
【請求項8】
暗号化されたデータセットのレコードを所定数のクラスタに分割する際に、各クラスタに少なくとも1つの初期レコードを割り当てる初期処理ステップと、
前記クラスタそれぞれについて、所属するレコード全体の重心を
暗号文上で算出する重心算出ステップと、
前記クラスタ毎に、前記データセットのうち、
暗号文上で算出した前記重心との距離が近いレコードから順に当該クラスタに所属させる分割処理を
、前記クラスタの数と同数に並列
化して実行する分割処理ステップと、をコンピュータに実行させるためのクラスタリングプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、暗号化されたデータセットをクラスタリングする装置、方法及びプログラムに関する。
【背景技術】
【0002】
従来、データの匿名化手法として、例えば非特許文献1~3に示されるように、k-匿名化のアルゴリズムが数多く提案されてきた。これらの手法は、ユーザが持つデータセットをユーザ自身が匿名化することを想定しているため、全ての演算が平文で処理される。
【先行技術文献】
【非特許文献】
【0003】
【文献】L. Sweeney, “Achieving k-anonymity privacy protection using generalization and suppression,” in J. Uncertainty, Fuzziness, and Knowledge-Base Systems, vol. 10(5), 2002, pp. 571-588.
【文献】K. LeFevre, D. J. DeWitt, and R. Ramakrishnan, “Incognito: Efficient full-domain k-anonymity,” in Proc. of SIGMOD 2005, 2005, pp. 49-60.
【文献】K. LeFevre et al., “Mondrian multidimensional k-anonymity,” in Proc. of the 22nd International Conference on Data Engineering (ICDE ’06), IEEE, 2006, pp. 25-35.
【文献】Kohlmayer F, Prasser F, Eckert C, Kuhn KA. “A flexible approach to distributed data anonymization,” J Biomed Inform 2013 Dec 12.
【発明の概要】
【発明が解決しようとする課題】
【0004】
匿名化を外部に委託する場合、又は複数機関の持つデータを併せて匿名化する場合は、データは暗号化される必要がある。例えば、非特許文献4の手法では、複数機関で匿名化を行うことを想定しているが、データ保有者がプロトコルに参加する必要がある、確定的暗号を用いる必要があり匿名性が低下する等の課題があった。
【0005】
また、前述のk-匿名化アルゴリズムは、平文上では高速に実行できるが、同じアルゴリズムをそのまま暗号化されたデータに対して適用した場合、次の問題がある。
秘密計算では、データを秘匿した状態で加法及び乗法が可能なため、理論上は任意の計算が秘匿した状態で実現可能である。しかし、Garbled Circuit、秘密分散、準同型暗号等、いずれの計算手法を用いた場合でも処理が遅く、大規模なデータに対しては現実的な時間で目的の機能を果たすことが困難であることが知られている。
【0006】
本発明は、暗号化したデータを高速にクラスタリングできるクラスタリング装置、クラスタリング方法及びクラスタリングプログラムを提供することを目的とする。
【課題を解決するための手段】
【0007】
本発明に係るクラスタリング装置は、暗号化されたデータセットのレコードを所定数のクラスタに分割する際に、各クラスタに少なくとも1つの初期レコードを割り当てる初期処理部と、前記クラスタそれぞれについて、所属するレコード全体の重心を算出する重心算出部と、前記クラスタ毎に、前記データセットのうち、前記重心との距離が近いレコードから順に当該クラスタに所属させる分割処理を並列に実行する分割処理部と、を備える。
【0008】
前記重心算出部は、前記クラスタ毎に、前記分割処理を複数回実行した後に当該クラスタの前記重心を算出してもよい。
【0009】
前記初期処理部は、前記初期レコードをランダムに選択してもよい。
【0010】
前記クラスタリング装置は、前記分割処理部による処理結果として、複数のクラスタに重複して所属したレコードがある場合、当該レコード毎に、最も前記重心との距離が近いクラスタのみに所属させる第1調整処理を並列に実行する第1調整部を備えてもよい。
【0011】
前記クラスタリング装置は、前記分割処理部による処理結果として、いずれのクラスタにも所属しなかったレコードがある場合、当該レコード毎に、最も前記重心との距離が近いクラスタに所属させる第2調整処理を並列に実行する第2調整部を備えてもよい。
【0012】
前記クラスタリング装置は、前記分割処理部による処理結果として、所定の大きさに満たないクラスタがある場合、当該クラスタ毎に、当該クラスタに所属しているレコードを重心間の距離が最も近いクラスタに所属させる第3調整処理を並列に実行する第3調整部を備えてもよい。
【0013】
本発明に係るクラスタリング方法は、暗号化されたデータセットのレコードを所定数のクラスタに分割する際に、各クラスタに少なくとも1つの初期レコードを割り当てる初期処理ステップと、前記クラスタそれぞれについて、所属するレコード全体の重心を算出する重心算出ステップと、前記クラスタ毎に、前記データセットのうち、前記重心との距離が近いレコードから順に当該クラスタに所属させる分割処理を並列に実行する分割処理ステップと、をコンピュータが実行する。
【0014】
本発明に係るクラスタリングプログラムは、暗号化されたデータセットのレコードを所定数のクラスタに分割する際に、各クラスタに少なくとも1つの初期レコードを割り当てる初期処理ステップと、前記クラスタそれぞれについて、所属するレコード全体の重心を算出する重心算出ステップと、前記クラスタ毎に、前記データセットのうち、前記重心との距離が近いレコードから順に当該クラスタに所属させる分割処理を並列に実行する分割処理ステップと、をコンピュータに実行させるためのものである。
【発明の効果】
【0015】
本発明によれば、暗号化したデータを高速にクラスタリングできる。
【図面の簡単な説明】
【0016】
【
図1】実施形態に係るクラスタリング装置の機能構成を示すブロック図である。
【
図2】実施形態に係るクラスタリング方法における分割処理のアルゴリズムを例示する図である。
【
図3】実施形態に係る第1調整処理及び第2調整処理を含むアルゴリズムを例示する図である。
【
図4】実施形態に係る第3調整処理及び匿名化の処理を含むアルゴリズムを例示する図である。
【発明を実施するための形態】
【0017】
以下、本発明の実施形態の一例について説明する。
図1は、本実施形態に係るクラスタリング装置1の機能構成を示すブロック図である。
クラスタリング装置1は、サーバ装置又はパーソナルコンピュータ等の情報処理装置(コンピュータ)であり、制御部10及び記憶部20の他、各種データの入出力デバイス及び通信デバイス等を備える。
【0018】
制御部10は、クラスタリング装置1の全体を制御する部分であり、記憶部20に記憶された各種プログラムを適宜読み出して実行することにより、本実施形態における各機能を実現する。制御部10は、CPUであってよい。
【0019】
記憶部20は、ハードウェア群をクラスタリング装置1として機能させるための各種プログラム、及び各種データ等の記憶領域であり、ROM、RAM、フラッシュメモリ又はハードディスク(HDD)等であってよい。具体的には、記憶部20は、本実施形態の各機能を制御部10に実行させるためのプログラム(クラスタリングプログラム)、及びこのプログラムが処理対象とするデータセット、各種の変数、フラグ等を記憶する。
【0020】
制御部10は、初期処理部11と、重心算出部12と、分割処理部13と、第1調整部14と、第2調整部15と、第3調整部16とを備える。制御部10は、これらの機能部により、処理対象のデータセットを暗号化されたまま複数のクラスタに分割する。
クラスタリング装置1は、データセットの各レコードをデータ点とし、分割された各クラスタに所属する点を重心等の代表点に変更することでk-匿名化を実現する。
【0021】
初期処理部11は、暗号化されたデータセットの複数のレコードを所定数のクラスタに分割する際に、各クラスタに少なくとも1つの初期レコードを割り当てる。
初期レコードの割当方法は限定されないが、本実施形態では、処理速度を優先し、初期処理部11は、初期レコードをランダムに選択する。
【0022】
重心算出部12は、クラスタそれぞれについて、所属するレコード全体の重心を算出する。
クラスタに所属するレコードは、分割処理部13による分割処理の度に増加していく。したがって、重心は分割処理の度に更新されてもよいが、本実施形態では、処理速度を優先し、重心算出部12は、クラスタ毎に、分割処理を複数回実行した後にクラスタの重心を算出して更新する。例えば、重心算出部12は、繰り返し処理中の毎回の更新を省略し、所定回数の分割処理が完了した後に1回、あるいは、所定回数の分割処理が完了するまでに数回、重心を更新してもよい。
【0023】
分割処理部13は、クラスタ毎に、データセットのうち、重心との距離が近いレコードから順にこのクラスタに所属させる分割処理を並列に所定回数実行する。実行回数は、例えば、k-匿名化におけるクラスタの最小数kに、適宜設定される調整数αを加算したk+α回であってよい。
これにより、分割処理部13は、重心からの距離が近いレコードを探索するという処理を、クラスタの数だけ並列化して実行し、処理速度を向上させる。
【0024】
第1調整部14は、分割処理部13による処理結果として、複数のクラスタに重複して所属したレコードがある場合、該当するレコード毎に、最も重心との距離が近いクラスタのみに所属させ、他のクラスタへの所属を解除する第1調整処理を並列に実行する。
【0025】
第2調整部15は、分割処理部13による処理結果として、いずれのクラスタにも所属しなかったレコードがある場合、該当するレコード毎に、最も重心との距離が近いクラスタに所属させる第2調整処理を並列に実行する。
【0026】
第3調整部16は、分割処理部13による処理結果として、所定の大きさ、すなわちk-匿名化における最小数kに満たないクラスタがある場合、該当するクラスタ毎に、このクラスタに所属しているレコードを、重心間の距離が最も近い他のクラスタに所属させる第3調整処理を並列に実行する。
【0027】
図2は、本実施形態に係るクラスタリング方法における分割処理のアルゴリズムAを例示する図である。
アルゴリズムAでは、暗号化されたデータセットE(D)、k-匿名化におけるパラメータk、及び調整パラメータαが入力される。
【0028】
まず、ri[0]を、データセットE(D)のi番目のレコードの値(データ点)とする。さらに、ri[j]を、レコードriがj番目のクラスタに所属している(=E(1))か否か(=E(0))を示すフラグとする(ステップ2)。
データセットのレコード数がn、クラスタ数がKのとき、1≦i≦n、1≦j≦Kにおいて、ri[j]はE(0)に初期化される(ステップ3)。
【0029】
また、di[j]を、ri[0]とクラスタcjの重心g(cj)との距離とする(ステップ4)。
1≦i≦n、1≦j≦Kにおいて、di[j]はE(∞)に初期化される(ステップ5)。
【0030】
次に、データセットE(D)からK=floor(n/k)個のレコードがランダムに選択される(ステップ6)。
i番目のクラスタに対してi番目のレコードが選択されたとすると、ri[i]はE(1)に、g(ci)はE(ri[0])に更新される(ステップ7)。
【0031】
ステップ9から15において、K個のクラスタ毎に、分割処理がk+α回繰り返される。この分割処理は、クラスタの数と同数に並列化され、ステップ12と13とがクラスタの単位で並列実行される。
【0032】
分割処理部13は、クラスタcjに対して、重心g(cj)との距離が最小となるレコードi’を、いずれのクラスタにも所属していないレコードの中から選択する(ステップ12)。そして、分割処理部13は、ri’[j]及びdi’[j]を更新する(ステップ13)。
【0033】
k+α回の繰り返し処理が完了すると、クラスタcjには、フラグri[j]がE(1)となっているレコードriが所属している。
重心算出部12は、全てのクラスタcjについて、重心g(cj)を更新する(ステップ17)。
【0034】
なお、繰り返しの回数は、パラメータαにより調整されるが、この回数が多くなるほど、複数のクラスタに重複して所属するレコードが増加し、回数が少なくなるほど、いずれのクラスタにも所属しないレコードが増加する。
パラメータαは、状況に応じて適宜設定されるが、正しくクラスタリングされなかったレコードについては、次の処理により調整される。
【0035】
図3は、本実施形態に係る第1調整処理及び第2調整処理を含むアルゴリズムBを例示する図である。
【0036】
ステップ23~27の第1調整処理では、複数のクラスタに所属したレコード、すなわち、ri[j]の和(1≦j≦K)がE(0)でもE(1)でもないレコードriが調整される。第1調整部14は、これらのレコードを並列に処理する。
【0037】
第1調整部14は、各レコードriについて、重心からの距離di[j]が最小のクラスタc’jを選択し(ステップ25)、フラグri[j’]をE(1)に、その他のフラグ∀ri[j≠j’]をE(0)に更新する(ステップ26)。
【0038】
ステップ29~33の第2調整処理では、いずれのクラスタにも所属しないレコード、すなわち、ri[j]の和(1≦j≦K)がE(0)のレコードriが調整される。第2調整部15は、これらのレコードを並列に処理する。
【0039】
第2調整部15は、各レコードriについて、重心からの距離が最小のクラスタc’jを選択し(ステップ31)、フラグri[j’]をE(1)に更新する(ステップ32)。
【0040】
第1調整処理及び第2調整処理が終了すると、全てのクラスタcjについて、重心g(cj)が更新される(ステップ34)。
【0041】
図4は、本実施形態に係る第3調整処理及び匿名化の処理を含むアルゴリズムCを例示する図である。
【0042】
ステップ43~47の第3調整処理では、クラスタに所属するレコードの数がkより小さい、すなわちri[j]の和(1≦i≦n)がE(k)より小さいクラスタcjが調整される。第3調整部16は、これらのクラスタを並列に処理する。
【0043】
第3調整部16は、調整対象のクラスタcjについて、重心間の距離が最小の他のクラスタc’hを選択し(ステップ45)、クラスタcjの全レコードをクラスタc’hに所属させるため、フラグri[h’]をE(1)に、フラグri[j]をE(0)に更新する(ステップ46)。
【0044】
続いて、制御部10は、k-匿名化のため、全レコードの値ri[0]を、所属するクラスタcjの重心g(cj)に更新する(ステップ48~50)。
そして、制御部10は、ri[0]の集合を、クラスタリングされたデータセットE(D’)として出力する(ステップ51)。
【0045】
本実施形態によれば、クラスタリング装置1は、暗号化されたデータセットのレコードをクラスタに分割する際に、はじめから分割するクラスタの数を決定し、各クラスタに少なくとも1つの初期レコードを割り当てた後、クラスタ毎に、重心との距離が近いレコードから順にこのクラスタに所属させる分割処理を並列に実行する。
【0046】
従来のクラスタリング手法では、全てのレコードに対してどのクラスタに属するかの判定(Argmin)処理が必要となる。例えば、各レコードとクラスタとの距離を計算した上で所属するクラスタを決定し、クラスタの更新を行うという処理が全てのレコードに対して行われるが、このアルゴリズムは並列処理が困難であり、少なくともレコードの数だけArgmin又はArgmaxの処理が必要であった。
一方、クラスタリング装置1は、各クラスタからレコードまでの距離を計算し、その後クラスタの重心を更新するため、クラスタの数と同数の並列化処理が可能となる。したがって、重心との距離が近いレコードを探索するという重い処理を並列化することで、暗号文上でもデータセットのクラスタリング(例えば、k-匿名化)を高速に実行できる。
【0047】
クラスタリング装置1は、クラスタの重心を再計算する頻度を、クラスタが更新される頻度よりも減らすことで、処理を高速化できる。なお、再計算の頻度は、クラスタリングの精度とのトレードオフにより、適宜設定されてよい。
また、クラスタリング装置1は、各クラスタの初期レコードをランダムに選択することで、処理を高速化できる。
【0048】
クラスタリング装置1は、分割処理の結果、複数のクラスタに重複して所属したレコードがある場合、これらのレコード毎に、最も重心との距離が近いクラスタのみに所属させる第1調整処理を並列に実行する。
また、クラスタリング装置1は、分割処理の結果、いずれのクラスタにも所属しなかったレコードがある場合、これらのレコード毎に、最も重心との距離が近いクラスタに所属させる第2調整処理を並列に実行する。
さらに、クラスタリング装置1は、分割処理の結果、所定の大きさに満たないクラスタがある場合、これらのクラスタ毎に、所属しているレコードを重心間の距離が最も近い他のクラスタに所属させる第3調整処理を並列に実行する。
したがって、クラスタリング装置1は、分割処理によりクラスタリングが十分にできなかった部分を調整でき、さらに、これらの各種調整処理を並列化することで高速に実行できる。
【0049】
以上、本発明の実施形態について説明したが、本発明は前述した実施形態に限るものではない。また、前述した実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、実施形態に記載されたものに限定されるものではない。
【0050】
クラスタリング装置1によるクラスタリング方法は、ソフトウェアにより実現される。ソフトウェアによって実現される場合には、このソフトウェアを構成するプログラムが、情報処理装置(コンピュータ)にインストールされる。また、これらのプログラムは、CD-ROMのようなリムーバブルメディアに記録されてユーザに配布されてもよいし、ネットワークを介してユーザのコンピュータにダウンロードされることにより配布されてもよい。さらに、これらのプログラムは、ダウンロードされることなくネットワークを介したWebサービスとしてユーザのコンピュータに提供されてもよい。
【符号の説明】
【0051】
1 クラスタリング装置
10 制御部
11 初期処理部
12 重心算出部
13 分割処理部
14 第1調整部
15 第2調整部
16 第3調整部
20 記憶部