(57)【要約】【課題】個人情報の匿名化を適切に行いながら、匿名化による情報損失を極力抑えたクラスタリングを可能にする。【解決手段】データベースに蓄積された個人情報を含むデータを取得し、その取得したデータに含まれる個人を識別できる属性を削除すると共に、データのフォーマット調整を行う。そして、フォーマット調整が行われたデータを、複数のクラスタに分割するクラスタリング処理を行う。このとき、それぞれのクラスタに含まれるデータの重心を計算して、その重心の変化を抑えながらクラスタごとのデータの数を調整し、データの数が調整された各クラスタのデータを出力する。【選択図】図１
2019021198.tif 000002
【特許請求の範囲】
【請求項１】
データベースに蓄積された個人情報を含むデータを取得し、取得したデータに含まれる個人を識別できる属性を削除すると共に、データのフォーマット調整を行うレコード変換部と、
前記レコード変換部によりフォーマット調整が行われたデータを、複数のクラスタに分割するクラスタリング部と、
前記クラスタリング部で分割されたそれぞれのクラスタに含まれるデータの重心を計算して、その重心の変化を抑えながらクラスタごとのデータの数を調整するクラスタサイズ調整部と、
前記クラスタサイズ調整部でサイズが調整されたクラスタのデータを出力するクラスタリングデータ出力部と、を備える
クラスタリング装置。
【請求項２】
前記クラスタリング部は、各クラスタを決められた数のデータとするクラスタリングを行い、
前記クラスタサイズ調整部は、情報損失が大きい順にクラスタを並べ、先頭のクラスタの重心と距離が近いクラスタとの比較で、その比較した両クラスタのデータの数を調整する処理を繰り返すようにした
請求項１に記載のクラスタリング装置。
【請求項３】
前記クラスタリング部は、データを複数のクラスタから順にまとめる階層型のクラスタリングを行い、そのクラスタリングの履歴を示すデンドログラムを作成し、
前記クラスタサイズ調整部は、前記デンドログラムの履歴から作成したクラスタを情報損失が大きい順に並べ、先頭のクラスタの重心と距離が近いクラスタとの比較で、その比較した両クラスタのデータの数を調整する処理を繰り返すようにした
請求項１に記載のクラスタリング装置。
【請求項４】
データベースに蓄積された個人情報を含むデータを取得し、その取得したデータに含まれる個人を識別できる属性を削除すると共に、データのフォーマット調整を行うレコード変換処理と、
前記レコード変換処理によりフォーマット調整が行われたデータを、複数のクラスタに分割するクラスタリング処理と、
前記クラスタリング処理で分割されたそれぞれのクラスタに含まれるデータの重心を計算して、その重心の変化を抑えながらクラスタごとのデータの数を調整するクラスタサイズ調整処理と、
前記クラスタサイズ調整処理でサイズが調整されたクラスタのデータを出力するクラスタリングデータ出力処理と、を含む
クラスタリング方法。
【請求項５】
データベースに蓄積された個人情報を含むデータを複数のクラスタに分割して出力する処理を、コンピュータに実行させるプログラムにおいて、
前記コンピュータに実行させる手順として、
データベースに蓄積された個人情報を含むデータを取得し、その取得したデータに含まれる個人を識別できる属性を削除すると共に、データのフォーマット調整を行うレコード変換手順と、
前記レコード変換手順によりフォーマット調整が行われたデータを、複数のクラスタに分割するクラスタリング手順と、
前記クラスタリング手順で分割されたそれぞれのクラスタに含まれるデータの重心を計算して、その重心の変化を抑えながらクラスタごとのデータの数を調整するクラスタサイズ調整手順と、
前記クラスタサイズ調整手順でサイズが調整されたクラスタのデータを出力するクラスタリングデータ出力手順と、を含む
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、個人情報データベースに蓄積された個人情報をクラスタリングするクラスタリング装置、クラスタリング方法及びプログラムに関する。
【背景技術】
【０００２】
近年、個人情報が蓄積された個人情報データベースから、データマイニング技術を用いて解析した結果を提供するサービスが提案され、実用化されている。
例えば、通信販売サイトの購買履歴からユーザの好みを学習し、おすすめの商品を予測する機能がある。
【０００３】
このようなサービスを行う上では、個人情報の保護が重要である。すなわち、個人情報データベースに蓄積されたデータについて、個人を識別できないように匿名化したデータに加工して提供することが重要である。匿名化して個人を識別できないように加工されたデータであれば、個人の承諾を得ずにデータを活用出来るため、匿名化技術は非常に重要である。
【０００４】
従来から知られた個人情報の匿名化技術としては、例えばｋ−匿名化と称される技術がある。このｋ−匿名化の技術は、同じデータが少なくともｋ個以上存在するようにデータを変換する手法である。このｋ−匿名化の技術を適用することで、個人が特定される確率をｋ分の１以下にすることができる。
特許文献１には、ｋ−匿名化を適用して個人情報を匿名化する技術の一例が記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１６−１５１９０８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、ｋ−匿名化を適用して個人情報を匿名化する際には、「ｋ」の値を大きくすることで、同じデータが存在する数が増え、適切に匿名化が実行される。しかしながら、「ｋ」の値が大きいということは、匿名化後のデータの情報損失が大きいということであり、データの有用性が低下してしまうという問題がある。
【０００７】
また、個人情報を含むデータを匿名化して公開する際には、類似したデータを同じクラスタに分類するクラスタリングを行い、それぞれのクラスタのデータから、解析結果を得るようにしている。
このクラスタリングを行う手法としては、例えばｋ−means法と称される手法が知られている。このｋ−means法は、複数のデータをクラスタリングする際に、ｋ個のクラスタを生成させる手法である。なお、先に述べたｋ−匿名化の「ｋ」と、ｋ−means法の「ｋ」とは意味が異なる。
【０００８】
ｋ−means法では、ｋ個のクラスタにランダムにデータを割り当て、各クラスタ内の重心を求めて、その求めた重心から一番近いデータを、対応したクラスタに割り振るため、演算処理で比較的簡単にクラスタリングを行うことができるが、クラスタ数が事前に決められているため、クラスタリング状態が適切でない場合がある。したがって、従来のｋ−means法を適用したクラスタリング手法では、クラスタリング結果が不適切になってしまう可能性がある。
【０００９】
このように個人情報の匿名化技術では、個人情報データベースからデータを取り出す際のデータの匿名化を行うことと、データの有用性の確保とが相反するという問題がある。そこで、匿名化による情報損失を抑えながら、個人の特定を防ぐことができる技術の開発が望まれている。
【００１０】
本発明は、個人情報の匿名化を適切に行いながら、匿名化による情報損失を極力抑えることができるクラスタリング装置、クラスタリング方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明のクラスタリング装置は、データベースに蓄積された個人情報を含むデータを取得するデータ入力部と、データ入力部が取得したデータに含まれる個人を識別できる属性を削除すると共に、データのフォーマット調整を行うレコード変換部と、レコード変換部によりフォーマット調整が行われたデータを、複数のクラスタに分割するクラスタリング部と、クラスタリング部で分割されたそれぞれのクラスタに含まれるデータの重心を計算して、その重心の変化を抑えながらクラスタごとのデータの数を調整するクラスタサイズ調整部と、クラスタサイズ調整部でサイズが調整されたクラスタのデータを出力するクラスタリングデータ出力部と、を備える。
【００１２】
また本発明のクラスタリング方法は、データベースに蓄積された個人情報を含むデータを取得し、その取得したデータに含まれる個人を識別できる属性を削除すると共に、データのフォーマット調整を行うレコード変換処理と、レコード変換処理によりフォーマット調整が行われたデータを、複数のクラスタに分割するクラスタリング処理と、クラスタリング処理で分割されたそれぞれのクラスタに含まれるデータの重心を計算して、その重心の変化を抑えながらクラスタごとのデータの数を調整するクラスタサイズ調整処理と、クラスタサイズ調整処理でサイズが調整されたクラスタのデータを出力するクラスタリングデータ出力処理と、を含む。
【００１３】
また本発明のプログラムは、クラスタリング方法の各処理を手順としてコンピュータに実行させるものである。
【発明の効果】
【００１４】
本発明によれば、クラスタリングを行う際に、それぞれのクラスタが最適なデータ数に自動的に調整され、類似したデータのみで各クラスタが構成され、情報損失を抑えた良好なクラスタリングが可能になる。
【図面の簡単な説明】
【００１５】
【図１】本発明の一実施の形態例によるクラスタリング装置の例を示す機能ブロック図である。
【図２】本発明の一実施の形態例によるクラスタリング装置に適用されるコンピュータのハードウェアの例を示す構成図である。
【図３】本発明の一実施の形態例による処理全体の流れを示すフローチャートである。
【図４】本発明の一実施の形態例によるｋ−means法を適用したフォーマット調整アルゴリズムの例を示すフローチャートである。
【図５】本発明の一実施の形態例による階層型クラスタリングを使うためにフォーマットを整えるアルゴリズムの例を示すフローチャートである。
【図６】本発明の一実施の形態例によるｋ＝３のときのクラスタ分割例を示す説明図である。
【図７】本発明の一実施の形態例による情報損失を考慮したクラスタサイズ調整アルゴリズムの例を示すフローチャートである。
【図８】本発明の一実施の形態例によるデンドログラムの例を示す説明図である。
【図９】本発明の一実施の形態例によるデンドログラムから作成する処理の例を示すフローチャートである。
【図１０】本発明の一実施の形態例によるデンドログラム履歴から作成したクラスタを分割するアルゴリズムの例を示すフローチャートである。
【図１１】各クラスタの情報損失量の例（データの近さのみで見たクラスタ調整手法を実行した例）を示す特性図である。
【図１２】各クラスタの情報損失量の例（情報損失順を加味したクラスタ調整手法を実行した例１）を示す特性図である。
【図１３】各クラスタの情報損失量の例（情報損失順を加味したクラスタ調整手法を実行した例２）を示す特性図である。
【図１４】各クラスタの情報損失量の例（情報損失順を加味したクラスタ調整手法を実行した例３）を示す特性図である。
【発明を実施するための形態】
【００１６】
以下、本発明の一実施の形態例（以下、「本例」と称する）を、添付図面を参照して説明する。
［１．クラスタリング装置の全体構成例］
図１は、本例のクラスタリング装置の例を示す機能ブロック図である。
本例のクラスタリング装置は、個人情報データベースに蓄積された個人情報を含むデータを取得して、その取得したデータについて、個人を特定できないように匿名化を施した上で、類似したデータどうしを集めてクラスタを形成させるクラスタリングを行うものである。
【００１７】
ここでは、例えば、情報処理を行うコンピュータに、クラスタリングのための処理を実行するプログラムを実装させて、クラスタリング装置として機能させる。但し、コンピュータを使用してクラスタリング装置を構成するのは一例であり、クラスタリング装置を専用のハードウェアで構成してもよい。
【００１８】
図１に示すクラスタリング装置１０の構成について説明すると、クラスタリング装置１０は、データ入力部１１を備える。データ入力部１１は、不図示の個人情報データベースに蓄積された個人情報を含む多数のデータを取得する。
データ入力部１１が取得したデータは、レコード変換部１２に供給される。そして、このレコード変換部１２で、データのフォーマットが、クラスタリングが可能なフォーマットに調整される。レコード変換部１２でのフォーマット調整の例については後述する。
【００１９】
レコード変換部１２でフォーマットが変換されたデータは、クラスタリング部１３に供給される。クラスタリング部１３では、予め決められた手法でデータを複数のクラスタに分割するクラスタリング処理が行われる。クラスタリング部１３で分割された複数のクラスタのデータは、クラスタサイズ調整部１４により、各クラスタのデータ数が調整（クラスタサイズ調整）される。クラスタリング部１３でのクラスタリング処理と、クラスタサイズ調整部１４によるクラスタサイズの調整の例についても後述する。
【００２０】
そして、クラスタサイズ調整部１４によるクラスタサイズ調整が実施済の複数のクラスタのデータが、クラスタリング部１３からクラスタリングデータ出力部１５に供給され、クラスタリングデータ出力部１５から各クラスタのデータが出力される。
【００２１】
［２．ハードウェア構成の例］
図２は、クラスタリング装置１０を構成するコンピュータのハードウェア構成例を示す図である。
クラスタリング装置１０として機能するコンピュータＣは、バスラインＣ１０にそれぞれ接続されたＣＰＵ（Central Processing Unit：中央処理装置）Ｃ１、ＲＯＭ（Read Only Memory）Ｃ２、及びＲＡＭ（Random Access Memory）Ｃ３を備える。さらに、コンピュータＣは、不揮発性ストレージＣ４、ネットワークインターフェースＣ５、入力装置Ｃ６、及び表示装置Ｃ７を備える。
【００２２】
ＣＰＵ  Ｃ１は、クラスタリング装置１０が備える各機能を実現するソフトウェアのプログラムコードをＲＯＭ  Ｃ２から読み出して実行する。ＲＡＭ  Ｃ３には、演算処理の途中に発生した変数やパラメータ等が一時的に書き込まれる。例えば、クラスタリング装置１０は、ＣＰＵ  Ｃ１がＲＯＭ  Ｃ２に記憶されているプログラムを読み出すことで、例えば、図１に示すレコード変換部１２、クラスタリング部１３、及びクラスタサイズ調整部１４での処理を実行する。
【００２３】
不揮発性ストレージＣ４としては、例えば、ＨＤＤ（Hard disk drive）、ＳＳＤ（Solid State Drive）、フレキシブルディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリ等が用いられる。この不揮発性ストレージＣ４には、ＯＳ（Operating System）、各種のパラメータの他に、コンピュータＣをクラスタリング装置１０として機能させるためのプログラムが記録されている。
【００２４】
ネットワークインターフェースＣ５には、例えば、ＮＩＣ（Network Interface Card）等が用いられ、端子が接続されたＬＡＮ（Local Area Network）、専用線等を介して各種のデータを送受信することが可能である。
入力装置Ｃ６は、キーボードやマウスなどで構成される。表示装置Ｃ７は、液晶ディスプレイなどで構成される。
【００２５】
［３．処理全体の流れ］
図３は、本例のクラスタリング装置１０が行う処理全体の流れの概要を示すフローチャートである。
まず、クラスタリング装置１０のデータ入力部１１に入力されたデータについて、クラスタリング処理が行えるように、レコード変換部１２によってフォーマットを調整するレコード変換処理が行われる（ステップＳ１）。その後、レコード変換部１２でフォーマットが調整されたデータを、クラスタリング部１３が複数のクラスタに分類するクラスタリング処理を行う（ステップＳ２）。
【００２６】
そして、クラスタサイズ調整部１４は、クラスタリング処理で得られた各クラスタ内のデータを判断して、クラスタごとのデータの数を調整するクラスタサイズ調整処理を行う（ステップＳ３）。このステップＳ３でのクラスタサイズ調整処理が行われた各クラスタのデータが、クラスタリングデータ出力部１５から出力される。
【００２７】
［４．フォーマット調整（階層型クラスタリングを行わない例）］
図４は、レコード変換部１２で行われるフォーマット調整の例を示すフローチャートである。ここでは、個人情報を含むデータとして、次の表１に示すデータを扱う。
【００２８】
【表１】
2019021198.tif 000003
【００２９】
表１は、ＩＤ１，ＩＤ２，ＩＤ３の３人の個人情報を扱う例である。表１に示すそれぞれのデータＩＤ１，ＩＤ２，ＩＤ３には、年齢のレコードと、職業のレコードと、出身地（都道府県）のレコードが含まれる。年齢は数値であり、職業と都道府県は文字で示される。
【００３０】
図４のフローチャートにしたがって処理を説明すると、まず、表１に示す個人情報を含むデータ（表１に示す各データＩＤ１，ＩＤ２，ＩＤ３など）がデータ入力部１１に供給される（ステップＳ１１）。ここで、レコード変換部１２は、入力データがカテゴリ型か否かを判断する（ステップＳ１２）。
このステップＳ１２の判断で、入力データがカテゴリ型である場合には（ステップＳ１２のＹＥＳ）、入力データに含まれる不要な属性列を削除して、個人を識別できる属性のデータを削除する（ステップＳ１３）。その後、［属性種類×レコード行］の零行列（数値が０の行列）を作成し（ステップＳ１４）、入力データのレコードを１行ずつ読み込む（ステップＳ１５）。
【００３１】
そして、ステップＳ１５で読み込んだ入力データが、地域のデータである都道府県を示すデータか否かを判断する（ステップＳ１６）。ここで、都道府県を示すデータである場合には（ステップＳ１６のＹＥＳ）、都道府県のデータ用の処理を行う（ステップＳ１７）。都道府県のデータ用の処理の具体例については後述する。また、ステップＳ１６の判断で、都道府県を示すデータでない場合には（ステップＳ１６のＮＯ）、レコード変換部１２は、属性とデータとが一致するか否かを判断する（ステップＳ１８）。そして、属性が一致した場合には（ステップＳ１２のＹＥＳ）、一致した箇所のデータを０から１に置き換える処理を行う（ステップＳ１９）。
また、ステップＳ１２での判断で、入力データがカテゴリ型でない場合には（ステップＳ１２のＮＯ）、レコード変換部１２は、入力データの数値を正規化する（ステップＳ２０）。
【００３２】
そして、レコード変換部１２は、ステップＳ１７で都道府県のデータ用の処理を行った後と、ステップＳ１９で一致した箇所のデータを１に置き換えた後と、ステップＳ１８でＮＯと判断した後と、ステップＳ２０で数値の正規化を行った後に、データを統合する処理であるマージ処理を行う（ステップＳ２１）。その後、レコード変換部１２は、入力データに未処理の別のレコードがあるか否かを判断し（ステップＳ２２）、別のレコードがある場合には（ステップＳ２２のＮＯ）、ステップＳ１５の処理に戻る。
また、ステップＳ２２で入力データの全てのレコードを処理したと判断したとき、処理済みのデータを出力する（ステップＳ２３）。ここでの処理済みのデータは、全てのデータを数値で表したファイルのデータである。
【００３３】
［４．フォーマット調整処理］
次の表２及び表３は、表１に示すデータに対して、図４のフローチャートに示すフォーマット調整を実行した例１（表２）及び例２（表３）を示す。
【００３４】
【表２】
2019021198.tif 000004
【００３５】
【表３】
2019021198.tif 000005
【００３６】
これら表２及び表３に示すように、属性ごとに、その属性に該当するか否かを、１又は０で示すようにしている。例えば、職業を示す３つの属性の学生、会社員、ＳＥ（システムエンジニア）のデータを用意する。そして、学生に該当する者については、学生の値を「１」とし、他の属性の値を「０」とする。また、会社員に該当する者については、会社員の値を「１」とし、他の属性の値を「０」とする。さらに、ＳＥに該当する者については、ＳＥの値を「１」とし、他の属性の値を「０」とする。この値を「１」に設定する処理は、図４のフローチャートのステップＳ１９での処理に相当する。
【００３７】
出身を示す値についても、「東京」、「秋田」、「岩手」の３つの属性のデータを用意して、それぞれの属性ごとに、出身地が該当する場合に値を「１」とし、該当しない場合には値を「０」にする。
さらに、表２の例２では、それぞれの属性ごとに、出身地が該当する場合に値を「１」とし、該当しない場合には値を「０」にすることに加えて、「秋田」と「岩手」が同じ東北地方であり、東北地方が６つの県で構成されることから、東北地方のいずれかの県が出身である場合に、同じ東北地方の別の県の属性の値を、「１／６」に設定する。これらの出身の都道府県の処理は、図４のフローチャートのステップＳ１７で実行される。
【００３８】
また、年齢については、最小値の２０才と最大値の３０才を使って正規化する処理が行われ、２０才、２２才、３０才を正規化した値である「０」、「０．２」、「１」が表２及び表３に示すようにデータ化される。
この表２又は表３に示すデータが、図４のフローチャートのステップＳ２３で出力される。
【００３９】
［５．フォーマット調整（階層型クラスタリングを行う例）］
次に、レコード変換部１２で行われるフォーマット調整の別の例を説明する。ここでは、階層型クラスタリングを行うためのフォーマット調整について説明する。
まず、データの型ごとの距離を、次の（１）式により定義して、データ間の距離を求める。（１）式において、ｘは比較元データであり、ｙは比較先データである。
【００４０】
【数１】
2019021198.tif 000006
【００４１】
また、都道府県型の定義：PrefTable[xpref][ypref]は、各都道府県間の距離（例えば国土地理院が発表した都道府県庁間の距離）を示す、次の表４から得る。
【００４２】
【表４】
2019021198.tif 000007
【００４３】
図５のフローチャートは、階層型クラスタリングを行うためのフォーマット調整の例を示している。
まず、個人情報を含むデータがデータ入力部１１に供給される（ステップＳ３１）。ここで、レコード変換部１２は、入力データから２行分のレコードを読み込み（ステップＳ３２）、レコードの属性を比較する（ステップＳ３３）。ここで、レコードの属性がカテゴリ型である場合には、レコード変換部１２は、カテゴリ型の距離計算を行う（ステップＳ３４）。カテゴリ型の距離計算は、レコードの属性に応じて０又は１とする距離計算である。また、ステップＳ３３での比較で、レコードの属性が数値型（年齢）である場合には、レコード変換部１２は、数値型の距離計算を行う（ステップＳ３５）。ここでの数値型の距離計算は、正規化した距離計算である。さらに、ステップＳ３３での比較で、レコードの属性が都道府県型である場合には、レコード変換部１２は、都道府県型の距離計算を行う（ステップＳ３４）。この都道府県型の距離計算は、表４に示す各都道府県間の実際の距離を計算する処理である。
【００４４】
そして、ステップＳ３４，Ｓ３５，Ｓ３６の距離計算を行った後、レコード変換部１２は、レコードの属性の距離計算の和を距離行列に配列する（ステップＳ３７）。その後、レコード変換部１２は、入力データの最終行か否かを判断する（ステップＳ３８）。ここで、入力データの最終行でない場合には（ステップＳ３８のＮＯ）、ステップＳ３２のレコードの読み込み処理に戻る。
また、ステップＳ３８で入力データの最終行と判断したとき（ステップＳ３８のＹＥＳ）、処理済みのデータを、クラスタ内に属するデータ情報のファイルとして出力する（ステップＳ３９）。
【００４５】
ここで、ステップＳ３４，Ｓ３５，Ｓ３６の距離計算を行う例について説明する。比較を行う２つのレコードの例を以下に示す。
レコード１：［男，奈良県，５５才，未婚，自営業］
レコード２：［男，宮城県，５２才，既婚，会社員］
このとき、性別は同じなので、距離０とする。また、都道府県は、奈良県と宮城県とが、２００ｋｍ以上の距離なので、距離１とする。年齢は、２つのレコードの差が３才であり、値３を１０で割って、距離０．３とする。婚姻は、未婚と既婚で相違するので、距離１とする。職業も相違するので、距離１とする。
そして、ステップＳ３７での和を求める処理として、これらの距離を合計した３．３を得る。この距離３．３が、レコード１とレコード２とのレコード間距離になる。
このような距離を求める処理を、全てのレコードに対して行う。
【００４６】
このようなレコード間距離を、先に示した［表１］のＩＤ１，ＩＤ２，ＩＤ３のデータに対して求めた結果の例を、［表５］に示す。
【００４７】
【表５】
2019021198.tif 000008
【００４８】
［５．クラスタリング処理］
次に、クラスタリング部１３で実行されるクラスタリング処理について説明する。
クラスタリング部１３が実行するクラスタリング処理としては、ｋ−means法と、階層型クラスタリング法とがある。
ｋ−means法は、ｋ個のクラスタにランダムでデータを割り当て、各クラスタ内の重心を求めてその重心から一番近いデータをクラスタに割り振る手法である。
【００４９】
そして、クラスタ重心の計算とデータの割り振りを、全てのクラスタ重心が変動しなくなるまで繰り返す。このｋ−means法では、処理を繰り返して最適解を見つけるため、クラスタリングの精度が高いメリットを有するが、処理を繰り返す必要があり、事前に最適値を知ることは困難である。ここで、本例ではクラスタサイズ調整部１４で、クラスタサイズが、ｋ−匿名化の「ｋ」（ここでの「ｋ」はデータ数を示し、ｋ−means法での「ｋ」とは意味が違う）を満たしていないクラスタ内のサイズを調整する。本例で行われるクラスタのサイズ調整の詳細は後述する。
【００５０】
次に、階層型クラスタリング法について説明する。
図６は、階層型クラスタリング法によるクラスタリングの概要を示す図である。
階層型クラスタリングは、距離が近いデータ同士でまとめて行き、最終的には、全てのデータが１つのクラスタになる手法である。すなわち、図６に示すように１４個のデータが存在するとき（１〜１４の値は各データのＩＤ）、近いデータ同士で１つのクラスタを作り、そのクラスタ内のデータに近い別のデータを同じクラスタにまとめる処理を繰り返して、１つのクラスタにまとめる。
【００５１】
このような階層型クラスタリング法は、クラスタが作成される途中の履歴が表され、クラスタ数を予め指定する必要がなく、任意のクラスタ数にできる。但し、階層型クラスタリング法では、２つのデータずつでクラスタが作成されて行くため、１つ１つのデータを見て分けることができない。
なお、データ間の距離を測る手法には、例えばウォード法、群平均法、最短距離法などがある。
【００５２】
［６．クラスタサイズ調整］
次に、クラスタリング部１３でクラスタリング処理が行われたデータに対して、クラスタサイズ調整部１４がクラスタサイズ（つまりクラスタ内のデータ数）の調整を行う処理について説明する。
【００５３】
図７のフローチャートは、情報損失を考慮したクラスタサイズの調整アルゴリズムの処理手順を示す。
まず、クラスタサイズ調整部１４は、クラスタＩＤと、そのクラスタＩＤに属するレコード番号（レコードＮｏ．）が記載されたファイル１と、各レコードのデータを数値で表したファイル２とを入力データとして取得する（ステップＳ４１）。ファイル２は、例えば各データの数値をカンマで区切った形式のファイルであるＣＳＶファイルとして取得する。
クラスタサイズ調整部１４は、入力データのクラスタを、情報損失が大きい順に並べる（ステップＳ４２）。そして、クラスタサイズ調整部１４は、レコード数がｋ個未満のレコードのＩＤをリストＡとして保存する（ステップＳ４３）。
【００５４】
次に、クラスタサイズ調整部１４は、リストＡの先頭のクラスタの重心と重心距離が一番近く、かつ情報損失量が大きいクラスタが存在するか否かを判断する（ステップＳ４４）。ここで、該当するクラスタが存在する場合には（ステップＳ４４のＹＥＳ）、クラスタサイズ調整部１４は、そのクラスタのデータを取得する（ステップＳ４５）。また、該当するクラスタが存在しない場合には（ステップＳ４４のＮＯ）、比較元クラスタの重心と、一番重心位置が近いクラスタを取得する（ステップＳ４６）。
【００５５】
その後、クラスタサイズ調整部１４は、取得したクラスタのサイズがｋ以上か否かを判断する（ステップＳ４７）。ここで、クラスタのサイズがｋ以上である場合には（ステップＳ４７のＹＥＳ）、クラスタサイズ調整部１４は、比較元クラスタの重心とデータ値が最も近いデータを取り出して追加し、比較先クラスタから該当するデータを削除する（ステップＳ４８）。また、クラスタのサイズがｋ以上でない場合には（ステップＳ４７のＮＯ）、クラスタサイズ調整部１４は、比較元クラスタと比較先クラスタを統合し、比較先クラスタを削除する（ステップＳ４９）。
【００５６】
そして、ステップＳ４８及びＳ４９の処理の後、クラスタサイズ調整部１４は、クラスタ内の重心値と情報損失値を、新たなクラスタ内のデータに基づいて更新する（ステップＳ５０）。さらに、クラスタサイズ調整部１４は、比較元のクラスタのサイズがｋ以上か否かを判断する（ステップＳ５１）。ここで、比較元のクラスタのサイズがｋ以上でない場合には（ステップＳ５１のＮＯ）、ステップＳ４３の処理に戻る。また、比較元のクラスタのサイズがｋ以上である場合（ステップＳ５１のＹＥＳ）、クラスタサイズ調整部１４は、情報損失順にクラスタを並べ、比較元のクラスタをリストＡから削除する（ステップＳ５２）。
【００５７】
その後、クラスタサイズ調整部１４は、リストＡの構成要素が０であるか否かを判断し（ステップＳ５３）、構成要素が０でない場合には（ステップＳ５３のＮＯ）、ステップＳ４３の処理に戻る。また、構成要素が０の場合（ステップＳ５３のＹＥＳ）、クラスタサイズ調整部１４は、クラスタＩＤと、各クラスタに属するレコード番号（レコードＮｏ．）を示すファイルを出力する（ステップＳ５４）。ここでは、例えばクラスタＩＤごとファイルの行を設定し、その行にレコードＮｏ．を記載したファイルを出力する。
クラスタリング部１３は、このクラスタサイズ調整部１４が出力するファイルを取得し、クラスタリングデータ出力部１５がクラスタサイズ調整後のデータを出力する。
【００５８】
次に、クラスタリング部１３が階層型クラスタリング実行した場合に、クラスタサイズ調整部１４で行われるクラスタサイズ調整処理について説明する。
ここでは、クラスタサイズ調整部１４が、図８に示す階層型クラスタリングが行われたデータのクラスタサイズ調整を行う場合について説明する。
図８に示す例では、データ７，２，６，４，１，３，５が存在し、順に図８示すようにクラスタのサイズが大きくなる階層型のクラスタリングが行われる。
【００５９】
例えば、最初の段階では、データ２とデータ６とを１つのクラスタ（クラスタＩＤ：１）とし、データ３とデータ５とを１つのクラスタ（クラスタＩＤ：２）とする。次に、クラスタＩＤ：２のクラスタに、データ１をまとめて、新たなクラスタ（クラスタＩＤ：３）とする。
さらに、クラスタＩＤ：１のクラスタに、データ７をまとめて、新たなクラスタ（クラスタＩＤ：４）とし、クラスタＩＤ：３のクラスタに、データ４をまとめて、新たなクラスタ（クラスタＩＤ：５）とする。そして、最後にクラスタＩＤ：４のクラスタとクラスタＩＤ：５のクラスタとを１つのクラスタ（クラスタＩＤ：６）にまとめる。
このようなクラスタの形成履歴を［表６］に示す。［表６］において、数値の前に−（マイナス）が付与されたものはデータの値を示し、マイナスがない数値はクラスタＩＤを示す。
【００６０】
【表６】
2019021198.tif 000009
【００６１】
図８はこの［表６］の履歴（デンドログラム履歴）を図示したものである。
次に、図９のフローチャートを参照して、デンドログラム履歴からクラスタを作成する処理について説明する。
まず、クラスタリング部１３は、［表６］に示すようなデンドログラム履歴を取得する（ステップＳ６１）。そして、クラスタリング部１３は、入力したものが、データかクラスタかを判断する（ステップＳ６２）。ここで、入力した値がいずれもデータである場合（例えば［表６］の１行目の−２，−６の場合）には、データを合併して新しいクラスタを作成する（ステップＳ６３）。また、入力した値の一方がクラスタ、他方がデータである場合（例えば［表６］の３行目の−１，２の場合）には、クラスタとデータを合併して新しいクラスタを作成する（ステップＳ６４）。
【００６２】
さらに、入力した値がいずれもクラスタである場合（例えば［表６］の６行目の４，５の場合）には、いずれのクラスタも、サイズがｋ未満か否かを判断する（ステップＳ６５）。
ここで、いずれもクラスタもサイズがｋ未満である場合には（ステップＳ６５のＹＥＳ）、２つのクラスタを合併して新しいクラスタを作成する（ステップＳ６６）。また、サイズがｋ未満でないクラスタがある場合には（ステップＳ６５のＮＯ）、サイズが小さい方の新しいクラスタを作成する（ステップＳ６７）。
【００６３】
そして、ステップＳ６３，Ｓ６４，Ｓ６６，Ｓ６７で新しいクラスタを作成した後、クラスタリング部１３は、ここでの処理がデンドログラム履歴の最終行の処理であるか否かを判断する（ステップＳ６８）。ここで、最終行でない場合には（ステップＳ６８のＮＯ）、クラスタリング部１３は、ステップＳ６１のデンドログラム履歴の取得処理に戻る。また、最終行である場合には（ステップＳ６８のＹＥＳ）、クラスタリング部１３は、各クラスタ内に属するデータについての情報を示すファイルを出力する（ステップＳ６９）。
【００６４】
図１０のフローチャートは、クラスタサイズ調整部１４が、デンドログラム履歴から作成したクラスタを分割するクラスタサイズ調整を行う例を示す。
まず、クラスタサイズ調整部１４は、デンドログラム履歴から作成したクラスタのデータ（図９のフローチャートのステップＳ６９の出力データ）を取得する（ステップＳ７１）。そして、クラスタサイズ調整部１４は、取得した全クラスタを情報損失量順に並び替え（ソート）し（ステップＳ７２）、並び替えた全クラスをリストＡに入れる（ステップＳ７３）。
【００６５】
次に、クラスタサイズ調整部１４は、リストＡから１行ずつクラスタを読み込む（ステップＳ７４）。ここで、クラスタサイズ調整部１４は、読み込んだクラスタの情報損失量が上位１０％で、且つクラスタサイズが２・ｋ以上か否かを判断する（ステップＳ７５）。この判断で、クラスタの情報損失量が上位１０％で、且つクラスタサイズが２・ｋ以上である場合には（ステップＳ７５のＹＥＳ）、該当するクラスタのデータをリストＢに挿入すると共に、リストＡから削除する（ステップＳ７６）。
【００６６】
そして、ステップＳ７５でクラスタの情報損失量が上位１０％で、且つクラスタサイズが２・ｋ以上でない場合（ステップＳ７５のＮＯ）、及び、ステップＳ７６の処理後には、ステップＳ７４で読み込んだクラスタがデンドログラム履歴の最終行か否かを判断する（ステップＳ７７）。ここで、最終行でない場合には（ステップＳ７７のＮＯ）、クラスタサイズ調整部１４は、ステップＳ７４の処理に戻る。また、最終行である場合には（ステップＳ７７のＹＥＳ）、クラスタサイズ調整部１４は、リスト内のデータを生データとして取得する（ステップＳ７８）。
【００６７】
その後、クラスタサイズ調整部１４の取得した全てのデータの値の判断を行う（ステップＳ７９）。そして、クラスタサイズ調整部１４は、ｋ＝生データ数／ｋのｋ−means法を適用した演算でクラスタリング処理を行う（ステップＳ８０）。ここでの［ｋ］はｋ−means法での［ｋ］（クラスタ数）である。
このクラスタリング処理の後、クラスタサイズ調整部１４は、ステップＳ８０で得たクラスタとリストＡ内のクラスタとを合わせる（ステップＳ８１）。
【００６８】
さらに、クラスタサイズ調整部１４は、ステップＳ８１で得た全てのクラスタを使って、クラスタサイズ調整を行う（ステップＳ８２）。このステップＳ８２でのクラスタサイズ調整は、図７のフローチャートのステップＳ４１〜Ｓ５４で説明した処理が行われる。
そして、ステップＳ８２でのクラスタサイズ調整が行われた結果としての、クラスタ内に属するデータ情報のファイルが出力される（ステップＳ８３）。
【００６９】
以上説明したそれぞれの処理を実行することで、クラスタリング装置１０が出力するデータは、適切なクラスタリングが行われたデータになり、データの有用性を高めることができるようになる。
【００７０】
［７．実験例］
次に、本例のクラスタリング装置１０でクラスタリングを行った実験例について説明する。
まず、次の［表７］に示すような性別、所在地（都道府県）、年齢、婚姻、職業のレコードが記載された５０００名の個人情報のファイルを取得する。
【００７１】
【表７】
2019021198.tif 000010
【００７２】
ここでは、評価指標として、次の（２）式を適用して、類似データが集まった良いクラスタと、非類似データが集まった悪いクラスタの評価を行う。（２）式において、informationloss(cluster)は、情報損失値を示す。
【００７３】
【数２】
2019021198.tif 000011
【００７４】
まず、データ間距離のみから見たクラスタ調整処理の手法を用いて、ｋ＝５でフォーマット時に都道府県の地域に幅を持たせて実験した結果を、［表８］及び図１１に示す。ここでの都道府県の地域に幅を持たせて実験とは、例えば［表２］に示すように地域を考慮した値に設定することを示す。
【００７５】
【表８】
2019021198.tif 000012
【００７６】
また、データ間距離の他に情報損失順も加味したクラスタ調整処理の手法を用いて、ｋ＝５でフォーマット時に、都道府県の地域に幅を持たせて実験した結果を、［表９］及び図１２に示す。
【００７７】
【表９】
2019021198.tif 000013
【００７８】
また、データ間距離のみから見たクラスタ調整処理の手法を用いて、ｋ＝５でフォーマット時に、都道府県を１又は０として実験した結果を、［表１０］及び図１３に示す。
【００７９】
【表１０】
2019021198.tif 000014
【００８０】
さらに、データ間距離の他に情報損失順も加味したクラスタ調整処理の手法を用いて、ｋ＝５でフォーマット時に、都道府県を１又は０として実験した結果を、［表１１］及び図１４に示す。
【００８１】
【表１１】
2019021198.tif 000015
【００８２】
次に、ｋ−meansクラスタリングを用いる際の考察について述べる。
次の［表１２］は、クラスタサイズ調整前の情報損失量が少なく、クラスタサイズがｋ以上のクラスタに属しているレコードを示す例である。
【００８３】
【表１２】
2019021198.tif 000016
【００８４】
ここで、データ間距離のみで見たクラスタ調整処理の手法を用いて、［表１２］のレコードを、３つのクラスタに分割した例を、［表１３］，［表１４］，［表１５］に示す。
【００８５】
【表１３】
2019021198.tif 000017
【００８６】
【表１４】
2019021198.tif 000018
【００８７】
【表１５】
2019021198.tif 000019
【００８８】
ここでは、クラスタサイズがｋ＝５で固定されているので、超えている３件分のレコード（ＩＤ：Ａ３０１９，Ａ３３２４，Ａ４４６９）は、別のクラスタに移動している。
そして、情報損失量を考慮したクラスタ調整処理による手法を用いたときのクラスタは、次の［表１６］に示すようになる。
【００８９】
【表１６】
2019021198.tif 000020
【００９０】
これらの表からわかるように、データ間距離のみで見たクラスタ調整処理を用いたときには、クラスタ内の情報損失量が少なくても、サイズがｋを超えていれば、超えている数だけ、他のクラスタに情報が移動してしまう問題があった。これに対して、情報損失量を考慮したクラスタ調整処理では、情報損失が少ないクラスタからのレコードの移動が生じない。その結果、サイズがｋを超えたクラスタ内のデータが他のクラスタに移動することがなくなった。
【００９１】
次に、都道府県間の距離を１又は０のみで表した場合と、その都道府県が属する地域の情報を持たせた場合との相違について説明する。
以下の例では、情報損失順も加味したクラスタ調整処理の手法を用いており、フォーマット作成時の都道府県間の距離で同じ地域にも数値を加えている場合のクラスタである。
まず、都道府県間距離で同地域に数値を加えたフォーマット利用時のクラスタを、［表１７］に示す。
【００９２】
【表１７】
2019021198.tif 000021
【００９３】
次の［表１８］は、［表１２］と同様のクラスタ調整処理の手法を用いて、フォーマット作成時の都道府県間距離を１又は０のみで表した場合のクラスタである。
【００９４】
【表１８】
2019021198.tif 000022
【００９５】
この［表１８］において、Ａ２３１４とＡ４５１１の都道府県が京都府であることに着目する。［表１７］では、京都府と同じ地域の大阪府が同じクラスタになっているが、［表１８］では、全く異なる地域である福岡県や埼玉県が同じクラスタになっている。このように、同じ地域の情報を加味することで、遠い地域の距離はより大きくなり、同じ地域の距離はより短くなり、適切にクラスタリングができるようになる。
【００９６】
次に、階層型クラスタリングの評価例を説明する。
先に説明したデンドログラム履歴からクラスタを作成する手法を用いて、ｋ＝５でクラスタリングをした結果が、次の［表１９］に示すようになる。
【００９７】
【表１９】
2019021198.tif 000023
【００９８】
また、デンドログラム履歴からクラスタを作成後に、さらにクラスタを細かく分ける手法を用いて、ｋ＝５でクラスタリングをした結果が、次の［表２０］に示すようになる。
【００９９】
【表２０】
2019021198.tif 000024
【０１００】
次に、階層型クラスタリングを用いた際の考察について述べる。
まず、階層型クラスタリングを用いて、デンドログラムの履歴からクラスタサイズがｋを満たすようにクラスタを作成したとき、一番情報損失が大きいクラスタ内のレコードを、次の［表２１］に示す。
【０１０１】
【表２１】
2019021198.tif 000025
【０１０２】
このように、クラスタサイズが大きいものの、情報損失量が大きいクラスタは、ｋ以下のいくつかの似通った固まりでまとまっている傾向があった。
クラスタサイズが２ｋ以上で、情報損失量が上位１０％のクラスタを、ｋ−means法を実行する手法を用いて、［表２１］のクラスタ内レコードがどのように分かれたのかを以下に示す。
ここではクラスタ数は全部で６３８個あり、そのうちクラスタサイズが２ｋ以上で情報損失量が１０％のクラスタは４３個ある。これらをｋ−means法を実行して、その後に元の５９５個と合わせてクラスタサイズを、ｋ＝５を満たすように合わせる処理を実行した。
次に示す［表２２］のクラスタは、都道府県が長野県であるＡ１４３８，Ａ１６３５，Ａ２２１７，Ａ２４０５と、静岡県であるＡ２２７８のレコードが含まれている。
【０１０３】
【表２２】
2019021198.tif 000026
【０１０４】
次に示す［表２３］のクラスタは、都道府県が愛知県であるＡ３０９４，Ａ１２０１，Ａ４１５８のレコードが含まれている。
【０１０５】
【表２３】
2019021198.tif 000027
【０１０６】
次に示す［表２４］のクラスタは、都道府県が北海道であるＡ３６４４，Ａ４６０４，Ａ２８４７と秋田県であるＡ１７９９のレコードが含まれている。
【０１０７】
【表２４】
2019021198.tif 000028
【０１０８】
次に示す［表２５］のクラスタは、都道府県が秋田県であるＡ４１６４と福島県であるＡ０９８０のレコードが含まれている。
【０１０９】
【表２５】
2019021198.tif 000029
【０１１０】
次に示す［表２６］のクラスタは、都道府県が香川県であるＡ２３０７と福岡県であるＡ２２５４，Ａ４１４０のレコードが含まれている。
【０１１１】
【表２６】
2019021198.tif 000030
【０１１２】
次に示す［表２７］のクラスタは、都道府県が兵庫県であるＡ１３３３のレコードが含まれている。
【０１１３】
【表２７】
2019021198.tif 000031
【０１１４】
次に示す［表２８］のクラスタは、都道府県が広島県であるＡ３４０５のレコードが含まれている。
【０１１５】
【表２８】
2019021198.tif 000032
【０１１６】
このように、階層型ではクラスタリングの履歴からクラスタを作っていく。データまたはクラスタを２つずつ合併しながらクラスタを作成して行くため、似通ったまとまり同士でまとまっている。
ここで、クラスタサイズが大きいために情報損失量が大きくなっているクラスタをさらに分けて各クラスタの情報損失量を下げることができる。すなわち、クラスタサイズが２ｋ以上で、情報損失量が上位１０％である対象のクラスタは、クラスタサイズ調整後は、類似の属性を持つクラスタに分割されるようになる。
【０１１７】
クラスタサイズ調整後のクラスタを見ると、１つだけ全く異なるレコードやまとまりが含まれているクラスタが存在する。これは、理由として、ｋ−ｍｅａｎｓ法ではサイズがｋ未満のクラスタがｋ以上になるために調整を行うが、この際に、調整が必要なクラスタ（比較元）よりも情報損失が多いクラスタから重心が一番近いクラスタ（比較先）を発見し、その比較先クラスタから最も近いデータを取得しているためである。
しかしながら、クラスタサイズの調整を繰り返して行くことで、情報損失が近く、かつ重心が近いクラスタは減ってくる。これは、クラスタ重心間距離が一番近いクラスが、実はあまり似ていない可能性がある。
【０１１８】
本例の場合には、いずれも例でも情報損失量を従来の手法よりも減らすことができた。これは、従来の場合にはクラスタサイズが固定されており、またクラスタサイズ再調整時にサイズがｋを超えていたら、調整対象のデータに一番近くても別のクラスタに入っていたのに対して、本例の場合にはクラスタサイズを固定せず、データが似ていたらサイズがｋを超えていても挿入する調整処理を行う手法や、階層型クラスタリングでクラスタ数やサイズを固定にしない調整で、情報損失量を減少させることができる。
【０１１９】
なお、ｋ−ｍｅａｎｓ法と階層型クラスタリングによる手法では、階層型クラスタリングを適用した手法の方が、情報損失が少なく、さらに階層型の中でも、クラスタリング実行後に情報損失値をクラスタサイズが大きいクラスタを、ｋ−ｍｅａｎｓ法を用いて再度クラスタを分ける手法が、最も情報損失が少ない結果が得られた。
【符号の説明】
【０１２０】
１１…データ入力部、１２…レコード変換部、１３…クラスタリング部、１４…クラスタサイズ調整部、１５…クラスタリングデータ出力部
【図１】
2019021198.tif 000033
【図２】
2019021198.tif 000034
【図３】
2019021198.tif 000035
【図４】
2019021198.tif 000036
【図５】
2019021198.tif 000037
【図６】
2019021198.tif 000038
【図７】
2019021198.tif 000039
【図８】
2019021198.tif 000040
【図９】
2019021198.tif 000041
【図１０】
2019021198.tif 000042
【図１１】
2019021198.tif 000043
【図１２】
2019021198.tif 000044
【図１３】
2019021198.tif 000045
【図１４】
2019021198.tif 000046