(本開示の基礎となった知見)
従来のk匿名化方法は、電話番号、生年月日、又は位置情報のように一部を伏せても意味のある情報に対して適用できる方法であり、TV(テレビ)でどのチャンネルを見ていたかというような一部を伏せることができない情報には適用できない。
一方で、このような履歴情報から個人を特定できないようにする方法としては、ある定められた期間ごと、例えば、1か月ごとに仮IDを付け替えるなどの方法が考えられる。
しかし、例えば1か月ごとに仮IDを付け替えると、その期間を超えてデータ分析ができず、例えば1年前の情報との比較分析ができないという課題がある。
そこで、本開示では、k−匿名性を満たしているユーザに関しては、仮IDの変更を行わず、k−匿名性を満たしていないユーザのみ仮IDを変更することで、個人を特定できない状態を作りつつ、かつ、仮IDの付け替え期間を長くする方法を提供する。
本開示の一態様に係る履歴情報匿名化方法は、周期的に複数のユーザ装置から収集された複数の履歴情報を匿名化する履歴情報匿名化方法であって、現在の周期において前記複数のユーザ装置から収集された複数の履歴情報の各々を、収集先のユーザ装置に対応付けられたIDに対応付ける対応付けステップと、現在及び過去の周期において対応付けられた履歴情報の内容が同一である複数のIDをグループごとにまとめるグループ化ステップと、前記複数のグループの各々が匿名性を満たしているかを判定する匿名性判定ステップと、前記複数のグループのいずれかが匿名性を満たしていないと判定された場合、前記複数のユーザ装置に対応付けられている複数のIDのうちの一部のIDのみを変更し、当該IDが変更されたユーザ装置から現在の周期において収集された履歴情報の対応付け先を当該ユーザ装置の変更前のIDから変更後のIDに変更するID変更ステップとを含む。
これによれば、グループの匿名性が満たされない場合に、一部のIDのみが変更される。これにより、個人を特定できない状態を作りつつ、かつ、IDの付け替え期間を長くすることができるので、匿名化処理による情報の損失を抑制できる。
例えば、前記ID変更ステップでは、前記一部のIDとして、匿名性を満たしていないと判定されたグループに含まれるIDを変更してもよい。
例えば、前記ID変更ステップは、匿名性を満たしていないと判定された第1グループと異なる第2グループに含まれるIDであって、当該IDを変更することで前記第1グループが匿名性を満たすIDを選択する選択ステップを含み、前記ID変更ステップでは、前記一部のIDとして、選択された前記IDを変更してもよい。
これによれば、例えば、匿名性を満たしていないグループのIDを変更することで当該グループの匿名性を満たせない場合においても、他のグループのIDを変更することで当該グループの匿名性を満すことができる。
例えば、前記選択ステップでは、前記第2グループの匿名性が維持できるように、前記第2グループに含まれるIDを選択してもよい。
これによれば、IDを変更することにより、別のグループの匿名性が満たされなくなることを抑制できる。これにより、匿名化処理を適切かつ高速に実現できる。
例えば、前記選択ステップでは、前記第1グループの前記現在の周期の履歴情報が前記ユーザ装置が使用されていないことを示す場合、前記現在の周期の履歴情報を除く過去の周期の履歴情報が前記第1グループと同じ前記第2グループを選択し、前記第2グループに含まれるIDを選択してもよい。
例えば、前記選択ステップでは、前記第2グループに含まれる一部のIDを変更した場合に、前記第2グループの匿名性が維持できない場合、前記第2のグループに含まれる全てのIDを選択してもよい。
これによれば、IDを変更することにより、別のグループの匿名性が満たされなくなることを抑制できる。これにより、匿名化処理を適切かつ高速に実現できる。
例えば、前記選択ステップでは、前記第1グループの前記現在の周期の履歴情報を除く過去の履歴情報が前記ユーザ装置が使用されていないことを示す場合、前記現在の周期の履歴情報が前記第1グループと同じ前記第2グループを選択し、前記第2グループに含まれるIDを選択してもよい。
例えば、前記選択ステップでは、前記第2グループに含まれる一部のIDを変更した場合に、前記第2グループの匿名性が維持できない場合、前記第2のグループに含まれる全てのIDを選択してもよい。
IDを変更することにより、別のグループの匿名性が満たされなくなることを抑制できる。これにより、匿名化処理を適切かつ高速に実現できる。
例えば、前記履歴情報は、テレビの視聴履歴であってもよい。
例えば、前記履歴情報匿名化方法は、さらに、前記視聴履歴の変更の間隔が閾値より短い場合、当該視聴履歴を特殊チャンネルを視聴していることを示す履歴情報に変更してもよい。
これによれば、IDの変更の頻度を少なくできるので、匿名化処理による情報の損失を抑制できる。
例えば、前記匿名性判定ステップでは、グループに含まれるIDの数が、予め定められたk(2以上の整数)以上の場合に、当該グループが匿名性を満たしていると判定し、前記グループに含まれるIDの数が、前記k未満の場合に、当該グループが匿名性を満たしていないと判定してもよい。
また、本開示の一態様に係る履歴情報匿名化装置は、周期的に複数のユーザ装置から収集された複数の履歴情報を匿名化する履歴情報匿名化装置であって、現在の周期において前記複数のユーザ装置から収集された複数の履歴情報の各々を、収集先のユーザ装置に対応付けられたIDに対応付ける対応付部と、現在及び過去の周期において対応付けられた履歴情報の内容が同一である複数のIDをグループごとにまとめるグループ化部と、前記複数のグループの各々が匿名性を満たしているかを判定する匿名性判定部と、前記複数のグループのいずれかが匿名性を満たしていないと判定された場合、前記複数のユーザ装置に対応付けられている複数のIDのうちの一部のIDのみを変更し、当該IDが変更されたユーザ装置から現在の周期において収集された履歴情報の対応付け先を当該ユーザ装置の変更前のIDから変更後のIDに変更するID変更部とを備える。
これによれば、グループの匿名性が満たされない場合に、一部のIDのみが変更される。これにより、個人を特定できない状態を作りつつ、かつ、IDの付け替え期間を長くすることができるので、匿名化処理による情報の損失を抑制できる。
なお、これらの包括的または具体的な態様は、システム、方法、集積回路、コンピュータプログラムまたはコンピュータ読み取り可能なCD−ROMなどの記録媒体で実現されてもよく、システム、方法、集積回路、コンピュータプログラム及び記録媒体の任意な組み合わせで実現されてもよい。
以下、図面を参照しながら、本開示の実施の形態に係る履歴情報匿名化システムについて説明する。なお、以下で説明する実施の形態は、いずれも本開示の好ましい一具体例を示す。つまり、以下の実施の形態で示される数値、形状、材料、構成要素、構成要素の配置及び接続形態、ステップ、ステップの順序などは、本開示の一例であり、本開示を限定する主旨ではない。本開示は、請求の範囲の記載に基づいて特定される。従って、以下の実施の形態における構成要素のうち、本開示の最上位概念を示す独立請求項に記載されていない構成要素は、本開示の課題を達成するために必ずしも必要ではないが、より好ましい形態を構成する構成要素として説明される。
(実施の形態)
[1.システムの構成]
ここでは、本開示の実施の形態として、本開示に関わる履歴情報匿名化システム10について図面を参照しながら説明する。
[1.1 履歴情報匿名化システム10の全体構成]
図1は、本実施の形態に係る履歴情報匿名化システム10の全体構成を示す図である。履歴情報匿名化システム10は、複数のTV100と、収集サーバ200と、分析サーバ300とを含む。
各TV100は、ユーザが何時に何チャンネルを視聴していたかという情報である履歴情報101を記録し、ユーザがチャンネルを変更した時、収集サーバ200からの送信要求があったとき、又は定期的に収集サーバ200へ履歴情報101を送信する。なお、以下では、履歴情報101が、TVの視聴履歴である例を説明するが、履歴情報101は、他の種類の履歴情報であってもよく、例えば、TVの操作履歴などであってもよい。
収集サーバ200は、複数のTV100から履歴情報101を収集し、収集した履歴情報101を記録する。図2は、視聴履歴(履歴情報101)のデータフォーマットの例を示す図である。本例において視聴履歴は、それぞれのユーザがそれぞれの時刻に視聴していたチャンネルをユーザごとに示す。また、ユーザがTVを視聴していない場合は、「−」が示される。
また、収集サーバ200は、分析サーバ300の要求に応じて履歴情報201を送信する。具体的には収集サーバ200は、履歴情報101を匿名化することで履歴情報201を生成し、生成された履歴情報201を分析サーバ300に送信する。なお、この匿名化に関する詳細な方法は、後ほど説明する。
分析サーバ300は、収集サーバ200から履歴情報201を取得し、取得した履歴情報201の分析を行う。例えば、サービス事業者は、分析結果から、個々人に適したサービスの提供、新しい商品開発、又はマーケット戦略の立案などを行う。
なお、本実施の形態では、履歴情報101を送信する機器であるユーザ装置がTV100である例を説明するが、これに限定するわけではなく、ユーザ装置はメディアプレーヤー、レコーダ、又はセットトップボックスなどであってもよい。
[1.2 TV100の構成]
図3は、本実施の形態に係るTV100の構成を示す図である。TV100は、個人情報入力部110と、履歴情報収集部120と、情報提供部130とを備える。
個人情報入力部110は、TV100のユーザが、自身の個人情報を入力するための入力部である。入力された個人情報は、情報提供部130を経由して収集サーバ200へ送信される。
履歴情報収集部120は、TV100の視聴履歴又は操作履歴などの履歴情報101を収集する。収集された履歴情報101は、情報提供部130を経由して収集サーバ200へ送信される。また、一部又は全ての履歴情報101は、TV100内部の履歴情報保持部(図示しない)に記録される。
情報提供部130は、個人情報入力部110又は履歴情報収集部120から取得した個人情報及び履歴情報101を収集サーバ200へ送信する。情報提供部130は、個人情報又は履歴情報101を収集サーバ200へ送信する時には、個人情報に関連づけられたユーザIDを個人情報又は履歴情報101に付加したうえで収集サーバ200へ送信する。
[1.3 収集サーバ200の構成]
図4は、本実施の形態に係る収集サーバ200の構成を示す図である。収集サーバ200は、情報入力部210と、個人情報管理部220と、履歴情報管理部230と、データ保持部240と、匿名化処理部250と、情報送信部260とを備える。
情報入力部210は、TV100から個人情報及び履歴情報101を取得するための入力部である。情報入力部210は、取得した情報のうち、個人情報を個人情報管理部220へ送り、履歴情報101を履歴情報管理部230へ送る。
個人情報管理部220は、TV100から受信した個人情報をデータ保持部240へ記録する。また、個人情報管理部220は、他の機器からの要求に応じて、個人情報を他の機器に送信するなどの個人情報の管理を行う。
履歴情報管理部230は、TV100から受信した履歴情報101をデータ保持部240へ記録する。また、履歴情報管理部230は、分析サーバ300から履歴情報の要求があった時に、匿名化処理部250へ匿名化処理を要求する。
データ保持部240は、個人情報及び履歴情報101などを保持する。図5は、ユーザの履歴情報101を管理するための、データ保持部240に保持されるユーザ管理テーブル400の例を示す図である。ここでは、履歴情報101が視聴履歴である場合を示す。
ユーザ管理テーブル400は、複数の仮ID401と、各仮ID401に対応付けられたグループID402、送信可否フラグ403、及び視聴履歴404(履歴情報)とを示す。仮ID401は、ユーザごとにつけられた識別子であり、一人のユーザに対して一つ又は複数の仮ID401が対応付けられる。仮ID401は、視聴履歴404がk−匿名性を満たさなくなるごとに変更される。
グループID402は、同じ視聴履歴404を持つ仮ID401をまとめたグループを識別するためのIDである。送信可否フラグ403は、履歴情報を分析サーバ300などに送信して良いかどうかを表すフラグである。例えば、「可」と記されている場合は履歴情報を送信しても良く、「否」と記されている場合は履歴情報を送信してはいけないことを示す。視聴履歴404(履歴情報)は、例えばTV100の視聴履歴のように時間が経過するたびに追加されていく情報である。
図6は、ユーザIDと仮IDとの対応関係を示すID対応テーブル410の例を示す図である。ID対応テーブル410は、複数のユーザID411と、各ユーザID411に対応付けられた仮ID412及び仮ID履歴413とを示す。ユーザID411は、ユーザ装置(TV100)を識別するためのIDである。仮ID412は、現在においてユーザID411に対応付けられている仮ID412を示す。仮ID履歴413は、現在及び過去においてユーザID411に対応付けられた仮IDの履歴を示す。
履歴情報管理部230は、TV100から新たに履歴情報101を受信した場合、ID対応テーブル410を参照し、履歴情報101に付与されているユーザIDに対応する仮ID412を判別する。次に、履歴情報管理部230は、判別した仮ID412に対応付けて、受信した履歴情報101をユーザ管理テーブル400の視聴履歴404に追加する。
匿名化処理部250は、分析サーバ300から履歴情報の要求があった時に、匿名化処理を行う。具体的には、匿名化処理部250は、視聴履歴404を、k−匿名性を満たしている状態に加工することで履歴情報201を生成する。詳細な構成は、後ほど説明する。
情報送信部260は、分析サーバ300から履歴情報の要求があった時に、匿名化した履歴情報201を分析サーバ300へ送信する。
[1.4 分析サーバ300の構成]
図7は、本実施の形態に係る分析サーバ300の構成を示す図である。分析サーバ300は、情報受信部310と、匿名化情報管理部320と、匿名化情報保持部330と、分析部340と、分析結果表示部350とを備える。
情報受信部310は、収集サーバ200から匿名化された履歴情報201を受信する。
匿名化情報管理部320は、収集サーバ200から受信した履歴情報201を管理する。
匿名化情報保持部330は、収集サーバ200から受信した履歴情報201を保持する。
分析部340は、履歴情報201を分析し、個々人に適したサービスの提供、新しい商品開発、又はマーケット戦略の立案などに必要な分析データを生成する。
分析結果表示部350は、分析部340が分析した結果である分析データを表示し、サービス事業者に分析結果を提示する。
[1.5 匿名化処理部250の構成]
図8は、本実施の形態に係る匿名化処理部250の構成を示す図である。匿名化処理部250は、グループ更新部251と、匿名化検証部252と、ID変更部253と、他グループユーザ選択部(他Gユーザ選択部)254とを備える。
グループ更新部251は、履歴情報(視聴履歴404)が同じであるユーザの仮ID401を、同じグループとなるようにユーザ管理テーブル400のグループID402を更新する。例えば、グループ更新部251は、過去に視聴した番組(チャンネル)の履歴が同じユーザを同じグループに設定する。グループ更新部251は、新たな履歴情報101が受信され、新しい履歴が追加されることで視聴履歴404が更新されたときには、追加された履歴の種類に応じて新しいグループを生成し、新たに生成したグループにグループID402を割り当てる。
例えば、それまで同じグループとして設定されていた複数のユーザの一部が、TVのチャンネルを変更し、2chを見るユーザ、4chを見るユーザ、TVを見なくなったユーザに分かれたとする。この場合、グループ更新部251は、新しく2つのグループID402を追加し、2chを見たユーザに、新しく追加したグループID402のうちの一つのIDを設定し、4chを見たユーザに、新しく追加したグループID402のうちの残りのIDを割り当てる。また、グループ更新部251は、TVを見なくなったユーザのグループID402を変更しない。これにより、グループ更新部251は、2ch、4ch、及びTVを見なくなったという3種類の履歴情報に応じて、それぞれ別のグループID402を設定することができる。
匿名化検証部252は、履歴情報がk−匿名性を満たしているかどうかを検証する。具体的には、匿名化検証部252は、グループ更新部251が設定したそれぞれのグループに対して、同じグループが設定されたユーザが何人になるかをカウントする。その後、匿名化検証部252は、各グループがk人(kは2以上の整数)以上であるかどうかを調べ、全てのグループがk人以上であれば履歴情報がk−匿名性を満たしていると判定し、k人以上でないグループがあれば、履歴情報がk−匿名性を満たしていないと判定する。
また、匿名化検証部252は、各グループのk−匿名性を判定する。具体的には、匿名化検証部252は、判定対象のグループに設定されたユーザがk人以上いれば、そのグループがk−匿名性を満たしていると判定し、k人以上いない場合には、そのグループがk−匿名性を満たしていないと判定する。
また、匿名化検証部252は、k−匿名性を満たしていないグループが存在する場合であって当該グループがTVを視聴し続けているユーザのグループである場合、ID変更部253へ当該グループに含まれるユーザの仮IDの変更の指示を出す。また、匿名化検証部252は、k−匿名性を満たしていないグループが存在する場合であって当該グループがTVを視聴し続けているユーザのグループ以外のグループである場合、他グループユーザ選択部254へ他グループユーザの選択の指示を出す。ここで、TVを視聴し続けているユーザのグループ以外のグループとは、TV100を見終わったユーザのグループ、及び新しくTV100を見始めたユーザのグループである。
ID変更部253は、依頼されたユーザの仮IDを変更する。具体的には、ID変更部253は、ユーザ管理テーブル400に新しい仮ID401を追加し、ID対応テーブル410の仮ID412に記載された元の仮IDを新しい仮IDに更新し、仮ID履歴413に新しい仮IDを追加する。
他グループユーザ選択部254は、TV100を見終わったユーザのグループ、又は新しくTV100を見始めたユーザのグループがk−匿名性を満たさない場合に、k−匿名性を満たすために必要な数のユーザを、関連する他のグループから選択する。
具体的には、他グループユーザ選択部254は、TV100を見終わったユーザのグループがk−匿名性を満たさない場合は、最新の履歴情報以外の履歴情報が同じユーザの他のグループを選択し、当該他のグループから、対象となっているk−匿名性を満たさないグループがk−匿名性を満たすのに必要な数のユーザを選択する。また、他グループユーザ選択部254は、新しくTV100を見始めたユーザのグループがk−匿名性を満たさない場合は、最新の履歴情報が同じユーザの他のグループを選択し、当該他のグループから、対象となっているk−匿名性を満たさないグループがk−匿名性を満たすのに必要な数のユーザを選択する。更に、他グループユーザ選択部254は、上記で選択した他のグループから上記で選択したユーザを除いたときに、当該他のグループがk−匿名性を満たすかどうかの検証を匿名化検証部252に依頼する。検証した結果、当該他のグループがk−匿名性を満たさなかった場合には、他グループユーザ選択部254は、当該他のグループの全てのユーザを選択する。他グループユーザ選択部254は、上記で選択したユーザの仮IDの変更をID変更部253へ依頼する。
[2 動作]
以下、履歴情報匿名化システム10の動作を説明する。
[2.1 全体動作]
図9は、収集サーバ200の全体動作を示すフローチャートである。収集サーバ200は、周期的に複数のTV100(ユーザ装置)から収集された複数の履歴情報101を匿名化することで履歴情報201を生成する。ここで周期的とは一定の周期であってもよいし、可変の周期であってもよい。例えば、収集サーバ200は、予め定められた周期で履歴情報101を収集してもよいし、TV100で履歴情報101が生成されたタイミング、又は、任意のタイミングで履歴情報101を収集してもよい。また、図9に示す処理は、履歴情報101が収集されるごとに行われる。
まず、収集サーバ200は、現在の周期において、複数のTV100から履歴情報101を取得する(S100)。
次に、収集サーバ200は、現在の周期において複数のTV100から収集された複数の履歴情報101の各々を、収集先のTV100に対応付けられた仮IDに対応付ける(S101)。具体的には、履歴情報101には当該履歴情報101の送信元のTV100のユーザIDが付与されている。収集サーバ200は、ID対応テーブル410を参照し、当該ユーザIDに対応する仮ID412を特定する。次に、収集サーバ200は、現在の周期で得られた履歴情報101を、特定した仮ID412(401)に対応付け、ユーザ管理テーブル400の視聴履歴404に追加することで、視聴履歴404を更新する。
次に、収集サーバ200は、現在及び過去の周期において対応付けられた履歴情報101(視聴履歴404)の内容が同一である複数の仮ID401をグループごとにまとめる。つまり、収集サーバ200は、同じ視聴履歴404を有する仮ID401が同じグループになるようにグループID402を更新する(S102)。
次に、収集サーバ200は、履歴情報101がk−匿名性を満たしているかをチェックする。つまり、収集サーバ200は、複数のグループの各々が匿名性を満たしているかを判定する(S103)。具体的には、収集サーバ200は、各グループがk個以上の仮ID401を含んでいるかを判定する。収集サーバ200は、グループに含まれる仮ID401の数が、予め定められたk(2以上の整数)以上の場合に、当該グループが匿名性を満たしていると判定し、グループに含まれる仮ID401の数が、k未満の場合に、当該グループが匿名性を満たしていないと判定する。
複数のグループのいずれかが匿名性を満たしていないと判定された場合、つまり、更新後の視聴履歴404がk−匿名性を満たしていない場合(S103でNG)、収集サーバ200は、複数のTV100に対応付けられている複数の仮ID401のうちの一部の仮ID401のみを変更する(S104)。また、収集サーバ200は、仮ID401が変更されたTV100から現在の周期において収集された履歴情報101(視聴履歴404)の対応付け先を当該TV100の変更前の仮ID401から変更後の仮ID401に変更する。
次に、収集サーバ200は、現在の周期の履歴情報101と変更後の仮IDとを含む履歴情報201を分析サーバ300に送信する(S105)。
一方、複数のグループの全てが匿名性を満たしていると判定された場合、つまり、更新後の視聴履歴404がk−匿名性を満たしている場合(S103でOK)、収集サーバ200は、現在の周期の履歴情報101と現在の仮IDとを含む履歴情報201を分析サーバ300に送信する(S105)。
なお、ここでは、収集サーバ200は、ある時刻の履歴情報101を受信するごとに処理を行っているが、複数の時刻の履歴情報101を受信するごとに処理を行ってもよい。また、収集サーバ200は、ある時刻の履歴情報101を受信するごと履歴情報201を分析サーバ300に送信しているが、複数の時刻の履歴情報201を分析サーバ300にまとめて送信してもよい。
[2.2 匿名化処理の概要]
以下、収集した履歴情報を匿名化する処理(図9のS102〜S104)について図10を用いて説明する。
まず、収集サーバ200の匿名化処理部250は、前回の匿名化処理の実行時から視聴履歴404が新たに追加された仮ID401に対して、仮ID401に対応付けられたグループID402を更新する(S110)。具体的には、匿名化処理部250は、同じ視聴履歴404を持つ仮ID401が同じグループになるようにグループID402を更新する。例えば、匿名化処理部250は、元々同じグループID402が割り当てられていた仮ID群に対して、新たに追加された視聴履歴404が同じ仮IDが同じグループになるように、仮ID群に含まれる複数の仮ID401を複数のグループに分割し、分割したグループごとに異なるグループID402を割り当てる。
その後、匿名化処理部250は、更新後のグループID402ごとに、当該グループがk−匿名性を満たしているかどうかをチェックする(S111)。全てのグループがk−匿名性を満たしている場合(S111でOK)、匿名化処理部250は処理を終了する(S112)。
一方、1つ以上のグループがk−匿名性を満たしていなかった場合(S111でNG)、匿名化処理部250は、k−匿名性を満たしていないグループを抽出し、以降の処理をグループごとに実行する。
まず、匿名化処理部250は、グループの種類を判定する(S113)。具体的には、匿名化処理部250は、履歴情報101を継続して受信している場合、つまり、ユーザがTV100の視聴を継続している場合には「継続」と判定する。また、匿名化処理部250は、履歴情報101を受信しなくなった場合、又はTV100をOFFにしたことを示す情報を受信した場合、つまり、ユーザがTV100の視聴を終了した場合には「終了」と判定する。また、匿名化処理部250は、新たなTV100から履歴情報101を受信した場合、又はTV100をONにしたことを示す情報を受信した場合、つまり、ユーザがTV100の視聴を開始した場合には「新規」と判定する。
匿名化処理部250は、「継続」と判定した場合(S113で「継続」)、匿名性を満たしていないグループのTV100に割り当てられた仮IDを変更する(S114)。つまり、匿名化処理部250は、匿名性を満たしていないグループの直前の履歴情報及び現在の周期の履歴情報が共にTVが使用されていることを示す場合、匿名性を満たしていないと判定されたグループに含まれる仮IDを変更する。具体的には、匿名化処理部250は、新しい仮IDを生成し、元の仮IDの最新の履歴情報を新しい仮IDの履歴情報として記録し、元の仮IDの最新の履歴情報を削除する。また、匿名化処理部250は、ID対応テーブル410の仮ID412を新しい仮IDに変更し、新しい仮IDを仮ID履歴413に追記する。
匿名化処理部250は、「終了」と判定した場合(S113で「終了」)、更新前のグループが匿名性を満たしていないグループと同じ他のグループに含まれる一部のユーザを選択する(S115)。つまり、匿名化処理部250は、匿名性を満たしていない第1グループの現在の周期の履歴情報がTVが使用されていないことを示す場合、第1グループと異なる第2グループに含まれる仮IDであって、当該仮IDを変更することで第1グループが匿名性を満たすIDを選択する。具体的には、例えば、匿名化処理部250は、現在の周期の履歴情報を除く過去の周期の履歴情報が第1グループと同じ第2グループを選択する。
次に、匿名化処理部250は、当該他のグループから選択したユーザを除外した場合の当該他のグループのk−匿名性をチェックする(S117)。匿名化処理部250は、当該他のグループがk−匿名性を満たさないと判定した場合(S117で「NG」)、当該他のグループ内の全てのユーザを選択する(S118)。つまり、匿名化処理部250は、第2グループに含まれる一部の仮IDを変更した場合に、第2グループの匿名性が維持できない場合、第2のグループに含まれる全ての仮IDを選択する。
その後、匿名化処理部250は、選択したユーザ(他のグループ内の全てのユーザ)の仮IDを変更する(S119)。なお、仮IDの変更方法は、ステップS114と同様である。
一方、匿名化処理部250は、当該他のグループがk−匿名性を満たすと判定した場合(S117で「OK」)、ステップS115で選択した他のグループ内の一部のユーザの仮IDを変更する(S119)。
このように、匿名化処理部250は、匿名性を満たしていないと判定された第1グループと異なる第2グループの匿名性が維持できるように、第2グループに含まれる仮IDを選択する。
また、匿名化処理部250は、ステップS113で「新規」と判定した場合には、最新の履歴情報において匿名性を満たしていないグループと同じチャンネルを視聴している他のグループに含まれる一部のユーザを選択する(S116)。つまり、匿名化処理部250は、匿名性を満たしいていない第1グループの現在の周期の履歴情報を除く過去の履歴情報がTVが使用されていないことを示す場合、第1グループと異なる第2グループに含まれる仮IDであって、当該仮IDを変更することで第1グループが匿名性を満たすIDを選択する。具体的には、例えば、匿名化処理部250は、現在の周期の履歴情報が第1グループと同じ第2グループを選択し、第2グループに含まれる仮IDを選択する。
その後、上記のステップS113で「終了」の場合と同様に、ステップS117からステップS119の処理を行う。
以上の処理の終了後、ステップS110に戻る。つまり、全てのグループのk−匿名性が満たされるまで処理が繰り返される。
[2.3 匿名化処理の詳細]
図10に示したように、収集サーバ200がTV100から視聴履歴を収集した際の匿名化処理において、ユーザがTV100を見続けている(継続)か、見終わった(終了)か、見始めた(新規)かの3つの状態に応じて処理が異なる。
以下、それぞれの状態に応じてどのような処理を行うかその詳細を説明する。
[2.3.1 TV100を見続けている(継続)場合の処理]
以下、ユーザがTV100を見続けている(継続)場合の匿名化処理の詳細について図11を用いて説明する。
匿名化処理部250は、最新の視聴履歴404に合わせて、各仮ID401と紐づけられるグループID402を更新する(S200)。次に、匿名化処理部250は、ユーザ管理テーブル400を参照して、同じグループID402が付けられている仮ID401において、前回のグループID402の更新処理後に追加された視聴履歴404を参照し、同じ視聴履歴404が追加された仮ID401を集めることで新たなグループを形成し、各グループに個別のグループID402を設定する。
次に、匿名化処理部250は、新しく付けたグループID402ごとに、グループがk−匿名性を満たしているかどうかをチェックする(S201)。具体的には、匿名化処理部250は、同じグループに属するユーザの数(同じグループID402が付けられた仮ID401の数)がk以上あるかどうかでチェックする。匿名化処理部250は、全てのグループにおいて、同じグループに属するユーザの数がk以上ある場合、グループがk−匿名性を満たしている(S201で「OK」)と判定し、グループに属するユーザの数がk未満のグループが1以上ある場合、グループがk−匿名性を満たしていない(S201で「NG」)と判定する。
匿名化処理部250は、ステップS201で「NG」と判定した場合、k−匿名性を満たしていないグループをリストアップする(S202)。
次に、匿名化処理部250は、ステップS203からS207までの処理を、ステップS202でリストアップした各グループに対して行う。この時、ステップS202でリストアップするグループは、全てTV100を見続けている(継続)状態のグループである。
まず、匿名化処理部250は、対象グループ内の全ての仮ID401を変更する(S204)。具体的には、匿名化処理部250は、新しい仮ID401を生成し、生成した仮ID401をユーザ管理テーブル400に追加する。その後、匿名化処理部250は、変更元の仮ID401の視聴履歴404の最新の履歴を、新しく生成した仮ID401の視聴履歴404にコピーし、変更元の仮ID401の視聴履歴404の最新の履歴を、TV100を見終わった(終了)という情報に更新する。以上の処理により匿名化処理部250は仮IDを変更する。
次に、匿名化処理部250は、変更元の仮ID401のユーザ管理テーブル400のグループID402を、当該仮ID401の更新後の視聴履歴404と同じ視聴履歴404を持つ、TV100を見終わった(終了)グループのグループID402に変更する(S205)。
次に、匿名化処理部250は、新しく生成した仮ID401のユーザ管理テーブル400のグループID402を、当該仮IDの視聴履歴404と同じ視聴履歴404を持つ、新しく見始めた(新規)グループのグループID402に変更する(S206)。
一方、匿名化処理部250は、ステップS201で「OK」と判定した場合処理を終了する。
[2.3.2 TV100を見終わった(終了)場合の処理]
以下、ユーザがTV100を見終わった(終了)場合の匿名化処理の詳細について図12を用いて説明する。
匿名化処理部250は、最新の視聴履歴404に合わせて、各仮ID401と紐づけられるグループID402を更新する(S300)。次に、匿名化処理部250は、ユーザ管理テーブル400を参照して、同じグループID402が付けられている仮ID401において、前回のグループID402の更新処理後に追加された視聴履歴404を参照し、同じ視聴履歴404が追加された仮ID401を集めることで新たなグループを形成し、各グループに個別のグループID402を設定する。
次に匿名化処理部250は、新しく付けたグループID402ごとに、グループがk−匿名性を満たしているかどうかをチェックする(S301)。なお、この処理の詳細は上述したステップS201と同様である。
匿名化処理部250は、ステップS301で「NG」と判定した場合、k−匿名性を満たしていないグループをリストアップする(S302)。
匿名化処理部250は、ステップS303からS310までの処理を、ステップS302でリストアップした各グループに対して行う。この時、ステップS302でリストアップするグループは、全てTV100を見終わった(終了)状態のグループである。
まず、匿名化処理部250は、対象グループがk−匿名性を満たすために必要な数のユーザ(n人とする)を確保するために、対象グループと、直前まで同じグループであり、かつ、現在別のグループであるグループ群の中から1つグループを選択し、その選択したグループの中のユーザのうち、対象グループがk−匿名性を満たすために必要な数のユーザを選択する(S304)。グループを選択する方法としては、例えば、k+n人以上のユーザが属するグループのうち、一番多くのユーザが属しているグループを選択する方法がある。または、n人以上のユーザが属するグループのうち、一番少ないユーザが属しているグループを選択する方法もある。
次に、匿名化処理部250は、ステップS304で選択したグループから、選択したユーザを除外した場合に当該グループがk−匿名性を満たすかどうかをチェックする(S305)。具体的には、匿名化処理部250は、選択したグループから、選択したユーザを除外した場合に当該グループにk人以上のユーザが属している場合には「OK」と判定し、当該グループにk人未満のユーザしか属していない場合には「NG」と判定する。
匿名化処理部250は、ステップS305で「NG」と判定した場合には、ステップS304で選択したグループの全てのユーザの仮ID401を選択する(S306)。
匿名化処理部250は、ステップS305で「OK」と判定した場合には、ステップS307へ進む。
匿名化処理部250は、ステップS304又はステップS306で選択したユーザの仮ID401を変更する(S307)。仮ID401の変更処理は、ステップS204と同様である。
次に、匿名化処理部250は、変更元の仮ID401のユーザ管理テーブル400のグループID402を、当該仮IDの更新後の視聴履歴404と同じ視聴履歴404を持つ、TV100を見終わった(終了)グループのグループID402に変更する(S308)。
次に、匿名化処理部250は、新しく生成した仮ID401のユーザ管理テーブル400のグループID402を、当該仮IDの更新後の視聴履歴404と同じ視聴履歴404を持つ、新しく見始めた(新規)グループのグループID402に変更する(S309)。
[2.3.3 TV100を見始めた(新規)場合の処理]
以下、ユーザがTV100を見始めた(新規)場合の匿名化処理の詳細について図13を用いて説明する。
匿名化処理部250は、最新の視聴履歴404に合わせて、各仮ID401と紐づけられるグループID402を更新する(S400)。次に、匿名化処理部250は、ユーザ管理テーブル400を参照して、同じグループID402が付けられている仮ID401において、前回のグループID402の更新処理後に追加された視聴履歴404を参照し、同じ視聴履歴404が追加された仮ID401を集めることで新たなグループを形成し、各グループに個別のグループID402を設定する。
次に、匿名化処理部250は、新しく付けたグループID402ごとに、グループがk−匿名性を満たしているかどうかをチェックする(S401)。なお、この処理の詳細は上述したステップS201と同様である。
匿名化処理部250は、ステップS401で「NG」と判定した場合、k−匿名性を満たしていないグループをリストアップする(S402)。
匿名化処理部250は、ステップS403からS410までの処理を、ステップS402でリストアップした各グループに対して行う。この時、ステップS402でリストアップするグループは、全てTV100を見始めた(新規)状態のグループである。
まず、匿名化処理部250は、対象グループがk−匿名性を満たすために必要な数のユーザ(n人とする)を確保するために、最新の視聴履歴404で対象グループと同じチャンネルを視聴しているグループ群の中から1つグループを選択し、その選択したグループの中のユーザのうち、対象グループがk−匿名性を満たすために必要な数のユーザを選択する(S404)。
次に、匿名化処理部250は、ステップS404で選択したグループから、選択したユーザを場外した場合に当該グループがk−匿名性を満たすかどうかをチェックする(S405)。匿名化処理部250は、選択したグループから、選択したユーザを場外した場合に当該グループにk人以上のユーザが属している場合には「OK」と判定し、当該グループにk人未満のユーザしか属していない場合には「NG」と判定する。
匿名化処理部250は、ステップS405で「NG」と判定した場合には、ステップS404で選択したグループの全てのユーザの仮ID401を選択する(S406)。ここで、ステップS404で選択したグループの全てのユーザを選択したとしても、k−匿名性を満たすために必要な人数にならなかった場合は、匿名化処理部250は、履歴情報201を送信しないと判定し、処理を終了する(図示しない)。
匿名化処理部250は、ステップS405で「OK」と判定した場合には、ステップS407へ進む。
匿名化処理部250は、ステップS404又はステップS406で選択したユーザの仮ID401を変更する(S407)。仮ID401の変更処理は、ステップS204と同様である。
次に、匿名化処理部250は、変更元の仮ID401のユーザ管理テーブル400のグループID402を、当該仮IDの更新後の視聴履歴404と同じ視聴履歴404を持つ、TV100を見終わった(終了)グループのグループID402に変更する(S408)。
次に、匿名化処理部250は、新しく生成した仮ID401のユーザ管理テーブル400のグループID402を、当該仮IDの更新後の視聴履歴404と同じ視聴履歴404を持つ、新しく見始めた(新規)グループのグループID402に変更する(S409)。
[2.4 匿名化処理の具体例]
図2で示した視聴履歴の例を元に、視聴履歴がどのように匿名化されるかの具体例を以下に示す。
図14は、時刻tにおける視聴履歴の例を示す。この時、ユーザIDがUID1、UID2、UID3、UID4、UID6のユーザは2チャンネルを視聴しており、ユーザIDがUID7、UID8、UID9のユーザは4チャンネルを視聴している。また、ユーザIDがUID5とUID10のユーザはTV100を視聴していない。この時のユーザIDと仮ID401の対応関係を、図15に示す。
図16は、時刻tにおけるユーザ管理テーブル400を示している。ユーザ管理テーブル400において、図15のID対応テーブル410に対応して、それぞれの仮ID401の行に、当該仮ID401に対応するユーザIDの視聴履歴404が記録されている。
時刻tにおける匿名化処理を、図10の全体フローチャートに沿って説明する。
まず、グループ更新部251はステップS110のグループ更新の処理を行う。この時、グループ更新部251は、図16に示すユーザ管理テーブル400のように、グループID402の欄に、視聴履歴404に応じてグループID402を記録する。本例においては、仮ID401がID1、ID2、ID3、ID4、ID5のユーザは2チャンネルを視聴しているため、これらの仮ID401に対して同じグループID402(GID1)が記録される。また、仮ID401がID6、ID7、ID8のユーザは4チャンネルを視聴しているため、これらの仮ID401に対して同じグループID402(GID2)が記録される。
その後、匿名化検証部252は、ステップS111のk−匿名性のチェック処理を行う。なお、以下ではkが「2」である場合の例を説明する。匿名化検証部252は、各グループ(この場合、GID1のグループとGID2のグループ)がk−匿名性を満たしているかどうかをチェックする。今回の場合、どちらのグループもk−匿名性を満たしている(ユーザがk人以上存在している)ため、匿名化検証部252は、ステップS111で「OK」と判定し、処理を終了する。
全てのデータがk−匿名性を満たしているため、収集サーバ200は、例えば、分析サーバ300などへ履歴情報201を送信する。そのため、収集サーバ200は、ユーザ管理テーブル400の送信可否フラグ403を全て「可」に設定する。
図17は、時刻t+1における視聴履歴の例を示す。この時、ユーザIDがUID1、UID2、UID3、UID4のユーザは2チャンネルから8チャンネルにチャンネルを変更している。また、ユーザIDがUID5のユーザは新たにTV100を視聴し始め、8チャンネルを視聴している。ユーザIDがUID6のユーザは2チャンネルから10チャンネルにチャンネルを変更している。ユーザIDがUID7、UID8、UID9のユーザは4チャンネルから10チャンネルにチャンネルを変更している。ユーザIDがUID10のユーザは新たにTV100を視聴し始め、10チャンネルを視聴している。
時刻t+1における匿名化の処理を、図10の全体フローチャートに沿って説明する。
まず、グループ更新部251はステップS110のグループ更新の処理を行う。この時、グループ更新部251は、図18に示すユーザ管理テーブル400のように、グループID402の欄に、視聴履歴404に応じてグループID402を記録する。本例においては、仮ID401がID1、ID2、ID3、ID4のユーザは、2チャンネルから8チャンネルにチャンネルを変更しているため1つのグループに含まれ、グループID402はそのままのGID1である。時刻tで、グループID402がGID1だった仮ID401がID5のユーザは、仮ID401がID1、ID2、ID3、ID4のユーザとは異なり、2チャンネルから10チャンネルにチャンネルを変更しているため、グループID402がGID1からGID3へ変更される。更に仮ID401がID6、ID7、ID8のユーザは、4チャンネルから10チャンネルにチャンネルを変更しているため1つのグループに含まれ、グループID402はそのままのGID2である。また、新しくTV100を視聴し始めたユーザ(UID5、UID10)には新しく仮ID401(ID9、ID10)が発行され、視聴履歴404がユーザ管理テーブル400で管理される。新しくTV100を視聴し始めた仮ID401がID9とID10のユーザは、それぞれ別のチャンネル(8チャンネルと10チャンネル)を見始めているため、別のグループID402(GID4、GID5)に割り振られる。
また、ID対応テーブル410が更新される。具体的には、ユーザID411がUID5の仮ID412がID9に設定され、ユーザID411がUID10の仮ID401がID10に設定される。
その後、匿名化検証部252はステップS111のk−匿名性のチェック処理を行う。匿名化検証部252は、各グループ(この場合、グループID402がGID1、GID2、GID3、GID4、GID5のグループがある)がk−匿名性を満たしているかどうかをチェックする。今回の場合、図19に示すように、GID3、GID4及びGID5の3つのグループがk−匿名性を満たしていない。そのため、匿名化検証部252は、ステップS111で「NG」と判定し、ステップS113以降の処理を行う。
匿名化処理部250は、まずグループID402がGID3のグループに関する処理を行う。匿名化処理部250は、ステップS113でGID3のグループの履歴情報の種類を判定する。GID3のグループのユーザは、TV100を継続してみているため、匿名化処理部250は、ステップS113で「継続」と判定する。そのため、ID変更部253はGID3のグループに属しているユーザの仮ID401を変更する(S114)。具体的には、図19に示すように、ID変更部253は、新しく仮ID401を発行(ID11)し、仮ID401がID5のユーザの最新の視聴履歴404である10チャンネルを視聴したという情報を、仮ID401がID11の視聴履歴404の項に記載する。また、匿名化処理部250は、仮ID401がID5の視聴履歴404から、最新の視聴履歴404である10チャンネルを視聴したという情報を消し、その代わりに時刻t+1の視聴履歴404としてTV100を見終わったことを示す「−」を記録する。
更に、匿名化処理部250は、ID対応テーブル410を更新する。具体的には、匿名化処理部250は、仮ID401としてID5が割り当てられているUID6のユーザに対して、ID対応テーブル410の仮ID412の項に新しい仮ID401であるID11を記録し、仮ID履歴413の項に、ID11を追加する。
以上の処理により、図19に示すように、仮ID401がID5からID11へ変更される。
匿名化処理部250は、処理をステップS110に戻し、再びグループ更新部251はグループ更新処理を行う。この時、仮ID401がID5とID11の視聴履歴404が変更されているためグループ更新処理もこの2つの仮ID401が対象となる。ID5のユーザは、時刻tまで2チャンネルを視聴し、時刻t+1にはTV100を視聴しなくなったという視聴履歴404を持つ。同じ視聴履歴404を持つユーザが他にいないため、グループID402はGID3のままである。一方、ID11のユーザは、時刻tではTV100を視聴せず、時刻t+1で10チャンネルを見始めたという視聴履歴404を持つ。仮ID401がID10のユーザ、ID11のユーザと同じ視聴履歴404を持つため、匿名化処理部250は、ID10と同じグループID402(GID5)をID11のユーザに設定する。
その後、匿名化検証部252はステップS111のk−匿名性のチェック処理を行う。匿名化検証部252は、各グループ(この場合、グループID402がGID1、GID2、GID3、GID4、GID5のグループがある)がk−匿名性を満たしているかどうかをチェックする。今回の場合、図20に示すように、GID3とGID4の2つのグループがk−匿名性を満たしていない。そのため、匿名化検証部252は、ステップS111で「NG」と判定し、ステップS113以降の処理を行う。
匿名化処理部250は、まずグループID402がGID3のグループに関する処理を行う。匿名化処理部250は、ステップS113でGID3のグループの履歴情報の種類を判定する。GID3のグループのユーザは、TV100を見終わっているため、匿名化処理部250は、ステップS113で「終了」と判定する。
他Gユーザ選択部254は、対象グループであるGID3のグループと時刻tまで視聴履歴404が同じ他のグループ、つまり、時刻t+1のグループ更新処理でグループID402が更新されるまでGID3のグループと同じグループだった他のグループ(この場合、GID1のグループ)から1つのグループを選択し、その中からGID3のグループがk−匿名性を満たすために必要な数のユーザを選択する(S115)。今回の場合は、GID3のグループがk−匿名性を満たすためには後1人のユーザが必要である。ここでは、他Gユーザ選択部254は、仮ID401がID4のユーザを選択する。
他Gユーザ選択部254は、仮ID401がID4のユーザをGID1のグループから除外したときに、GID1のグループがk−匿名性を満たすかどうかを匿名化検証部252へ問い合わせる(S117)。今回の場合、GID1のグループは、仮ID401がID4のユーザを除外した場合でもk−匿名性を満たすため、匿名化検証部252は「OK」を返す。
ID変更部253は、選択された仮ID401がID4のユーザの仮ID401を変更する(S119)。具体的には、ID変更部253は、図20に示すように、新しく仮ID401を発行(ID12)し、仮ID401がID4のユーザの最新の視聴履歴404である8チャンネルを視聴したという情報を、仮ID401がID12の視聴履歴404の項に記載する。ID変更部253は、仮ID401がID4の視聴履歴404から、最新の視聴履歴404である8チャンネルを視聴したという情報を消し、その代わりに時刻t+1の視聴履歴404としてTV100を見終わったことを示す「−」を記録する。
更に、匿名化処理部250は、ID対応テーブル410を更新する。具体的には、匿名化処理部250は、仮ID401としてID4を割り当てられているUID4のユーザに対して、ID対応テーブル410の仮ID412の項に新しい仮ID401であるID12を記録し、仮ID履歴413の項に、ID12を追加する。
以上の処理により、図20に示すように、仮ID401がID4からID12へ変更される。
匿名化処理部250は、処理をステップS110に戻し、再びグループ更新部251によるグループ更新の処理を行う。この時、仮ID401がID4とID12の視聴履歴404が変更されているためグループ更新処理もこの2つの仮ID401が対象となる。ID4のユーザは、時刻tまで2チャンネルを視聴し、時刻t+1にはTV100を視聴しなくなったという視聴履歴404を持つ。仮IDがID5のユーザが、ID4のユーザと同じ視聴履歴404を持つため、匿名化処理部250は、ID5と同じグループID402(GID3)をID4のユーザに設定する。一方、ID12のユーザは、時刻tではTV100を視聴せず、時刻t+1で8チャンネルを見始めたという視聴履歴404を持つ。仮ID401がID9のユーザが、ID12のユーザと同じ視聴履歴404を持つため、匿名化処理部250は、ID9と同じグループID402(GID4)をID12のユーザに設定する。
その後、匿名化検証部252はステップS111のk−匿名性のチェック処理を行う。匿名化検証部252は、各グループ(この場合、グループID402がGID1、GID2、GID3、GID4、GID5のグループがある)がk−匿名性を満たしているかどうかをチェックする。今回の場合、全てのグループがk−匿名性を満たしている(ユーザがk人以上存在している)ため、匿名化検証部252は、ステップS111で「OK」と判定し、処理を終了する。
以上の処理を行った後のユーザ管理テーブル400を、図21に示す。また、この場合のID対応テーブル410を、図22に示す。
図23は、時刻t+2における視聴履歴の例を示す。この時、ユーザIDがUID1、UID2、UID3、UID4のユーザは8チャンネルから4チャンネルにチャンネルを変更している。また、ユーザIDがUID5のユーザは8チャンネルから4チャンネルにチャンネルを変更している。ユーザIDがUID6のユーザは10チャンネルから6チャンネルにチャンネルを変更している。ユーザIDがUID7、UID8、UID9のユーザは10チャンネルから6チャンネルにチャンネルを変更している。ユーザIDがUID10のユーザは10チャンネルから6チャンネルにチャンネルを変更している。
時刻t+2における匿名化の処理を、図10の全体フローチャートに沿って説明する。
まず、グループ更新部251はステップS110のグループ更新の処理を行う。この時、グループ更新部251は、図24に示すユーザ管理テーブル400のように、グループID402の欄に、視聴履歴404に応じてグループID402を記録する。本例においては、全てのユーザが、同じグループの他のユーザと同じようにチャンネルを変更しているため、グループID402の更新は行われない。
その後、匿名化検証部252はステップS111のk−匿名性のチェック処理を行う。匿名化検証部252は、各グループ(この場合、グループID402がGID1、GID2、GID3、GID4、GID5のグループがある)がk−匿名性を満たしているかどうかをチェックする。今回の場合、全てのグループがk−匿名性を満たしている(ユーザがk人以上存在している)ため、匿名化検証部252は、ステップS111で「OK」と判定し、処理を終了する。
ID対応テーブル410は、変更がないため、図22のままである。
図25は、時刻t+3における視聴履歴の例を示す。この時、ユーザIDがUID1、UID2、UID3のユーザは4チャンネルから8チャンネルにチャンネルを変更している。また、ユーザIDがUID4のユーザはTV100を見終えている。ユーザIDがUID5のユーザは4チャンネルから7チャンネルにチャンネルを変更している。ユーザIDがUID6、UID7、UID8のユーザは6チャンネルから8チャンネルにチャンネルを変更している。ユーザIDがUID9のユーザは6チャンネルから7チャンネルにチャンネルを変更している。ユーザIDがUID10のユーザは6チャンネルから8チャンネルにチャンネルを変更している。
時刻t+3における匿名化の処理を、図10の全体フローチャートに沿って説明する。
まず、グループ更新部251はステップS110のグループ更新の処理を行う。この時、グループ更新部251は、図26に示すユーザ管理テーブル400のように、グループID402の欄に、視聴履歴404に応じてグループID402を記録する。本例においては、仮ID401がID1、ID2、ID3のユーザは、4チャンネルから7チャンネルにチャンネルを変更しているため1つのグループに含まれ、グループID402はそのままのGID1である。時刻tで、グループID402がGID3だった仮ID401がID4とID5のユーザは、その後、TV100を見ていないので、グループID402(GID3)は変更されない。時刻t+2で、グループID402がGID2だった仮ID401がID6とID7のユーザは、6チャンネルから8チャンネルにチャンネルを変更しているため、1つのグループに含まれ、グループID402はそのままのGID2である。一方、時刻t+2で、グループID402がGID2だった仮ID401がID8のユーザは、仮ID401がID6、ID7のユーザとは異なり、6チャンネルから7チャンネルにチャンネルを変更しているため、グループID402がGID2からGID6へ変更される。
仮ID401がID9のユーザは、4チャンネルから7チャンネルにチャンネルを変更しており、グループID402はそのままのGID4である。一方、同じくグループID402がGID4だった仮ID401がID12のユーザは、TV100を見終わっているため、グループID402がGID4からGID7へ変更される。仮ID401がID10とID11のユーザは、どちらも6チャンネルから8チャンネルへチャンネルを変更しているため、グループID402はGID5のままである。
その後、匿名化検証部252はステップS111のk−匿名性のチェック処理を行う。匿名化検証部252は、各グループ(この場合、グループID402がGID1、GID2、GID3、GID4、GID5、GID6、GID7のグループがある)がk−匿名性を満たしているかどうかをチェックする。今回の場合、図27に示すように、GID4、GID6、GID7の3つのグループがk−匿名性を満たしていない。そのため、匿名化検証部252は、ステップS111で「NG」と判定し、ステップS113以降の処理を行う。
匿名化処理部250は、まずグループID402がGID4のグループに関する処理を行う。匿名化処理部250は、ステップS113でGID4のグループの履歴情報の種類を判定する。GID4のグループのユーザは、TV100を継続してみているため、匿名化処理部250は、ステップS113で「継続」と判定する。そのため、ID変更部253はGID4のグループに属しているユーザの仮ID401を変更する(S114)。具体的には、匿名化処理部250は、新しく仮ID401を発行(ID13)し、仮ID401がID9のユーザの最新の視聴履歴404である7チャンネルを視聴したという情報を、仮ID401がID13の視聴履歴404の項に記載する。匿名化処理部250は、仮ID401がID9の視聴履歴404に対して、最新の視聴履歴404である7チャンネルを視聴したという情報を消し、その代わりに時刻t+3の視聴履歴404としてTV100を見終わったことを示す「−」を記録する。
更に、匿名化処理部250は、ID対応テーブル410を更新する。具体的には、匿名化処理部250は、仮ID401としてID9を割り当てられているUID5のユーザに対して、ID対応テーブル410の仮ID412の項に新しい仮ID401であるID13を記録し、仮ID履歴413の項に、ID13を追加する。
以上の処理により、図27に示すように、仮ID401がID9からID13へ変更される。
匿名化処理部250は、処理をステップS110に戻し、再びグループ更新部251によるグループ更新の処理を行う。この時、仮ID401がID9とID13の視聴履歴404が変更されているためグループ更新処理もこの2つの仮ID401が対象となる。仮ID401がID9のユーザは、時刻t+2まで8チャンネル及び4チャンネルを視聴し、時刻t+3にはTV100を視聴しなくなったという視聴履歴404を持つ。仮ID401がID12のユーザが、ID9のユーザと同じ視聴履歴404を持つため、匿名化処理部250は、ID9と同じグループID402(GID4)をID12のユーザに設定する。仮ID401がID13のユーザは、時刻t+3で7チャンネルを見始めたという視聴履歴404を持つ。ID13と同じ視聴履歴404を持つユーザが他にいないため、匿名化処理部250は、グループID402にGID7を設定する。
その後、匿名化検証部252はステップS111のk−匿名性のチェック処理を行う。匿名化検証部252は、各グループ(この場合、グループID402がGID1、GID2、GID3、GID4、GID5、GID6、GID7のグループがある)がk−匿名性を満たしているかどうかをチェックする。今回の場合、図28に示すように、GID6とGID7の2つのグループがk−匿名性を満たしていない。そのため、匿名化検証部252は、ステップS111で「NG」と判定し、ステップS113以降の処理を行う。
匿名化処理部250は、まずグループID402がGID6のグループに関する処理を行う。匿名化処理部250は、ステップS113でGID6のグループの履歴情報の種類を判定する。GID6のグループのユーザは、TV100を継続してみているため、匿名化処理部250は、ステップS113で「継続」と判定する。そのため、ID変更部253はGID6のグループに属しているユーザの仮ID401を変更する(S114)。具体的には、匿名化処理部250は、新しく仮ID401を発行(ID14)し、仮ID401がID8のユーザの最新の視聴履歴404である7チャンネルを視聴したという情報を、仮ID401がID14の視聴履歴404の項に記載する。匿名化処理部250は、仮ID401がID8の視聴履歴404に対して、最新の視聴履歴404である7チャンネルを視聴したという情報を消し、その代わりに時刻t+3の視聴履歴404としてTV100を見終わったことを示す「−」を記録する。
更に、匿名化処理部250は、ID対応テーブル410を更新する。具体的には、匿名化処理部250は、仮ID401としてID8を割り当てられているUID9のユーザに対して、ID対応テーブル410の仮ID412の項に新しい仮ID401であるID14を記録し、仮ID履歴413の項に、ID14を追加する。
以上の処理により、図28に示すように、仮ID401がID8からID14へ変更される。
匿名化処理部250は、処理をステップS110に戻し、再びグループ更新部251によるグループ更新の処理を行う。この時、仮ID401がID8とID14の視聴履歴404が変更されているためグループ更新処理もこの2つの仮ID401が対象となる。仮ID401がID8のユーザは、時刻t+2まで4チャンネル、10チャンネル及び6チャンネルを視聴し、時刻t+3にはTV100を視聴しなくなったという視聴履歴404を持つ。ID8と同じ視聴履歴404を持つユーザが他にいないため、グループID402はGID6のままである。仮ID401がID14のユーザは、時刻t+3で7チャンネルを見始めたという視聴履歴404を持つ。仮ID401がID13のユーザが、ID14のユーザと同じ視聴履歴404を持つため、匿名化処理部250は、ID13と同じグループID402(GID7)をID14のユーザに設定する。設定後のユーザ管理テーブル400は、図29のようになる。
その後、匿名化検証部252はステップS111のk−匿名性のチェック処理を行う。匿名化検証部252は、各グループ(この場合、グループID402がGID1、GID2、GID3、GID4、GID5、GID6、GID7のグループがある)がk−匿名性を満たしているかどうかをチェックする。今回の場合、GID6のグループがk−匿名性を満たしていない。そのため、匿名化検証部252は、ステップS111で「NG」と判定し、ステップS113以降の処理を行う。
匿名化処理部250は、グループID402がGID6のグループに関する処理を行う。匿名化処理部250は、ステップS113でGID6のグループの履歴情報の種類を判定する。GID6のグループのユーザは、TV100を見終わっているため、匿名化処理部250は、ステップS113で「終了」と判定する。
他Gユーザ選択部254は、対象グループであるGID6のグループと時刻t+2まで視聴履歴404が同じ他のグループ、つまり、時刻t+3のグループ更新処理でグループID402が更新されるまでGID6のグループと同じグループだった他のグループ(この場合、GID2のグループ)から1つのグループを選択し、その中からGID6のグループがk−匿名性を満たすために必要な数のユーザを選択する(S115)。今回の場合は、GID2のグループがk−匿名性を満たすためには後1人のユーザが必要である。ここでは、他Gユーザ選択部254は、仮ID401がID7のユーザを選択する。
他Gユーザ選択部254は、仮ID401がID7のユーザをGID2のグループから除外したときに、GID2のグループがk−匿名性を満たすかどうかを匿名化検証部252へ問い合わせる(S117)。今回の場合、GID2のグループは、仮ID401がID7のユーザを除外した場合、k−匿名性を満たすことができないため、匿名化検証部252は「NG」を返す。
他Gユーザ選択部254は、ステップS117で「NG」と判定されたため、ステップS118の全ユーザの選択処理を行う。ここでは、他Gユーザ選択部254は、グループID402がGID2の残りのメンバーである仮ID401がID6のユーザも選択する。
ID変更部253は、選択された仮ID401がID6及びID7のユーザの仮ID401を変更する(S119)。具体的には、ID変更部253は、図29に示すように、新しく仮ID401を2つ発行(ID15及びID16)し、仮ID401がID6とID7のユーザの最新の視聴履歴404である8チャンネルを視聴したという情報を、仮ID401がID15とID16の視聴履歴404の項に記載する。ID変更部253は、仮ID401がID6とID7の視聴履歴404に対して、最新の視聴履歴404である8チャンネルを視聴したという情報を消し、その代わりに時刻t+3の視聴履歴404としてTV100を見終わったことを示す「−」を記録する。
更に、匿名化処理部250は、ID対応テーブル410を更新する。具体的には、匿名化処理部250は、仮ID401としてID6を割り当てられているUID7のユーザに対して、ID対応テーブル410の仮ID412の項に新しい仮ID401であるID15を記録し、仮ID履歴413の項に、ID15を追加する。更に、仮ID401としてID7を割り当てられているUID8のユーザに対して、ID対応テーブル410の仮ID412の項に新しい仮ID401であるID16を記録し、仮ID履歴413の項に、ID16を追加する。
以上の処理により、図29に示すように、仮ID401がID6からID15へ変更され、仮ID401がID7からID16へ変更される。
匿名化処理部250は、処理をステップS110に戻し、再びグループ更新部251によるグループ更新の処理を行う。この時、仮ID401がID6、ID7、ID15、ID16の視聴履歴404が変更されているためグループ更新処理もこの4つの仮ID401が対象となる。仮ID401がID6のユーザは、時刻t+2まで4チャンネル、10チャンネル及び6チャンネルを視聴し、時刻t+3にはTV100を視聴しなくなったという視聴履歴404を持つ。仮ID401がID7のユーザが、ID8のユーザと同じ視聴履歴404を持つため、匿名化処理部250は、ID7と同じグループID402(GID2)をID8のユーザに設定する。仮ID401がID15のユーザは、時刻t+3で8チャンネルを見始めたという視聴履歴404を持つ。仮ID401がID16のユーザが、ID15のユーザと同じ視聴履歴404を持つため、匿名化処理部250は、同じグループID402(GID6)を仮ID401がID15及びID16のユーザに設定する。
その後、匿名化検証部252はステップS111のk−匿名性のチェック処理を行う。匿名化検証部252は、各グループ(この場合、グループID402がGID1、GID2、GID3、GID4、GID5、GID6、GID7のグループがある)がk−匿名性を満たしているかどうかをチェックする。今回の場合、全てのグループがk−匿名性を満たしている(ユーザがk人以上存在している)ため、匿名化検証部252は、ステップS111で「OK」と判定し、処理を終了する。
以上の処理を行った後のユーザ管理テーブル400を図30に示す。また、この場合のID対応テーブル410を図31に示す。
[3.その他変形例]
なお、本開示を上記各実施の形態に基づいて説明してきたが、本開示は、上記各実施の形態に限定されないのはもちろんである。以下のような場合も本開示に含まれる。
(1)上記実施の形態では、図13におけるステップS401で「NG」と判定された場合、及び図13におけるステップS405で「NG」と判定された場合、収集サーバ200は、他のグループのユーザを選択し、選択したユーザのIDを変更することで、可能な限り視聴履歴404を分析サーバ300へ送信できるようにしているが、これに限定するわけではない。例えば、図32に示すように、一度選択したユーザの選択を取り消し、視聴履歴404を送信しないように設定してもよい。
具体的には、収集サーバ200は、ステップS405で「NG」と判定した場合には、ステップS404で選択した他のグループのユーザの選択を取り消す(S411)。次に、収集サーバ200は、k−匿名性を満たしていない対象グループの送信可否フラグ403を送信不可に設定する(S412)。これにより、対象グループの視聴履歴404が送信されないように設定される。
(2)上記実施の形態では、収集サーバ200は、ユーザが視聴しているチャンネルを履歴情報として収集するとしたが、これに限定するわけではない。例えば、収集サーバ200は、ユーザがどのチャンネルを視聴しようか迷っている場合などのように、ユーザがチャンネルを短時間で切り替えている状態を履歴情報として収集してもよい。また、収集サーバ200は、このような状態を特殊なチャンネルを視聴しているとみなし、実際のチャンネルとは異なるチャンネルの情報を履歴情報として収集してもよい。つまり、収集サーバ200は、視聴履歴の変更の間隔が閾値より短い場合、当該視聴履歴を特殊チャンネルを視聴していることを示す履歴情報に変更する。これにより、実際にチャンネルが異なる場合でも同じ履歴情報とみなすことができ、仮ID401の変更を少なくすることができる。
例えば、図33に示すID6及びID7のように、チャンネルが短時間で切り替えられた場合には、特殊状態を示す視聴履歴404が設定される。また、この特殊状態を含め同じ視聴履歴404を有する仮ID401が同じグループに割り当てられる。
(3)上記実施の形態の匿名化処理の具体例では、収集サーバ200は、匿名性を満たさなかったグループのうちグループID402の小さいグループからステップS113以降の処理を行ったが、これに限定するわけではない。例えば、収集サーバ200は、グループID402の大きいグループから処理を行ってもよいし、任意の順番で処理を行ってもよい。また、収集サーバ200は、全てのグループに含まれるユーザのうち仮ID401が一番小さいユーザを含むグループから処理をしてもよいし、一番大きいユーザを含むグループから処理をしてもよい。さらに、収集サーバ200は、ステップS113で履歴の種類が「継続」と判定されるグループ、「終了」と判定されるグループ、「新規」と判定されるグループの順番で処理をしてもよいし、ステップS113で履歴の種類が「継続」と判定されるグループ、「新規」と判定されるグループ、「終了」と判定されるグループの順番で処理をしてもよい。
(4)上記実施の形態の匿名化処理の具体例では、収集サーバ200は、ステップS113以降の処理において、1つのグループの処理をするごとに、ステップS110に戻っていたが、これに限定するわけではなく、ステップS111で匿名性を満たしていないと判定されたグループ全ての処理を行ってからステップS110へ戻ってもよい。
また、収集サーバ200は、ステップS113で判定される履歴の種類ごとに処理を行ってもよい。例えば、収集サーバ200は、ステップS113で「継続」と判定される全てのグループの処理を行った後に、ステップS110へ戻り、ステップS113で「継続」と判定されるグループがない場合、「終了」と判定される全てのグループの処理を行い、その後、ステップS110へ戻る。当然、「継続」、「終了」等どの履歴の種類のグループをどの順番で処理するかは、これ以外の順番であってもよい。
これにより、収集サーバ200は、少ない繰り返し数で処理を終了することができる。
(5)上記実施の形態の匿名化処理の具体例では、他グループユーザ選択部254がグループを選択する場合において、選択対象のグループが1つしか存在していなかったが、選択対象のグループが複数存在する場合には、収集サーバ200は、以下の処理を行う。例えば、収集サーバ200は、選択対象のグループのうち、グループID402の一番小さいグループを選択してもよいし、グループID402の一番大きいグループを選択してもよい。または、収集サーバ200は、グループに含まれるユーザの数に基づき選択するグループを決定してもよい。例えば、収集サーバ200は、ユーザ数が一番多いグループを選択してもよいし、必要なユーザ数以上で、かつ、必要なユーザ数に一番近いグループを選択してもよいし、必要なユーザ数を除いても匿名性を満たすことができるグループから任意のグループを選択してもよい。更に、収集サーバ200は、履歴情報に基づき選択するグループを決定してもよい。例えば、収集サーバ200は、最新の履歴情報と同じ履歴情報だけを持つグループが他にも存在しているグループを選択してもよいし、最新の履歴情報以外の履歴情報と同じ履歴情報だけを持つグループが他にも存在しているグループを選択してもよい。
これにより、収集サーバ200は、IDが変更されるユーザ数が少なくなるようにグループを選択することができるので、分析に対して有用な情報を残すことができる。
(6)上記実施の形態では、全ユーザが同時にチャンネルを変更している例を示したが、これに限定するわけではなく、一部のユーザがチャンネルを変更しなくてもよい。また、ユーザが任意のタイミングでチャンネルを変更し、この情報が履歴情報として送信されてもよい。この場合、ある一定間隔でチャンネルの変更を揃えるように収集サーバ200で履歴情報を加工してもよい。
(7)上記実施の形態では、視聴履歴が、視聴しているチャンネルの情報である例を説明したが、これに限定するわけではなく、視聴履歴は、視聴している番組名を示す情報でもよい。
(8)上記の各装置は、具体的には、マイクロプロセッサ、ROM、RAM、ハードディスクユニット、ディスプレイユニット、キーボード、及びマウスなどから構成されるコンピュータシステムであってもよい。RAM又はハードディスクユニットには、コンピュータプログラムが記録されている。マイクロプロセッサが、コンピュータプログラムに従って動作することにより、各装置は、その機能を達成する。ここでコンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。
(9)上記の各装置を構成する構成要素の一部又は全部は、1個のシステムLSI(Large Scale Integration:大規模集積回路)から構成されているとしてもよい。システムLSIは、複数の構成部を1個のチップ上に集積して製造された超多機能LSIであり、具体的には、マイクロプロセッサ、ROM、RAMなどを含んで構成されるコンピュータシステムである。RAMには、コンピュータプログラムが記録されている。マイクロプロセッサが、コンピュータプログラムに従って動作することにより、システムLSIは、その機能を達成する。
また、上記の各装置を構成する構成要素の各部は、個別に1チップ化されていてもよいし、一部又は全てを含むように1チップ化されてもよい。
また、ここでは、システムLSIとしたが、集積度の違いにより、IC、LSI、スーパーLSI、ウルトラLSIと呼称されることもある。また、集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用してもよい。
更に、半導体技術の進歩又は派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適用等が可能性としてありえる。
(10)上記の各装置を構成する構成要素の一部又は全部は、各装置に脱着可能なICカード又は単体のモジュールから構成されているとしてもよい。ICカード又はモジュールは、マイクロプロセッサ、ROM、RAMなどから構成されるコンピュータシステムである。ICカード又はモジュールは、上記の超多機能LSIを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムに従って動作することにより、ICカード又はモジュールは、その機能を達成する。このICカード又はこのモジュールは、耐タンパ性を有するとしてもよい。
(11)本開示は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、コンピュータプログラムからなるデジタル信号であるとしてもよい。
また、本開示は、コンピュータプログラム又はデジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD−ROM、MO、DVD、DVD−ROM、DVD−RAM、BD(Blu−ray(登録商標) Disc)、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されている前記デジタル信号であるとしてもよい。
また、本開示は、コンピュータプログラム又はデジタル信号を、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
また、本開示は、マイクロプロセッサとメモリを備えたコンピュータシステムであって、メモリは、上記コンピュータプログラムを記録しており、マイクロプロセッサは、コンピュータプログラムに従って動作するとしてもよい。
また、プログラム又はデジタル信号を記録媒体に記録して移送することにより、又はプログラム又はデジタル信号をネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
(12)上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
以上、一つまたは複数の態様に係る履歴情報匿名化装置について、実施の形態に基づいて説明したが、本開示は、この実施の形態に限定されるものではない。本開示の趣旨を逸脱しない限り、当業者が思いつく各種変形を本実施の形態に施したものや、異なる実施の形態における構成要素を組み合わせて構築される形態も、一つまたは複数の態様の範囲内に含まれてもよい。