【DataRobotを用いた画像分類】DataRobotシリーズ その3

こんにちは。スキルアップAI編集部です。

これまでのDataRobotシリーズでは、DataRobotの基本的な使い方や異常検知を行う方法についてご紹介しました。

実務においては、機械学習によって画像を分類したいという場面がよくありますが、DataRobotではその画像分類も行うことが可能です。
今回は、DataRobotを用いた画像分類の方法についてご説明します。

＜目次＞
1.画像分類の概要
2.画像分類の手順
3.まとめ

# 1.画像分類の概要
今回は、DataRobotの「Visual AI」という機能を用いて、画像データとテーブルデータを組み合わせた多値分類を行う方法をご紹介します。「Visual AI」とは、画像を用いたモデルの作成や利用を自動化する機能です。

例として今回は、皮膚の病変部位に対する病気の特定を画像分類によって行ってみたいと思います。

# 2.画像分類の手順
次の手順で画像分類を行っていきます。

①データの準備
②データの読み込み
③モデリング
④ブループリントを確認する
⑤特徴量のインパクトを確認する
⑥アクティベーションマップを確認する
⑦多値分類問題の評価指標を確認する

まず、①の「データの準備」から行っていきます。

今回用いるCSVファイルには、症例IDや病気の種類、患者の年齢、性別、病変部が身体のどの箇所にあるかといった情報が格納されています。
画像を読み込むには、このCSVファイルに画像ファイルへのパスを記載した「image」という列を新たに用意し、CSVファイルと画像を紐づけする必要があります。

![datarobot-3_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/0483e9b6-d1a1-04f6-e730-a47f8260270d.png)

DataRobotでデータを読み込むため、CSVファイルと画像ファイルが格納されたフォルダを作成し、圧縮します。

![datarobot-3_02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/de917d9d-4bed-52a6-5fdc-ce442cff99f2.png)

次に、作成したZIPファイルをDataRobot上で読み込みます。

![datarobot-3_03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/37d2ca26-205a-ef92-b016-ed0a009669a4.png)

以上でデータの読み込みが完了しました。

次に、読み込んだデータを用いてモデリングを行っていきます。
まず、先ほど読み込んだデータがDataRobot上に正しく取り込まれていることを確認します。

![datarobot-3_04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/3ceeafd8-a2d0-5bbb-d331-1a880a8775bd.png)

![datarobot-3_05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/027c6562-8b36-b6bc-416d-46169c244bed.png)

![datarobot-3_06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/2c80ca64-709a-cf61-d670-e34e9a1f9edf.png)

これで画像が正常に取り込まれていることが確認できました。

次に、予測したいターゲットを設定します。今回は病変の種類を予測するため、病気の種類が格納された「dx」という特徴量をターゲットとします。

![datarobot-3_07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/36e2aa92-01a2-9ac3-5107-0446460b67b4.png)

画面中央の「開始」をクリックし、モデリングを開始します。
この際、モデリングモードが「クイック」になっていることを確認します（モデリングモードをクイックにすると、通常の4分の1程度の時間で完了することができます）

![datarobot-3_08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/db938c0d-5b72-799b-58bc-176eb9d6c22f.png)

モデリングが完了すると、「オートパイロットが終了しました」と表示されます。

![datarobot-3_09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/fbcef3d6-0b35-f001-7813-be4d64156070.png)

以上でモデリングが完了しました。

次に、画像データがモデルにおいて処理されていることを確かめるため、ブループリントを確認します。

![datarobot-3_10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/5c13a11d-4b2b-f5c4-bdd9-9dfa106a8d4b.png)

![datarobot-3_11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/b6a199bf-2fa4-b941-9d13-d1aeee17898f.png)

![datarobot-3_12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/deb273d1-82bf-2ec9-4c39-ee5a96709e15.png)

![datarobot-3_13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/3ec5fdc9-d44c-2f99-dbfa-b81fddd0eaaa.png)

ブループリント内で画像データが処理されていることが確認できます。

![datarobot-3_14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/b8c7f1e3-53e6-9e5a-7947-5cab945e28e2.png)

以上で画像データがモデルにおいて処理されていることを確認できました。

次に、モデルに用いた各特徴量のインパクトを調べます。

