(57)【要約】【課題】属性の数が多くても統計値の誤差が少ないデータ撹乱技術を提供する。【解決手段】データ撹乱装置は、・Tを行列・の転置を表すとして、各レコードの各属性の属性値を要素とする行列Xを、行列Uと行列VTとに分解する行列分解部１と、行列Uに対して、Pk-匿名性を満たす撹乱処理を行うことにより行列U'を得る撹乱部２と、行列U'と行列VTとの積を計算することにより行列Yを求める演算部３と、を備えている。【選択図】図１
2018055057.tif 000002
【特許請求の範囲】
【請求項１】
・Tを行列・の転置を表すとして、各レコードの各属性の属性値を要素とする行列Xを、行列Uと行列VTとに分解する行列分解部と、
上記行列Uに対して、Pk-匿名性を満たす撹乱処理を行うことにより行列U'を得る撹乱部と、
上記行列U'と上記行列VTとの積を計算することにより行列Yを求める演算部と、
を含むデータ撹乱装置。
【請求項２】
請求項１のデータ撹乱装置であって、
上記行列Xが２値行列である場合には、上記撹乱部は、上記行列Uに対して維持置換撹乱によるPk-匿名性を満たす撹乱処理を行うことにより行列U'を得る、
データ撹乱装置。
【請求項３】
請求項１のデータ撹乱装置であって、
上記行列Xが非負値な行列である場合には、上記行列Xの値が0でない要素に対応する要素の値が1であり上記行列Xの値が0である要素に対応する要素の値が0である行列をOとして、上記行列分解部は、上記行列Xを行列Uと行列VTとに非負値分解し、上記行列Oを行列Pと行列QTとに２値行列分解し、
上記撹乱部は、上記行列Uに対して有界ノイズ付与によるPk-匿名性を満たす撹乱処理を行うことにより行列U'を得て、上記行列Pに対して維持置換撹乱によるPk-匿名性を満たす撹乱処理を行うことにより行列P'を得て、
上記演算部は、上記行列U'と上記行列VTとの積を計算することにより行列X'を求め、上記行列P'と上記行列QTとの積を計算することにより行列O'を求め、上記行列X'を上記行列O'でマスクすることにより、行列Yを求める、
データ撹乱装置。
【請求項４】
行列分解部が、・Tを行列・の転置を表すとして、各レコードの各属性の属性値を要素とする行列Xを、行列Uと行列VTとに分解する行列分解ステップと、
撹乱部が、上記行列Uに対して、Pk-匿名性を満たす撹乱処理を行うことにより行列U'を得る撹乱ステップと、
演算部が、上記行列U'と上記行列VTとの積を計算することにより行列Yを求める演算ステップと、
を含むデータ撹乱方法。
【請求項５】
請求項１から３の何れかのデータ撹乱装置の各部としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、データベースにおける個別データを確率的手法により秘匿する技術に関する。
【背景技術】
【０００２】
データベースにおける個別データを確率的手法により秘匿しつつ（以下、「撹乱」とも呼ぶ）、秘匿したデータから統計値を推定する技術（以下、「再構築」とも呼ぶ。）として、非特許文献１，２，３の技術が知られている。
【０００３】
これらの非特許文献１，２，３の秘匿処理では、カテゴリのデータに対しては一定の確率で値をランダムに書き換え、数値のデータに対してはある確率分布に従うランダムなノイズを加算することで、秘匿処理を行っている。また、再構築処理では、様々な統計分析を可能とするため、元データの生成規則を表す確率密度関数の推定を行っている。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】五十嵐大, 長谷川聡, 納竜也, 菊池亮, 千田浩司. 数値属性に適用可能な, ランダム化によりk-匿名性を保証するプライバシー保護クロス集計. コンピュータセキュリティシンポジウム2012 論文集, 第2012 巻, pp.639-646, oct 2012.
【非特許文献２】五十嵐大, 千田浩司, 高橋克巳, "k-匿名性の確率的指標への拡張とその適用例", コンピュータセキュリティシンポジウム2009 論文集, 第2009巻, pp.1-6, oct 2009.
【非特許文献３】Rakesh Agrawal, Ramakrishnan Srikant, Dilys Thomas, "Privacy preserving olap", In Proceedings of the 2005 ACM SIGMOD international conference on Management of data, pp.251-262, ACM, 2005
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上記の従来技術では、秘匿処理の際、属性が増える（次元数が増える）につれ秘匿に要するノイズの量が増える問題があり、再構築によって得られる統計値の誤差が増える可能性があった。
【０００６】
この発明は、属性の数が多くても統計値の誤差が少ないデータ撹乱装置、方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
この発明の一態様によるデータ撹乱装置は、・Tを行列・の転置を表すとして、各レコードの各属性の属性値を要素とする行列Xを、行列Uと行列VTとに分解する行列分解部と、行列Uに対して、Pk-匿名性を満たす撹乱処理を行うことにより行列U'を得る撹乱部と、行列U'と行列VTとの積を計算することにより行列Yを求める演算部と、を備えている。
【発明の効果】
【０００８】
属性の数が多くても統計値の誤差を少なくすることができる。
【図面の簡単な説明】
【０００９】
【図１】データ撹乱装置の例を説明するためのブロック図。
【図２】データ撹乱方法の例を説明するための流れ図。
【図３】撹乱の対象となるデータの例を示す図。
【図４】実施形態及び第一実施例の処理の流れの概要を示す図。
【図５】第二実施例の処理の流れの概要を示す図。
【発明を実施するための形態】
【００１０】
［記法］
まず、記法の定義を行う。行列の要素、例えば行列Hのi行j列の要素を、hijと表すこととする。このように、２つの添字がある行列は、その行列の要素を意味する。属性数をMとする。属性として、カテゴリ属性及び数値属性の少なくとも一方を取り扱う。j番目の属性の取りうる値の集合をAjと表す。そして、全属性の集合をA=A1×…×AMとする。i番目のユーザのj番目の属性の値をxijと表し、i番目のユーザの全属性の値をベクトルxi=(xi1,…,xij,…,xiM)T∈Aと表し、全ユーザの全属性の値を表す行列Xを以下のように表す。
【００１１】
【数１】
2018055057.tif 000003
【００１２】
元データは確率密度PX(x)を持つ確率分布からN個サンプルしたものとする(x∈A)。また、匿名化データは、条件付き確率PY|Xに従ってデータがランダムに撹乱されており、撹乱後の匿名化データをy∈Aとする。
【００１３】
図３にデータの例を示す。このデータは、あるユーザが商品をいくつ買ったかを表すデータであり、属性が商品となり、属性の値はその属性のものを購入した数を表す。各ユーザx1,x2,x3,x4が購入した商品は、x1=(0,2,0,3)T,x2=(1,0,2,0)T,x3=(0,1,0,3)T,x4=(0,0,4,0)Tとなる。この例のように、0が多いデータを疎なデータと呼ぶ。
【００１４】
［従来の手法］
データベースの「撹乱」とは、元データに撹乱処理を施し、秘匿データベースを作成することである。
【００１５】
このデータベースに対し、統計分析を行うことにより、統計結果を得ることができる。この統計結果を得る処理を「再構築」とも言う（例えば、参考文献１参照。）。
〔参考文献１〕五十嵐大, 千田浩司, 高橋克巳, "多値属性に適用可能な効率的プライバシー保護クロス集計", コンピュータセキュリティシンポジウム2008 論文集, 第2008 巻, pp. 497-502, oct 2008.
【００１６】
この発明は、データベースの「撹乱」に関するものである。撹乱の手法として、カテゴリカルな属性であるカテゴリ属性に対しては非特許文献２の手法を、数値属性に対しては非特許文献１の手法を例えば用いることができる。
【００１７】
まず、非特許文献２等に記載されたカテゴリ属性の撹乱について説明する。カテゴリ属性に対しては、維持確率ρで属性値を維持し、1-ρの確率で属性値をランダムに変更することで、データを秘匿化する処理が行われる。すなわち、あるカテゴリ属性Ajの属性値v∈Ajがv'∈Ajに変わる条件付き確率PY|XAj(v'|v)は、維持確率ρjにより、以下のように表される。
【００１８】
【数２】
2018055057.tif 000004
【００１９】
カテゴリ属性に対する撹乱は、この条件付き確率に従うランダムな処理が施される。なお、維持確率ρjは公開されるものとする。
【００２０】
次に、非特許文献１等に記載された数値属性の撹乱について説明する。数値属性に対しては、有界ラプラス分布に従うノイズを付与することで撹乱を行う。有界ラプラス分布とは、ラプラス分布の上限と下限が定まっている分布（有界ラプラス分布）のことであり、この有界ラプラス分布に従う乱数を付与することで、データを秘匿化する。ある数値属性Aj（値域が[aj,bj],aj∈R,bj∈R)の属性値vがv'に変わる条件付き確率密度PY|XAj(v'|v)は、有界ラプラス分布のパラメータφjにより、以下のように表される。
【００２１】
【数３】
2018055057.tif 000005
【００２２】
ここで、以下に示すγj(v)は、ラプラス分布を有界にしたことによって生じた、有界ラプラス分布を調整するための関数である。
【００２３】
【数４】
2018055057.tif 000006
【００２４】
数値属性に対する撹乱は、この条件付き確率密度に従うランダムな処理が施される。より具体的には、式(2)に従う乱数を発生させ、行列の各値xijに加算することで秘匿処理を行う。なお、有界ラプラス分布のパラメータφjは公開されるものとする。
【００２５】
以下、パラメータρj,φjの決定について説明する。維持置換撹乱のパラメータρj及び有界ラプラス分布のパラメータφjは、「撹乱後のテーブルのある人のレコードを1／k以上に確信することができない」(Pk-匿名性)を満たすようにする。kはセキュリティパラメータであり、予め定められた定数である。
【００２６】
【数５】
2018055057.tif 000007
【００２７】
具体的には、式(4)が成立するようρj,φjを決めることにより、維持置換撹乱及び有界ラプラスノイズ付与による撹乱データは、Pk-匿名性というある一定の秘匿度合いを満たした秘匿データを作成できる。
【００２８】
図３に示すデータを考えた際、商品が増える(すなわち、Mが増える)ほど、式(4)を満たすために強い撹乱が必要(ρjは小さく、φjは大きくなる)となるゆえ、誤差が大きくなってしまう。また、図３のデータの各値を数値データと考え、有界ラプラス分布に従うノイズを付与した場合、0が0でなくなってしまう。すなわち、疎でなくなってしまう。0には意味があるゆえ、なるべく0は残したいという要請がある。疎なデータを作るために、各値をカテゴリデータと考え、維持置換撹乱を行った場合、数値の持つ順序性が損なわれるため、誤差が大きくなってしまう可能性がある。それゆえ、属性数(次元数)Mが大きく疎なデータであっても、疎な性質を保ちつつ誤差の少ないデータを生成することが求められていた。
【００２９】
［実施形態］
以下、この発明の実施形態について説明する。
【００３０】
データ撹乱装置及び方法は、誤差の少ない撹乱を実現するため、データを次元圧縮し、低次元データに撹乱する。図４に、実施形態の処理の流れの概要を示す。
【００３１】
データ撹乱装置は、図１に示すように、行列分解部１、撹乱部２及び演算部３を例えば備えている。データ撹乱方法は、データ撹乱装置の各部が、図２及び以下に説明するステップＳ１からステップＳ３の処理により例えば実現される。
【００３２】
＜行列分解部１＞
行列分解部１は、行列Xを、行列Uと行列VTとに分解する（ステップＳ１）。行列Xは、各レコードの各属性の属性値を要素とする行列であり、撹乱の対象となるデータである。・を行列として、・Tは行列・の転置を表す。
【００３３】
より詳細には、行列分解部１は、元データX∈RN×Mを、行列U∈RN×rと行列V∈RM×rの転置との２つの行列の積で近似する。ただし、N,M,rを所定の正の整数として、r<Mとする。この処理を、行列分解又は行列のランクr近似と呼ぶ。
【００３４】
得られた行列U及び行列Vは、撹乱部２に出力される。
【００３５】
＜撹乱部２＞
撹乱部２は、行列Uに対して、Pk-匿名性を満たす撹乱処理を行うことにより行列U'を得る（ステップＳ２）。得られた行列U'は、Pk-匿名性を満たす。得られた行列U'は、演算部３に出力される。
【００３６】
ここで、Pk-匿名性を満たす撹乱処理は、例えば、維持置換撹乱又は有界ノイズ付与である。
【００３７】
より詳細には、撹乱部２は、行列Uに対しPk-匿名性を満たす撹乱処理(維持置換撹乱や有界ノイズ付与など)を施したU'を得る。U'は、Pk-匿名性を満たす。
【００３８】
＜演算部３＞
演算部３は、行列U'と行列VTとの積を計算することにより行列Yを求める（ステップＳ３）。すなわち、演算部３は、撹乱済みのU'とVとの積U'VTにより、N×M行列Yを得る。求まった行列Yは、Pk-匿名性を満たしている。求まった行列Yが、撹乱されたデータとなる。
【００３９】
上記の手法により、従来より少ないノイズ量で同等のPk-匿名性を達成可能である。従来どおりにXをPk-匿名化する場合、属性数Mで式(4)を満たすようにパラメータρjやφjを求める必要があった。それに対し、属性数がr(<M)な行列Uに対して式(4)を評価することにより、撹乱度合いが少なくなる。
【００４０】
以下、この実施形態の２個の実施例（第一実施例、第二実施例）について説明する。
［［第一実施例］］
第一実施例は、Xが２値行列の場合の実施例を示す。ここで、２値行列とは、行列の要素が０又は１の行列のことである。図４に、第一実施例の処理の流れの概要を示す。
【００４１】
この場合、行列分解部１は、例えば参考文献２、参考文献３の手法で２値行列Xを分解する（ステップＳ１）。
〔参考文献２〕Zhongyuan Zhang, Tao Li, Chris Ding, Xiangsun Zhang, "Binary matrix factorization with applications", In Seventh IEEE International Conference on Data Mining (ICDM 2007), pp.391-400. IEEE, 2007
〔参考文献３〕Siamak Ravanbakhsh, Barnabas Poczos, Russell Greiner, "Boolean matrix factorization and noisy completionvia message passing", In Proceedings of the 33nd International Conference on Machine Learning, pp.945-954, 2016
【００４２】
ここで、２値行列の分解とは、２値行列X∈{0,1}N×Mを2値行列U∈{0,1}N×r,V∈{0,1}M×rに分解することである。
【００４３】
【数６】
2018055057.tif 000008
【００４４】
行列Uの要素は０又は１の２値しかとらない。それゆえ、行列Uを撹乱する場合、行列Uの要素をカテゴリ値として捉え、維持置換撹乱を用いることで、誤差が少なくなることが期待できる。このため、第一実施例では、撹乱部２は、行列Uに対して、非特許文献２等に記載されたカテゴリ属性の撹乱、言い換えれば維持置換撹乱によるPk-匿名性を満たす撹乱処理を行うことにより行列U'を得る（ステップＳ２）。
【００４５】
その際、撹乱部２は、所定のセキュリティパラメータkに基づいて、式(4)が成立するように、維持確率ρjを求める。撹乱部２は、この求まった維持確率ρjにより維持置換撹乱を行う。
【００４６】
演算部３の処理は、上記の処理と同様である。
【００４７】
上記の手法により、従来より少ないノイズ量で同等のPk-匿名性を達成可能である。従来どおりにXをPk-匿名化する場合、属性数Mで式(4)を満たすようにパラメータρjやφjを求める必要があった。それに対し、属性数がr(<M)な行列Uに対して式(4)を評価することにより、撹乱度合いが少なくなる。
【００４８】
このように、行列分解と撹乱との組み合わせの際、２つの行列U,Vそれぞれに対しノイズを加えるのでなく、1つの行列Uに対してのみノイズを加えている点がポイントの１つである。
【００４９】
［［第二実施例］］
第二実施例は、Xが非負値な行列の場合の実施例である。Xは非負値かつ疎な行列であってもよい。図５に、第二実施例の処理の流れの概要を示す。
【００５０】
行列分解部１は、行列Xを行列Uと行列VTとに非負値分解し、行列Oを行列Pと行列QTとに２値行列分解する（ステップＳ１）。
非負値な行列Xを非負値分解は、例えば参考文献４の手法で行うことができる（ステップＳ１）。
〔参考文献４〕Daniel D Lee, H Sebastian Seung, "Algorithms for non-negative matrix factorization", In Advances in neural information processing systems, pp. 556-562, 2001
【００５１】
ここで、非負値な行列の非負値分解とは、非負値行列X∈R＋N×Mを非負値行列U∈R＋N×r,V∈R＋M×rに分解することをいう。
【００５２】
【数７】
2018055057.tif 000009
【００５３】
特に疎な行列を対象とする場合は、疎な要素のみに注目し、行列分解した結果が元行列の疎要素のみと近くなるように分解が行われる。非負値かつ疎な行列をX+とする。
【００５４】
行列Oは、行列Xの値が0でない要素に対応する要素の値が1であり上記行列Xの値が0である要素に対応する要素の値が0である行列である。行列Oのことを、行列O{0,1}N×M、行列O{0,1}とも表記する。行列O{0,1}N×Mのi行j列の要素oijを以下のように定義される。
【００５５】
【数８】
2018055057.tif 000010
【００５６】
疎な場合の非負値行列分解は、以下の最適化問題を解くことにより得られる。ここで、＊は行列の要素積を表す。すなわち、＊は２個の行列の同じ位置の要素の値をかけることを表す。また、||・||Froは、・のフロベニウスノルムを表す。
【００５７】
【数９】
2018055057.tif 000011
【００５８】
この場合、非ゼロ要素の誤差のみ少なくよう行列分解を行うため、全要素を考慮した行列分解より、小さいランクで誤差が少なく行列分解が可能となる。ただし、誤差が少ないのはあくまで非ゼロ要素のみであり、U+V+Tの結果は疎でなくなってしまう。それゆえ、非負値かつ疎な行列を、行列分解を用いて撹乱を行う場合は、非ゼロ要素を表す情報が別途必要となる。
【００５９】
そこで、Xが非負値かつ疎な行列である場合には、上記の手法と組み合わせることで、疎性を保ったデータ生成方法を示す。
【００６０】
行列分解部１は、O{0,1}を、２値行列分解した結果は、以下のようになる。
【００６１】
【数１０】
2018055057.tif 000012
【００６２】
そして、撹乱部２は、U+∈R＋N×rと、P∈R0,1N×rとを水平結合した新たな行列S∈RN×2Rに対し、撹乱処理を行う。その際、U+の要素は正の実数であるゆえ有界ノイズ付与を、P{0,1}の要素は0,1であるゆえ第一実施例の手法と同様に維持置換撹乱を適用する。
【００６３】
言い換えれば、撹乱部２は、行列Uに対して有界ノイズ付与によるPk-匿名性を満たす撹乱処理を行うことにより行列U'を得て、行列Pに対して維持置換撹乱によるPk-匿名性を満たす撹乱処理を行うことにより行列P'を得る（ステップＳ２）。
【００６４】
演算部３は、撹乱されたS'をU+'及びP'に分割し、それぞれV+T及びQTを掛け合わせることで、元の行列に戻す。そして、撹乱部３は、O'でX'をマスクすることにより、撹乱されたデータを得る。
【００６５】
マスクとは、O'の１である要素に対応するX'の要素の値をそのままにし、O'の０である要素に対応するX'の要素の値を０にする処理である。例えば、行列O'と行列X'との要素積を計算することにより、マスク処理を行うことができる。
【００６６】
このようにして、演算部３は、行列U'と行列VTとの積を計算することにより行列X'を求め、行列P'と行列QTとの積を計算することにより行列O'を求め、行列X'を行列O'でマスクすることにより、行列Yを求める（ステップＳ３）。
【００６７】
また、第二実施例で示した、疎な情報を別途取り出しそれを同時に撹乱する手法は、 通常の場合次元数が2Mとなり撹乱度合いが大きくなるため、行われてこなかった。これに対し、それに対し第二実施例では、行列分解により、次元数を2r<2Mまで減らすことができ、撹乱度合いが少なくなる。通常では考えられない疎な情報を別途取り出し同時に撹乱するという方法を行った点がポイントの１つである。
【００６８】
[プログラム及び記録媒体]
データ撹乱装置における各処理をコンピュータによって実現する場合、データ撹乱装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、データ撹乱装置の処理がコンピュータ上で実現される。
【００６９】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。
【００７０】
また、各処理手段は、コンピュータ上で所定のプログラムを実行させることにより構成することにしてもよいし、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【００７１】
[変形例]
その他、この発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
【図１】
2018055057.tif 000013
【図２】
2018055057.tif 000014
【図３】
2018055057.tif 000015
【図４】
2018055057.tif 000016
【図５】
2018055057.tif 000017