(57)【特許請求の範囲】
【請求項１】
各々機密属性値と数値属性値とを含む複数のデータブロックを格納するデータ格納部から、前記複数のデータブロックのうち、グループ化未了の第１のデータブロックを含み且つ機密属性値の度数分布が所定の条件を満たし且つ数値属性値が所定サイズを有する所定の領域内となるデータブロックのグループを抽出し、
前記グループに属するデータブロックの数値属性値を、前記グループについて算出された数値属性値で置換する
処理を含み、コンピュータにより実行され、
前記所定の領域が、他のグループについての所定の領域とは無関係に決定される
匿名化データ生成方法。
【請求項２】
前記グループに属するデータブロックの機密属性値を削除する
処理をさらに含む請求項１記載の匿名化データ生成方法。
【請求項３】
前記抽出する処理は、
前記グループ化未了の第１のデータブロックを含み且つ数値属性値が所定サイズを有する所定の領域内となるデータブロックの集合についての機密属性値の度数分布が、前記所定の条件を満たすか判断し、
前記データブロックの集合についての機密属性値の度数分布が前記所定の条件を満たさない場合には、前記所定の条件を満たすように前記データブロックの集合から第２のデータブロックを除外することで前記データブロックのグループを生成する
処理を含む請求項１又は２記載の匿名化データ生成方法。
【請求項４】
前記抽出する処理は、
前記データブロックのグループから、前記機密属性値の度数分布が前記所定の条件を満たす上で必須となるデータブロック以外の第３のデータブロックを抽出する処理
を含み、
データブロックの他のグループを抽出する処理において、前記第３のデータブロックが抽出される
請求項１乃至３のいずれか１つ記載の匿名化データ生成方法。
【請求項５】
前記所定の条件が、機密属性値の種類数の下限値を含み、
前記抽出する処理が、
前記第１のデータブロックを基準に機密属性値の種類数の下限値以上となるように第４のデータブロックを抽出し、
抽出された前記第４のデータブロックの数値属性値に基づき前記所定サイズを有する所定の領域を決定する
処理を含む請求項１乃至４のいずれか１つ記載の匿名化データ生成方法。
【請求項６】
いずれのグループにも属しないデータブロックが存在する場合には、所属する第５のデータブロックを包含する領域の基準位置と当該データブロックとの距離が前記所定サイズに相当する距離以下であり且つ当該データブロックを加えることで前記機密属性値の度数分布が前記所定の条件を満たしたままであれば、当該データブロックを前記第５のデータブロックのグループに分類する処理
をさらに含む請求項１乃至５のいずれか１つ記載の匿名化データ生成方法。
【請求項７】
前記置換する処理が、
前記グループに属するデータブロックの数値属性値を包含しかつ前記所定サイズを有する領域をランダムに生成し、
生成された前記領域内の位置に対応する数値属性値で、前記グループに属するデータブロックの数値属性値を置換する
処理を含む請求項１乃至６のいずれか１つ記載の匿名化データ生成方法。
【請求項８】
各々機密属性値と数値属性値とを含む複数のデータブロックを格納するデータ格納部から、前記複数のデータブロックのうち、グループ化未了の第１のデータブロックを含み且つ機密属性値の度数分布が所定の条件を満たし且つ数値属性値が所定サイズを有する所定の領域内となるデータブロックのグループを抽出し、
前記グループに属するデータブロックの数値属性値を、前記グループについて算出された数値属性値で置換する
処理を、コンピュータに実行させ、
前記所定の領域が、他のグループについての所定の領域とは無関係に決定される
匿名化データ生成プログラム。
【請求項９】
各々機密属性値と数値属性値とを含む複数のデータブロックを格納するデータ格納部から、前記複数のデータブロックのうち、グループ化未了の第１のデータブロックを含み且つ機密属性値の度数分布が所定の条件を満たし且つ数値属性値が所定サイズを有する所定の領域内となるデータブロックのグループを抽出するグループ化処理部と、
前記グループに属するデータブロックの数値属性値を、前記グループについて算出された数値属性値で置換する匿名化処理部と、
を有し、
前記所定の領域が、他のグループについての所定の領域とは無関係に決定される
情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、情報の匿名化技術に関する。
【背景技術】
【０００２】
複数の情報提供者から収集した、数値属性値を含むレコード群を、各レコードの情報提供者識別子（以下、単にＩＤと略す）を秘密にして、他者に開示又は提供したい場合がある。このとき、ＩＤを削除して開示又は提供しても、特徴ある数値属性値を有するレコードについては他者が情報提供者を推定できてしまう場合がある。
【０００３】
例えば、個人の位置データの収集者が、情報提供者が分からない形で、分析者に位置データを提供することを考える。ここで、収集者としては位置データについてのサービス提供者、分析者としてはクラウドサービス提供者又はデータ二次利用者（例えば人口密度調査会社など）などが考えられる。
【０００４】
ここで、収集者が収集した位置データが図１に示すものであるとする。図１の例では、各レコードには、行番号と、ＩＤと、Ｘ（緯度）と、Ｙ（経度）とが含まれる。ここでは、各レコードは、Ａ、Ｂ及びＣの３人のいずれかの位置データを表しており、全部で７レコードある。すなわち、同じＩＤのレコードが複数回出現する場合がある。なお、ＩＤは、個人のユーザＩＤである場合もあれば、測定機器のＩＤである場合もある。また、所属する組織のＩＤである場合もある。
【０００５】
図１に示されるデータを地図上にプロットすると、例えば図２に示すようになる。分析者は、図１及び図２のようなデータが得られれば、分析に役立てることができる。例えば、Ａ宅及びＢ宅付近に人が集まっていることが分かる。
【０００６】
しかしながら、例えば、収集者が情報提供者との間で、匿名化しない限り他者にデータを提供しないという契約を結んでいる状況が考えられる。情報提供者は、特定の時期にどこにいたかを収集者以外に知られたくないなどの理由で、匿名化を希望する場合がある。
【０００７】
一方、分析者はＩＤ等の情報提供者の情報を利用しない場合もある。位置データの提供者が誰かを知らなくても人口密度調査のような分析はできるためである。
【０００８】
このような場合、収集者は図１のデータに対して匿名化を行って、情報提供者の推定を困難にすれば良い。
【０００９】
収集者による単純な匿名化方式として、ＩＤを削除する方式がある。図１からＩＤを削除したデータを分析者が見ても、どのレコードが誰のデータなのかそのままでは分からない。しかし、位置データから情報提供者を推定可能なレコードがあるという問題がある。
【００１０】
図１からＩＤを削除したデータを図２のように地図上にプロットすると、例えば第１レコードの位置データ（Ｘ，Ｙ）＝（６，２）はＡ宅内であることが分かってしまう。すなわち、ＩＤが削除されたデータしか見ることのできない分析者であっても、第１レコードの情報提供者がＡであることが推定できてしまい、十分に匿名化されているとは言い難い。同様に、第７レコード以外は匿名化が不十分である。
【００１１】
従来技術として、事前に定められた、重なりのない複数の数値範囲をグループとして把握し、各グループ内のレコード群をそれらの統計値に変換する方法がある。
【００１２】
この従来技術では、緯度及び経度に基づいて地域をメッシングし、各メッシュ要素内のレコード群についての統計値を計算し、それを開示又は提供する。
【００１３】
統計値としては、例えば「メッシュ要素Ｍ１には３レコード」というように、メッシュ要素毎のレコード数が用いられる。もしくは、各レコードのＩＤを削除し、位置をメッシュ要素の中心点に変換しても良い。
【００１４】
例えば、図１の各レコードを一辺「５」のメッシュ要素によりグループ分けし、変換する場合を考える。その場合、例えば（Ｘ，Ｙ）＝（[5, 10), [0, 5)）などが１つのメッシュ要素、すなわちグループとなる。このメッシュ要素を仮にＭ１０と名付けると、図１では第１レコードのみがＭ１０に分類される。よって、「メッシュ要素Ｍ１０には１レコードあった」ことが開示される、あるいは第１レコードが（Ｘ，Ｙ）＝（7.5, 2.5）（Ｍ１０の中心点）に変換され開示されることになる。
【００１５】
この従来技術では、メッシュサイズが十分大きければ匿名性に問題は生じないが、メッシュサイズを小さくすると匿名性が脅かされるという問題がある。例えば、メッシュ要素Ｍ１０が、もしＡ宅の敷地内に包含された場合（例えば、Ａ宅の敷地が（Ｘ，Ｙ）＝（[2, 10], [0, 6]）の場合など）、メッシュ要素Ｍ１０に分類されたレコードの情報提供者はＡだと推定できてしまう。メッシュサイズを小さくするほど、特定のＩＤしか存在し得ないような地域にメッシュ要素が包含される可能性が高くなる。
【００１６】
一方、メッシュサイズを大きくするほど、位置の一般化度合いが大きくなり、分析者による分析の精度に大きな悪影響を与えるという問題がある。例えば、統計調査では一辺約１ｋｍのメッシュ要素が使われることがあるが、その結果だけを使う限り１ｋｍ単位より詳細な地域に関する分析結果を出すことは一般的にはできない。
【００１７】
このように、この従来技術は、匿名性を担保するためにメッシュサイズを十分に大きくしなければならず、分析の精度に大きな悪影響を与えるという問題がある。
【００１８】
また、グループを生成する別の従来技術として、事前に決めた値ｄ及びｋに対し、大きさｄ未満の範囲内に、ｋ個以上のレコードが含まれるように、且つ別の範囲と重ならないように範囲の位置を調整し、その範囲に基づきグループ化する技術がある。
【００１９】
この従来技術は対象データとして互いに異なるＩＤを有するレコード群を前提にしており、その場合は適切な匿名性が担保されるが、図１のように同じＩＤのレコードが複数存在し得るデータに対しては十分な匿名性を担保できないという問題がある。
【００２０】
例えば、この従来技術の一部を適用し、図１の各レコードを一辺「５」未満の矩形（ｄ＝(5, 5)）で、３個以上（ｋ＝３）のレコードが含まれるようグループ分けする場合を考える。この場合、例えばレコード｛１，２，３｝を含む矩形Ｒ４３:（Ｘ，Ｙ）＝（[2, 6], [2, 4]）と、レコード｛４，５，６｝を含む矩形Ｒ４９:（Ｘ，Ｙ）＝（[2, 6], [8, 10]）の２つのグループができる。しかし、上でも述べた例と同じように、特定のＩＤしか存在し得ないような地域に矩形が包含される可能性がある。例えば矩形Ｒ４３がＡ宅の敷地内に包含された場合には、矩形Ｒ４３に分類されたレコード｛１，２，３｝の情報提供者がＡだと推定できてしまう。
【００２１】
一般的に、図１のように同じＩＤのレコードが複数存在するレコード群をも取り扱うことができる手法の方が適用範囲が広くて良い。例えば、組織が情報提供者の場合は特に、複数の測定機器のデータに同じＩＤ（すなわち組織ＩＤ）が記録される場合もある。また、ＩＤが同じ複数のレコードの存在を許すことで多くのレコードを一度に分析できるようになり、分析精度の向上が望める。しかしながら、この従来技術は、特殊な対象データでしか匿名性を担保できず、適用できる場面が少ないという問題がある。
【００２２】
さらに、グループ化する別の従来技術として、ＩＤのような機密属性値の種類が各グループ内でｌ種類以上ある（すなわちｌ−多様性を満たす）ようにする技術がある。この従来技術はグループを事前に決めた大きさ未満の範囲内にすることが難しいという問題がある。事前に決めた大きさ未満の範囲内にできないと、分析の精度に大きな悪影響を与えるという問題がある。
【先行技術文献】
【非特許文献】
【００２３】
【非特許文献１】O. Abul, F. Bonchi, and M. Nanni. Never Walk Alone: Uncertainty for Anonymity in Moving Objects Databases. In Proceedings of the 24th International Conference on Data Engineering, ICDE 2008, pp.376-385 (2008).
【非特許文献２】A. Machanavajjhala, J. Gehrke, D. Kifer, M. Venkitasubramaniam. l-Diversity: Privacy Beyond k-Anonymity. ACM Transactions on Knowledge Discovery from Data, Vol. 1, Issue 1, Article No. 3, 2007.
【発明の概要】
【発明が解決しようとする課題】
【００２４】
従って、本技術の目的は、一側面によれば、適切な分析精度を出すことができるように数値属性値を含むデータの匿名化を可能にするための技術を提供することである。
【課題を解決するための手段】
【００２５】
本技術に係る匿名化データ生成方法は、（Ａ）各々機密属性値と数値属性値とを含む複数のデータブロックを格納するデータ格納部から、複数のデータブロックのうち、グループ化未了の第１のデータブロックを含み且つ機密属性値の度数分布が所定の条件を満たし且つ数値属性値が所定サイズを有する所定の領域内となるデータブロックのグループを抽出し、（Ｂ）グループに属するデータブロックの数値属性値を、グループについて算出された数値属性値で置換する処理を含む。そして、上記所定の領域が、他のグループについての所定の領域とは無関係に決定されるものである。
【発明の効果】
【００２６】
一側面によれば、適切な分析精度を出すことができるように数値属性値を含むデータを匿名化できるようになる。
【図面の簡単な説明】
【００２７】
【図１】図１は、データの一例を示す図である。
【図２】図２は、データと他のデータとの重ね合わせの一例を示す図である。
【図３】図３は、本実施の形態に係る情報処理装置の構成例を示す図である。
【図４】図４は、第１データ格納部に格納されるデータの一例を示す図である。
【図５】図５は、本技術の実施の形態における処理フローを示す図である。
【図６】図６は、レコードの配置例を示す図である。
【図７】図７は、固定メッシュ要素を配置した状態を示す図である。
【図８】図８は、固定メッシュ要素のＩＤとレコードとの対応表の一例を示す図である。
【図９】図９は、レコード群Ｒｄについて説明するための図である。
【図１０】図１０は、レコードＲｌについて説明するための図である。
【図１１】図１１は、本技術の実施の形態における処理フローを示す図である。
【図１２】図１２は、レコードＲｌを包含する最小矩形を説明するための図である。
【図１３】図１３は、グループＧ生成処理の処理フローを示す図である。
【図１４】図１４は、グループＧについての矩形ｒｅｃｔを示す図である。
【図１５】図１５は、除外処理の処理フローを示す図である。
【図１６】図１６は、除外処理において生成される度数分布表の一例を示す図である。
【図１７】図１７は、除外処理において生成される度数分布表の一例を示す図である。
【図１８】図１８は、除外処理において生成される度数分布表の一例を示す図である。
【図１９】図１９は、除外処理において生成される度数分布表の一例を示す図である。
【図２０】図２０は、除外処理において生成される度数分布表の一例を示す図である。
【図２１】図２１は、除外処理において生成される度数分布表の一例を示す図である。
【図２２】図２２は、グループ分類処理の処理フローを示す図である。
【図２３】図２３は、譲渡可能レコードの抽出処理の処理フローを示す図である。
【図２４】図２４は、抽出処理において生成される度数分布表の一例を示す図である。
【図２５】図２５は、抽出処理において生成される度数分布表の一例を示す図である。
【図２６】図２６は、抽出処理において生成される度数分布表の一例を示す図である。
【図２７】図２７は、抽出処理において生成される度数分布表の一例を示す図である。
【図２８】図２８は、抽出処理において生成される度数分布表の一例を示す図である。
【図２９】図２９は、グループ対応表の一例を示す図である。
【図３０】図３０は、グループ情報表の一例を示す図である。
【図３１】図３１は、グループ対応表の一例を示す図である。
【図３２】図３２は、グループ情報表の一例を示す図である。
【図３３】図３３は、グループ対応表の一例を示す図である。
【図３４】図３４は、グループ情報表の一例を示す図である。
【図３５Ａ】図３５Ａは、本技術の実施の形態における処理フローを示す図である。
【図３５Ｂ】図３５Ｂは、本技術の実施の形態におけるレコード追加処理の処理フローを示す図である。
【図３６】図３６は、グループ化されなかったレコードのグループ化を説明するための図である。
【図３７】図３７は、グループ対応表の一例を示す図である。
【図３８】図３８は、グループ情報表の一例を示す図である。
【図３９】図３９は、本技術の実施の形態における処理フローを示す図である。
【図４０】図４０は、ランダムに生成される矩形を説明するための図である。
【図４１】図４１は、出力テーブルに登録されるレコードの一例を示す図である。
【図４２】図４２は、出力テーブルの例を示す図である。
【図４３】図４３は、コンピュータの機能ブロック図である。
【発明を実施するための形態】
【００２８】
図３に、本技術の実施の形態に係る情報処理装置１００の機能ブロック図を示す。情報処理装置１００は、第１データ格納部１１０と、設定データ格納部１２０と、グループ化処理部１３０と、第２データ格納部１４０と、匿名化処理部１５０と、第３データ格納部１６０と、出力部１７０とを有する。
【００２９】
第１データ格納部１１０は、例えば図４に示すような匿名化前のデータを格納している。図４の例では、各レコード（データブロックとも呼ぶ）は、ＩＤと、Ｘ（緯度）と、Ｙ（経度）と、速さとを含む。行番号は、以下の説明のために付されている。
【００３０】
また、設定データ格納部１２０は、範囲のサイズｄと、度数分布についての条件（度数分布パターンとも呼ぶ）と、第１データ格納部１１０に格納されているデータのうちの機密属性（例えばＩＤ属性。機微属性とも呼ぶ。）及び数値属性（例えば緯度Ｘ及び経度Ｙを含む位置データ）の指定とが格納される。度数分布パターンは、最小種類数ｌと、減衰率ａとを含む。最小種類数ｌは２以上の整数であり、減衰率ａは１以下の正の実数である。例えば、ｌ種類のＩＤについて度数の多い順にｎ番目の度数がｎ−１番目の度数のａ倍以上であるという度数分布パターンが条件として設定される。
【００３１】
グループ化処理部１３０は、第１データ格納部１１０に格納されているレコード群（以下では表Ｄ）をグループ化する処理を行い、処理結果を第２データ格納部１４０に格納する。匿名化処理部１５０は、グループ化の結果に基づき、各グループに属するレコードの数値属性値を変換する処理を行い、処理結果を第３データ格納部１６０に格納する。出力部１７０は、第３データ格納部１６０に格納されているデータを、他のコンピュータ、表示装置や印刷装置などに出力する。
【００３２】
次に、図５乃至図４２を用いて、情報処理装置１００の処理内容について説明する。
【００３３】
まず、グループ化処理部１３０は、第１データ格納部１１０に格納されている表Ｄ内の全レコードを、数値属性値に基づき大きさｄの固定メッシュ要素に分類する（図５：ステップＳ１）。まず、設定データ格納部１２０において、緯度経度ＸＹが数値属性として設定されており、さらに、ｄ＝（６，６）も設定されているものとする。そうすると、図４に示したレコード群は、ＸＹ平面上、図６に示すように配置される。なお、同じ形のプロットは、同じＩＤのレコードを表している。
【００３４】
そして、本ステップでは、図７に示すように、ｄ＝（ｄX，ｄY）＝（６，６）の固定メッシュ要素を配置して各固定メッシュ要素に包含されるレコードを抽出することで分類を行う。なお、固定メッシュ要素の範囲の上限値に相当する辺については、その固定メッシュ要素の範囲には含まれないものとする。
【００３５】
これは以下の処理を高速化するための前処理であり、本実施の形態では、以下のようなグループＩＤ生成関数を使用する。
ｆ（Ｒ）＝（floor(Ｘ／６)，floor(Ｙ／６)）
ここでfloor（Ｑ／Ｓ）は、ＱをＳの倍数に近い値に切り捨てる関数である。また、ｆ（Ｒ）は、緯度Ｘ及び経度Ｙを含むレコードＲのグループＩＤを算出する関数である。
【００３６】
図４の例であれば、図８に示すような分類がなされるようになる。図８の例では、メッシュＩＤ＝（０，０）の固定メッシュ要素には、レコード｛１，２，３，４，５｝が属し、メッシュＩＤ＝（０，１）の固定メッシュ要素には、レコード｛６｝が属し、メッシュＩＤ＝（１，０）の固定メッシュ要素には、レコード｛８，９｝が属し、メッシュＩＤ＝（１，１）の固定メッシュ要素には、レコード｛７｝が属する。
【００３７】
図８のような対応表において、レコードはメッシュＩＤの昇順でソートしておく。また、各メッシュの行番号集合については、所属するレコードの数値属性値の昇順でソートしておく。
【００３８】
その後、グループ化処理部１３０は、生成された対応表において、未処理の固定メッシュ要素ｍを１つ特定する（ステップＳ３）。さらに、グループ化処理部１３０は、固定メッシュ要素ｍ内においてグループ化未了のレコードｒを１つ特定する（ステップＳ５）。例えばメッシュＩＤ＝（０，０）を処理対象の固定メッシュ要素ｍとして特定した場合、グループ化未了のレコード群は｛１，２，３，４，５｝であり、ここではレコードｒ＝１を処理対象のレコードとして特定する。
【００３９】
そして、グループ化処理部１３０は、固定メッシュ要素の近隣固定メッシュ要素から、レコードｒを中心としてサイズ２ｄの範囲に入るレコード群Ｒｄ（但し、グループ化済みで譲れないレコードを除く）を抽出する（ステップＳ７）。
【００４０】
近隣固定メッシュ要素は、メッシュＩＤの各要素の数値に−１／０／＋１のいずれかを加えてできるメッシュＩＤを有する固定メッシュ要素であり、メッシュＩＤ＝（０，０）の場合には、（−１，−１）、（−１，０）、（−１，１）、（０，−１）、（０，０）、（０，１）、（０，−１）、（１，−１）、（１，０）、（１，１）の固定メッシュ要素が近隣固定メッシュ要素となる。固定メッシュ要素ｍが（０，０）の場合、候補となるレコードは、｛１，２，３，４，５，６，７，８，９｝となる。
【００４１】
さらに、レコードｒを中心としたサイズ２ｄの範囲は、ｒの座標（Ｘ，Ｙ）＝（０，１）であるから、（０−６）＝−６＜Ｘ＜（０＋６）＝６、（１−６）＝−５＜Ｙ＜（１＋６）＝７の範囲となる。具体的には、図９に示すような状態となる。図９において、レコード１を中心とする１辺２ｄの点線矩形の範囲に入っているレコードを抽出することになる。但し、辺上のレコードは範囲に含まれない。従って、候補となるレコードのうち、｛１，２，３，４，５｝がレコード群Ｒｄに含まれることになる。このレコード群Ｒｄは、以下の処理でベースとなるレコードの集合となる。
【００４２】
そして、グループ化処理部１３０は、レコード群Ｒｄのうち、レコードｒからの距離が近い順にＩＤがｌ種類（度数分布パターンにおける最小種類数）のレコードＲｌを抽出する処理を行う（ステップＳ９）。例えば距離にはマンハッタン距離を用いる。本ステップでは、図１０に示すように、レコードｒを中心としてマンハッタン距離「３」の範囲内には、レコード「２」及び「３」が入っているが、それらは同じＩＤであるからいずれかが選択される。同じマンハッタン距離の場合には、ソート順で先に出現するレコードを選択する。さらに、また、マンハッタン距離「６」の範囲内には、レコード「４」が入っている。処理対象のレコード「１」、レコード「２」及びレコード「４」のＩＤはそれぞれ異なっているので、設定データ格納部１２０においてｌ＝３が設定されている場合には、レコードＲｌ＝｛１，２，４｝が抽出されることになる。
【００４３】
ここで、処理は、レコードＲｌが抽出できれば（ステップＳ１１：Ｙｅｓルート）、端子Ａを介して図１１のステップＳ１３に移行し、レコードＲｌが抽出できなければ（ステップＳ１１：Ｎｏルート）、端子Ｂを介して図１１のステップＳ２５に移行する。
【００４４】
図１１の処理の説明に移行して、グループ化処理部１３０は、レコードＲｌを含む最小矩形を特定し、矩形の辺の長さを特定する（ステップＳ１３）。上で述べた例では、図１２に示すように（０，０）を左下の頂点とし、（３，４）を右上の頂点とする矩形が特定され、辺は縦「３」で横「４」であるからｄ＝（６，６）未満となっている。
【００４５】
グループ化処理部１３０は、矩形の辺がｄ未満であるか判断する（ステップＳ１５）。矩形の辺がｄ以上であれば、端子Ｂを介して処理はステップＳ２５に移行する。一方、矩形の辺がｄ未満であれば、グループ化処理部１３０は、グループＧ生成処理を実行する（ステップＳ１７）。グループＧ生成処理については、図１３乃至図２１を用いて説明する。
【００４６】
まず、グループ化処理部１３０は、レコード群Ｒｄのうち、最小矩形の最大座標値を基準に１辺ｄの矩形に入るレコード群を抽出する（ステップＳ３１）。最小矩形の最大座標値は、図１２に示した点ｐの座標値のことである。具体的には、最小矩形の右上の頂点である。そして、図１４に示すように、点ｐを右上の頂点とする１辺サイズｄの矩形ｒｅｃｔを生成する。この例の場合、ｐ＝（３，４）であるから、ｒｅｃｔ＝((-3, 3], (-2, 4]）すなわち、頂点ｐに接続する辺については辺上の点は含まれるが、それ以外の辺（点線）は辺上の点は含まれない。図１４の例では、矩形ｒｅｃｔに入るレコード群は、｛１，２，３，４｝となる。ここで、ＩＤがＡであるレコードは｛１｝のみで、ＩＤがＢであるレコードは｛２，３｝であり、ＩＤがＣであるレコードは｛４｝のみである。従って、ＩＤ属性の度数分布は、｛Ａ：１，Ｂ：２，Ｃ：１｝となる。
【００４７】
このように、レコード群Ｒｄを抽出するのは、処理の効率化のためである。レコードｒを含み且つサイズｄを有する任意の矩形に含まれるレコード群のグループＧには、レコードｒと共に大きさ２ｄの矩形内に入り得るレコードしか当然含まれない。そのため、その候補を最初に抽出することで、余計な計算をすることを防ぐことができる。
【００４８】
次に、レコードＲｌを抽出するのは、条件ｌを満たす矩形を作れそうな箇所を効率的に見つけるためである。レコード群ＲｄのうちＩＤがｌ種類のレコードを包含する大きさｄの矩形を効率的に探すのは難しい。そこで、レコードＲｌを抽出することで、ｒ周辺であればそのような矩形を効率的に探せるようにする。もし、レコードＲｌを抽出できなければ、レコード群ＲｄのうちＩＤがｌ種類のレコードを包含する大きさｄの矩形は存在し得ないことが分かる。また、レコードＲｌのうち最も遠いレコードがレコードｒからｄの半分の距離未満にあれば、ＩＤがｌ種類のレコードを包含する大きさｄの矩形は例えばレコードｒを中心とする矩形として存在することが分かる。
【００４９】
そして、点ｐを右上の頂点とする大きさｄの矩形ｒｅｃｔを生成するのは、矩形ｒｅｃｔは、ＩＤがｌ種類のレコードを包含しやすく、ＩＤがｌ種類のレコードを包含する場合には、グルーピングされ損なったレコードも包含しやすいためである。
【００５０】
例えば、上で述べたように、レコードＲｌのうち最も遠いレコードがｒからサイズｄの半分の距離未満にあれば、矩形ｒｅｃｔはレコードＲｌを包含するため、ＩＤがｌ種類のレコードを包含する。矩形ｒｅｃｔが、ＩＤがｌ種類のレコードを包含すれば、グループＧが生成されるため、これにより、どのグループにもグルーピングされないレコードを減らす効果が期待できる。
【００５１】
また、上で述べたように、ＸＹ平面上で座標値が小さい順にレコードｒを選択していっているため、レコードｒから見て点ｐの方向にはまだレコードｒとして選択されたことがない、すなわちまだグルーピングされる機会の多いレコードばかりである。一方、それ以外の方向には、レコードｒとして選択されたが未グルーピングの、すなわちグルーピングされ損なったレコードがある可能性がある。矩形ｒｅｃｔが、ＩＤがｌ種類のレコードを包含する場合は、レコードＲｌが近くにある場合であることが多く、その場合は矩形ｒｅｃｔはレコードｒから見て点ｐでない方向に張り出す。すなわち、グルーピングされ損なったレコードを包含しやすくなる。よって、どのグループにもグルーピングされないレコードを減らす効果が期待できる。
【００５２】
そうすると、グループ化処理部１３０は、グループＧについての度数分布を生成し、グループＧにはｌ種類以上のＩＤ属性値が含まれるか判断する（ステップＳ３３）。グループＧにｌ種類以上のＩＤ属性値が含まれない場合には、端子Ｂを介して図１１のステップＳ２５に移行する。一方、グループＧにｌ種類以上のＩＤ属性値が含まれる場合には、グループ化処理部１３０は、グループＧについての度数分布が、度数分布パターンにおける条件ａ（＝減衰率）を満たしているか判断する（ステップＳ３４）。ｌ＝３及びａ＝０．５が設定されているものとする。度数が大きい順に並べて、ｎ番目の度数が、ｎ−１番目の度数のａ＝０．５以上であることが条件となっている。この場合、｛Ｂ：２，Ａ：１，Ｃ：１｝となっているので、この条件を満たしている。
【００５３】
減衰率ａを用いるのは、度数分布の偏りが大きすぎるグループを作らない、すなわち安全性を高めるためである。
【００５４】
グループＧについての度数分布が、度数分布パターンにおける条件を満たしている場合には、処理は呼出元の処理に戻る。一方、グループＧについての度数分布が、度数分布パターンにおける条件を満たしていない場合には、グループ化処理部１３０は、除外処理を実行する（ステップＳ３５）。条件ｌを満たしていれば、条件ａを満たすようにレコードを除外することが可能である。従って、除外処理を実行する。除外処理については、図１５乃至図２１を用いて説明する。
【００５５】
そして、グループ化処理部１３０は、予め定められている優先順位に従って、除外処理で決定された数の除外すべきレコードを特定し、グループＧから除外する（ステップＳ３７）。優先順位については、グルーピング済みのもの（譲ることができるレコード）をまずソート順で後ろのレコードから順番に除外し、残りをソート順で後ろのレコードから順番に除外する。そして処理は呼出元の処理に戻る。
【００５６】
ここで、除外処理について説明する。まず、グループ化処理部１３０は、グループＧについて度数分布表Ｆを生成し、度数の昇順に整列させる（図１５：ステップＳ４１）。上で述べた例では、除外処理は行われないので、ここでは図１６に示すような度数分布表Ｆが生成されたものとする。また、ｌ＝４且つａ＝０．５であるものとする。
【００５７】
そして、グループ化処理部１３０は、変数ｐを初期化し（ステップＳ４３）、変数ｉを０に初期化する（ステップＳ４５）。その後、グループ化処理部１３０は、ｉが度数分布表Ｆの行数｜Ｆ｜より小さいか判断する（ステップＳ４７）。ｉが度数分布表Ｆの行数｜Ｆ｜より小さい場合には、グループ化処理部１３０は、ｉ＋ｌ−１が｜Ｆ｜より小さいか判断する（ステップＳ４９）。ｉ＋ｌ−１が｜Ｆ｜より小さい場合には、グループ化処理部１３０は、変数ｐに対してＦ［ｉ］を代入する（ステップＳ５１）。Ｆ［ｉ］は、Ｆのｉ＋１行目の度数である。ｉ＝０であれば、変数ｐには、Ｆの１行目の度数「１」が代入される。
【００５８】
一方、ｉ＋ｌ−１が｜Ｆ｜以上であれば、グループ化処理部１３０は、変数ｐに、ｍｉｎ（Ｆ［ｉ］，ｆｌｏｏｒ（ｐ／ａ））を代入する（ステップＳ５３）。ｍｉｎ（Ａ，Ｂ）は、ＡとＢのうち小さい方を出力する関数である。
【００５９】
ステップＳ５１又はＳ５３の後に、グループ化処理部１３０は、Ｆ［ｉ］に、Ｆ［ｉ］−ｐを代入する（ステップＳ５５）。ｉ＝０の時に、Ｓ４９を実行すると、度数分布表Ｆは、図１７のようになる。
【００６０】
その後、グループ化処理部１３０は、変数ｉを１インクリメントし（ステップＳ５７）、処理はステップＳ４７に戻る。
【００６１】
２回目のステップＳ４７では、｜Ｆ｜＝５，ｉ＝１であるから、ｉ＜｜Ｆ｜となる。また、ｌ＝４であるので、ｉ＋ｌ−１＜｜Ｆ｜となる。従って、ステップＳ５１でｐ＝３であり、Ｆ［１］＝３−３＝０となる。そうすると、度数分布表Ｆは、図１８のようになる。その後ｉ＝２となる。
【００６２】
３回目のステップＳ４７では、｜Ｆ｜＝５，ｉ＝２であるから、ｉ＜｜Ｆ｜となる。また、ｌ＝４であるので、ｉ＋ｌ−１＜｜Ｆ｜とはならず、ステップＳ５３に移行して、ａ＝０．５及びｐ＝３であるから、ｍｉｎ（Ｆ［ｉ］＝４，ｆｌｏｏｒ（ｐ／ａ）＝６）＝４となる。従って、Ｆ［２］＝４−４＝０となる。そうすると、度数分布表Ｆは、図１９のようになる。その後ｉ＝３となる。
【００６３】
４回目のステップＳ４７では、｜Ｆ｜＝５、ｉ＝３であるから、ｉ＜｜Ｆ｜となる。また、ｌ＝４であるので、ｉ＋ｌ−１＜｜Ｆ｜とはならず、ステップＳ５３に移行して、ａ＝０．５及びｐ＝４であるから、ｍｉｎ（Ｆ［ｉ］＝９，ｆｌｏｏｒ（ｐ／ａ）＝８）＝８となる。従って、Ｆ［３］＝９−８＝１となる。そうすると、度数分布表Ｆは、図２０のようになる。その後ｉ＝４となる。
【００６４】
５回目のステップＳ４７では、｜Ｆ｜＝５、ｉ＝４であるから、ｉ＜｜Ｆ｜となる。また、ｌ＝４であるので、ｉ＋ｌ−１＜｜Ｆ｜とはならず、ステップＳ５３に移行して、ａ＝０．５及びｐ＝８であるから、ｍｉｎ（Ｆ［ｉ］＝１０，ｆｌｏｏｒ（ｐ／ａ）＝１６）＝１０となる。従って、Ｆ［４］＝１０−１０＝０となる。そうすると、度数分布表Ｆは、図２１のようになる。その後ｉ＝５となる。
【００６５】
６回目のステップＳ４７では、｜Ｆ｜＝５、ｉ＝５であるから、ｉ＜｜Ｆ｜が成り立たなくなる。そうすると、処理は呼出元の処理に戻る。すなわち、この時点における度数分布表Ｆ（図２１）が、除外すべきレコードを示している。ここでは、ＩＤが「Ｅ」のレコードを１つ除外することになる。除外するレコードについては、グループ化済みのレコード（譲ることができるレコード）をまずソート順で後ろのレコードから順番に除外し、残りをソート順で後ろのレコードから順番に除外する。
【００６６】
図１１の処理の説明に戻って、ステップＳ１７の後に、グループ化処理部１３０は、グループ分類処理を実行する（ステップＳ１９）。グループ分類処理については、図２２乃至図２８を用いて説明する。
【００６７】
まず、グループ化処理部１３０は、譲渡可能レコードの抽出処理を実行する（図２２：ステップＳ６１）。すなわち、グループＧのうち、度数分布パターンを満たす上で必須のレコード以外のレコードを抽出する処理を実行する。より具体的には、図２３乃至図２８を用いて説明する。
【００６８】
まず、グループ化処理部１３０は、グループＧについて度数分布表Ｆを生成し、度数の昇順に整列させる（図２３：ステップＳ７１）。処理を分かり易くするために、図２４に示すような度数分布表Ｆが生成されたものとする。
【００６９】
そして、グループ化処理部１３０は、変数ｃｉに｜Ｆ｜−ｌを設定し、変数ｍｉｎに、ｃｅｉｌ（Ｆ［ｃｉ］＊ａ）を設定する（ステップＳ７３）。ｃｅｉｌ（ｘ）は天井関数であり、実数ｘに対してｘ以上の最小の整数を出力する関数である。Ｆ［ｉ］は度数分布表Ｆのｉ＋１行目の度数を表し、｜Ｆ｜は度数分布表Ｆの行数を表す。ｃｉ＝５−４＝１であり、ｍｉｎ＝ｃｅｉｌ（２＊０．５）＝１となる。
【００７０】
また、グループ化処理部１３０は、変数ｉを０に初期化し、変数ｍａｘを０に初期化する（ステップＳ７５）。
【００７１】
その後、グループ化処理部１３０は、ｉ＜｜Ｆ｜であるか判断する（ステップＳ７７）。ｉ＜｜Ｆ｜であれば、グループ化処理部１３０は、変数ｃを初期化する（ステップＳ７９）。その後、グループ化処理部１３０は、ｉ＜ｃｉであるか判断する（ステップＳ８１）。ｉ＝０であれば、ｃｉ＝１であるからこの条件は満たされている。
【００７２】
ｉ＜ｃｉであれば、グループ化処理部１３０は、ｃに０を設定する（ステップＳ８３）。そうすると、グループ化処理部１３０は、Ｆ［ｉ］に、Ｆ［ｉ］−ｃを設定する（ステップＳ８５）。Ｆ［ｉ］＝１であり、ｃ＝０であるから、Ｆ［ｉ］＝１となる。その後、グループ化処理部１３０は、ｉを１インクリメントし（ステップＳ８７）、処理はステップＳ７７に戻る。
【００７３】
ｉ＝１になると、ステップＳ８１では、ｉ＜ｃｉは成り立たなくなるので、グループ化処理部１３０は、ｉ＋１＝｜Ｆ｜であるか判断する（ステップＳ８９）。ｉ＝１であれば、ｉ＋１＝２であるから、この条件を満たさない。ステップＳ８９の条件を満たさない場合には、グループ化処理部１３０は、ｃに、ｃｅｉｌ（Ｆ［ｉ＋１］＊ａ）を代入する（ステップＳ９１）。ｃ＝ｃｅｉｌ（Ｆ［２］＊０．５）＝２となる。そして、グループ化処理部１３０は、ｍａｘ＜ｃであるか判断する（ステップＳ９３）。ｍａｘ＝０であるからこの条件を満たす。そうすると、グループ化処理部１３０は、ｍａｘにｃを代入する（ステップＳ９７）。すなわち、ｍａｘ＝ｃ＝２となる。その後、処理はステップＳ８５に移行する。従って、２回目のステップＳ８５では、Ｆ［１］＝２−２＝０となる。従って、図２５に示すような度数分布表Ｆになる。
【００７４】
ｉ＝２になると、ステップＳ８１では、ｉ＜ｃｉは成り立たなくなるので、ステップＳ８９に移行する。但し、ｉ＋１＜｜Ｆ｜であるから、ステップＳ９１に処理は移行し、ｃ＝ｃｅｉｌ（Ｆ［３］＊ａ）＝２となる。ｍａｘ＝２であるから、ｍａｘ＜ｃの条件を満たしていない。そうすると、グループ化処理部１３０は、ｃにｍｉｎを代入する（ステップＳ９５）。ｍｉｎ＝１であるから、ｃ＝１となる。そして処理はステップＳ８５に移行して、３回目のステップＳ８５では、Ｆ［２］＝３−１＝２となる。従って、図２６に示すような度数分布表Ｆになる。
【００７５】
ｉ＝３になると、ステップＳ８１では、ｉ＜ｃｉは成り立たないので、ステップＳ８９に移行する。但し、ｉ＋１＜｜Ｆ｜であるから、ステップＳ９１に処理は移行し、ｃ＝ｃｅｉｌ（Ｆ［４］＊ａ）＝３となる。ｍａｘ＝２でｃ＝３であるから、ｍａｘ＜ｃの条件を満たしている。従って、ｍａｘ＝ｃ＝３となる。そして、４回目のステップＳ８５では、Ｆ［３］＝４−３＝１となる。従って、図２７に示すような度数分布表Ｆとなる。
【００７６】
ｉ＝４になると、ステップＳ８１では、ｉ＜ｃｉは成り立たないので、ステップＳ８９に移行する。ｉ＋１＜｜Ｆ｜は満たさなくなる。そうすると、ステップＳ９５に処理は移行し、ｃ＝ｍｉｎ＝１となる。そして処理はステップＳ８５に移行して、５回目のステップＳ８５では、Ｆ［４］＝Ｆ［４］−ｃ＝５−１＝４となる。従って、図２８に示すような度数分布表Ｆが得られる。
【００７７】
その後ｉ＝５になると、ステップＳ７７ではｉ＜｜Ｆ｜の条件を満たさなくなるので、処理は呼出元の処理に戻る。従って図２８に示すように、ＩＤがＡの１レコード、ＩＤがＣの２レコード、ＩＤがＤの１レコード、及びＩＤがＥの４レコードが、譲渡可能なレコードとして特定されたことになる。
【００７８】
図２２の処理の説明に戻って、グループ化処理部１３０は、予め定められている優先順位に従って、譲渡可能なレコードを具体的に特定する（ステップＳ６３）。優先順位については、固定メッシュ要素のＩＤがソート順でより後ろ、それが同じなら数値属性値がソート順でより後ろのレコードが、譲渡可能なレコード（譲って良いレコード）となる。
【００７９】
最初の例では、グループＧにはレコード｛１，２，３，４｝が含まれており、上で述べた処理を行うと、ＩＤがＢの１レコードを譲って良いことになる。従って優先順位に従って選択すると、レコード｛３｝が選択される。
【００８０】
ここまでの処理によれば、図２９に示すようなグループ対応表及び図３０に示すようなグループ情報表が得られるようになる。
【００８１】
図２９に示すようなグループ対応表は、行番号からグループＩＤを特定できるようになっている。グループＩＤはグループに一意なものを適宜設定する。例えば、レコードｒの行番号を用いる。図３０に示すグループ情報表は、各グループについて、譲れないレコードと譲って良いレコードを分別して記録したものである。条件ａ（減衰率）のように、どのＩＤをいくつ譲っても条件を満たすか計算できる条件を使用することは、処理効率が良い。
【００８２】
図１１の処理の説明に戻って、グループ化処理部１３０は、レコードのグループＧには他のグループＧ２に含まれるレコード（譲って良いレコード）が含まれるか判断する（ステップＳ２１）。グループＧに他のグループＧ２に含まれるレコードが含まれる場合には、グループ化処理部１３０は、他のグループＧ２についてのグループ対応表及びグループ情報表から、そのレコードについてデータを削除するように変更を行う（ステップＳ２３）。一方、グループＧに他のグループＧ２に含まれるレコードが含まれない場合には、処理はステップＳ２５に移行する。
【００８３】
そして、グループ化処理部１３０は、特定された固定メッシュ要素ｍについてグループ化未了のレコードが存在するか判断する（ステップＳ２５）。グループ化未了のレコードが存在する場合には、端子Ｃを介して図５のステップＳ５へ戻る。一方、特定された固定メッシュ要素ｍについてグループ化未了のレコードが存在しない場合には、グループ化処理部１３０は、対応表において未処理の固定メッシュ要素が存在するか判断する（ステップＳ２７）。未処理の固定メッシュ要素が存在する場合には、端子Ｄを介して図５のステップＳ３へ処理は戻る。一方、未処理の固定メッシュ要素が存在しない場合には、処理は端子Ｅを介して図３５Ａの処理に移行する。
【００８４】
固定メッシュ要素ｍ＝（０，０）に属するレコード｛１，２，３，４，５｝のうちグループ化未了のレコードはレコード５（（Ｘ，Ｙ）＝（４，４））であり、レコードｒとなる。この場合、近隣固定メッシュ要素のレコードは、レコード｛１，２，３，４，５，６，７，８，９｝となる。但し、４−６＜Ｘ＜４＋６、４−６＜Ｙ＜４＋６の範囲に入る数値属性値を有するレコード群のうち、既にグループ化されており、譲れないレコードである｛１，２，４｝を除くと、レコード群Ｒｄ＝｛３，５，６，７，８，９｝となる。
【００８５】
そして、レコード５を中心にしてｌ＝３となるレコードＲｌを抽出すると、Ｒｌ＝｛３，５，９｝となる。そして、このレコードＲｌの最小矩形は（Ｘ，Ｙ）＝（[3, 7], [1, 4]）となる。この最小矩形の左上の点ｐ＝（７，４）であるから、この点ｐを基準にしてサイズｄ＝（６，６）の矩形ｒｅｃｔを生成すると、ｒｅｃｔ：（Ｘ，Ｙ）＝（(1, 7], (-2, 4]）となる。この矩形ｒｅｃｔに含まれるレコード群Ｒｄから、レコードのグループＧは｛３，５，８，９｝が得られる。このグループＧのＩＤ属性についての度数分布は、度数分布パターンにおける条件ｌ及びａを満たしている。このグループＧの度数分布は、｛Ａ：２，Ｂ：１，Ｃ：１｝となり、ＩＤがＡであるレコード「９」は譲っても良いことになる。
【００８６】
従って、図３１に示すようなグループ対応表及び図３２に示すようなグループ情報表が得られる。ここで、レコード３は、グループ１から譲ってもらったことになるので、グループ１のグループ対応表及びグループ情報表を変更することになる。総合すると、ここまでの処理で、グループ対応表は図３３のように変化し、グループ情報表は図３４のように変化する。グループ１からレコード３が除外され、グループ５に所属することになる。
【００８７】
なお、レコード｛６，７｝だけが残っていることになるが、これらについてはここまでの処理ではグループ化されない。
【００８８】
そこで、処理は端子Ｅを介して図３５Ａの処理に移行する。グループ化処理部１３０は、グループ化できなかったレコードが存在するか判断する（図３５Ａ：ステップＳ１０１）。グループ対応表に登録されていないレコードについてはグループ化できなかったと判断できる。グループ化できなかったレコードが存在しない場合には、処理は端子Ｆを介して図３９の処理に移行する。
【００８９】
一方、グループ化できなかったレコードが存在する場合には、グループ化処理部１３０は、グループ化できなかったレコードを含む未処理の固定メッシュ要素ｍを１つ特定する（ステップＳ１０３）。そして、グループ化処理部１３０は、レコード追加処理を実行する（ステップＳ１０５）。レコード追加処理については、図３５Ｂを用いて説明する。グループ化処理部１３０は、固定メッシュ要素ｍの近隣固定メッシュ要素群に包含されるグループのリストＧｍを抽出する（ステップＳ２０１）。ここでは、グループに含まれる全レコードが近隣固定メッシュ要素群に包含される場合のみ、そのグループはリストＧｍの要素となる。さらに、グループ化処理部１３０は、特定された固定メッシュ要素ｍ内のグループ化できなかった未処理のレコードrを１つ特定する（ステップＳ２０３）。そして、グループ化処理部１３０は、リストＧｍをレコードｒからの距離でソートする（ステップＳ２０５）。ここで、グループとレコードの距離は、例えばグループの最小矩形の中心点と、レコードとのマンハッタン距離とする。さらに、グループ化処理部１３０は、距離が短い方からリストＧｍ内の未処理のグループＧを特定する（ステップＳ２０７）。そして、グループ化処理部１３０は、グループＧ及びレコードｒを含む最小矩形がｄより小さいか判断する（ステップＳ２０９）。例えば、グループ毎にその最小矩形が包含される固定メッシュ要素のＩＤを特定しておくと共に、中心座標を特定しておくと処理が高速化される。固定メッシュ要素（０，１）におけるレコード「６」（（Ｘ，Ｙ）＝（５，７））がステップＳ２０３で特定されたとすると、この固定メッシュ要素の近隣固定メッシュ要素群に、グループ５及び１が含まれているので、グループ５及び１がリストＧｍに含まれることになる。ここでは、図３６に示すような状態となる。レコード６を基準に各グループの最小矩形の中心点とのマンハッタン距離で両グループをソートすると、グループ５の方が近いことがわかる。グループ５とレコード６を含む最小矩形はｄより大きい。従って、処理はステップＳ２１１に移行する。すなわち、ステップＳ２０９の条件が満たされない場合にはステップＳ２１１に移行する。そして、グループ化処理部１３０は、リストＧｍに未処理のグループが存在するか判断する（ステップＳ２１１）。未処理のグループが存在すれば処理はステップＳ２０７に戻る。図３６の例では未処理のグループ１があるので、ステップＳ２０７に戻る。グループ１をグループＧとして選択して同様に処理を進めると、ステップＳ２０９で条件を満たさないと判断され、処理はステップＳ２１１に移行する。もうリストＧｍには未処理のグループがないので、処理はステップＳ２１７に移行する。
【００９０】
一方、グループＧ及びレコードｒを含む最小矩形がｄより小さい場合には、グループ化処理部１３０は、レコードｒをそのグループＧに加えた場合に度数分布が、度数分布パターンを満たしているか判断する（ステップＳ２１３）。レコードｒがレコード７であれば、グループ５とレコード７を含む最小矩形はｄより小さくステップＳ２１３の条件を満たしており、度数分布も｛Ａ：２，Ｂ：１，Ｃ：２｝となるので、条件ｌ及びａを満たしている。
【００９１】
度数分布パターンが満たされない場合には処理はステップＳ２１１に移行する。一方、レコードｒをそのグループに加えた場合に度数分布が、度数分布パターンを満たしている場合には、グループ化処理部１３０は、レコードｒをグループＧに追加登録する（ステップＳ２１５）。すなわち、図３７のようなグループ対応表が得られ、図３８のようなグループ情報表が得られるようになる。グループ対応表及びグループ情報表は、第２データ格納部１４０に格納される。
【００９２】
その後、グループ化処理部１３０は、特定された固定メッシュ要素について、グループ化できなかった未処理のレコードが存在するか判断する（ステップＳ２１７）。未処理のレコードが存在する場合には、処理はステップＳ２０３に戻る。一方、未処理のレコードが存在しない場合には、処理は図３５Ａの処理に戻る。図３５Ａの説明に戻って、グループ化処理部１３０は、グループ化できなかったレコードを含む未処理の固定メッシュ要素が存在するか判断する（ステップＳ１１５）。グループ化できなかったレコードを含む未処理の固定メッシュ要素が存在する場合には、処理はステップＳ１０３に戻る。一方、グループ化できなかったレコードを含む未処理の固定メッシュ要素が存在しない場合には、処理は端子Ｆを介して図３９の処理に移行する。
【００９３】
図３９の処理の説明に移行して、グループ化処理部１３０の処理が終了すると、匿名化処理部１５０は、第２データ格納部１４０において未処理のグループをランダムに１つ特定する（ステップＳ１１７）。また、匿名化処理部１５０は、特定されたグループの全レコードを包含する大きさｄの矩形をランダムに決定する（ステップＳ１１９）。例えば、図４０に示すように、レコード｛１，２，４｝を含むグループ１についての矩形Ｐを設定する。後には、レコード｛３，５，７，８，９｝を含むグループ５についての矩形Ｑをも設定される。なお、図４０でもＩＤ毎に異なる形状の点をプロットしている。
【００９４】
このような矩形Ｐ及びＱは、特定のＩＤしか存在し得ないような領域（例えばＡ氏宅敷地）に包含される可能性はない。また、レコード６は異なるＩＤのレコードが近くに十分にないため、開示対象外となっている。矩形Ｐ及びＱ同士が重なっているが、それによりレコード３（ＩＤ＝Ｂ）を上手く分け合っている様子がわかる。
【００９５】
そして、匿名化処理部１５０は、決定された矩形の中心座標を計算する（ステップＳ１２１）。中心以外の座標であっても良い。その後、匿名化処理部１５０は、特定されたグループに属する未処理のレコードを１つランダム特定する（ステップＳ１２３）。そして、匿名化処理部１５０は、特定されたレコードのデータを第１データ格納部１１０から読み出して、ＩＤを削除し、位置座標ＸＹを矩形中心座標に置換して、第３データ格納部１６０における出力テーブルに登録する（ステップＳ１２５）。例えば、図４１に示すようにレコード２が最初に選択された場合、ＩＤは削除されて、位置座標ＸＹも（２，０）から、矩形の中心座標（２，２）に置換されている。速さという属性値については変更しない。但し、速さ属性の属性値についても変換しても良い。
【００９６】
そして、匿名化処理部１５０は、特定されたグループにおいて未処理のレコードが存在するか判断する（ステップＳ１２７）。未処理のレコードが存在する場合には処理はステップＳ１２３に戻る。一方、未処理のレコードが存在しない場合には、匿名化処理部１５０は、未処理のグループが存在しているか判断する（ステップＳ１２９）。未処理のグループが存在している場合には処理はステップＳ１１７に戻る。一方、未処理のグループが存在しない場合には、出力部１７０は、第３データ格納部１６０における出力テーブルを、表示装置や印刷装置などの出力装置に出力する（ステップＳ１３１）。
【００９７】
上で述べた例では、図４２に示すようなデータが出力されるようになる。図４２の例では、行番号が含まれているが、このようなデータについては削除しても良い。
【００９８】
以上のような処理を行うことで、グルーピングされたレコードだけが開示されるが、各グループは機密属性値についてｌ種類以上あるので、各グループの範囲が特定のＩＤしか存在し得ないような領域に包含されることはなく、匿名性が担保される。
【００９９】
また、開示されるレコードが存在する各範囲は大きさｄ未満となるため、小さいｄを指定することで高精度の分析が可能となる。但し、ｄが小さいほどどの範囲にも分類されないレコードが増え、そのようなレコードは開示されないため、ｄを小さくし過ぎることは好ましくない。
【０１００】
さらに、グループのレコードを含む各範囲が重なることを許容することによって、どの範囲にも分類されないレコードの数を減らすことができる。これは、開示されるレコード数を増やす、すなわち分析に使えるデータ量が増えることになるので、高精度な分析が望める。
【０１０１】
すなわち、本実施の形態によれば、ｄが指定された場合、匿名性を担保したままそのｄに適した精度のデータを開示できる。例えば、測定誤差や、分析側の分析能に基づいてｄを決めることで、最も良く匿名性と分析精度の両立をはかることができる。
【０１０２】
以上本技術の実施の形態を説明したが、本技術は、これに限定されない。例えば、処理フローは一例であり、処理結果が変わらない限り、処理順番を入れ替えたり、複数のステップを並列実行する場合もある。
【０１０３】
特に、上で述べた矩形ｒｅｃｔを設定する方法は一例である。他のグループの矩形とは無関係に設定できるので、グループに包含されるレコードをメインに考慮して設定できる。
【０１０４】
また、上で述べた例では数値属性が２次元であったが、１次元であっても３次元以上であっても良い。その場合、矩形ではなく線分や直方体など次元数に応じて変化する。
【０１０５】
さらに、情報処理装置１００は、１台のコンピュータではなく複数台のコンピュータで機能分担を行う場合もある。さらに、サーバクライアント型の実装形態である場合もある。
【０１０６】
なお、上で述べた情報処理装置１００は、例えばコンピュータ装置であって、図４３に示すように、メモリ２５０１とＣＰＵ２５０３とハードディスク・ドライブ（ＨＤＤ）２５０５と表示装置２５０９に接続される表示制御部２５０７とリムーバブル・ディスク２５１１用のドライブ装置２５１３と入力装置２５１５とネットワークに接続するための通信制御部２５１７とがバス２５１９で接続されている。オペレーティング・システム（ＯＳ：Operating System）及び本実施例における処理を実施するためのアプリケーション・プログラムは、ＨＤＤ２５０５に格納されており、ＣＰＵ２５０３により実行される際にはＨＤＤ２５０５からメモリ２５０１に読み出される。ＣＰＵ２５０３は、アプリケーション・プログラムの処理内容に応じて表示制御部２５０７、通信制御部２５１７、ドライブ装置２５１３を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ２５０１に格納されるが、ＨＤＤ２５０５に格納されるようにしてもよい。本技術の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク２５１１に格納されて頒布され、ドライブ装置２５１３からＨＤＤ２５０５にインストールされる。インターネットなどのネットワーク及び通信制御部２５１７を経由して、ＨＤＤ２５０５にインストールされる場合もある。このようなコンピュータ装置は、上で述べたＣＰＵ２５０３、メモリ２５０１などのハードウエアとＯＳ及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
【０１０７】
以上述べた本実施の形態をまとめると、以下のようになる。
【０１０８】
本実施の形態に係る匿名化データ生成方法は、（Ａ）各々機密属性値と数値属性値とを含む複数のデータブロックを格納するデータ格納部から、複数のデータブロックのうち、グループ化未了の第１のデータブロックを含み且つ機密属性値の度数分布が所定の条件を満たし且つ数値属性値が所定サイズを有する所定の領域内となるデータブロックのグループを抽出し、（Ｂ）グループに属するデータブロックの数値属性値を、グループについて算出された数値属性値で置換する処理を含む。そして、上記所定の領域が、他のグループについての所定の領域とは無関係に決定されるものである。  
【０１０９】
上で述べた所定の領域が他のグループについての所定の領域とは無関係に決定されるので、一部重複することもあるが、そのために機密属性値の度数分布が所定の条件を満たすグループを生成しやすくなり、グループ化漏れも少なくできる。すなわち、分析に用いることができるデータ量が増加し、分析精度が向上する。また、所定の領域のサイズについても調整可能であり、この点についても分析精度向上の要因となる。
【０１１０】
また、本匿名化データ生成方法は、（Ｃ）上記グループに属するデータブロックの機密属性値を削除する処理をさらに含むようにしても良い。機密保持のためである。
【０１１１】
さらに、上で述べた抽出する処理は、（ａ１）グループ化未了の第１のデータブロックを含み且つ数値属性値が所定サイズを有する所定の領域内となるデータブロックの集合についての機密属性値の度数分布が、所定の条件を満たすか判断し、（ａ２）データブロックの集合についての機密属性値の度数分布が所定の条件を満たさない場合には、所定の条件を満たすようにデータブロックの集合から第２のデータブロックを除外することでデータブロックのグループを生成する処理を含むようにしても良い。このように除外された第２のデータブロックは、他のグループの抽出に用いられるため、上で述べた所定の領域の重複が生じ得る。
【０１１２】
さらに、上で述べた抽出する処理は、（ａ３）データブロックのグループから、機密属性値の度数分布が所定の条件を満たす上で必須となるデータブロック以外の第３のデータブロックを抽出する処理を含む場合もある。この場合、データブロックの他のグループを抽出する処理において、第３のデータブロックが抽出されるようにしても良い。第３のデータブロックを他のグループの抽出に用いることができるため、グループの抽出が容易になる。
【０１１３】
また、上で述べた所定の条件が、機密属性値の種類数の下限値を含む場合もある。この場合、上で述べた抽出する処理が、（ａ４）第１のデータブロックを基準に機密属性値の種類数の下限値以上となるように第４のデータブロックを抽出し、（ａ５）抽出された第４のデータブロックの数値属性値に基づき所定サイズを有する所定の領域を決定する処理を含むようにしても良い。第４のデータブロックが第１のデータブロックから所定の範囲内で抽出できない場合にはグループの抽出は無理なので、他のデータブロックの処理に移行するものである。
【０１１４】
さらに、本匿名化データ生成方法は、（Ｄ）いずれのグループにも属しないデータブロックが存在する場合には、所属する第５のデータブロックを包含する領域の基準位置と当該データブロックとの距離が所定のサイズに相当する距離以下であり且つ当該データブロックを加えることで機密属性値の度数分布が所定の条件を満たしたままであれば、当該データブロックを第５のデータブロックのグループに分類する処理をさらに含むようにしても良い。可能な限り漏れなくグループ化することができるようになる。
【０１１５】
また、上で述べた置換する処理が、（ｂ１）グループに属するデータブロックの数値属性値を包含する所定のサイズを有する領域をランダムに生成し、（ｂ２）生成された領域内の位置に対応する数値属性値で、グループに属するデータブロックの数値属性値を置換する処理を含むようにしても良い。これによってグループの特性を保持しつつ匿名化できるようになる。
【０１１６】
なお、上で述べたような処理をコンピュータに実施させるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブル・ディスク、ＣＤ−ＲＯＭなどの光ディスク、光磁気ディスク、半導体メモリ（例えばＲＯＭ）、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。なお、処理途中のデータについては、ＲＡＭ等の記憶装置に一時保管される。
【図１】
0006015777.tif 000002
【図２】
0006015777.tif 000003
【図３】
0006015777.tif 000004
【図４】
0006015777.tif 000005
【図５】
0006015777.tif 000006
【図６】
0006015777.tif 000007
【図７】
0006015777.tif 000008
【図８】
0006015777.tif 000009
【図９】
0006015777.tif 000010
【図１０】
0006015777.tif 000011
【図１１】
0006015777.tif 000012
【図１２】
0006015777.tif 000013
【図１３】
0006015777.tif 000014
【図１４】
0006015777.tif 000015
【図１５】
0006015777.tif 000016
【図１６】
0006015777.tif 000017
【図１７】
0006015777.tif 000018
【図１８】
0006015777.tif 000019
【図１９】
0006015777.tif 000020
【図２０】
0006015777.tif 000021
【図２１】
0006015777.tif 000022
【図２２】
0006015777.tif 000023
【図２３】
0006015777.tif 000024
【図２４】
0006015777.tif 000025
【図２５】
0006015777.tif 000026
【図２６】
0006015777.tif 000027
【図２７】
0006015777.tif 000028
【図２８】
0006015777.tif 000029
【図２９】
0006015777.tif 000030
【図３０】
0006015777.tif 000031
【図３１】
0006015777.tif 000032
【図３２】
0006015777.tif 000033
【図３３】
0006015777.tif 000034
【図３４】
0006015777.tif 000035
【図３５Ａ】
0006015777.tif 000036
【図３５Ｂ】
0006015777.tif 000037
【図３６】
0006015777.tif 000038
【図３７】
0006015777.tif 000039
【図３８】
0006015777.tif 000040
【図３９】
0006015777.tif 000041
【図４０】
0006015777.tif 000042
【図４１】
0006015777.tif 000043
【図４２】
0006015777.tif 000044
【図４３】
0006015777.tif 000045