この記事では、DataRobotを使って分類問題を解決する方法をまとめています。具体的には、データのインポート、探索的データ解析、ターゲットの設定、モデリングのオプション、モデルの評価、モデルの解釈、モデルのデプロイについて学びます。
ここでは、ある病院が、これまで入院していた糖尿病患者が退院してから30日以内に再入院するかどうかを予測する、というユースケースをとりあげます。この病院は、これを予測することによって、患者の早期退院を防止したいと考えています。
トレーニングデータには、再入院したかどうかが分かっている過去のデータを使います。1行が1人の患者を示します。各列は特徴量と呼ばれ、それぞれの患者の情報を示します。例えば、性別や年令と行った個人属性や臨床記録などがあります。ターゲット(予測対象)の「再入院」 は、TRUE/FALSEのブール値ですので、これは二値分類問題となります。データは本記事の最下部にあります。ぜひ一緒にお試しください。
図 1.トレーニングデータのスナップショット
図 2. データインポートオプション
DataRobotにデータをインポートする方法は、以下の5通りです。
データをインポートすると、DataRobotは探索的データ解析(EDA)を行います。その結果、データセット内の各特徴量の平均値や中央値、ユニークな値の数、欠損の数などが表示されます。
特徴量名をクリックするとヒストグラムが表示され、分布を詳細に見ることができます。
図3. 探索的データ分析
トレーニングデータの内容をよく把握したら、ターゲットを設定してDataRobotに何を予測するかを教えます。画面の一番上までスクロールして、下図に示すテキストフィールドにターゲットとなる列の名前を入力して下さい。DataRobotは分類問題か回帰問題かを自動で判別し、ターゲットの分布のグラフを表示します。
図4. ターゲットの設定例
ターゲットを設定したら、あとは開始ボタンを押すだけでオートパイロットを実行することができますが、モデルを構築する前に幾つかの設定をカスタマイズすることもできます。
たとえば、[高度なオプション] > [その他]で、最適化指標を変更することができます。
図 5. 最適化指標
また、[パーティション]では、パーティショニングを変更することができます。
図6. パーティション
開始ボタンを押すと、DataRobotはモデルを30~40個作成します。まず、ブループリント(下図)を作ります。ブループリントは、トレーニングデータの内容や分布に最適と考えられる前処理とアルゴリズムの組み合わせです。DataRobotが作成するすべてのモデルにブループリントが存在します。
図 7. ブループリントの例
DataRobotが作成したモデルは、リーダーボードで、評価指標の良い順番にランキングされます。リーダーボードは、[モデル] タブの中にあります。
図 8. リーダーボードの例
データ・サイエンスでよく使用される評価メトリックは、[評価] > [ROC曲線] (図 9)で見つけることができます。ここには、混同行列、ROC曲線、予測分布などがあります。
図 9. 評価ツール
モデルの精度を評価したら、使用した特徴量がそれぞれ予測にどのように影響を与えているかを見てみましょう。そうしたことを見るための一連のツールは、[解釈]タブの中に用意されています。
[特徴量のインパクト]では、そのモデルにとってどの特徴量が最も重要かを見ることができます(図10)。
図10 特徴量のインパクトの例
これは、アルゴリズムに依存しない手法で計算されますので、DataRobotが作成するすべてのモデルで特徴量のインパクトを見ることができます。
また、同じく[解釈]タブの中にある[特徴量ごとの作用](図11)を使えば、それぞれの特徴量が個別に予測にどのように影響を与えているかを見ることができます。下図の例では、「入院回数(過去1年)」が再入院確率をどのように高めるかが分かります。これも、部分依存と呼ばれるモデルに依存しない手法で計算されています。
図11 特徴量ごとの作用の例
特徴量のインパクトと特徴量ごとの作用は、各特徴量の予測全体に対する影響を示します。各特徴量が予測一つ一つにどのように影響を与えるかは、[解釈] > [予測の説明] で見ることができます (図 12)。
図 12. 予測の説明の例
この画面では、例として、再入院確率が高い患者3名と低い患者3名を選び、それぞれどうしてそのように予測したのか、その理由を示しています。これはデータサイエンティスト以外の人にどういうモデルなのか説明するのに非常に便利です。ドメイン知識を持っている人がこの具体例を見れば、どういうモデルなのか理解することができるはずです。この画面では一部しか示していませんが、予測の説明は全ての予測に対して取得することができます。
[予測]タブの中に、DataRobotで予測する方法が2種類用意されています。
1つ目の方法は、[予測を作成]でGUIを使用して予測データをアップロードする方法です(図13)。予測を計算したあと、「予測をダウンロード」ボタンを押すだけで予測結果をダウンロードすることができます。通常、アドホックな分析やあまり頻繁に予測を行う必要がない場合に使用します。
図13 GUIによる予測
[デプロイ]で、人手を介さずにアプリケーションから直接予測するためのREST APIエンドポイントを作成できます(図14)。独立した予測サーバーを使用することで、低レイテンシー、高スループットの予測をすることができます。また、定期的に予測を実行することもできます。
図14 デプロイ