- 印刷する
- PDF
HEaaN Homomorphic Analytics の活用ユースケース
- 印刷する
- PDF
VPC環境で利用できます。
仮想の顧客個人情報をもとに NAVERクラウド HEaaN Homomorphic Analyticsを用いて各種統計分析や機械学習を実行するユースケースです。
サンプルデータのすべての情報は架空のものであり、実存する人物や団体とは関係ありません。
サンプルデータの準備
例で使用するデータは仮想の企業が保有した仮想顧客100人の個人情報で、各顧客の詳細情報を12つのカラム(列)に区分して構成した資料です。
次からサンプルデータをダウンロードし、sample_data_raw.csvファイルを開きます。
sample_data_raw.csvファイルの各カラムに関する説明は、次の通りです。
カラム番号 | カラム名 | タイプ | 説明 |
---|---|---|---|
1 | name | 文字 | 仮想顧客名 |
2 | gender | 文字 | 仮想顧客の性別 |
3 | phone_number | 文字 | 仮想顧客の携帯電話番号 |
4 | age | 実数型 | 仮想顧客の年齢 |
5 | address | 文字 | 仮想顧客の住所 |
6 | housing | 文字 | 仮想顧客の住居タイプ |
7 | card_expense | 実数型 | 仮想顧客の月カード使用額 |
8 | income | 実数型 | 仮想顧客の年俸 |
9 | credit_ranking | カテゴリ型 | 仮想顧客の信用格付けを1等級から7等級まで7つのカテゴリで区分 |
10 | bank | 文字 | 仮想顧客の主な取引銀行 |
11 | loan | 実数型 | 仮想顧客の貸付金額 |
12 | asset | 実数型 | 仮想顧客の保有財産 |
平文データ前処理のユースケース
準備したデータで準同型暗号化演算を行い、確かな結果を取得するためには、まず演算に適した形で平文データを加工します。このユースケースでは、NAVERクラウドプラットフォームコンソールで演算と機械学習を行うように不要な情報を削除し、各カラムを実数型またはカテゴリ型に変換します。
サンプルデータを前処理する過程は、次の通りです。ユースケースではカラムを変換し、カラム名の後ろに『encoded』文を追加して変換されたカラムであることを表示します。
前処理過程をスキップするには、sample_data_preprocessed.csvファイルを使用します。
データ分析に影響を及ばない name、phone_numberカラムを削除します。
addressカラムは、ソウル市内に20の区を含めているため、0から19までの間の数字を各区ごとに付与して、当該カラムをカテゴリ型カラムに変換します。
gende、housing、bankカラムは、それぞれ2、3、5つのカテゴリに分類できるため、各カラムのカテゴリに数字を付与してすべてをカテゴリ型カラムに変換します。
- credit_rankingカラムはカテゴリ型カラムであるので、そのまま維持します。credit_rankingカラムの情報は、分析目的に応じて実数型資料としてもみなします。
年齢層別の特性を把握するために ageカラムの各年齢を20代から60代までのカテゴリに分類し、数字を付与して当該カラムをカテゴリ型カラムに変換します。
- 直観的な分類のために、各年齢層に20、30、40、50、60の数字を付与します。
card_expense、income、loan、assetカラムにそれぞれ下が10のログを取得し、その値を各カラムの横に新しいカラムを作成して入力します。
- 金融データは単位が大きく、片方に分布が偏りやすいので、ログを取得すると値を簡素化し、データを正規化できます。
次の表の通りに前処理の完了の有無を確認し、クラウドへのアップロードと暗号化を参照しデータを NAVERクラウドコンソールにアップロードします。
カラム番号 カラム名 タイプ 説明 1 gender_encoded カテゴリ型 性別を変換した2つのカテゴリ0、1 2 age_encoded カテゴリ型 年齢層に分類した5つのカテゴリ20、30、40、50、60 3 address_encoded カテゴリ型 区単位に分類した20のカテゴリ0~19 4 housing_encoded カテゴリ型 住居タイプを変換した3つのカテゴリ0、1、2 5 card_expense 実数型 仮想顧客の月カード使用額を表す数字 6 card_expense_log 実数型 月カード使用額に下が10のログを取得した値 7 income 実数型 仮想顧客の年俸を表す数字 8 income_log 実数型 年俸に下が10のログを取得した値 9 credit_ranking カテゴリ型 仮想顧客の信用格付けを1等級から7等級まで7つのカテゴリで区分 10 bank_encoded カテゴリ型 仮想顧客の主な取引銀行を変換した5つのカテゴリ0、1、2、3、4 11 loan 実数型 仮想顧客の貸付金額を表す数字 12 loan_log 実数型 貸付金額に下が10のログを取得した値 13 asset 実数型 仮想顧客の保有財産を表す数字 14 asset_log 実数型 保有財産に下が10のログを取得した値
暗号化演算のユースケース
NAVERクラウドプラットフォームコンソールにアップロードしたサンプルデータを使用して、各種暗号化演算を行い、結果を分析する方法を説明します。
この暗号化演算のユースケースでは、個人別の純資産額、平均貸付金額、年齢層別の年俸など、様々な統計分析の結果を得るために、カラムの削除、カラム間の引き算、平均、標準偏差、カテゴリ別の平均演算を行います。
暗号文状態での近似計算により、3.28938×10-6の誤差率で差が発生することがあります。
演算作業の作成、実行、結果確認に対する一般的な説明は、データ演算ご参照ください。
ユースケース1. カラム削除 - 不要な情報除去
ユースケースで行う統計分析で主な取引銀行の情報は不要であるため、Column削除を通じて削除します。
サンプルデータで主な取引銀行の情報を削除する方法は、次の通りです。
NAVERクラウドプラットフォームの HEaaNコンソールで次の通りに設定を入力し、タスクを作成します。
- 区分: カラム管理
- 演算名: カラムの削除
- 演算データ: アップロードした前処理データ
- 対象 Column: bank_encoded
- 結果データの復号(演算を追加した後に表示される): 使用
タスクを実行し、演算が終わると復号された結果を確認します。
- データで主な取引銀行の情報を削除しました。
ユースケース2. カラム間の引き算 - 個人の純資産額
各仮想顧客の純資産額を確認するために、カラム間の引き算の演算を行い保有資産カラムで貸付金額カラムを引きます。
サンプルデータの保有資産カラムから貸付金額カラムを引く方法は、次の通りです。
NAVERクラウドプラットフォームの HEaaNコンソールで次の通りに設定を入力し、タスクを作成します。
- 区分: 統計分析
- 演算名: カラム間の引き算
- 演算データ: アップロードした前処理データ
- Column 1: asset
- Column 2: loan
- 結果データの復号(演算を追加した後に表示される): 使用
タスクを実行し、演算が終わると復号された結果を確認します。
- 各仮想顧客の保有資産のうち、貸付金額を除いた純資産額が新しく作成した結果カラムに表示されます。
ユースケース3. 平均 - 1人当たりの平均貸付金額
1人当たりの平均貸付金額を計算するために、平均演算を行って貸付金額カラムから平均値を取得します。
サンプルデータの貸付金額カラムから平均値を取得する方法は、次の通りです。
NAVERクラウドプラットフォームの HEaaNコンソールで次の通りに設定を入力し、タスクを作成します。
- 区分: 統計分析
- 演算名: 平均
- 演算データ: アップロードした前処理データ
- 対象 Column: loan
- 結果データの復号(演算を追加した後に表示される): 使用
タスクを実行し、演算が終わると復号された結果を確認します。
- 1人当たりの貸付金額の平均が新しく作成した結果カラムに表示されます。
ユースケース4. 標準偏差 - 年俸標準偏差
年俸標準偏差を計算するために、標準偏差演算を行って年俸カラムから標準偏差値を取得します。
サンプルデータの年俸カラムから標準偏差を取得する方法は、次の通りです。
NAVERクラウドプラットフォームの HEaaNコンソールで次の通りに設定を入力し、タスクを作成します。
- 区分: 統計分析
- 演算名: 標準偏差
- 演算データ: アップロードした前処理データ
- 対象 Column: income
- 結果データの復号(演算を追加した後に表示される): 使用
タスクを実行し、演算が終わると復号された結果を確認します。
- 年俸の標準偏差が新しく作成した結果カラムに表示されます。ユースケース3から取得した年俸平均を基準に±1の標準偏差内に68%の年俸金額が分布していることがわかります。
ユースケース5. カテゴリ別の平均 - 顧客タイプに応じた各種平均
性別による月カード使用額の平均と年齢層による年俸平均を計算するために、カテゴリ別の平均演算を行いカテゴリを選択して該当する値の平均を取得します。
サンプルデータでカテゴリを選択し、月カード使用額と年俸平均を取得する方法は、次の通りです。
カテゴリ別の平均演算作業を作成する時、1つのカテゴリに対する演算を1つの詳細タスクとして追加します。複数のカテゴリに対する演算を1つの詳細タスクとして追加すると、正しいカテゴリ別の平均を取得できません。
性別による月カード使用額の平均
NAVERクラウドプラットフォームの HEaaNコンソールで次の通りに設定を入力し、タスクを作成します。
- 区分: 統計分析
- 演算名: カテゴリ別の平均
- 演算データ: アップロードした前処理データ
- 対象 Column: card_expense
- カテゴリ Column: gender_encoded
- カテゴリ値: 0、1(それぞれ個別の演算に追加)
- 結果データの復号(演算を追加した後に表示される): 使用
タスクを実行し、演算が終わると復号された結果を確認します。
- 性別による月カード使用額の平均が新しく作成したそれぞれの結果カラムに表示されます。一般的に女性のカード支出が男性のカード支出より、少し多いことがわかります。
年齢層による年俸平均
NAVERクラウドプラットフォームの HEaaNコンソールで次の通りに設定を入力し、タスクを作成します。
- 区分: 統計分析
- 演算名: カテゴリ別の平均
- 演算データ: アップロードした前処理データ
- 対象 Column: income
- カテゴリ Column: age_encoded
- カテゴリ値: 20、30、40、50、60
- 結果データの復号(演算を追加した後に表示される): 使用
タスクを実行し、演算が終わると復号された結果を確認します。
- 年齢層による年俸平均が新しく作成したそれぞれの結果カラムに表示されます。一般的に60代の顧客の年俸が最も低いことがわかります。
- 年齢層による年俸平均が新しく作成したそれぞれの結果カラムに表示されます。一般的に60代の顧客の年俸が最も低いことがわかります。
機械学習のユースケース
サンプルデータを加工してアップロードし、HEaaN Homomorphic Analyticsを通じて機械学習を行う方法を説明します。
この機械学習のユースケースでは、ロジスティック回帰学習、推論、結果の復号を行い、各仮想顧客の個人情報をもとにその顧客の住居タイプが賃貸または持ち家である確率を予測します。
機械学習データ準備のユースケース
機械学習を行うためには、学習用データや推論用データをそれぞれ準備します。このユースケースでは、前処理が完了したサンプルデータを分離して一部を学習用データで、残りの一部を推論用データとして活用します。
各仮想顧客の住居タイプが賃貸または持ち家である確率を予測できるように、学習用データにある住居タイプの情報を賃貸と持ち家の2つのカテゴリでバイナリ(binary)分類し、推論用データにある住居タイプの情報を削除します。
ロジスティック回帰学習用データや推論用データを準備する過程は、次の通りです。
サンプルデータの前処理に対する説明は、平文データ前処理のユースケースをご参照ください。
前処理したサンプルデータの上から70つの行をコピーし、新しい.csv形式ファイルで保存します。
- 学習用データとして活用します。
前処理したサンプルデータの残り30つの行をコピーし、新しい.csvファイルで保存します。
- 推論用データとして活用します。
学習用データの housing_encodedカラムのカテゴリを次の通りにバイナリの形で再分類し、当該カラム名を変更して一番右側の列に移します。
- 新規カラム名: my_house_encoded
- 0、1: 月額賃貸と貸し切りに該当するカテゴリを『賃貸』を意味する0に変換
- 2: 持ち家に該当するカテゴリを『持ち家』を意味する1に変換
推論用データから housing_encodedカラムを削除します。
学習用データや推論用データをそれぞれ次の通りに NAVERクラウドプラットフォームコンソールにアップロードします。
- 学習用データ: 機械学習の学習用を選択し、クラス数項目に『2』を入力
- 推論用データ: 機械学習の推論用を選択
- 学習用データをアップロードすると、学習に使用するデータである『_train』と初期化した推論モデルデータの『_model』を作成します。
ユースケース1. 学習 - ロジスティック回帰
住居タイプを賃貸と持ち家でバイナリ分類した学習用データを使用して、NAVERクラウドプラットフォームコンソールでロジスティック回帰学習を行います。
ロジスティック回帰学習を行うには、NAVERクラウドプラットフォームの HEaaNコンソールで次の通りにタスクを作成して実行します。
- 区分: 機械学習
- 演算名: 学習 - ロジスティック回帰
- 学習用データ: 『_train』データ
- 学習率(Learning Rate): 0.1
- 学習回数: 10
- ミニバッチ: 1
NAVERクラウドプラットフォームの HEaaNが各仮想顧客の他の個人情報が当該顧客の住居タイプにどんな影響を及ぼすかを学習して『_model』の推論モデルデータに反映します。
ユースケース2. 推論 - ロジスティック回帰
ロジスティック回帰学習が完了した推論モデルを推論用データに適用して推論を実行します。
ロジスティック回帰推論を行うには、NAVERクラウドプラットフォームの HEaaNコンソールで次の通りにタスクを作成して実行します。
- 区分: 機械学習
- 演算名: 推論 - ロジスティック回帰
- 推論モデル: 学習が完了した『_model』データ
- 推論用データ: アップロードした推論用データ
NAVERクラウドプラットフォームの HEaaNが推論用データにある各仮想顧客の住居タイプが賃貸または持ち家である確率を推論して『_predict』データに保存します。この結果データは、機械学習の復号演算を通じて復号できます。
ユースケース3. 推論結果の復号と解釈
推論を完了したデータを復号して解釈します。
推論結果データを復号して分析する方法は、次の通りです。
NAVERクラウドプラットフォームの HEaaNコンソールで次の通りに設定を入力し、タスクを作成します。
- 区分: 機械学習
- 演算名: 復号
- 演算データ: 推論結果データ
タスクを実行し、復号した結果を確認します。
- 月カード使用額、年俸、信用格付け、資産などの様々な個人情報をもとに推論した時、当該顧客の住居タイプが賃貸または持ち家である確率をそれぞれ0カラム、1カラムに表示します。
演算所要時間
各演算の所要時間は、次の通りです。
ブートストラップが可能なキー作成: 37sec(6.6gb)
データ暗号化: 6.27 secs (8kb > 654.3mb) / preprocessed
統計分析: 141.81sec
統計演算
演算 データ 実行時間(Sec) カラム削除 銀行 1.08 カラム間の引き算 資産-貸付 6.34 カラム平均 貸付 15.37 標準偏差 年俸 29.25 カテゴリ型の演算
演算 データ 実行時間(Sec) カテゴリ別の平均 カード使用額-女性 12.00 カテゴリ別の平均 カード使用額-男性 9.63 カテゴリ別の平均 カード使用額-20代 13.62 カテゴリ別の平均 カード使用額-30代 13.51 カテゴリ別の平均 カード使用額-40代 13.86 カテゴリ別の平均 カード使用額-50代 13.45 カテゴリ別の平均 カード使用額-60代 13.70
機械学習(ロジスティック回帰): 89 secs
演算 実行時間(Sec) 学習 74 推論 15 推論結果の復号 1