こんにちは、株式会社ラクスで横断的にITエンジニアの育成や、技術推進、採用促進などを行っている開発管理課に所属している鈴木( @moomooya )です。
前回はデータを匿名化していく手順と、匿名化したデータを比較するための情報量の算出についてお話ししました。
今回は匿名化する中で一般化をする際の具体的な値の置き換え方法についてお話ししていこうと思います。
連載目次
- 『全文検索 〜 Elasticsearchとデータ匿名化手法』
- 『全文検索の探求 Elasticsearch(1) 』: プロジェクト方針およびElasticsearch概要
- 大量データを検索するサービスでElasticsearchはRDBの代替候補になりうるか?(Elasticsearch vs pg_bigm)』
- データ匿名化 第1回:匿名化された個人情報とは何なのか
- データ匿名化 第2回:個人情報は匿名化しても意味がないのではないか?
- データ匿名化 第3回:個人情報を匿名化するプロセス
- データ匿名化 第4回:匿名化のために行うデータ項目の一般化とは ←今読んでいる記事
- データ匿名化 第5回:データ匿名化の指標
- データ匿名化 第6回:実際の匿名化
一般化とは
前回お話させてもらいましたが
- 一般化
- 値をグルーピングした値に置き換えることで特定しにくい状態にする
- 「1989年09月14日生まれ」を「1989年生まれ」にする、など
- 一般化の前後で情報量を計測し、差分を求めることで失われた情報量を定量化する
秘匿してしまうとデータが完全に失われてしまうため、まずは出来るだけ一般化することができないかを検討すると良いでしょう。
ということです。
ただし、一言に一般化と言っても具体的な値の置き換え方は色々あります。また、前回はグルーピングした値に置き換えることで
としていましたが、これは一例に過ぎず一般化の範囲はもう少しバリエーションがあります。
それぞれについて見ていきたいと思います。
一般化の方法
一般化の方法は値の種類――日付であったり、数量であったり、自由入力テキストであったり――によって変わってきます。
日付、時刻
日付や時刻を一般化する際には大きく分けて「間隔を維持したい場合」と「間隔を維持する必要がない」ケースに分かれます。
間隔を維持する場合
レコード間の日付や時刻の分布や感覚を維持したい場合は一律n日/n時間ずらすといった固定でスライドする方法があります。
例)3日ずらす 2019/08/29 → 2019/09/02 2019/09/01 → 2019/09/04 ※2日の間隔は維持される
間隔を維持する必要がない場合
間隔を維持する必要がない場合や「だいたい同程度」「平均で同程度」の間隔になればいいケースでは、各レコードに一律の値ではなく-n 〜 +n
の範囲でランダムな値でずらす方法があります。
こちらの方がより情報量が低下(=特定しにくくなる)します。
数量、年齢
数量や年齢についてはデータの分布具合に応じて調整が必要になることがあります。
単純な一般化
[23, 30, 42, 48, 51]
を1の位で切り捨てて
[20, 30, 40, 40, 50]
などとする。いわゆる年齢についての20代、30代というのがこちらです。
基準に応じた一般化
先ほどと同じデータですが、マーケティングの年齢区分(1: 20~34, 2: 35~49, 3: 50~)などの基準で分ける分け方もあります。
[23, 30, 42, 48, 51]
上記に従うと
[1, 1, 2, 2, 3]
となります。これに性別(F: 女性, M: 男性)を組み合わせることでマーケティングでよく耳にする「F1層」などとなってきます。こちらも一般化の1例となります。
自由入力テキスト
自由入力のテキスト項目というのは匿名化を考える上で、どんな情報が含まれるのか読みにくいため厄介なものです。 対応としてはあらかじめ定義したルールに従って置き換えを行うルールベースでの一般化と統計や機械学習を利用するパターンベースの一般化があります。 それぞれルールベースでは検出漏れが少なく、モデルベースでは誤検出が少ないと言われ、ルールベースで検出した後にモデルベースで検出するのが理想とされています。 今回の取り組みではルールベースでの置き換えを試しました。
今回はElasticsearchの性能検証を行うためのテストデータだったことと、自由入力テキスト項目が特別重要というわけではなかったため、Elasticsearchと同じ形態素解析エンジンであるkuromojiを利用して形態素解析を行い、名詞の大部分を意味のない文字列(「●●●●」など)に単純に置き換えています。
例) ラクスは新宿にある会社です。 ↓ ●●●●は●●●●にある●●●●です。
まとめ
今回はデータ項目の一般化について具体的な置き換えルールについて触れました。 しかしこれらはほんの1例であり、扱うデータ項目の意味合いに応じて適切な一般化ルールを設定していく必要があります。
次回は実際にデータを置き換えた後のデータセットが「どの程度匿名化されているのか」を表現する方法についてお話ししたいと思います。
連載目次
- 『全文検索 〜 Elasticsearchとデータ匿名化手法』
- 『全文検索の探求 Elasticsearch(1) 』: プロジェクト方針およびElasticsearch概要
- 大量データを検索するサービスでElasticsearchはRDBの代替候補になりうるか?(Elasticsearch vs pg_bigm)』
- データ匿名化 第1回:匿名化された個人情報とは何なのか
- データ匿名化 第2回:個人情報は匿名化しても意味がないのではないか?
- データ匿名化 第3回:個人情報を匿名化するプロセス
- データ匿名化 第4回:匿名化のために行うデータ項目の一般化とは ←今読んでいる記事
- データ匿名化 第5回:データ匿名化の指標
- データ匿名化 第6回:実際の匿名化