データの可視化とは、チャート、グラフ、プロット、ダッシュボードなどの視覚要素を使用してデータをグラフィカルに表現することです。利害関係者や非技術系のオーディエンスが、複雑なデータを解釈し、意思決定に利用するのに役立ちます。
機械学習(ML)においては、単にダッシュボードやレポートを構築するだけではありません。MLモデルの構築、デバッグ、改善までが範囲に含まれます。トレーニングの前にデータを調査し、トレーニング中には発生した事象を監視し、評価後には何が問題だったのか、あるいは正しかったのかを診断するために使用します。提示することよりも、調査することのほうが重要です。
実際には、両者は重複する部分があります。優れた機械学習の実践者やデータサイエンスの専門家は、データの可視化を使用して、自身が問題を発見したりモデルを最適化したりするほか、他のユーザーのために成果を説明したり、モデルの出力に対する信頼を構築したりします。
機械学習におけるデータの可視化は、モデルの品質、下す意思決定、および自分の作業に対する他者の理解度に直接影響します。
可視化は、未加工データを受け取った瞬間からモデルの最終評価まで、MLワークフロー全体で活用されます。ここでは、各段階でそれがどのように使われるかを説明します。各段階で言及する可視化手法については、後続セクションで詳しく説明します。
分析を始める前に、扱うデータの状態を理解する必要があります。つまり、欠損値や一貫性のないデータ型、重複レコードを確認します。この段階でデータに構造的な問題があると、その後のすべての処理に密かに悪影響が及ぶためです。欠損値のヒートマップ、データ型の分布図、レコード出現頻度を示すグラフを使用すると、本格的にな作業に時間を費やす前に、データの健全性をすばやく確実に把握できます。
探索的データ分析では、ヒストグラム、散布図、相関行列、ボックス・プロット、ペア・プロットを使用して、生の数値だけでは明らかにならないパターン、異常、関係を表面化させることで、データ・セットを構築する前に構造、分布、関係を把握するのに役立ちます。EDAは本質的に、繰り返し行う作業です。何かを可視化し、仮説を立て、テストし、データが伝えていることを本当に理解するまで、何度も可視化を繰り返します。
未加工データを理解したら、モデルに使う特徴量の変換と選択を始めます。この段階で可視化すると、変換が期待どおりに機能しているかを確認でき、どの特徴量が実際に役立つかを見極めやすくなります。分布図や特徴量の重要度を示すグラフを読み解いたり、目的変数で分けたグループごとに特徴量がどう振る舞うかを把握したりすることで、前処理を場当たり的に行うのではなく、明確な根拠に基づいて選択できるようになります。
機械学習モデルの学習中は、可視化の役割はデータの調査から、モデルの学習プロセスの追跡へと変わります。学習曲線や損失曲線などのチャートによって、モデルが改善しているか、伸び悩んでいるか、または過学習を起こしているのかがわかります。こうしたフィードバックをもとに、学習が完了する前にハイパーパラメータをファイン・チューニングしたり、正則化を調整したり、学習期間を変更したりできます。
学習後の可視化によって、単一の精度の数値だけではわからない、モデルの実際の性能を真に理解することができます。混同行列、ROC曲線、適合率-再現率曲線、残差プロットはそれぞれ異なる側面からモデルの振る舞いを明らかにします。性能をクラスごと、しきい値ごと、予測値の範囲ごとに分類するため、モデルがどの程度うまく機能するかだけでなく、どこでうまく機能し、どこに課題があるかまで把握できます。
機械学習で使用されるデータの可視化の種類を理解するには、単にチャートの名前だけでなく、ユースケースの観点から考えることも必要です。ここでは、用途に沿って体系的に説明します。
ヒストグラムは、単一の数値特徴量がどのように分布しているかを示します。x軸では値をビン(区間)に分割し、y軸では各ビンに含まれるデータ・ポイントの数を表します。Pythonのmatplotlibやseabornなどのツールを使用してヒストグラムをプロットすることで、特徴量の分布が正規分布に近いのか、右に裾が長いのか、山が2つあるのか、均一分布に近いのかをすばやく確認できます。
各パターンは、適切な前処理を考える手がかりになります。たとえば、製品価格のヒストグラムで、そのほとんどが50米ドル未満に集中する一方、500米ドルまで長い裾が伸びているとします。このような分布は、モデルに使用する前にログ変換を行うと効果的である可能性を示しています。
散布図は、2つの数値変数をx軸とy軸に配置し、各データ・ポイントを点で表します。これらは、線形パターンと非線形パターンの両方を見つけたり、クラスターが形成される場所を特定したり、残りのデータから大きく離れた外れ値にフラグを立てるのに役立ちます。たとえば、住宅の広さと販売価格をプロットすると、特定のサイズのしきい値までは価格が明確な上昇傾向を示し、その後横ばいとなる場合があります。これは、学習前に調査する価値のあるパターンです。
相関行列は、データ・セット内のすべての数値特徴量について、各ペアの相関を示します。ヒートマップとしてレンダリングされると、セルの色が相関の強さでエンコードされ、多重共線性が一目でわかります。相関係数が0.95以上の特徴量は、情報が重複しているため、特徴量選択で除外の対象となることがよくあります。
相関は線形の関係のみを捉えるため、相関係数がほぼゼロでも、2つの特徴量が独立しているとは限りません。たとえば、住宅データセット内「総部屋数」と「総ベッドルーム数」は、ほとんどの場合非常に高い相関関係を示し、両方を保持してもモデルに新しい情報が追加されることはありません。
箱ひげ図は、中央値、データの主要範囲である四分位範囲、外れ値を示し、変数のばらつきを簡単に要約できます。機械学習では、目的変数で分けたグループ間で数値特徴量がどう異なるかを比較する際に、特に役立ちます。たとえば、ローンの返済を滞納した人と、しなかった人の所得を比較する場合です。
ペア・プロットは、データ・セット内の特徴量のすべての組み合わせについて散布図のグリッドを生成し、格子状に並べたものです。対角線上にはヒストグラムまたは密度プロットを配置します。Seabonのpairplot()関数を使えば、1行でこれらのプロットを生成できます。10~15個までの特徴量を持つデータセットの場合、多数のプロットを個別に作成しなくても、複数の変数の関係をすばやく概観できます。
ここでいう特徴量とは、年齢、収入、購入頻度など、データ・セットの個々の列を指します。たとえば、売上データ・セットのペア・プロットから、収益と販売数は密接に連携している一方で、割引率はそのどちらともあまり関係していないことが、すぐにわかる場合があります。このような発見は、どの特徴量を保持しておくべきかを判断するのに役立ちます。
密度プロットは、ヒストグラムをより滑らかにしたようなグラフです。2つのグループ間で、特徴量の分布を比較するのに役立ちます。曲線が大きく離れていれば、その特徴量は一般的に高い予測力を持ちます。一方、曲線が重なっている場合は、予測への有用性が低くなります。
たとえば、リピーターの顧客と離脱した顧客の「購入頻度」の密度をグラフ化し、2つの曲線の山が明らかに分かれていれば、その特徴量が顧客離脱予測モデルで役立つことを示す良い兆候です。
モデルの学習後に特徴量の重要度スコアを抽出し、棒グラフで可視化すると、どの特徴量が最も重要かを確認できます。代表的なのが決定木に基づくモデルで、これらの重要度スコアを標準的に提供します。重要度が極めて低い特徴量は、除外の有力な候補になることがあります。PlotlyやMatplotlibなどのツールを使えば、特徴量が多い場合でもチャートを簡単に作成できます。
分布比較プロットは、スケーリング、エンコード、ログ変換などの処理の前後で特徴量の分布を比較し、前処理が意図した効果をもたらしたかを確認するためのグラフです。この比較が重要なのは、不適切に変換された特徴量をモデルに取り込むと、予測が歪む可能性があるためです。変換前後のプロットを並べるだけでも、学習に進む前にこうした問題を検知できます。
学習曲線は、Y軸にモデルの性能(精度または損失)、X軸に学習データのサイズまたは学習の反復回数をプロットし、学習用と検証用に別々の線を描く、モデル学習の可視化手法です。
このグラフによって、機械学習モデルでよく見られる2つの問題を診断できます。過学習では、学習データと検証データに対する性能に大きな差が生じます。過小学習では、両方の性能が低いまま、曲線が早い段階で頭打ちになります。学習曲線を確認することで、モデルの複雑さ、正則化、学習データの量を、推測ではなく問題に応じて調整できるようになります。
ディープラーニング・モデルでは、エポック数に対する学習損失と検証損失のプロットを描くのが標準的な方法です。学習損失が低下し続ける一方で、検証損失の改善が止まったり、増加し始めたりした場合は、学習を早期に終了する目安になります。これらのプロットは通常、TensorBoardなどのツールを使用して、学習中にリアルタイムで生成されます。
より広義には、精度、F1スコア、曲線下面積などのメトリクスを、学習の反復回数に沿って追跡する折れ線グラフによって、モデルがどのように進化しているかを継続的に把握できます。学習終了時の単一のメトリクスよりも多くの情報が得られるのは、最終結果だけでなく、そこに至る過程もわかるからです。
混同行列は、モデル評価の可視化手法の一種で、実際のクラス・ラベルと予測したクラス・ラベルのすべての組み合わせを格子状に並べます。二値分類では、真陽性、真陰性、偽陽性、偽陰性を示し、モデルがどこで正しく予測し、どこで間違えているかを正確に確認できます。
混同行列は、多くの分類メトリクスの基盤となります。精度、再現率、F1スコアはすべてこれによって算出されます。件数や割合を数値で記したヒートマップにすると、クラスごとの問題をすぐに把握できます。精度に関しては「良さそう」に見えるモデルでも、重要なクラスをまったく正しく検出できていなければ、その問題が混同行列に明確に表れます。
ROC曲線は、分類のしきい値を0から1まで変化させたときの、真陽性率と偽陽性率を示すグラフです。曲線下面積(AUC)は、モデルの全体的な識別能力を1つの数値で表したものです。0.5はランダムな推測で、1.0は完全な識別を表します。ROC曲線は、複数のモデルを比較する場合や、偽陽性と偽陰性による損失が異なる場合に特に役立ちます。scikit-learnやplotlyのようなツールには、ROC曲線を作成する機能が備わっています。
データ・セットが大きく偏っている場合、適合率-再現率曲線は、ROC曲線よりもモデルの性能をより忠実に把握できます。優れた分類器の曲線はプロットの右上に近づき、再現率を犠牲にすることなく高い適合率を維持します。このグラフでは、さまざまな判定しきい値にわたって、Y軸に適合率、X軸に再現率をプロットします。
医療診断や不正アクセス検知などのリスクの高い分野では、まれなケースを捕捉できないことが誤報よりもはるかに被害が大きいため、この曲線から他のどの手法よりも有益な情報が得られることがあります。
回帰モデルの残差プロットは、予測値と実測値の差である残差をY軸、予測値をX軸に示します。残差は、明確なパターンを持たず、ゼロを中心にランダムに散在していることが望まれます。残差がファンアウトしていたり、規則的な曲線を示していたり、またはクラスター化していたりする場合は、モデルに構造的な問題があり、データ内の関係の一部を十分に捉えられていない可能性があります。
Matplotlibは、多くの可視化ツールの基盤となるオープンソースのライブラリです。「plt」としてインポートすることが多い「pyplot」モジュールは、ヒストグラム、散布図、折れ線グラフ、棒グラフなど、幅広い標準的なグラフに対応しています。新しいライブラリと比較すると冗長になりがちですが、その分、注釈、軸ラベル、図のレイアウトやサイズ設定など、あらゆる詳細を正確に調整できます。
Seabornはmatplotlibを基盤としており、定型的なコードを大幅に減らせます。matplotlibでは15行ほど必要になるヒートマップ、ペア・プロット、箱ひげ図も、Seabornなら1~2行で作成できます。pandasのDataFrameから直接読み込めるため、Jupyter Notebook環境でのEDAに最適です。
操作できるグラフを作りたい場合には、Plotlyが最適です。チャートはHTMLでレンダリングされ、閲覧者はデータ・ポイントの上にカーソルを合わせて詳細を確認したり、拡大したり、系列の表示を切り替えたりできます。そのため、ダッシュボードやWebレポートを通じて利害関係者に結果を提示する際には、静止画像よりもはるかに便利です。
NumPy自体は可視化ツールではありませんが、matplotlibとseabornが依存している配列操作や、x軸/y軸に使うデータ準備を処理する、ほぼすべての可視化ワークフローを支える基盤です。
Yellowbrickは、MLの評価に特化して構築されています。scikit-learnと連携し、単一の関数呼び出しで混同行列、ROC曲線、学習曲線、特徴量重要度プロットを生成できます。Matplotlibで必要になる、データと描画処理を手動で組み合わせるコードを省けます。
TensorBoardは、ディープラーニングの可視化を担います。学習中の評価メトリクス、損失曲線、モデルの構造をリアルタイムで表示でき、大規模なデータセットを使う学習や、長時間実行されるニューラル・ネットワークの学習処理を監視するうえで役立ちます。
効果的なデータの可視化では、適切なチャートを選択することだけではなく、気づかないうちに誤解を招くパターンを回避することも重要です。
機械学習におけるデータの可視化は最終的な仕上げのステップではなく、プロジェクトのあらゆるフェーズを通じて展開されるものです。データサイエンティストは可視化を通じて、表だけでは確認できない問題を診断し、メトリクスに隠されているモデルの失敗を捕捉し、調査結果を利害関係者に伝え、ワークフローの各段階でデータ駆動型の意思決定を自信を持って行うことができます。
各段階で意図的に可視化する習慣を身につけることは、モデルの品質を高め、思考を明確にするためにできる、最もシンプルで効果の大きい方法の1つです。
AI開発者向けの次世代エンタープライズ・スタジオであるIBM watsonx.aiを使用して、生成AI、基盤モデル、機械学習機能をトレーニング、検証、チューニング、導入しましょう。わずかなデータとわずかな時間でAIアプリケーションを構築できます。
業界をリードするIBMのAI専門知識とソリューション製品群を使用すれば、ビジネスにAIを活用できます。
AIの導入で重要なワークフローと業務を再構築し、エクスペリエンス、リアルタイムの意思決定とビジネス価値を最大化します。