機械学習を用いたデータ分析ーテクノロジー最前線 エンジニアリング編(2)

2023-03-27

機械学習においては、分析モデルの構築を自動化するアプローチが知られています。反復的に学習するアルゴリズムを使用することでデータ内の隠れたパターンを明らかにし、信頼性が高く、再現可能な結果を導き出すことができます。本稿では、機械学習を用いたデータ分析の一般的なプロセスと方法論についてご紹介します。

1. データ理解

データを理解するためには、データ数、平均や中央値、標準偏差などの統計量を確認する必要があります。統計量の確認は前処理の手法判断だけでなく、データ収集プロセスの課題発見にも繋がります。そこで、これらの統計情報取得のために、データ分析などに標準で用いられるPython Pandasを用いると、下記3つがあります。

  • Pandas describe関数:データの概要情報を一括で取得するためのツールです。pandas 以外のツールキットを追加でインストールすることなく利用できます。
  • Pandas profiling report:​​1回目に使う際に環境構築に少し時間がかかりますが、HTML形式で出力できます。また、各変数の統計量を個別に表示できるだけでなく、変数間の相関係数なども表示することができます。
  • pydqc:Pandas profilingと同様に、より包括的な基本統計量を取得するために活用できます。表計算ソフトでまとまっており、特にデータクレンジング前後の分布を比較する際によく利用されています。

図表2.探索的データ解析ツール

2. データ準備

❖ 前処理

なぜ前処理が必要かというと、入手したデータが不正確であったり、一貫性がなかったりすることから、機械学習に直接使用できないケースが多々見受けられるからです。そのため、何かしらの処理を加えて“きれいな”データに整えてあげる必要があるのです。私が実際のプロジェクトでよく実施する処理としては、大きく分けて5つの項目が挙げられます。

1) 欠損/異常/重複値の処理

これに対応するためには、まずはビジネスロジックを理解することが重要です。欠損値のあるデータについては変換、もしくは削除することが多いですが、場合によってはこれらのデータは無視することが最も適切であることもあります。例えばアンケートデータを整理する時、答えがない、もしくはアンケートの設計に沿って答える必要がない質問は「N/A」(Not Available)のままにしておくほうが、より筋道が通った処理と思います。

2) カテゴリーデータの処理

文字列データを数値データに変換するプロセスです。例えば喫煙状況を調査する場合、タバコの本数を問わず、喫煙する人を「1」、吸わない人を「0」に全て変換し、それ以外の余計な情報を捨てるという処理が考えられます。

3) 特徴量削除

業界知識に基づいた処理です。重複データやモデルでは、不要な特徴量を削除します。特に、性別や人種などの情報は、倫理的な問題を伴う可能性があるので、取り扱いには十分注意すべきです。

4) 学習のための処理

例えば、各特徴量の値の幅を揃え、共通のスケールで、公平に特徴量を比較できるようにするため、「Rescaling / Normalization処理」を行います1。学習のための処理にはさまざまなテクニックがあります。データの種類によってもまたそれぞれ独自の手法があります。しかし、どのような処理でも必ずアルゴリズムのパフォーマンス向上を保証できるわけではないので、試行錯誤しながら、最適な処理を選ぶ必要があります。

5) 特徴量の変換、追加

モデルの精度を向上するため、手動で特徴量の変換を行う場合もあります。特にデータ量が足りない場合、既存の特徴量からドメイン知識などを活かして、新しい特徴量を作成します。

 

図表3.データの前処理

図表3 データの前処理

❖ 特徴量選択

特徴量を選択することで、「モデルの精度の向上」「計算コストの削減」「説明可能なモデルにする」などのメリットが得られます。余分な特徴量を含めたままで学習させてしまうと、本来のパターンを見つけることができなくなるので、不要な特徴量を削除するのが一般的なやり方です。

その中で、Filter法、Wrapper法とEmbedded法の3種類の手法があります2

  • Filter法は、目的変数と特徴量の相関係数などの統計量を計算し、特徴量を選択する方法です。この3種類の中で最も処理速度が速いため、特に特徴量の数が多い時に使われています。「特徴量」と「目的変数」を一対一で見るので、特徴量同士の関係を考慮しない比較的簡単な選択方法になります。
  • Wrapper法は、特徴量の組み合わせを変えてモデルを学習させて、性能を評価することを繰り返し、特徴量を選択する方法です。繰り返し学習させるので、計算コストが高い方法になります。
  • Embedded法は、モデルの重要度を利用し、特徴量を選択する方法です。例えば、決定木モデルを作り、feature importanceの重要度が低い特徴を削除するやり方があります。

図表4.特徴量の選択

❖ 可視化

Pythonでの可視化にはmatplotlib.pyplot、seabornといったライブラリがよく使われています。Seabornは初心者でも簡単で綺麗な可視化が得られます。Pyecharts、Bokeh、Plotlyを使うと、インタラクティブなグラフを作ることできます。TableauとPower BIはプログラミングをする必要がないので、プログラミング経験のないビジネスエキスパートでも使うことができます。

3. モデリング

機械学習のモデルは数えられないほど多くあります。そこに、どのようなアルゴリズムを使えばいいのかを判断する必要があるのですが、Scikit-learnのチートーシートがよく使用されています3。このチートーシートは回帰、分類、クラスタリング、次元削減の4種類に分けられており、最大4回の二択問題で判断することが可能です。

