以下、図面を参照して、実施形態のデータ編集プログラム、データ編集方法およびデータ編集装置について説明する。実施形態のデータ編集プログラム、データ編集方法およびデータ編集装置は、個票データ、すなわち各行に各人の情報を格納した関係モデル(2次元表)を、各人のプライバシーに配慮しつつ多くの情報が残るよう、データを一般化(変換)する。
図1は、個票データの例を示す図である。
個票データを一般化したい場合として、データの2次活用が考えられる。たとえば、A社が顧客から図1のような個票データを集め、そのデータをB社に販売し、B社が個票データを分析した知識を市場分析等に役立てる、といった状況である。このとき、A社は顧客に配慮し、顧客のプライバシーが侵害されうるデータはB社等の他社に提供したくないとする。一方、B社はA社の一人一人の情報には興味がないが、全体的な情報はできるだけ正確に得たいとする。
一般化の方法として、属性毎の統計化がある。たとえば、図1の場合、「趣味」について、 趣味={ゴルフ:2、水泳:2、読書:2、料理:2}などと度数分布の情報に変換する方法である。B社はこの情報を見てもどれが誰の趣味かわからないが、全体的な趣味の傾向はわかる。
このように属性毎の統計化は要求に応える方法の一つといえる。しかし、この方法は属性間の関係がわからないという欠点がある。たとえば、図1の場合、B社は「生年」と「趣味」との相関を分析したいと考えているとき、「生年」や「趣味」の統計データを別々に入手しても、それを実現できない。以下では、そのように、属性間の関係を分析できるような一般化を対象とする。
属性間の関係を分析できる一般化の方法として、無名化がある。
図2は、無名化後の関係モデルの例を示す図である。図2には、図1を無名化、つまり行の識別子かそれに近い属性、例えば図1の「氏名」を削除した後の関係モデルである。
これを見たB社は(「氏名」以外の)各属性の関係を分析することができる。しかし、無名化だけではプライバシー保護が不十分な場合がある。たとえば、次の状況を考える。
(1)「八条 八郎」は自分の趣味がダンスであることをB社に知られたくないと思っている。
(2)B社は「八条 八郎」の「生年」が1989年で「郵便番号」が122と知っている。
(3)B社は図2に示されている個票データに「八条 八郎」の行があることを知っている。
これらの状況が全て成立した場合、図2はプライバシー保護が十分とはいえない。なぜなら、B社は生年と郵便番号から、「八条 八郎」の行が図2の8行目、すなわち、(生年, 郵便番号)=(1989、122)であることを知ることができる。よって、「八条 八郎」の「趣味」が「ダンス」だとわかる。しかし、これは「八条 八郎」が望まないことだからである。
実施形態のデータ編集装置、データ編集方法およびデータ編集プログラムでは、一般化後の関係モデルを見る者は、そこに含まれるある一人について詳細な情報を持っている場合を対象とする。その場合、上記例のように、無名化だけではプライバシー保護が不十分である。
図3は、l−多様化後の関係モデルの例を示す図である。l−多様化は、属性間の関係を分析できる一般化の方法の一つである。
l−多様化は、l−多様化は、Quasi−Identifier(QI)とSensitive−Attribute(SA)などを入力として受け、QI値(QIの値)が近い行同士をグループ化し(たとえば同じ値に一般化し)、各グループのSA値(SAの値)が多様性を持つようにする。SAは各人(行データ提供者)がみだりに知られたくない情報の列であり、QIは他人でも容易に知ることができる情報の列集合(1つ以上の列)である。
l−多様化における多様性とは、SAの値の度数分布について判定できる性質で、普通は度数分布の偏りが小さいことを判定する性質である。
l−多様化の例として、たとえば、QI={生年、郵便番号}、SA=趣味とし、多様性を「趣味の値が2種類以上あること」としてl−多様化することが考えられる。たとえば、1970年生まれ、郵便番号が121の場所に住み、水泳を趣味とするkさんと、1972年生まれ、郵便番号が122の場所に住み、読書を趣味とするmさんがいるとする。ここで、「197?年」生まれ、郵便番号が「12?」をQIとすると、SA={水泳、読書}と2種類のSA値が存在するので、「趣味の値が2種類以上あること」という多様性の条件を満たす。このように、l−多様化は、属性間の関係を分析できる上、プライバシーにも配慮した一般化方法として知られている。
図3に示されている例は、図2に示されている例に対し、QI={生年、郵便番号}、SA={趣味}とし、多様性を「趣味の値が2種類以上あること」としてl−多様化した例である。図3中で、「?」は任意の数字を表し、グループのQI値を同じ値に一般化するのに使用されている。QI値が互いに近い、{1、3}行目、{2、4}行目、{5、6}行目、{7、8}行目がグループ化されている。また、QI値が近い行がない9行目は墨塗りされている。各グループのSA値は多様性を満たしている。すなわち、どのグループのSA値の度数分布も、2種類以上のSA値がある。
図3に示されている例では、属性間の関係を分析できる上、プライバシーにも配慮されている。たとえば、前述の例で考えると、B社は「八条 八郎」の行を{7、8}行目のいずれかに絞り込めず、従ってその「趣味」も{読書, ダンス}のいずれかに絞り込めない。なお、「八条 八郎」が図3の9行目でないことは、l−多様化のアルゴリズムを知っていればわかる。9行目はQI値が近い行がなかったため墨塗りされたのであり、7行目や8行目のQI値と近ければ墨塗りされなかったはずなので、{7、8}行目のQI値に相当する「八条 八郎」は9行目でないことがわかる。
このように、l−多様化は、属性間の関係を分析できる上、プライバシーにも配慮することができる。
しかし、l−多様化はQIとSAを利用者(たとえば、A社等)が適切に決めなければならないという問題がある。
たとえば、先と違い、「八条 八郎」は自分の生年や郵便番号をB社に知られたくないと思っていて、B社は「八条 八郎」の「趣味」がダンスだと知っている状況を考える。ただし、A社はそのことを知らず、先と同じくQIとSAを設定したとする。この状況でB社が図3の関係モデルを見ると、「八条 八郎」の行は8行目で、その「生年」と「郵便番号」はそれぞれ“1989”と“12?”である可能性が高いことがわかってしまう。つまり、「八条 八郎」にとってプライバシー保護が不十分となる。なお、「八条 八郎」の行が9行目の可能性もあるが、たとえば「趣味」がダンスの人が稀なことや、各人の趣味の度数分布がわかっている場合などには、「八条 八郎」は8行目である可能性が高まることがある。
また、実際には、人によってどの属性を知られたくないと思うかが違う場合があり、その場合にはQIとSAを適切に設定しようがないことがあり得る。
以下で説明する実施形態のデータ編集装置、データ編集方法およびデータ編集プログラムでは、一般化対象の関係モデルがn列ある場合、任意のn−1列について、それらの値が一緒の行について残りの列の値に多様性を持たせるように一般化する。各列についての多様性定義を入力として受け、それらで各列の多様性を判定しながら一般化することで、どの列も多様性を達成している関係モデルに変換する。すなわち、以下で説明する実施形態のデータ編集装置、データ編集方法およびデータ編集プログラムでは、QIとSAの設定を必要とせず、プライバシーに配慮した、属性間の関係を分析できる一般化を行う。一般化後の関係モデルは、サンプルのプライバシーに配慮して属性間の関係を分析することができる。たとえば、個票データに含まれている誰か一人について、n列のうちn−1列までの情報を知っている者が見ても、残りの1列の情報が多様化されているため、高いプライバシーの保護を実現することができる。
<データ編集装置>
図4は、データ編集装置100の機能ブロックの例を示す図である。
データ編集装置100は、入力部102、一般化部104、出力部106を含む。一般化部104は、匿名化部104とも呼ばれることがある。
データ編集装置100の入力部102は、以下を入力として受ける。
(I1)一般化対象の関係モデルR
(I2)関係モデルRの各列の一般化木T
(I3)各一般化木の各階層の多様性定義D
(I4)最大墨塗り行数s
関係モデルRは、各列にサンプルに対する情報が格納されている2次元の表で、たとえば、図2に示されているものである。もちろん、関係モデルRは、図2のように、サンプルは人である必要はなく、他の動物であっても、装置であってもよく、一般には任意である。
関係モデルRの各列の一般化木Tは、各値の分類関係を示した木構造データである。一般化木Tには、階層と、各階層における値(一般化値とも呼ばれる)が定義され、階層0を任意値"*"とし、階層数が大きくなるにつれ、一般化の程度が低くなる。つまり階層数が大きくなるにつれ、抽象から具象に移行する。一般化木は、一般化情報と呼ばれることもある。
図5は「生年」の一般化木の例である。図5では、図2に出現している値に関する部分だけを表現しているが、それ以外の値に関する部分があっても良い。図5は深さ3までの3階層がある。木の根の方向にエッジを辿るにつれ、数字が一般化されている。根まで一般化することは墨塗りに相当するが、便宜上これを階層0と呼ぶ。たとえば、値1989は、階層3では1989であり、階層2に一般化すると“198?”であり、階層1に一般化すると“19??”である。さらに、階層0に一般化すると“*”である。ここで“?”は任意の1桁の数字であり、“*”は任意の桁数の任意の数である。
図6は「郵便番号」の一般化木の例を示す図であり、図7は「趣味」の一般化木の例を示す図である。
関係モデルRは図2に示されているものとする。このとき、一般化木Tとして、図2の「生年」から図5に示されているものへ、図2の「郵便番号」から図6に示されているものへ、図2の「趣味」から図7へ、の関係を有する写像を以下の説明で用いる。
各一般化木の各階層の多様性定義Dは、列名aと階層lの組から多様性定義への写像D:(a、l)→dとする。多様性定義dは、度数分布から性質を満たすか否かの論理値への写像d:F→1/0とする。さらに、写像dは、次の性質を持つ写像とする。
(d1)単調性:(d(F1)=1)∧(d(F2)=1)⇒d(F1+F2)=1。ただし、F1+F2 は度数分布同士の和である。
(d2)階層単調性:d(F)=1⇒d’(F’)=1。ただし、d’はdより1つだけ小さい階層での多様性定義で、F’はd’の階層での度数分布、すなわちFをd’の階層に一般化したものである。
図8は、各一般化木の各階層の多様性定義の例を示す図である。図8は上記の一般化木Tに対応する写像Dの例である。
たとえば、dを生年:3の多様性定義とする。このときdはFに10の位が異なる値があるときにのみ真(“1”)となるので、たとえば、F={“1970”:1、“1989”:2}⇒ d(F)=1、F={“1970”:2、“1978”:2}⇒d(F)=0などが成り立つ。また、多様性定義dをはじめ、図8の各多様性は単調性および階層単調性を満たす。たとえば、F={“1970”:1、“1989”:2}⇒d(F1)=1、F2={“1970”:2、“1989”:1}⇒d(F2)=1 であり、d(F1+F2)=d({“1970”:3、“1989”:3})=1であるため、確かに単調性に矛盾しない。また、F1={“1970”:1、 “1989”:2}⇒d(F1)=1であり、d’(F1’)=d’(“197?”:1、“198?”:2)=1であるため、確かに階層単調性に矛盾しない。なお、各列の階層0の多様性定義は常に真(“1”)を返す写像とする。このような写像Dを以下の説明で用いる。
最大墨塗り行数sは、関係モデルRの行数未満の非負整数とする。以下の説明ではs=2とする。
データ編集装置100の出力部106は、一般化部104の結果として、一般化情報の集合、およびその要素の1つである一般化情報Gにより一般化した後の関係モデルを出力する。
一般化情報Gは、{列名:階層}の集合と、墨塗りすべき行番号集合の組とする。{列名:階層}は各列のものが高々1つずつあるものとする。階層=0の列名のデータはなくても良い。以下では、行番号は1行目から順番に0、1、・・・によってインデックスされるものとする。一般化情報Gは、たとえばG=({生年:2、郵便番号:1、趣味:1}、{8})などとなり得る。これは「生年」を階層2に一般化、「郵便番号」を階層1に一般化、「趣味」を階層1に一般化、9行目を墨塗り、という意味であるとする。
図9は図2に一般化情報を適用した例を示す図である。より詳細には、図9は、図2に示されている関係モデルを一般化情報G=({生年:2、郵便番号:1、趣味:1}、{8})に従い一般化した後の関係モデルである。「八条 八郎」についての一部の情報を知っているB社が図9を見た場合、「生年」と「郵便番号」を知っていても「趣味」はわからず、「郵便番号」と「趣味」を知っていても「生年」は詳しくはわからず、「生年」と「趣味」を知っていても「郵便番号」は詳しくはわからない。なお、墨塗りの代わりに、行を削除しても良い。
データ編集装置100の出力部106は、一般化情報の集合を図10のように表形式で出力しても良い。図10の1行目が一般化情報Gである。データ編集装置100の出力部106から出力される集合は、一般化された関係モデルと呼ばれることもある。
多様性定義Dの単調性および階層単調性により、ある一般化情報Gが多様性定義Dを達成するとき、ある一般化情報G以下の{列名:階層}集合を持つ一般化情報Gは全て多様性定義Dを達成する。それにより、一般化情報Gを求めやすくなる利点がある。なお、列名:階層集合の大小は、各列の階層の大小で判定する。たとえば、P1={生年:2、郵便番号:1}、P2={生年:1、郵便番号:1}、P3={生年:1、郵便番号:2}とすると、P1>P2、P3>P2であり、P1とP3の大小は決められない。
データ編集装置100の一般化部104では、入力部102で受けた関係モデルRがn列ある場合、任意のn−1列について、それらの値が一緒の行について残りの列の値に多様性があるように一般化する。一般化部10は、列の冪集合による束構造について、小さい集合から順に、多様性を達成するよう一般化を試みてもよい。この一般化は、l−多様化と類似しているが、各列で多様性判定が異なるという点で、l−多様化とは異なっている。
またデータ編集装置100の一般化部104は、各変換後の関係モデル(2次元の表)で、最大墨塗り行数s以下を削除すれば達成しないか繰り返し検証する機能を有する。出力部106は、最大墨塗り行数s以上の数の行を削除した場合は、結果を出力しなくても良い。
データ編集装置100の入力部102で、関係モデルRとして図2に示されているもの、一般化木Tとして図5〜図7に示されているもの、多様性定義Dとして図8に示されているもの、最大墨塗り行数s=2、を入力として受け入れたときの、データ編集装置100の一般化部104の機能について説明する。
データ編集装置100の入力部102は、関係モデルRの各列名の{列名:最大階層}を要素とする集合Cを用意する機能を有する。関係モデルRの列名は{生年、郵便番号、趣味}であり、それぞれの最大階層は一般化木Tより{生年:3、郵便番号:2、趣味:2}なので、C={{生年:3}、{郵便番号:2}、 {趣味:2}}である。
データ編集装置100の一般化部104は、集合Cの各要素Pに対し、多様性定義Dを満たす最大の階層を要素とする集合Oを用意する機能を有する。たとえば、要素P={生年:3}の場合、多様性を満たす最大の階層は{生年:3}で墨塗りは不要である。また、要素P={郵便番号:2}の場合、多様性を満たす最大の階層は{郵便番号:2}であり、墨塗り不要である。さらに、要素P={趣味:2}の場合、多様性を満たす最大の階層は{趣味:2}で墨塗りは不要である。よって、集合O={({生年:3}、{})、({郵便番号:2}、{})、({趣味:2}、{})}となる。
ここで、「多様性を満たす」、「多様性を達成する」という言葉は、「多様性定義Dを満足する」と同義で用いられ得る。
データ編集装置100の一般化部104は、列名集合の異なる全ての2つの一般化情報G∈Oの{列名:階層}の組み合わせについて、重複列名について階層を2つの最小値として融合した{列名:階層}をそれぞれ求め、それらを集合Cとし、集合Cから階層が極大でない要素を削除する機能を有する。
また、データ編集装置100の一般化部104は、集合Oを空にし、集合Cの各要素Pにつき、多様性定義Dを満たす全ての極大の階層を集合Oに追加する機能を有する。
また、データ編集装置100の一般化部104は、集合Oの要素のうち、階層が正値である列名が1つ以下のものを削除する機能を有する。階層が正値である列名が1つ以下の一般化情報が算出できなくなるが、全体の処理量を減らせるという効果がある。この機能を除いても、一般化情報は算出できるが、そのときには、階層が正値である列名が1つ以下の一般化情報による一般化は統計化で代用することができる。
さらに、データ編集装置100の一般化部104は、(関係モデルRの列数−1)回だけ、上記の処理を繰り返す機能を有している。
図2の例では、列名集合の異なる2つのG∈Oの{列名:階層}の組み合わせは、次の3通りとなる。
(1){生年:3}、{郵便番号:2}
(2){生年:3}、{趣味:2}
(3){郵便番号:2}、{趣味:2}
いずれも重複列名がないためそのまま融合し、集合C={{生年:3、郵便番号:2}、{生年:3、趣味:2}、{郵便番号:2、趣味:2}}となる。集合Cの要素は全て極大である。
たとえば、集合Cの各要素P={生年:3、郵便番号:2}の場合、多様性を満たす極大の階層は、{生年:3、郵便番号:0}で墨塗り不要と、{生年:2、郵便番号:2}で墨塗り{8}である。同様に、P={生年:3、趣味:2}の場合は({生年:2、趣味:1}、{8})と({生年:1、趣味:2}、{8})であり、P={郵便番号:2、趣味:2}の場合は({郵便番号:2、趣味:1}、{8})と({郵便番号:0、趣味:2}、{})である。よって、O={({生年:3、郵便番号:0}、{})、({生年:2、郵便番号:2}、{8})、({生年:2、趣味:1}、{8})、({生年:1、趣味:2}、{8})、({郵便番号:2、趣味:1}、{8})、({郵便番号:0、趣味:2}、{})}である。
図2の例では、集合Oの要素のうち、({生年:3、郵便番号:0}、{})と({郵便番号:0、趣味:2}、{})}はいずれも階層が正値である列名が1つしかないため、これらを削除し、O={({生年:2、郵便番号:2}、{8})、({生年:2、趣味:1}、{8})、({生年:1、趣味:2}、{8})、({郵便番号:2、趣味:1}、{8})}となる。
2回目の繰り返しの処理で、列名集合の異なる2つのG∈Oの{列名:階層}の組み合わせは、次の5通りとなる。
(1’){生年:2、郵便番号:2}、{生年:2、趣味:1}
(2’){生年:2、郵便番号:2}、{生年:1、趣味:2}
(3’){生年:2、郵便番号:2}、{生年:2、趣味:1}
(4’){生年:2、趣味:1}、{郵便番号:2、趣味:1}
(5’){生年:1、趣味:2}、{郵便番号:2、趣味:1}
ここで、データ編集装置100の一般化部104は、重複列名の階層は互いの最小値として融合する機能を有する。この機能を用いると、上記(1’)〜(5’)は、それぞれは次のようになる。
(1){生年:2、郵便番号:2、趣味:1}
(2){生年:1、郵便番号:2、趣味:2}
(3){生年:2、郵便番号:2、趣味:1}
(4){生年:2、郵便番号:2、趣味:1}
(5){生年:1、郵便番号:2、趣味:1}
これらの項目のうち、項目(3)<項目(1)、項目(4)<項目(1)、項目5<項目(2)なので、これら極大でない項目を除いて項目(1)、(2)を残し、集合C={{生年:2、郵便番号:2、趣味:1}、{生年:1、郵便番号:2、趣味:2}}となる。
次に、データ編集装置100の一般化部104は、再び、集合Oを空にし、集合Cの各要素Pにつき、多様性定義Dを満たす全ての極大の階層を集合Oに追加する。集合Cの各要素P={生年:2、郵便番号:2、趣味:1}の場合多様性を満たす極大の階層は({生年:2、郵便番号:1、趣味:1}、{8})と({生年:1、郵便番号:2、趣味:1}、{8})であり、P={生年:1、郵便番号:2、趣味:2}の場合多様性を満たす極大の階層は({生年:1、郵便番号:2、趣味:1}、{8})と({生年:1、郵便番号:0、趣味:2}、{8})である。よって、O={({生年:2、郵便番号:1、趣味:1}、{8}、({生年:1、郵便番号:2、趣味:1}、{8})、({生年:1、郵便番号:0、趣味:2}、{8})}である。この場合、データ編集装置100の一般化部104は、集合Oに削除対象となる要素はなく、何もしない。
図10は一般化情報の集合の例を示す図である。ただし、図10では階層の値が0の列に関する情報は省略している。
図10が得られたら、そこから一般化情報を一つ適当に選び、関係モデルRを一般化する。選び方は、たとえば、階層の和が最大のもの、それが複数ある場合階層の値が正値である列数がより多いもの、それが複数ある場合は文字列表現してソートしたときの最初のもの、などとする。一般的には、一般化情報を入力とし評価値を出力とする評価関数を予め用意しておき、その値が最小あるいは最大のものを選ぶ。
一般化は、関係モデルの各列aにつき、一般化木tをTから取得し、一般化情報から階層を取得し、各行の値をtのその階層の値に置換し、さらに一般化情報の墨塗りすべき行番号集合にあたる行を全て墨塗りすることでおこなう。図9は図10の最初の要素で一般化した結果である。
データ編集装置100の出力部106は、一般化情報か、変更後の関係モデルの、どちらかだけを出力しても良い。
データ編集装置100の一般化部104の集合Cの各要素Pに対し多様性定義Dを満たす最大の階層を要素とする集合Oを用意する機能について、より詳細に説明する。
データ編集装置100の一般化部104は、集合Cの各要素Pの列集合は{生年、郵便番号}なので、関係モデルRの複写をこの列範囲でPによって一般化する。
図11は、P’={生年:3、郵便番号:2}で一般化した結果を示す図である。多様性定義Dを達成するために、墨塗りすべき行集合I={0、1、・・・、8}となる。つまり、全行を墨塗りする必要がある。Iの要素数|I|=9、最大墨塗り行数s=2なので条件は成立しない。ここで、集合C={P}={{生年:3、郵便番号:2}}である。
データ編集装置100の一般化部104は、集合Cから要素を1つ削除し、Pとする。たとえば、P←{生年:3、郵便番号:2}、C←{}である。
そして、データ編集装置100の一般化部104は、Pの各列名aで且つaの階層が0より大きい列名aに対し、まず、集合Cの要素Pを要素P’に複写し、要素P’のaの階層を1だけ減じる。たとえば、P’←{生年:2、郵便番号:2}となる。
データ編集装置100の一般化部104は、まず、列名a←生年とし、要素P’の列範囲で、P’による一般化で関係モデルRが多様性を達成するために必要な黒塗り行集合Iを算出する。たとえば、Pの生年の階層は3であるため、合Cの要素Pを要素P’に複写しに複写し、要素P’のaの階層を1だけ減じる。すると、P’←{生年:2、郵便番号:2}となる。要素P’の列集合は {生年、郵便番号}なので、関係モデルRの複写をこの列範囲でP’によって一般化する。
図12は、P’={生年:2、郵便番号:2}で一般化した結果の例を示す図である。多様性定義Dを達成するために、墨塗りすべき行集合I={8}となる。図12に示されている例では、墨塗りすべき行集合Iの要素数|I|=1、最大墨塗り行数s=2なので条件が成立する。
するとデータ編集装置100の一般化部104は、集合Oに(P’、I)を追加する。結果、O={({生年:2、郵便番号:2}、{8})}となる。
次にデータ編集装置100の一般化部104は、a←郵便番号とする。Pの郵便番号の階層は2であるため、PをP’に複写し、P’のaの階層を1だけ減じる。すると、P’←{生年:3、郵便番号:1}となる。
次にデータ編集装置100の一般化部104は、P’の列集合は{生年、郵便番号}なので、Rの複写をこの列範囲でP’によって一般化する。
図13は、P’={生年:3、郵便番号:1}で一般化した結果の例を示す図である。多様性定義Dを達成するために、墨塗りすべき行集合I={0、1、・・・、8}となる。つまり、全行を墨塗りする必要がある。墨塗りすべき行集合Iの要素数|I|=9、最大墨塗り行数s=2なので条件は成立しない。そこで、CにP’を追加し、集合C={P}={{生年:3、郵便番号:1}}である。Cは空でないので、データ編集装置100の一般化部104は、集合Cから要素を1つ削除し、Pとする。データ編集装置100の一般化部104は、この集合Cが空になるまで、上でaを生年とした場合について説明したことを繰り返す機能を有する。結果、Cが空になった時点で、O={({生年:2、郵便番号:2}、{8})、({生年:2、郵便番号:1}、{8})、({生年:3、郵便番号:0}、{})}を得る。
データ編集装置100の一般化部104は、集合Oの3要素のうち({生年:2、郵便番号:1}、{8})は極大でない(他の要素({生年:2、郵便番号:2}、{8})よりP’の部分が小さい)ので、これを削除する。結果、集合O={({生年:2、郵便番号:2}、{8})、({生年:3、郵便番号:0}、{})}となる。
上記の例でデータ編集装置100の一般化部104は、極大にならない結果に対しても計算をおこなっているが、できるだけ極大にならない結果に対して計算をおこなわないようにしても良い。そのためには、たとえば計算不要な{列名:階層}を記憶しても良い。たとえばデータ編集装置100の一般化部104は、集合Oに要素を追加するとき、そのP’以下の{列名:階層}は全て計算不要集合に追加し、P’が計算不要集合に含まれているか検査する機能を有してもよい。
データ編集装置100の一般化部104の、Pに対する集合Iを作る機能について、より詳細に説明する。
データ編集装置100の一般化部104は、Pの要素pについて、以下のような処理を行う機能を有する。
データ編集装置100の一般化部104は、Pの要素pに対する多様性定義dを多様性定義Dから抽出する。たとえば、多様性定義dは、{生年:3}の多様性定義であり、図8に示されているように、10の位の値が2種類以上のとき1、さもなくば0を返す写像であっても良い。
データ編集装置100の一般化部104は、関係モデルR’のI以外の行から、pの列名以外の値が等しい行番号の集合をグループJとし、Jの集合Uを算出する。図11では、R’のI以外の行は、図11の全ての行であり、pの列名以外の列は{郵便番号}なので、図11の「郵便番号」の値が等しいグループを作り、U={{0、2、6、7}、{1、3、4、5}、{8}}となる。なお、たとえばJ={8}は(郵便番号)=(13?)のグループである。また、pの列名以外の列が{}であった場合は、R’のI以外の全行を1つのグループをJとし、U={J}とする。
データ編集装置100の一般化部104は、R’から、pの列且つJの値の度数分布を算出する。pの列は生年、J={0、2、6、7}なので、図11よりF={“1970”:1、“1972”:1、“1989”:2}となる。
データ編集装置100の一般化部104は、d(F)=1であるかを判定する機能を有する。上の例では、Fには10の位の値が7と8の2種類あるため、d(F)=1となる。
データ編集装置100の一般化部104は、全てのJの要素について、上記の機能を繰り返し適用する機能を有する。
最後の繰り返しJ←{8}になったとする。pの列は「生年」、J={8}なので、図11よりF={“2000”:1}となる。Fには10の位の値が0の1種類しかないため、d(F)=0となり、IにJの全要素を追加する。上の例では、I={8}、c=1となる。
データ編集装置100の一般化部104は、次に、p←郵便番号:2とし、pに対する多様性定義dをDから抽出する機能を有する。R’のI以外の行は図11の行{0、1、・・・、7}であり、pの列名以外の列は{生年}なので、図11の行{0、1、・・・、7}の「生年」の値が等しいグループを作り、U={{0、 1}、{2}、{3}、{4}、{5}、{6、7}} となる。J←{0、 1} となり、F={“12?”:1、 “14?”:1}となる。Fには10の位の値が2と4の2種類あるため、d(F)=1である。
全てのUの要素について繰り返し終了時には、I={2、3、4、5、6、7、8}となる。
データ編集装置100の一般化部104は、全てのpの要素について、上記の機能を繰り返し適用する機能を有する。
データ編集装置100の一般化部104は、c=0であるかどうかを判定し、c=0である場合には、Iを出力部106に渡す機能を有する。
データ編集装置100の一般化部104は、上記のcを用いることで、Iに変更があったら多様性定義Dが達成できているか再度調べる、といった機能を有している。
以上の機能によりデータ編集装置100は、関係モデルRを、s行以下で墨塗りし、多様性定義を満たすよう一般化木Tで一般化するための一般化情報の集合を得ることができる。
したがって、データ編集装置100は、各サンプル、すなわち個票データの各行のデータ提供者がみだりに知られたくない情報(たとえばl−多様化による一般化を用いる場合では、SA)と、他人でも容易に知ることができる情報(たとえばl−多様化による一般化を用いる場合では、QI)の設定を必要とせず、プライバシーに配慮した、属性間の関係を分析できる一般化を行うことができる。
図14は実施形態のデータ編集装置100の構成の例を示す図である。
このコンピュータ200は、Central Processing Unit(CPU)202、Read Only Memory(ROM)204、及びRandom Access Memory(RAM)206を備えている。コンピュータ500は、さらに、ハードディスク装置208、入力装置210、表示装置212、インターフェース装置214、及び記録媒体駆動装置216を備えている。なお、これらの構成要素はバスライン220を介して接続されており、CPU202の管理の下で各種のデータを相互に授受することができる。
Central Processing Unit(CPU)202は、このコンピュータ200全体の動作を制御する演算処理装置であり、コンピュータ200の制御処理部として機能する。
Read Only Memory(ROM)204は、所定の基本制御プログラムが予め記録されている読み出し専用半導体メモリである。CPU202は、この基本制御プログラムをコンピュータ100の起動時に読み出して実行することにより、このコンピュータ200の各構成要素の動作制御が可能になる。
Random Access Memory(RAM)206は、CPU202が各種の制御プログラムを実行する際に、必要に応じて作業用記憶領域として使用する、随時書き込み読み出し可能な半導体メモリである。
ハードディスク装置208は、CPU202によって実行される各種の制御プログラムや各種のデータを記憶しておく記憶装置である。CPU202は、ハードディスク装置208に記憶されている所定の制御プログラムを読み出して実行することにより、後述する各種の制御処理を行えるようになる。
入力装置210は、例えばマウス装置やキーボード装置であり、情報処理装置のユーザにより操作されると、その操作内容に対応付けられている各種情報の入力を取得し、取得した入力情報をCPU202に送付する。
表示装置212は例えば液晶ディスプレイであり、CPU202から送付される表示データに応じて各種のテキストや画像を表示する。
インターフェース装置214は、このコンピュータ200に接続される各種機器との間での各種情報の授受の管理を行う。
記録媒体駆動装置216は、可搬型記録媒体218に記録されている各種の制御プログラムやデータの読み出しを行う装置である。CPU202は、可搬型記録媒体218に記録されている所定の制御プログラムを、記録媒体駆動装置216を介して読み出して実行することによって、後述する各種の制御処理を行うようにすることもできる。なお、可搬型記録媒体218としては、例えばUSB(Universal Serial Bus)規格のコネクタが備えられているフラッシュメモリ、CD−ROM(Compact Disc Read Only Memory)、DVD−ROM(Digital Versatile Disc Read Only Memory)などがある。
このようなコンピュータ200を用いてデータ編集装置100を構成するには、例えば、上述の各処理部における処理をCPU202に行わせるための制御プログラムを作成する。作成された制御プログラムはハードディスク装置208若しくは可搬型記録媒体218に予め格納しておく。そして、CPU202に所定の指示を与えてこの制御プログラムを読み出させて実行させる。こうすることで、情報処理装置が備えている機能がCPU202により提供される。
<データ編集処理>
図15〜17を参照して、データ編集処理について説明する。
また、データ編集装置100が図14に示されているような汎用コンピュータ200である場合には、下記の説明は、そのような処理を行う制御プログラムを定義する。すなわち、以下では、下記に説明する処理を汎用コンピュータに行わせる制御プログラムの説明でもある。
すなわち、以下では、複数のサンプルのそれぞれに対する複数の属性の値を含む関係モデルRと、属性ごとに階層と階層のそれぞれに対応する一般化値とが定義された一般化情報Tとを用いて、階層の一つに対応する複数のサンプルの一般化値の組み合わせであって、複数の属性のうち一つの属性に対応する一般化値に対して複数の属性の他の属性に対応する一般化値が多様性を有する一般化値の組み合わせを抽出する処理をコンピュータ200に実行させることを特徴とするデータ編集プログラムが提供される。
さらに、階層の一つに対応する複数のサンプルの一般化値の組み合わせにおいて、複数の属性の一つの値に対して、複数の属性の他の全てに対する前記一般化値が、複数の属性の他の属性および前記他の属性に対応する階層によって定義される多様性定義Dを満足するために、関係モデルに含まれる複数の属性の値のうち、所定の数のサンプルに関する複数の属性の値を削除する処理をコンピュータ200に実行させても良い。
複数の属性の一つaと階層をlの組から多様性定義への写像D:(a、l)→dによって得られる写像dは、複数の属性の一つaに対する度数分布をFとして論理値への写像d:F→1/0であり、F1+F2は前記度数分布F1及びF2の和、∧を論理積演算として、
(d1)単調性:(d(F1)=1)∧(d(F2)=1)⇒d(F1+F2)=1、
(d2)階層単調性:d(F)=1⇒d’(F’)=1、
を満たす。
階層の一つに対応する複数のサンプルの一般化値の組み合わせであって、複数の属性のうち一つの属性に対応する一般化値に対して複数の属性の他の全ての属性に対応する一般化値が多様性を有する一般化値の組み合わせを抽出しても良い。
さらに、一般化情報Tを一般化木で表したとき、一般化木の根に相当する階層を含む属性を最大1つだけ含むように一般化を行っても良い。
図15は、処理の流れの例を示す図である。
処理が開始されると、S100で、データ編集装置100の入力部102は、関係モデルR、関係モデルの各列の一般化木T、各一般化木の各階層の多様性定義D、最大墨塗り行数sを入力として受入れる。
次のS102でデータ編集装置100の一般化部104は、関係モデルRの各列名の列名;最大階層を要素とする集合Cを用意する。関係モデルRの列名は{生年、郵便番号、趣味}であり、それぞれの最大階層は一般化木Tより{生年:3、郵便番号:2、趣味:2}なので、C={{生年:3}、{郵便番号:2}、 {趣味:2}}である。本ステップの処理が終わると、処理はS104に進む。
S104でデータ編集装置100の一般化部104は、集合Cの各要素Pにつき、多様性を達成する(多様性定義Dを満たす)最大の階層を要素とする集合Oを用意する。たとえば、要素P={生年:3}の場合、多様性を満たす最大の階層は{生年:3}で墨塗りは不要である。また、要素P={郵便番号:2}の場合、多様性を満たす最大の階層は{郵便番号:2}であり、墨塗り不要である。さらに、要素P={趣味:2}の場合、多様性を満たす最大の階層は{趣味:2}で墨塗りは不要である。よって、集合O={({生年:3}、{})、({郵便番号:2}、{})、({趣味:2}、{})}となる。
S104の処理について、図16を参照しながら説明する。
処理が開始されると、S200でデータ編集装置100の一般化部104は、関係モデルR、関係モデルの各列の一般化木T、各一般化木の各階層の多様性定義D、最大墨塗り行数s、{列名:階層}の組P、を入力として受入れる。
次のS202でデータ編集装置100の一般化部104は、空集合Oを用意する。本ステップの処理が終わると、処理はS204に進む。
S204でデータ編集装置100の一般化部104は、Pの列範囲で、Pによる一般化で関係モデルRが多様性を達成する(多様性定義Dを満たす)ために必要な墨塗り行集合Iを算出する。たとえば、集合Cの各要素Pの列集合は{生年、郵便番号}なので、関係モデルRの複写をこの列範囲でPによって一般化する。図11は、P’={生年:3、郵便番号:2}で一般化した結果を示す図である。多様性定義Dを達成するために、墨塗りすべき行集合I={0、1、・・・、8}となる。つまり、全行を墨塗りする必要がある。
S204の処理について、図17を参照しながら説明する。
処理が開始されると、S300でデータ編集装置100の一般化部104は、関係モデルR、関係モデルの各列の一般化木T、各一般化木の各階層の多様性定義D、最大墨塗り行数s、{列名:階層}の組P、を入力として受入れる。
次のS302でデータ編集装置100の一般化部104は、関係モデルRを関係モデルR’に複写し、関係モデルR’を集合Cの要素Pによって一般化木Tに従って一般化する。本ステップの処理が終わると、処理はS304に進む。
S304でデータ編集装置100の一般化部104は、空集合Iを用意する。本ステップの処理が終わると、処理はS306に進む。
S306でデータ編集装置100の一般化部104は、論理値cを用意し、論理値cに初期値0を代入する。すなわち、c=0となる。本ステップの処理が終わると、処理はS308に進む。
S308でデータ編集装置100の一般化部104は、集合Cの要素Pの要素pを特定する変数lをリセットする。たとえば、l=0としても良い。本ステップの処理が終わると、処理はS310に進む。
S310でデータ編集装置100の一般化部104は、lを更新し、lを使って集合Cの要素Pから要素pを得る。たとえば、lの値を1だけ増やし、それに対応する要素pを得ても良い。まず、p←{生年:3}とする。本ステップの処理が終わると、処理はS312に進む。
S312でデータ編集装置100の一般化部104は、要素p∈Pに対応する多様性定義dを多様性定義Dから抽出する。たとえば、{生年:3}の多様性定義は、「10の位の値が2種類以上のとき1、さもなくば0を返す」写像となる。本ステップの処理が終わると、処理はS314に進む。
S314でデータ編集装置100の一般化部104は、関係モデルR’の墨塗り行集合I以外の行から、要素pの列名以外の値が等しい行番号の集合をグループJとし、Jの集合Uを算出する。図11では、R’のI以外の行は、図11の全ての行であり、pの列名以外の列は{郵便番号}なので、図11の「郵便番号」の値が等しいグループを作り、U={{0、2、6、7}、{1、3、4、5}、{8}}となる。なお、たとえばJ={8}は(郵便番号)=(13?)のグループである。また、pの列名以外の列が{}であった場合は、R’のI以外の全行を1つのグループをJとし、U={J}とする。本ステップの処理が終わると、処理はS316に進む。
S316でデータ編集装置100の一般化部104は、集合Uの要素を特定する変数mをリセットする。たとえば、m=0としても良い。本ステップの処理が終わると、処理はS318に進む。以下では、Uの各要素について、S322〜S328を繰り返す。
S318でデータ編集装置100の一般化部104は、mの更新を行う。たとえば、mの値を1だけ増やしても良い。本ステップの処理が終わると、処理はS320に進む。
S320でデータ編集装置100の一般化部104は、現在のmに対応する集合Uの要素Jを取得する。たとえば、J←{0、2、6、7}とする。本ステップの処理が終わると、処理はS322に進む。
S322でデータ編集装置100の一般化部104は、関係モデルR’から、要素pの列且つJの値の度数分布Fを算出する。たとえば、pの列は生年、J={0、2、6、7}なので、図11よりF={“1970”:1、“1972”:1、“1989”:2}となる。本ステップの処理が終わると、処理はS324に進む。
S324でデータ編集装置100の一般化部104は、d(F)=0かどうかを判定する。もし、この判定の結果が“YES”、すなわちd(F)=0である場合、処理はS326に進む。もし、この判定の結果が“NO”、すなわちd(F)≠0である場合、処理はS328に進む。たとえばF={“1970”:1、“1972”:1、“1989”:2}の場合、Fには10の位の値が7と8の2種類あるため、d(F)=1となる。この場合、処理はS326に進む。
S326でデータ編集装置100の一般化部104は、墨塗り行集合Iにmに対応する集合Uの要素Jの全要素を追加し、論理値cに1を代入(c←1)する。本ステップの処理が終わると、処理はS328に進む。
S328でデータ編集装置100の一般化部104は、集合Uの全ての要素について処理したかどうかを判定する。もし、この判定の結果が“YES”、すなわち、集合Uの全ての要素について処理した場合、処理はS330に進む。もし、この判定の結果が“NO”、すなわち集合Uの全ての要素について処理していない場合、処理はS318に戻る。
最後の繰り返しでJ←{8}になったとする。S322で、pの列は「生年」、J={8}なので、図11よりF={“2000”:1}となる。すると、S324でFには10の位の値が0の1種類しかないため、d(F)=0となり、S326でIにJの全要素を追加し、たとえば、I={8}、c=1となる。
S330でデータ編集装置100の一般化部104は、集合Cの要素Pの全ての要素について処理したかどうかを判定する。もし、この判定の結果が“YES”、すなわち、集合Uの全ての要素について処理した場合、処理はS332に進む。もし、この判定の結果が“NO”、すなわち、集合Uの全ての要素について処理していない場合、処理はS310に戻る。
2回目のS310で、p←郵便番号:2としても良い。
2回目のS312では、{郵便番号:2}の多様性定義は、図8より「10の位の値が2種類以上のとき1、さもなくば0を返す」写像となる。
2回目のS314で、R’のI以外の行は図11の行{0、1、・・・、7}であり、pの列名以外の列は{生年}なので、図11の行{0、1、・・・、7}の「生年」の値が等しいグループを作り、U={{0、 1}、{2}、{3}、{4}、{5}、{6、7}} となる。
2回目のS320では、J←{0、 1} となり、次のS322でF={“12?”:1、 “14?”:1}となる。
2回目のS324では、Fには10の位の値が2と4の2種類あるため、d(F)=1である。
S318〜S328の処理を繰り返し、全てのUの要素について繰り返し終了時には、I={2、3、4、5、6、7、8}となる。
S332でデータ編集装置100の一般化部104は、論理値cの値が0かどうかを判定する。もし、この判定の結果が“YES”、すなわち、c=0の場合、処理はS334に進む。もし、この判定の結果が“NO”、すなわち、c≠0の場合、処理はS306に戻る。
同様に処理をすると、次にS322に処理が移った時にはI={0、1、2、3、4、5、6、7、8}、c=1になっているため、再度S306に戻る。その次にS322に処理が移った時にはI={0、1、2、3、4、5、6、7、8}、c=0になっている。
S334でデータ編集装置100の出力部106は、墨塗り行集合Iを出力する。本ステップの処理が終わると、処理は図16のS206に進む。
図17のS330により、墨塗り行集合Iに変更があった場合、多様性が達成できている(多様性定義Dが満たされている)か再度調べる、といった処理を実現している。上記例のように、最初にS330に制御が移ったときは行{0、1}は多様性が達成されていると扱われているが、墨塗り行集合Iが増えたことで結局行{0、1}も多様性が達成されていないという結果が算出されている。これは、複数列で多様性定義を同時に達成するように要求するために必要な特徴的な処理である。
S206でデータ編集装置100の一般化部104は、墨塗り行集合Iの要素数|I|が最大墨塗り行数s以下であるかどうか、すなわち|I|≦sであるかどうかを判定する。もし、この判定の結果が“YES”、すなわち、墨塗り行集合Iの要素数|I|が最大墨塗り行数s以下(|I|≦s)の場合、処理はS208に進む。もし、この判定の結果が“NO”、すなわち、墨塗り行集合Iの要素数|I|が最大墨塗り行数sより大きい(|I|>s)場合、処理はS210に進む。たとえば、Iの要素数|I|=9、最大墨塗り行数s=2の場合は、条件は成立しない。よって、処理はS210に進む。もし、条件が成立していた場合は、S208に進む。
S208でデータ編集装置100の一般化部104は、集合Cの要素Pと墨塗り行集合Iの組を要素として集合Oに追加する。たとえば、O={(P、I)}となる。本ステップの処理が終わると、処理はS242に進む。
S210でデータ編集装置100の一般化部104は、空集合Cを用意し、集合Cの要素Pを集合Cの要素に追加する。たとえば、集合C={P}={{生年:3、郵便番号:2}}である。本ステップの処理が終わると、処理はS212に進む。
S212でデータ編集装置100の一般化部104は、Cの要素が空になるまで、S212からS232までの繰り返しを開始する。本ステップの処理が終わると、処理はS214に進む。
S214でデータ編集装置100の一般化部104は、集合Cから要素を1つ削除し、Pとする。たとえば、P←{生年:3、郵便番号:2}、C←{}とする。本ステップの処理が終わると、処理はS216に進む。
S216でデータ編集装置100の一般化部104は、Pの列名aのそれぞれについて、S216からS230までの繰り返しを開始する。本ステップの処理が終わると、処理はS218に進む。
S218でデータ編集装置100の一般化部104は、集合Cの要素Pの一つの列名aを取得する。たとえば、a←生年とする。本ステップの処理が終わると、処理はS224に進む。
S218でデータ編集装置100の一般化部104は、集合Cの要素Pの列名aの階層が0より大きいかどうかを判定する。もし、この判定の結果が“YES”、すなわち、集合Cの要素Pの列名aの階層が0より大きい場合、処理はS220に進む。もし、この判定の結果が“NO”、すなわち、集合Cの要素Pの列名aの階層が0より大きくない場合、処理はS230に進む。たとえば、Pの生年の階層は3であるので、処理はS220に進む。
S220でデータ編集装置100の一般化部104は、要素Pを要素P’に複写し、要素P’のaの階層を1だけ減じる。たとえば、P’←{生年:2、郵便番号:2}とする。本ステップの処理が終わると、処理はS222に進む。
S222でデータ編集装置100の一般化部104は、P’の列範囲で、P’による一般化で関係モデルRが多様性を達成する(多様性定義Dを満たす)ために必要な墨塗り行集合Iを算出する。たとえば、要素P’の列集合は {生年、郵便番号}なので、関係モデルRの複写をこの列範囲でP’によって一般化する。図12は、P’={生年:2、郵便番号:2}で一般化した結果の例を示す図である。多様性定義Dを達成するために、墨塗りすべき行集合I={8}となる。図12に示されている例では、墨塗りすべき行集合Iの要素数|I|=1、最大墨塗り行数s=2なので条件が成立する。
S222の処理は、S204の処理と同様であり、図17に示されているので、繰り返しの説明は省略する。本ステップの処理が終わると、処理はS224に進む。
S224でデータ編集装置100の一般化部104は、墨塗り行集合Iの要素数|I|が最大墨塗り行数s以下であるかどうか、すなわち|I|≦sであるかどうかを判定する。もし、この判定の結果が“YES”、すなわち、墨塗り行集合Iの要素数|I|が最大墨塗り行数s以下(|I|≦s)の場合、処理はS226に進む。もし、この判定の結果が“NO”、すなわち、墨塗り行集合Iの要素数|I|が最大墨塗り行数sより大きい(|I|>s)場合、処理はS234に進む。|I|=1、 s=2の場合は条件が成立し、S228に進む。
S226でデータ編集装置100の一般化部104は、集合Cの要素P’と墨塗り行集合Iの組を要素として集合Oに追加する。たとえば集合Oに(P’、I)を追加する。結果、O={({生年:2、郵便番号:2}、{8})}となる。本ステップの処理が終わると、処理はS230に進む。
S228でデータ編集装置100の一般化部104は、集合Cに要素P’を追加する。本ステップの処理が終わると、処理はS230に進む。
S230でデータ編集装置100の一般化部104は、要素Pの全ての列について、S216〜S228の処理を行ったかどうかを判定する。もし、この判定の結果が“YES”、すなわち、要素Pの全ての列について、S216〜S228の処理を行った場合、処理はS232に進む。もし、この判定の結果が“NO”、すなわち、要素Pの全ての列について、S216〜S228の処理を行っていない場合、処理はS216に戻る。たとえば、a←郵便番号とし、S224に戻る。
2回目のS218では、Pの郵便番号の階層は2であるため、処理はS220に進む。
2回目のS220でPをP’に複写し、P’のaの階層を1だけ減じる。すると、P’←{生年:3、郵便番号:1}となる。
2回目のS222では、P’の列集合は{生年、郵便番号}なので、Rの複写をこの列範囲でP’によって一般化する。図13は、P’={生年:3、郵便番号:1}で一般化した結果の例を示す図である。多様性定義Dを達成するために、墨塗りすべき行集合I={0、1、・・・、8}となる。つまり、全行を墨塗りする必要がある。
2回目のS224では、墨塗りすべき行集合Iの要素数|I|=9、最大墨塗り行数s=2なので条件は成立しない。よって、処理はS228に進む。
S228でデータ編集装置100の一般化部104は、CにP’を追加し、集合C={P}={{生年:3、郵便番号:1}}である。
S232でデータ編集装置100の一般化部104は、集合Cの全ての要素Pについて、S212〜S230の処理を行ったかどうかを判定する。もし、この判定の結果が“YES”、すなわち、集合Cの全ての要素Pについて、S212〜S230の処理を行った場合、処理はS234に進む。もし、この判定の結果が“NO”、すなわち、集合Cの全ての要素Pについて、S212〜S230の処理を行っていない場合、処理はS212に戻る。
たとえば、Cは空でない場合、データ編集装置100の一般化部104は、集合Cから要素を1つ削除し、Pとする。つまり、データ編集装置100の一般化部104は、この集合Cが空になるまで、S214〜S232の処理を繰り返す。結果、Cが空になった時点で、O={({生年:2、郵便番号:2}、{8})、({生年:2、郵便番号:1}、{8})、({生年:3、郵便番号:0}、{})}を得る。
S234でデータ編集装置100の一般化部104は、集合Oから、極大でない要素P’を持つ要素を削除する。たておば、集合Oの3要素のうち({生年:2、郵便番号:1}、{8})は極大でない(他の要素({生年:2、郵便番号:2}、{8})よりP’の部分が小さい)ので、これを削除する。結果、集合O={({生年:2、郵便番号:2}、{8})、({生年:3、郵便番号:0}、{})}となる。本ステップの処理が終わると、処理はS236に進む。
S236でデータ編集装置100の出力部106は、集合Oを出力する。本ステップの処理が終わると、処理は図15のS106に進む。
図16では、|I|>sの場合はその墨塗り行集合Iは使用しないため、図17のS326の後などで|I|>sとなった場合に、データ編集装置100の出力部106は、すぐに墨塗り行集合Iを出力して図17に示されている処理を終了しても良い。そうすることで、処理量を減らす効果がある。
S106でデータ編集装置100の一般化部104は、関係モデルの列を指定する変数iを0に設定する。
次のS108でデータ編集装置100の一般化部104は、iの値を1だけ増やす。本ステップの処理が終わると、処理はS110に進む。
S110でデータ編集装置100の一般化部104は、列名集合の異なる全ての2つのG∈Oの{列名:階層}の組み合わせについて、重複列名について階層を2つの最小値として融合した{列名:階層}をそれぞれ求め、それらを集合Cとし、集合Cから階層が極大でない要素を削除する。図2の例では、列名集合の異なる2つのG∈Oの{列名:階層}の組み合わせは、(1){生年:3}、{郵便番号:2}、(2){生年:3}、{趣味:2}、(3){郵便番号:2}、{趣味:2}の3通りとなる。いずれも重複列名がないためそのまま融合し、集合C={{生年:3、郵便番号:2}、{生年:3、趣味:2}、{郵便番号:2、趣味:2}}となる。集合Cの要素は全て極大である。重複列名があった場合や、極大でない要素があった場合の例は、後の2回目の繰り返しの時に処理をする。本ステップの処理が終わると、処理はS112に進む。
S112でデータ編集装置100の一般化部104は、集合Oを空にし、各要素P∈Cにつき、多様性を満たす(多様性定義Dを満たす)全ての極大の階層を集合Oに追加する。本ステップの処理は、図16に示されている処理と同様である。よって、繰り返しの説明は省略する。たとえば、集合Cの各要素P={生年:3、郵便番号:2}の場合、多様性を満たす極大の階層は、{生年:3、郵便番号:0}で墨塗り不要と、{生年:2、郵便番号:2}で墨塗り{8}である。同様に、P={生年:3、趣味:2}の場合は({生年:2、趣味:1}、{8})と({生年:1、趣味:2}、{8})であり、P={郵便番号:2、趣味:2}の場合は({郵便番号:2、趣味:1}、{8})と({郵便番号:0、趣味:2}、{})である。よって、O={({生年:3、郵便番号:0}、{})、({生年:2、郵便番号:2}、{8})、({生年:2、趣味:1}、{8})、({生年:1、趣味:2}、{8})、({郵便番号:2、趣味:1}、{8})、({郵便番号:0、趣味:2}、{})}である。図2の例では、集合Oの要素のうち、({生年:3、郵便番号:0}、{})と({郵便番号:0、趣味:2}、{})}はいずれも階層が正値である列名が1つしかないため、これらを削除し、O={({生年:2、郵便番号:2}、{8})、({生年:2、趣味:1}、{8})、({生年:1、趣味:2}、{8})、({郵便番号:2、趣味:1}、{8})}となる。本ステップの処理が終わると、処理はS114に進む。
S114でデータ編集装置100の一般化部104は、集合Oの要素のうち、階層が正値である列名が1つ以下のものを削除する。本ステップの処理が終わると、処理はS116に進む。
S116でデータ編集装置100の一般化部104は、iの値が(関係モデルRの列数−1)以上であるかどうかを判定する。もし、この判定の結果が“YES”、すなわち、iの値が(関係モデルRの列数−1)以上である場合、処理はS118に進む。もし、この判定の結果が“NO”、すなわち、iの値が(関係モデルRの列数−1)以上でない場合、処理はS108に戻る。
2回目のS110の処理では、列名集合の異なる2つのG∈Oの{列名:階層}の組み合わせは、(1’){生年:2、郵便番号:2}、{生年:2、趣味:1}、(2’){生年:2、郵便番号:2}、{生年:1、趣味:2}、(3’){生年:2、郵便番号:2}、{生年:2、趣味:1}、(4’){生年:2、趣味:1}、{郵便番号:2、趣味:1}、(5’){生年:1、趣味:2}、{郵便番号:2、趣味:1}の5通りとなる。
ここで、データ編集装置100の一般化部104は、重複列名の階層は互いの最小値として融合する。すると、上記(1’)〜(5’)は、それぞれ(1){生年:2、郵便番号:2、趣味:1}、(2){生年:1、郵便番号:2、趣味:2}、(3){生年:2、郵便番号:2、趣味:1}、(4){生年:2、郵便番号:2、趣味:1}、(5){生年:1、郵便番号:2、趣味:1}となる。これらの項目のうち、項目(3)<項目(1)、項目(4)<項目(1)、項目5<項目(2)なので、これら極大でない項目を除いて項目(1)、(2)を残し、集合C={{生年:2、郵便番号:2、趣味:1}、{生年:1、郵便番号:2、趣味:2}}となる。
2回目のS112の処理では、集合Cの各要素P={生年:2、郵便番号:2、趣味:1}の場合多様性を満たす極大の階層は({生年:2、郵便番号:1、趣味:1}、{8})と({生年:1、郵便番号:2、趣味:1}、{8})であり、P={生年:1、郵便番号:2、趣味:2}の場合多様性を満たす極大の階層は({生年:1、郵便番号:2、趣味:1}、{8})と({生年:1、郵便番号:0、趣味:2}、{8})である。よって、O={({生年:2、郵便番号:1、趣味:1}、{8}、({生年:1、郵便番号:2、趣味:1}、{8})、({生年:1、郵便番号:0、趣味:2}、{8})}である。
2回目のS114でデータ編集装置100の一般化部104は、集合Oに削除対象となる要素はなく、何もしない。
S118でデータ編集装置100の出力部106は、集合Oを出力する。S118でデータ編集装置100の出力部106から出力される集合Oは、一般化された関係モデルと呼ばれることもある。出力の例は図9に示されている。
図15のS110の処理は、これまでのCの要素の列数より1列多い列集合について、S112で集合Oに含まれる可能性のある極大の{列名:階層}をCとして算出することが目的である。S110では簡単に算出しているが、S112で集合Oに含まれる可能性のない{列名:階層}をより詳細に算出しても良い。
図15のS114での処理は、階層が正値である列名が1つ以下の一般化情報が算出できなくなるが、全体の処理量を減らせるという効果がある。この処理をスキップしても一般化情報を算出できるが、階層が正値である列名が1つ以下の一般化情報による一般化は統計化で代用できる。
以上の処理例により、関係モデルRを、最大墨塗り行数s以下で墨塗りし、多様性定義Dを満たすよう一般化木Tで一般化するための一般化情報の集合が得られる。また、いずれかの一般化情報で関係モデルRを一般化した結果を得られる。これにより、個票データを、2次活用のため、プライバシー保護度合いの高い関係モデルに変換することができる。
以上の実施形態に関し、さらに以下の付記を開示する。
(付記1)
複数のサンプルのそれぞれに対する複数の属性の値を含む関係モデルと、前記属性ごとに階層と前記階層のそれぞれに対応する一般化値とが定義された一般化情報を用いて、前記階層の一つに対応する前記複数のサンプルの前記一般化値の組み合わせであって、前記複数の属性のうち一つの属性に対応する前記一般化値に対して前記複数の属性の他の属性に対応する前記一般化値が多様性を有する前記一般化値の組み合わせを抽出する
処理をコンピュータに実行させることを特徴とするデータ編集プログラム。
(付記2)
さらに、前記階層の一つに対応する前記複数のサンプルの前記一般化値の組み合わせにおいて、前記複数の属性の一つの値に対して、前記複数の属性の他の全てに対する前記一般化値が、前記複数の属性の他の属性および前記他の属性に対応する階層によって定義される多様性定義Dを満足するために、関係モデルに含まれる複数の属性の値のうち、所定の数のサンプルに関する複数の属性の値を削除するする処理をコンピュータに実行させることを特徴とする、付記1に記載のデータ編集プログラム。
(付記3)
前記複数の属性の一つaと前記階層をlの組から前記多様性定義への写像D:(a、l)→dによって得られる写像dは、前記前記複数の属性の一つaに対する度数分布をFとして論理値への写像d:F→1/0であり、F1+F2は前記度数分布F1及びF2の和、∧を論理積演算として、
(d1)単調性:(d(F1)=1)∧(d(F2)=1)⇒d(F1+F2)=1、
(d2)階層単調性:d(F)=1⇒d’(F’)=1、
を満たす、付記2に記載のデータ編集プログラム。
(付記4)
前記階層の一つに対応する前記複数のサンプルの前記一般化値の組み合わせであって、前記複数の属性のうち一つの属性に対応する前記一般化値に対して前記複数の属性の他の全ての属性に対応する前記一般化値が多様性を有する前記一般化値の組み合わせを抽出する処理をコンピュータに実行させることを特徴とする、付記1乃至3のいずれか一項に記載の編集プログラム。
(付記5)
さらに、前記一般化情報一般化木で表したとき、前記一般化木の根に相当する前記階層を含む前記属性を最大1つだけ含むように前記一般化を行う処理をコンピュータに実行させることを特徴とする、付記1乃至4のいずれか一項に記載のデータ編集プログラム。
(付記6)
コンピュータによって実行されるデータ編集方法であって、複数のサンプルのそれぞれに対する複数の属性の値を含む関係モデルと、前記属性ごとに階層と前記階層のそれぞれに対応する一般化値とが定義された一般化情報を用いて、前記階層の一つに対応する前記複数のサンプルの前記一般化値の組み合わせであって、前記複数の属性のうち一つの属性に対応する前記一般化値に対して前記複数の属性の他の属性に対応する前記一般化値が多様性を有する前記一般化値の組み合わせを抽出すること、
を含むデータ編集方法。
(付記7)
さらに、前記階層の一つに対応する前記複数のサンプルの前記一般化値の組み合わせにおいて、前記複数の属性の一つの値に対して、前記複数の属性の他の全てに対する前記一般化値が、前記複数の属性の他の属性および前記他の属性に対応する階層によって定義される多様性定義Dを満足するために、関係モデルに含まれる複数の属性の値のうち、所定の数のサンプルに関する複数の属性の値を削除することを含む、付記6に記載のデータ編集方法。
(付記8)
前記多様性定義は、前記複数の属性の一つaと前記階層をlの組から前記多様性定義への写像D:(a、l)→dによって得られる写像dは、前記前記複数の属性の一つaに対する度数分布をFとして論理値への写像d:F→1/0であり、F1+F2は前記度数分布F1及びF2の和、∧を論理積演算として、
(d1)単調性:(d(F1)=1)∧(d(F2)=1)⇒d(F1+F2)=1、
(d2)階層単調性:d(F)=1⇒d’(F’)=1、
を満たす、付記7に記載のデータ編集方法。
(付記9)
前記階層の一つに対応する前記複数のサンプルの前記一般化値の組み合わせであって、前記複数の属性のうち一つの属性に対応する前記一般化値に対して前記複数の属性の他の全ての属性に対応する前記一般化値が多様性を有する前記一般化値の組み合わせを抽出すること、を含む付記6乃至8のいずれか一項に記載のデータ編集方法。
(付記10)
さらに、前記一般化情報一般化木で表したとき、前記一般化木の根に相当する前記階層を含む前記属性を最大1つだけ含むように前記一般化を行うことを含む、付記6乃至9のいずれか一項に記載のデータ編集方法。
(付記11)
複数のサンプルのそれぞれに対する複数の属性の値を含む関係モデルと、前記属性ごとに階層と前記階層のそれぞれに対応する一般化値とが定義された一般化情報を用いて、前記階層の一つに対応する前記複数のサンプルの前記一般化値の組み合わせであって、前記複数の属性のうち一つの属性に対応する前記一般化値に対して前記複数の属性の他の属性に対応する前記一般化値が多様性を有する前記一般化値の組み合わせを抽出する一般化部、
を含むことを特徴とするデータ編集装置。
(付記12)
前記一般化部は、さらに、前記階層の一つに対応する前記複数のサンプルの前記一般化値の組み合わせにおいて、前記複数の属性の一つの値に対して、前記複数の属性の他の全てに対する前記一般化値が、前記複数の属性の他の属性および前記他の属性に対応する階層によって定義される多様性定義Dを満足するために、関係モデルに含まれる複数の属性の値のうち、所定の数のサンプルに関する複数の属性の値を削除する、付記11に記載のデータ編集装置。
(付記13)
前記多様性定義は、前記複数の属性の一つaと前記階層をlの組から前記多様性定義への写像D:(a、l)→dによって得られる写像dは、前記前記複数の属性の一つaに対する度数分布をFとして論理値への写像d:F→1/0であり、F1+F2は前記度数分布F1及びF2の和、∧を論理積演算として、
(d1)単調性:(d(F1)=1)∧(d(F2)=1)⇒d(F1+F2)=1、
(d2)階層単調性:d(F)=1⇒d’(F’)=1、
を満たす、付記11に記載のデータ編集装置。
(付記14)
前記一般化部は、前記階層の一つに対応する前記複数のサンプルの前記一般化値の組み合わせであって、前記複数の属性のうち一つの属性に対応する前記一般化値に対して前記複数の属性の他の全ての属性に対応する前記一般化値が多様性を有する前記一般化値の組み合わせを抽出する、付記11乃至13のいずれか一項に記載のデータ編集装置。
(付記15)
前記一般化部は、前記一般化情報一般化木で表したとき、前記一般化木の根に相当する前記階層を含む前記属性を最大1つだけ含むように前記一般化を行う、付記11乃至14のいずれか一項に記載のデータ編集装置。