Tag: Python

Machine Learning
SAS Viya: ディープラーニングと機械学習の判断根拠情報

前回の「ディープラーニングの判断根拠」ブログでは、PythonからSAS Viyaの機能を活用するためのパッケージであるSWATを使用した例を説明しましたが、今回は、以下2点に関してご紹介します。 SAS ViyaのよりハイレベルなPython APIであるDLPyを使用した画像認識モデルの判断根拠情報 機械学習の判断根拠情報 1.SAS ViyaのよりハイレベルなPython APIであるDLPyを使用した画像認識モデルの判断根拠情報 この例では、複数のイルカとキリンの画像をSAS Viyaのディープラーニング(CNN)で学習させ、そのモデルに以下の画像を当てはめて、これがイルカなのか否かを判別するものです。 実際、この画像はイルカであると判定されたんですが。 SAS Viyaでは、その判断根拠となり得る情報の一つとして、入力画像のどこに着目したのかを以下の通り出力し、確認できるようになっています。 DLPyでは、get_feature_maps()メソッドでfeature mapを取得し、feature_map.display()で指定したレイヤーの内容を表示することができます。 以下は、レイヤー1のfeature mapです。 以下は、レイヤー18のfeature mapです。 白色の濃淡で、判別に影響を与えている箇所を確認することができます。 さらに、SAS Viyaでは、画像認識モデルの判断根拠情報を可視化する手法の一つである、Grad-CAMと同様に、画像の何処に着目したのかを、カラフルなヒートマップとして出力し、確認することもできるようになっています。 しかも、heat_map_analysis()メソッドを使用して、以下の通り、たった1行書くだけでです。 青、緑、赤の濃淡で、判別に影響を与えている箇所を確認することができます。 DLPyの詳細に関しては、以下をご覧ください。 https://github.com/sassoftware/python-dlpy 2.機械学習の判断根拠情報 もちろんディープラーニングだけではなく、従来からの機械学習のモデルによって導き出された予測や判断に関しても、それがなぜ正しいと言えるのか、具体的に言えば、なぜAさんはこの商品を買ってくれそうだと判断されたのか、なぜこの取引データは疑わしいと判断されたのか、を説明する必要性があるわけです。特に説明責任が求められるような業務要件においては、 ということでSAS Viyaの次期版には機械学習の判断根拠情報、モデル内容を説明するための機能が実装される予定です。 まず、影響度が最も高い変数は、という問いに対しては、従来からの変数の重要度で確認することができます。これをさらに一段掘り下げたものが、Partial Dependence (PD)です。 日本語では「部分従属」と言いますが。重要度の高い変数は、予測に対して、具体的にはどのように作用しているのかを知ることができます。 そしてこのPDを元にさらに一段掘り下げたものが、Individual Conditional Expectation (ICE)になります。 また、これらとは別に、なぜその予測結果に至ったのかを説明するテクニックとしてLocal Interpretable Model-agnostic Explanations (LIME)を活用することができます。 SAS Viyaベースの製品であるSAS Visual Data Mining and

Advanced Analytics | Programming Tips
Makoto Unemi (畝見 真) 0
SAS Viyaで線形回帰

SAS Viyaで線形回帰を行う方法を紹介します。 言語はPythonを使います。 SAS Viyaで線形回帰を行う方法には大きく以下の手法が用意されています。 多項回帰: simpleアクションセットで提供。 一般化線形回帰または一般線形回帰: regressionアクションセットで提供。 機械学習で回帰: 各種機械学習用のアクションセットで提供。 今回は単純なサインカーブを利用して、上記3種類の回帰モデルを作ってみます。   【サインカーブ】 -4≦x<4の範囲でサインカーブを作ります。 普通に $$y = sin(x) $$を算出しても面白みがないので、乱数を加減して以下のようなデータを作りました。これをトレーニングデータとします。 青い点線が $$y=sin(x)$$ の曲線、グレーの円は $$y=sin(x)$$ に乱数を加減したプロットです。 グレーのプロットの中心を青い点線が通っていることがわかります。 今回はグレーのプロットをトレーニングデータとして線形回帰を行います。グレーのプロットはだいぶ散らばって見えますが、回帰モデルとしては青い点線のように中心を通った曲線が描けるはずです。 トレーニングデータのデータセット名は "sinx" とします。説明変数は "x"、ターゲット変数は "y" になります。 各手法で生成したモデルで回帰を行うため、-4≦x<4 の範囲で0.01刻みで"x" の値をとった "rangex" というデータセットも用意します。 まずはCASセッションを生成し、それぞれのデータをCASにアップロードします。 import swat host = "localhost" port = 5570 user = "cas" password = "p@ssw0rd"

1 34 35 36 37 38 40