![datarobot-3_15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/8071420c-7c07-8511-3d73-6c7413a4d445.png)

画像がどの程度予測に寄与しているのかを確認できます。今回の例では、画像が予測に対して全体の特徴量の約 23% 寄与していることがわかりました。

![datarobot-3_16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/cda8213f-1a41-c3b0-a89d-3ef688e078b0.png)

次に、アクティベーションマップを確認します。

アクティベーションマップとは、モデルが画像のどの部分を注視して予測を行っているかを可視化したものです。

![datarobot-3_17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/c1515d1b-39fb-0a05-9b02-049a12a34126.png)

![datarobot-3_18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/b596a12f-8e79-2fc3-1287-b7493cdca805.png)

アクティベーションマップが表示できました。

画像の着色部分は赤くなっている箇所ほど予測に寄与していることを表しています。このように、DataRobotでは画像の一つひとつにおいて重要度が高い部分を調べることができます。

![datarobot-3_19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/fbc4ae11-6274-c985-f133-c13ff3dbbbdc.png)

次に、多値分類問題の評価指標を確認します。
DataRobotでは、混同行列や性能評価指標を確認することができます。

![datarobot-3_20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/90c3d4c7-6cdf-2452-e219-4e0e24b99c36.png)

混同行列の見方は以下の通りです。

![datarobot-3_21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/36725ebf-e46d-fd20-0c2a-c2f54db6e88a.png)

![datarobot-3_22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/51702ef3-5f82-9ec6-38b3-02838ac5d3db.png)

今回のモデルでは、予測精度が 93.75%、F1スコアが 0.96、recallが 1、precisionが 0.92 であることがわかります。

![datarobot-3_23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/6652307a-9eb7-3afd-5364-600b1981d16d.png)

# 3.まとめ
今回は、画像データとテーブルデータを用いて画像を分類する方法をご紹介しました。
もちろん、画像データのみを用いて画像を分類するモデルも作成することができます。ぜひいろいろ試してみてください。

スキルアップAIでは、関連講座として「[現場で使えるAIプランニング・プロジェクト推進基礎講座（DataRobot活用編）](https://bit.ly/3LHE7Au)」を開講中です。 本講座では、AIプランニング・プロジェクト推進基礎講座で学ぶPoCフェーズにおいて、実際にDataRobotを活用してケースデータに対してPoCを実施することで、アイディエーションに留まらないプロジェクト推進のイメージを持てるように工夫しています。是非ご検討ください。

# 25卒向け！AIエンジニアになるための長期インターンプログラム参加者募集中！
25卒学生向けに、AIの基礎を学びながら就活も一括サポートする無料カリキュラムを提供しています。
修了するとE資格の受験資格も獲得できるプログラムとなっています！

<img width="700" alt="長期インターン" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/bfce4c26-1ebe-c54d-bacb-e804048a7a08.png">

**特長①AIエンジニアやデータサイエンティストの基礎が身に付く**
AIジェネラリスト基礎講座や機械学習のためのPython入門講座など、市場価値向上のための基礎を習得。

**特長②AI・データ分析領域の優良求人を紹介**
非公開求人や選考直結型インターンをご紹介し、早期内定の獲得をサポート。

**特長③長期インターンプログラム専用の学生コミュニティ参加可**
学生同士で就活情報をシェアしたり、学習を進めるうえでアドバイスをしあったりできるコミュニティに参加可能。

＞＞[長期インターン詳細](https://bit.ly/3pXW5JM)

☆☆☆
スキルアップAIのメールマガジンでは会社のお知らせや講座に関するお得な情報を配信しています。
配信を希望される方は[こちら](https://share.hsforms.com/1_XlReV-4Te-zcxCl9lhffA2mtef)

また、SNSでも様々なコンテンツをお届けしています。興味を持った方は是非チェックしてください♪
Twitterは[こちら](https://twitter.com/SkillupAi)
Facebookは[こちら](https://www.facebook.com/skillupai)
LinkedInは[こちら](https://www.linkedin.com/company/skillup-ai)
スキルアップAI公式YouTube AIビジネスチャンネルは[こちら](https://www.youtube.com/AIBusinessChannel)