私が今まで参加したプロジェクトで使用された代表的なモデルを図表5にまとめました。「教師データあり」と「教師データなし」の2種類があります。大半のプロジェクトでは予測結果の説明が要求されるので、「教師データあり」のモデルはほぼ可読性に”〇”がついているモデルを使いました。その他、「教師データなし」のK-MeansとLDAにおいては、クラスタリングのロジックが多くの場合ブラックボックスになっています。今までのプロジェクトではコンサルタントと連携し、予測結果が論理的かどうかを確認する進め方で検証してきました。

図表5.よく使用される代表的なモデル

4. 評価・検証

モデルの評価と検証方法は技術者やプロジェクトによって異なりますが、私が参加したプロジェクトでは業務ロジックの検証とモデルのパフォーマンス検証の2種類を実施しました。

  • 業務ロジックの検証は、なるべくモデルを解釈し、ビジネスエキスパートに説明するための工夫が必要です。あるプロジェクトではRandom Forestを使ったので、木の可視化および重要度表示をlimeというライブラリを使うことで解釈しました 。モデルによっては、可読性が低い場合もあるので、別の解釈可能モデルで局所近似モデルを作成し、説明することも必要となります。
  • パフォーマンス検証は、ホールドアウトを使うのが一般的なやり方です。評価するテストデータを訓練、評価に分割し、使用します。また、サンプル数が少ない場合には、交差検証を行います。交差検証とは訓練データの中を、さらに訓練、検証に分割する手法です(図表6)。分類と回帰モデルはそれぞれ異なる指標を使用し、結果の評価を行います。例えば、二項分類は適合率、再現率、ROC/AUC、多クラス分類はF1 Score、回帰モデルはMSE(平均二乗誤差)などがよく使われます。

図表6.ホールドアウト交差検証

まとめ

ここまで、機械学習での重要な「データ理解」「データ準備」「モデリング」「評価・検証」という4つのプロセスについて簡単に説明してきました。実際にモデリング構築を行うにあたっては、さまざまな問題が生じます。データやニーズに応じて適切な手法を選択し、必要に応じて組み合わせて対応することが必要です。そこが機械学習の興味深いところです。

参考資料

1.機械学習に向けてのデータ前処理
https://avinton.com/blog/2018/01/data-processing/

2.機械学習で特徴量を正しく選択する方法
https://rightcode.co.jp/blog/information-technology/feature-selection-right-choice

3.Choosing the right estimator
https://scikit-learn.org/stable/tutorial/machine_learning_map/index.html

4.代表的な機械学習手法一覧
https://qiita.com/tomomoto/items/b3fd1ec7f9b68ab6dfe2

Amy Yu
マネージャー, PwC US Advisory Shanghai AC
AI技術開発における8年以上の経験があり、主にデータ分析、画像処理、自然言語処理のソリューション開発を担当

テクノロジー最前線―先端技術とエンジニアリングによる社会とビジネスの課題解決に向けて

データアナリティクス&AI編

(1):テック人材の採用と維持における企業の課題
(2):フィーチャーエンジニアリングとは?
(3):SNSを活用したコロナ禍における人々の心理的変化の洞察
(4):自然言語処理(NLP)の基礎
(5):今、データサイエンティストに求められるスキルは何か?データサイエンティスト求人動向分析
(6):コロナ禍における人流および不動産地価変化による実体経済への影響
(7):「匠」の減少―技能継承におけるAI活用の道しるべ
(8):開示された企業情報におけるESGリスクと財務インパクトの関係性の特定
(9):ビッグデータ分析で特に重要な「非構造化データ」における「コンピュータービジョン(画像解析)」とは
(10):自然言語処理・数理最適化による効率的なリスキリングの支援
(11):スポーツアナリティクスの黎明 サッカーにおけるデータ分析
(12):AIを活用した価格設定支援モデルの検討―外部環境変化に即座に対応可能な次世代型プライシング
(13):MLOps実現に向けて抑えるべきポイントー最前線
(14):合成データにより加速するデータ利活用

エマージングテクノロジー編

(1):ブロックチェーン技術の成熟度モデルとステーブルコインの最新動向について
(2):3次元空間情報の研究施設「Technology Laboratory」のデジタルツイン構築とデータの管理方法
(3):3次元空間情報の研究施設「Technology Laboratory」における共通ID「空間ID」と自律移動体の測位技術
(4):G7群馬高崎デジタル・技術大臣会合における空間IDによるドローン運航管理

エンジニアリング編

(1):COVID‐19パンデミック下のオンプレミス環境におけるMLOpsプラクティス
(2):機械学習を用いたデータ分析
(3):AWSで構築したIoTプラットフォームのPoC環境をGCPに移行する方法
(4):テクノロジーの社会実装を高速に検証するPwCの独自手法「Social Implementation Sprint Service」-テクノロジー最前線
(5):自動車業界におけるデジタルコックピットの擬人化とインパクト
(6):成熟度の高いバーチャルリアリティ(VR)システム構築理論の紹介
(7):イノベーションの実現を加速する「BXT Works」とは
(8):Power Platformの承認機能、AI Builderを活用して業務アプリを開発する方
(9):社会課題の解決をもたらす先端テクノロジーとディサビリティ インクルージョンの可能性