中心に数多くのアナリティクス・プロジェクトの提案に参画。現在はAIプラットフォームなど新たなテクノロジーの活用に特化した提案を担当している。ディープラーニングや機械学習などのAIテクノロジーや大規模分析基盤アーキテクチャについての豊富な知見、経験を持つ。新たなテクノロジーでも分かりやすく解説するプレゼンテーションには定評があり、満足度の高い講演を年間、数多く行っている。Viya(以降VA)の最新版8.4に搭載されている新機能の中から、以下5つの機能に関してダイジェストでご紹介します。VA8.3から搭載されていた機能やUIが拡張されています。AIストーリーテラー(自動分析&解説)機能では、分析対象の変数(ターゲット)を指定するだけで、その変数に影響を与えているその他の変数の特定や、変数ごとにどのような条件の組み合わせがターゲット変数に依存しているのかを「文章(条件文)」で表現して教えてくれます。この例で使用するデータ「HMEQJ」は、ローンの審査を題材にしたもので、顧客ごとに1行の横持ちのデータです。このデータ内にある「延滞フラグ」が予測対象の項目(ターゲット変数)で、0(延滞なし)、1(延滞あり)の値が含まれています。以下のような結果が表示され、見つけ出された有用な洞察を説明してくれます。予測対象値(0:延滞なし、1:延滞あり)の切り替えが可能です。この例では、「1:延滞あり」を選択し、「延滞する」顧客に関して分析しています。全体サマリーとして、すべての顧客の内、延滞実績のある顧客は19.95%(5,960件中の1,189件)であることが示されています。「延滞する」ことに関して影響を与えている変数の重要度を視覚的に確認することができます。影響度の高い変数(今回は「資産に対する負債の割合」)の重要度を1として、1を基準値にした相対重要度が算出され、横棒グラフで表示されます。従来版に比べて、変数ごとの影響度合いの違いを明確に捉えることができます。「高」タブには、「延滞する」可能性が高いトップ3のグループ(条件の組み合わせ)が文章で示され、「低」タブには、「延滞する」可能性が低いトップ3のグループ(条件の組み合わせ)が文章で示されます。この例では、3で「資産価値」が選択され、「資産価値」に基づき、延滞する可能性の高い/低いグループのトップ3が表示され、「資産価値」に関する条件部分がハイライトしています。この例では、3で「資産価値」が選択され、これに応じて「0:延滞なし、1:延滞あり」別の顧客の分布状況がヒストグラムで表示されています。選択された変数が数値属性の場合は、ヒストグラムで、カテゴリ属性の場合は積み上げ棒グラフで表示されます。チャートの下端では、チャートから読み取れる内容を文章で解説しています。以下は、カテゴリ属性の変数を選択した場合の表示例です。以上のように、分析スキルレベルの高くないビジネスユーザーでも、簡単かつ容易に、そして分かり易くデータから有効な知見を得ることができます。Viya特設サイトのビジュアライゼーションセクションで動画でもご覧いただけます。従来のVAでは、編集モードで作成したレポートを表示モードで確認する際には、メニューから「レポートを開く」を選択し、レポートが表示されるのを少し待つ必要がありました。レポート表示モードから編集モードに戻るにもメニューから「編集」を選択する必要がありました。VA8.4では、編集モードと表示モード切替の利便性が改善され、画面左上のペンシルアイコンをクリックするだけで、編集画面<->表示画面間を瞬時に切り替えられるので作業効率が向上します。ご覧の通り、編集画面と表示画面のレイアウトも統一されています。一般的にBIツールでは、対象ユーザーを3つの層(管理者、レポート作成者(デザイナ)、レポート閲覧者(コンシューマ))に分類し、それぞれに最適なインターフェースを提供しています。レポート閲覧者の中には、「基本的には誰かが作成したレポートを見るだけでいいんだけど、自分好みに変更できたらもっといいのにな...」という声も多くあります。このレポートカスタマイズ者層に答えられないために、彼らは、レポートを開き、そのデータをダウンロードし、Excelに取り込んで好みのレポートを作成しようとするのです。VA8.4では、レポートカスタマイズ者層向けに、作成済みレポートを開いて閲覧中に、簡単操作で好みに合うようにレポートをカスタマイズすることができるようになりました。以下は、レポート閲覧中に「円グラフ」を他のチャートタイプに変更するメニューが表示されている例です。レポート作成者は、レポートカスタマイズ者向けに、カスタマイズ可能な機能範囲を3段階で制御することが可能です。これで、レポート作成者の負担も軽減され、レポート閲覧者の痒いところに手が届きそうですね。レポート作成の元となるデータソースを選択すると、そのデータソース内の項目に基づき、「こんな分析が有効じゃないの...」と、分析画面の候補を自動的に提示してくれる機能です。画面左端から電球マークの「候補」アイコンをクリックすると、分析候補がいくつか表示され、提示された分析画面をドラッグ操作でレポートに挿入することができます。素早く、効果的な情報を含むレポートを作成することができそうですね。これも一つの自動分析機能です。従来版のVAでは、カスタムグループを作成する際には、カスタムグループ作成専用の画面内で、グループに含める要素の選択と、グループ名称を設定し、OKをクリックしてチャートに反映させる必要がありましたが、VA8.4では、チャート上でグループ化対象の要素を選択し、そのグループに名称を設定して、素早くカスタムグループを作成することができるようになりました。Studioを使用した時系列予測の基本的な手順を紹介しました。今回は、需要予測の精度を高める代表的な一つの手法として、需要分類をご紹介します。お菓子の販売に関する需要を予測する場合を考えてみましょう。ポテトチップスやおかきのように通年を通して売れる商品もあれば、アイスクリームのように夏季に需要が増加する商品、チョコレートのようにバレンタインデーの直前と当日に需要が急増する商品、お盆やお彼岸などの際にお供え用にときどき購入される商品などなど、お菓子の種類によって需要のパターンは異なってきます。これらの異なる需要パターンの商品に対して、一律同じアルゴリズムを適用しても予測精度は高まりません。Viyaの時系列予測では、自動的に需要のパターンを分析し、予測の精度を高めるような仕組みも搭載されています。Studioで時系列予測を実行する際に、需要分類を活用する場合は、「需要の分類」テンプレートを使用します。(使用する時系列データやデータ内の変数に対する役割設定内容は、「ビジュアルパイプラインで将来予測」ブログ内容と同様です。以下は、「需要の分類」パイプライン・テンプレートを選択し、実行した後の画面です。「需要の分類プロファイル」ノードでは、統計解析等の手法を使用して、時系列データを解析し、需要のパターンを検出します。冒頭にお話しした通り、予測対象によって需要のパターンは様々です。した多様なパターンを見極めた上で、適した予測アルゴリズムを用いることが肝要になります。今回のデータでは、地域×製品ラインのセグメントごとに需要のパターンが検出され、分類されます。分類結果が表示されます。地域×製品ラインでは、5つの組み合わせ=セグメントが存在するので、これらのセグメントごとにパターンが検出され、結果としては、1つのセグメントは「YEAR_ROUND_NON_SEASONAL:長期間の非季節性需要」として、4つのセグメントは「YEAR_ROUND_SEASONAL:長期間の季節性需要」として分類されていることがわかります。上記の2種類を含め10種類の需要パターン+その他、に分類されます。次の「需要の分類モデリング」ノードでは、分類されたセグメントごとに最適なアルゴリズムが選択され、予測が実行されます。実行結果が表示されます。検出された需要パターンに応じて、最適なアルゴリズムを適用したパイプライン(以下の「パプライン」列)が選択され、実行されます。「YEAR_ROUND_NON_SEASONAL:長期間の非季節性需要」のセグメントには「非季節予測」モデルのパイプライン・テンプレートが適用され、「YEAR_ROUND_SEASONAL:長期間の季節性需要」のセグメントには「季節予測」モデルのパイプライン・テンプレートが適用され、それぞれ実行されています。「WMAPE」列には加重MAPEの値が表示されています。そのセグメントに適用され、実行されたパイプラインが表示されます。加重MAPEの値や、このパイプラインの予測結果を確認し、精度をさらに改善したい場合は、従来通りの操作性でこのパイプラインをカスタイズ(アルゴリズムを変更したり、パラメータをチューニングしたり)することもできます。最後の「セグメントのマージ」ノードでは、各セグメントの予測実行結果をマージします。予測結果のチャートが表示されます。以下チャート内のオレンジ色の破線は、5つのセグメントの中の、地域:Region1×製品ライン:Line1に関する予測結果です。Studio上でビジュアルパイプラインを用いた時系列予測では、需要のパターンに基づく、より精度の高い予測モデリング戦略の自動実行も可能なんですね。Viya特設サイト内の「ビジュアライゼーション」及び「機械学習」セクションにて動画をご覧いただけます。※需要予測精度の向上に関しては、「ビジネスで「需要予測機能」を活用するために必要な3つの要素」ブログも参考にしてください。Studioを使用し、機械学習のモデル、時系列予測のモデル、テキストマイニングのモデルをGUIベースの簡単マウス操作で作成することができるようになっています。モデル生成プロセスをグラフィカルなフロー図として描き、実行するだけです。このフロー図のことを「パイプライン」と呼んでいます。これまで、ビジュアルパイプラインを用いた機械学習のモデル生成は紹介してきましたが、今回は、時系列予測の基本的な手順を紹介します。Studioで時系列予測を実行する基本的な手順は以下の通りです。Studioの画面から「プロジェクトの新規作成」をクリックします。予測)から「予測」を選択します。使用するパイプライン・テンプレートとして、デフォルトでは、「自動予測」が選択されていますが、必要に応じてテンプレートを変更することができます。今回は、「自動予測」テンプレートを使用してみましょう。学習用の時系列データを選択し、「保存」をクリックします。すると、指定したデータソース内の変数リストが表示されます。表示された「データ」タブ内で、変数ごとに右側画面内で役割を選択します。<-日付属性データ項目には自動的に“時間”役割が設定されます。<-地域別や製品ライン別で予測結果を見ることができます。「テーブルの表示」アイコンをクリックすると、データの中身を確認できます。ご覧の通り、このデータは年月ごと、販売地域、製品ライン、製品ごとの売上や原価、などの情報を持つ時系列データです。今回使用するデータでは、時系列データとその属性データ(地域、製品ライン、製品)が一つにマージされているデータを使用していますが、時系列データと属性データをそれぞれ別データとして取り込むことも可能です。すれば、メモリーにロードするデータ量を削減することができます。役割を設定後、「パイプライン」タブをクリックすると、「自動予測」のパイプラインが表示されます。右側画面には「自動予測」ノードのオプションが表示されています。ご覧の通り、自動予測では、ESM(指数平滑化)とARIMAの2つの手法で予測を実行し、その中から最良のモデルが使用されます。必要に応じて、IDM(間欠需要モデル)とUCM(観測不能成分モデル)を追加することも可能です。左画面内のノードリストから必要な機能をドラッグ操作でパイプラインへ追加することができます。その中にはニューラルネットワークに基づく手法も用意されています。今回は、「ナイーブモデル予測」を加えてみましょう。左側のノードリスト内から「ナイーブモデル予測」をパイプラインの「データ」ノードにドラッグするだけです。それでは、パイプラインの右上の「パイプラインの実行」ボタンをクリックして、このパイプラインを実行しましょう。正常に完了するとすべてのノード上に緑のチェックマークが表示されます。学習データ内容を時系列チャートで確認することができます。役割にBY変数を指定した、販売地域と製品ラインで絞り込んで見ることもできます。以下は、地域:Region2、製品ライン:Line3に絞り込んだチャートです。Segmentation)を試してみました。大まかな処理の流れは以下の通りです。swatやdlpyなど、必要なパッケージをインポートします。Network)に関連する機能が拡張されています。元々は、医療用画像のセグメンテーション向けに開発されたネットワークです。Convolution)することで、軽快に、素早く、そして精度の高い結果を得ることができると言われているネットワークです。左が一般的な畳み込み構造。右が、MobileNetの構造。MobileNet同様に軽量軽快なネットワークですが、MobileNetでの畳み込みの分割に加えて、その名の通り、チャンネルをシャッフルしてチャンネル間での畳み込みを行い、特徴抽出を効率化するネットワーク構造です。paddingして拡大してから畳み込む手法です。入力層をチャンネル方向にグループ分割して、グループごとに畳み込みを行い、最後に結合して出力する手法です。分割することで計算量を小さくすることができます。R-CNNへと処理時間の短縮と精度向上が図られ進化してきているアルゴリズムです。DLPyの従来版からサポートしているYOLOに比べると処理時間はかかりますが、より高い精度を得ることができます。セグメンテーションは、画像中に存在する複数の物体や領域に対して、ピクセルレベルで推定する問題です。画像を入力すると、各画素に対して識別結果が付与された画像を出力します。Nクラスのセグメンテーションモデルは、Nチャンネルの出力画像を出力し、各チャンネルの画素値は各クラスの確率を表します。Viyaのディープラーニング(CNN)機能が拡張されています。※DLPyの詳細に関しては、Githubサイトでご覧いただけます。Studioを使用し、機械学習のモデル、時系列予測のモデル、テキストマイニングのモデルをGUIベースの簡単マウス操作で作成することができます。モデル生成プロセスをグラフィカルなフロー図として描き、実行するだけです。このフロー図のことを「パイプライン」と呼んでいます。ビジュアルパイプラインで予測モデル生成(基本編)」では、モデル生成と精度評価の基本的な流れを紹介しましたが、今回は、生成したチャンピオンモデルに新しいデータを当てはめてインタラクティブにスコアリングを実行する手順を紹介します。スコアリング結果のデータの探索や、エクスポートまで試してみましょう。ビジュアルパイプラインで予測モデル生成(基本編)」で作成したパイプラインでは、勾配ブースティングのモデルの方が精度が高い=チャンピオンモデルだと判断されました。それでは、このモデルに新しいデータを当てはめてスコアリングを実行してみましょう。画面左側の機能ノードリストの「その他」セクション内にある「データのスコア」を「勾配ブースティング」ノード上にドラッグすると、「勾配ブースティング」ノードの下に「データのスコア」ノードが追加されます。「データのスコア」ノードを選択し、画面右側で以下の項目を指定します。「データのスコア」を右クリックし、表示されるメニューから「実行」をクリックすると、スコアリングが実行されます。スコアリング処理が完了すると「データのスコア」ノード上に緑色のチェックマークアイコンが表示されます。それでは、スコアリング結果のデータを見てみましょう。「データのスコア」ノードを右クリックし、表示されるメニューから「結果」を選択します。すると、データのスコアの結果画面が表示され、「出力データ」タブ内で、データの中身を確認することができます。「予測:BAD=1」列に、顧客ごとの延滞確率に相当するスコア値が表示されています。それでは、このデータを探索してみましょう。表示される画面内で、このデータを探索用に保存する先のライブラリとテーブル名を指定し、「探索とビジュアル化」ボタンをクリックします。データ探索とビジュアル化」画面が表示され、データ探索やレポーティングが可能になります。スコア値が0.7以上の顧客データをエクスポートして、二次活用したり、等々も簡単です。Viyaでは、データの準備はもとより、モデル生成からスコアリング、そして、スコアリング結果データの探索からエクスポートまでをGUIベースでシームレスに実施することができるんですね。Viya特設サイトにデモ動画を近々公開予定です。Viyaの分析機能をPythonから利用するためのハイレベルAPIパッケージであるDLPyでは、kerasと同等の簡潔なコーディングで、複雑な画像処理やディープラーニングを実行することができます。DLPyでは、kerasと同様に、2つの手法でディープラーニングのモデルを構築することができます。Sequentialとは、その名の通り、レイヤーを順序通りに積み重ねて、順序通りに実行していくモデルです。modelのネットワークを定義している例です。APIは、sequentialでは、表現することが難しい、より複雑な構造のモデルを構築する際に利用されます。以下は、kerasの公式サイトに記載されている文面です。modelの構築も可能になっています。以下はその一例として、複数の入力と出力を持つような画像分類のためのディープラーニングモデルのネットワーク例です。テンソルオブジェクトを返すInput()によって、2つのテンソル、グレースケール画像とカラー(RGB)画像、を定義します。グレースケール画像は2つの畳み込み層に送り込まれます。カラー画像はそれらとは別の畳み込み層に送り込まれます。0PythonやRで開発されたモデルの精度をビジュアルパイプラインで簡単比較データサイエンティスト(以降、DSと表記)は、お好みのプログラミング言語を使用して、日々モデリングを行っています。昨今は、その中でもオープンソースのプログラミング言語であるPythonやRを使用されている方の割合が多くなってきているようです。その結果として、企業の分析組織やチーム内には複数の異なる言語を活用するDSが混在するケースも見受けられます。(一人で両方の言語を操る方もいます。Studioを使用し、ビジュアルなパイプライン上での異なる言語間モデル精度比較をご紹介します。手順は以下の通りです。ビジュアルパイプラインで予測モデル生成(基本編)」の「1.プロジェクトの新規作成と学習用のデータソース選択」を参照ください。画面上部にある「パイプライン」をクリックします。パイプラインには「データ」ノードのみが表示されています。パイプラインに追加可能な機能ノードのリストが表示されます。学習データに対する前処理として、欠損値補完を行います。「データ」ノードの下に「補完」ノードが追加されます。同様の手順で、「その他」内にある「オープンソースコード」を「補完」ノード上へドラッグすると、「補完」ノードの下に「オープンソースコード」ノードが追加されます。機能ノードごとのオプション設定は、右側画面内で行います。「言語」が「Python」であることを確認し、「開く」をクリックします。開かれた画面内に、比較対象のPythonのコード(ランダムフォレストのモデル)をコピーします。右上の「保存」(フロッピーディスクアイコン)をクリックし、「閉じる」をクリックします。※ターゲット変数名や入力変数リスト名など、画面左側の変数名を使用することによって、オープンソースコードノードとその他のノード間でのデータ連携が可能となり、異なる言語のモデル間での精度比較も可能になります。各種規定変数名の詳細に関しては、オンラインマニュアルを参照してください。「Pythonフォレストモデル」に変更します。このようにドラッグ操作でノードを追加する以外に、パイプライン上のメニューからノードを追加することもできます。「補完」ノードの下に「オープンソースコード」ノードが追加されます。以降、同様の手順で比較対象のRのコード(ランダムフォレストのモデル)をコピーし、ノードの名前を変更します。「オープンソースコード」ノードは、データに対する前処理として使用することもできます。デフォルトでは、「オープンソースコード」ノードは、データに対する前処理として認識されているので、これを「教師あり学習」に切り替えます。PythonとRのモデルノードそれぞれのスノーマンアイコンをクリックし、「移動」>「教師あり学習」を選択します。すると、「モデルの比較」ノードが追加され、PythonとRのモデルノードと接続されます。パイプラインが完成したので、右上の「パイプラインの実行」アイコンをクリックし、実行します。処理が正常に完了したら、「モデル比較」ノードのスノーマンアイコンをクリックし、「結果」を選択します。Rのフォレストモデルの方が精度が高い、チャンピオンモデルであると表示されました。リフトやROC、様々な統計量で、精度を詳細に比較することもできます。以上が、ビジュアルパイプラインでPythonとRのモデル精度を比較する手順です。必要に応じて、PythonやRのモデルとSASのモデルの精度を比較することもできます。Viya特設サイトにある動画でもご覧いただけます。※実際にPythonとRのモデル精度比較を試してみたい方は、Githubに公開されているアセットを活用ください。0AI実用化の鍵は「アナリティクス・ライフサイクル」に在り近年、AIや機械学習がブームとなり、キーワードだけが先走りしている傾向にあります。結果、「AI・機械学習を活用する」こと自体が目的化し、ツールや環境を導入したものの、ビジネス価値創出に至らないケースも多いようです。その最大の要因は、肝となる「アナリティクス・ライフサイクル」の欠如にあります。業務課題を明確化した上で、その課題を解決するためにはデータ分析が必要であり、分析には元となるデータが必要になります。必要なデータを準備し、その中身を探索し、その結果に基づいて予測モデルを開発し、作成されたモデルを業務に実装する、このサイクルを素早く回し続ける、これが、企業が抱える業務課題を解決し、ビジネス価値(収益の拡大、コストの削減、リスクの低減、など)を創出するための鍵なのです。アナリティクス・ライフサイクルを素早く回すためには、上記3つの要素がシームレスに連携する必要があります。多くの企業では、従来から、複数の異なるベンダーの異なる商用ソフトウエアや環境、あるいはオープンソースソフトウエアなどを継ぎ接ぎして分析環境を構築してきたため、このサイクルを回すためには多大な時間を擁してしまい、変化への素早い対応は困難な状況にありました。Viya®では、アナリティクス・ライフサイクルに必要な機能要素を網羅した上で、それぞれがシームレスに連携し、高速に回し続けることが可能となっています。Viyaには、分析者のスキルレベルに応じて、プログラミングインターフェースとグラフィカルインターフェースの両方が備わっています。Lua)を使用して実施することができます。一方で、コーディングスキルを持たないビジネスユーザーであれば、統合グラフィカルユーザーインターフェース上でアナリティクス・ライフサイクルをシームレスかつ高速に回し続けることが可能となっています。企業が、その企業の競合企業よりも早く、正確に、アナリティクス・ライフサイクルを回すことによって、以下が実現されます。異なる分析要件ごとに、分析者自身で、分析に必要なデータは都度準備する必要があります。Viyaでは、分析者自身で分析に必要なデータをセルフサービス型で準備することができるようになっています。自由自在に行うことができ、分析プロセス全体の中で7、8割の工数を占めると言われるデータ準備工数や時間を大幅に削減することが可能となります。次に、準備したデータの中身を探索します。Viyaでは、コーディングスキルを持たないビジネスユーザーでもマウスの簡単操作だけで、データの探索や分析が可能になっています。単一の画面内で、過去の見える化から高度な機械学習までもが可能で、できあがった画面をレポートやダッシュボードとして即座に全社に公開し、共有することもできます。データサイエンティストであれば、モデル生成の手前のビジュアルなデータ探索手段として活用することができます。データ探索の結果に基づき、予測モデルを構築します。テキスト解析の各種モデル生成プロセスをグラフィカルなフロー図(パイプライン)として描き、実行することが可能になっています。このモデル生成パイプラインは、ドラッグ操作で一から作り上げることもできますし、SASの長年のベストプラクティスに基づき、予め用意されているパイプラインのテンプレートを使用して、精度の高い予測モデルを自動生成することも可能です。生成されたモデルは統合的に管理した上で、業務に実装することができます。モデル管理画面では、モデルにテストデータを当てはめてスコアリングテストの実施や、モデルのデプロイ(業務実装)、業務に実装後のモデル精度のモニタリング、再学習を実行し、モデル精度を改善、そしてバージョン管理など、モデルを統合管理することができます。管理されたモデルは、異なる業務要件ごとに異なる環境へデプロイ(業務実装)することができます。Viyaサーバー上にあるモデルにデータを当てはめてスコアリング(予測処理)を行い、結果を受け取ることができます。インデータベース:モデルをデータベース内にデプロイし、データベース内で直接スコアリングを実施することができます。これによって、スコアリング対象の大量のデータを転送する必要が無くなり、処理の効率化や意思決定の迅速化も図れます。Viyaには、オンライン機械学習・リアルタイム処理向けにストリーミングのエンジンも実装されています。Viyaのリアルタイムプロセスにモデルをデプロイすることで、リアルタイム・スコアリングも実現されます。直結するということです。従来からSASを活用し、ビジネス価値を出している企業はすべてこのサイクルを回し続けています。Viyaでは、これを強力に支援することができるということです。Viyaのディープラーニング機能を使用した時系列予測を試してみました。大まかな処理の流れは以下の通りです。swatやdlpyなど、必要なパッケージをインポートします。Detection)を試してみました。今回は、弊社で用意した数枚の画像データを使用して、処理の流れを確認するだけなので、精度に関しては度外視です。大まかな処理の流れは以下の通りです。swatやdlpyなど、必要なパッケージをインポートします。Viyaの機能をPythonから効率的に活用いただくためのハイレベルなPython向けAPIパッケージであるDLPyを提供してきました。API向けハイレベルパッケージです。DLPyではKerasに似たAPIを提供し、より簡潔なコーディングで高度な画像処理やCNNモデリングが可能でした。この度、このDLPyが大幅に機能拡張されました。最新版DLPy1.0では、以下の機能が拡張されています。Detection)」機能を覗いてみましょう。Viyaでは従来から画像分類(資料画像1.の左から2番目:Classification)は可能でした。画像に映っている物体が「猫」なのか「犬」なのかを認識・分類するものです。Detection)が可能になりました。Viyaから、オンプレミス上にあるデータへ、セキュアにアクセス近年、クラウドファーストを唱える企業が増加し、データ分析のために、クラウド上に展開されている分析サービスを活用したり、クラウド上に独自に分析アプリケーションを構築するケースも増えています。クラウド上にある分析サービスやアプリケーションで分析する対象のデータは、オンプレミス上に蓄積されているケースが大半であり、クラウドからこれらのデータにアクセスできるようにするための作業や環境設定は面倒かつ非効率で、膨大なデータをクラウドとやり取りするなどの運用コストも大きく、かつセキュリティのリスク回避も考慮しなければなりません。(CDE)を提供しています。Viya)からファイヤーウォールの後ろにある、顧客のオンプレミス上にあるデータに安全かつ確実にアクセスし、大量のデータをクラウドへ高速に転送することを可能とするデータ接続機能です。Preparationに含まれる機能です。etc.)へ最小限の手順で容易かつセキュアにアクセスすることが可能になります。/パスワード)も保護された領域に格納し、使用するため、安全性が高められています。Viya環境へロードすることが可能です。利用手順概要は以下の通りです。Viyaの最新版8.3では、新たに「自動分析」機能が実装されました。「自動分析」機能を使用すると、予測(ターゲット)に影響を与えている変数の特定や、変数ごとにどのような条件の組み合わせがターゲットに依存しているのかを「文章(条件文)」で表現して教えてくれます。この例で使用するデータ「HMEQJ」は、ローンの審査を題材にしたもので、顧客ごとに1行の横持ちのデータです。このデータ内にある「延滞フラグ」が予測対象の項目(ターゲット変数)で、0(延滞なし)、1(延滞あり)の値が含まれています。以下のような結果が表示されます。ドロップダウンリストで、予測対象値(0:延滞なし、1:延滞あり)の切り替えが可能です。この例では、「1:延滞あり」を選択し、「延滞する」顧客に関して分析しています。全体サマリーとして、すべての顧客の内、延滞実績のある顧客は19.95%であり、「延滞する」ことに関して影響度の高い変数が順に表記されています。「延滞する」ことに関して影響を与えている変数の度合い(スコア)を視覚的に確認することができます。「延滞する」可能性が最も高くなるグループ(条件の組み合わせ)が文章で示されています。この例では、3で「資産に対する負債の割合」が選択され、これに応じて文章内の該当箇所がハイライトしています。この例では、3で「資産に対する負債の割合」が選択され、これに応じて「0:延滞なし、1:延滞あり」別の顧客の分布状況がヒストグラムで表示されています。選択された変数が数値属性の場合は、ヒストグラムで、カテゴリ属性の場合は積み上げ棒グラフで表示されます。分析に使用する説明変数(要因)に関しては、右側の「データ役割」画面内で選択することができます。以上のように、分析スキルレベルの高くないビジネスユーザーでも、簡単かつ容易に、そして分かり易くデータから有効な知見を得ることができます。こんな「かっこいいダッシュボード」でビジネス戦略練るのも面白い!机上で男女が世界地図を広げて、何かの打ち合わせをしています。Analyticsで作成されたダッシュボードの画面です。このダッシュボードの構成は以下の通りです。バブルの大きさは、利用頻度を表しています。・右下と左下の数値:「キーの値」オブジェクトを使用し、注目すべき指標をクローズアップしています。右下の値は、利用頻度が最も高い空港名とその数を示しています。・人の手や机、カメラ、パソコン等は背景に使用している画像です。Chinaに自動的に絞り込まれた内容が表示されています。Airways」を選択した状態です。ネットワークダイアグラムや2つの指標の内容が変わっているのがわかりますね。ご覧の通り、インタラクティブなダッシュボードです。みなさんも、こんなクールなダッシュボードで戦略を練ってみれば、新たなアイデアが湧いてくるかもしれませんね。ギャラリーに公開されている内容に基づいています。Studioを使用し、標準で実装されているパイプラインのテンプレートを使用して、予測モデルを自動生成する手順を紹介しました。今回は、標準実装のテンプレートに含まれている、「自動特徴量エンジニアリングテンプレート」を紹介します。特徴量エンジニアリングとは、予測モデルの精度を高めるために、学習用の生データに基づき、特徴を変換したり、抽出したり、選択したり、新たな特徴を作り出す行為です。以下は、特徴量エンジニアリングの例です。良い「特徴」を作り出し、選択することで、予測モデルの精度が向上するだけでなく、モデルを単純化し、モデル解釈可能性を高めるのにも役立ちます。従来、予測モデリングのプロセスにおいて、データサイエンティストは、その多くの時間を特徴量エンジニアリングに費やしてきました。特徴量エンジニアリングの良し悪しは、データサイエンティストのスキルに大きく依存してしまいます。Viyaでは、自動特徴量エンジニアリングテンプレートを提供しています。このテンプレートを使用することで、特別なスキルを必要とせず、特徴量エンジニアリングにかける時間を短縮し、より精度の高い予測モデル生成が可能になります。Studioに実装されている「自動特徴量エンジニアリングテンプレート」です。このテンプレートは、大きく3つのステップで構成されています。このステップの最初のノードは、「SASコード高カーディナリティ」という名のSASコードノードです。SASコードノードを使用することで、SASプログラムをパイプラインに組み込むことができます。このノードを選択し、右側画面内でコードエディタ:「開く」をクリックすると、その内容を確認できます。このSASコードノードでは、最初に、20〜1,000レベルのカーディナリティの高い変数(固有値が多すぎる名義変数)を識別します。minlevelsとmaxlevelsの値を更新することで、この範囲を簡単に変更することもできます。LEVELENCODE)を指定し、これらの変数に対してのみレベル(水準)エンコーディングを行います。実際に変換を行うためには、「データマイニングの前処理」にある「変換」ノードを実行する必要があるため、「変換」ノードが接続されています。レベルエンコーディングでは、名義を数値に変換します。これは、カーディナリティの高い変数を扱う場合に特に便利です。これらの変数は、ほとんどの機械学習アルゴリズムにおいてコンピューティングリソースの負荷をあげてしまうことが多いからです。最初に名義変数のレベルをアルファベット順に並べ替え、各レベルに昇順に数字(1から始まる)を割り当てます。ステップ2では、以下の3つの異なる自動特徴量エンジニアリング手法が適用されます。変換-最良(Best):このノードは、「データマイニングの前処理」にある「変換」ノードを使用して、すべての間隔変数に対して「最良(Best)」の変換を行います。この方法では、各間隔変数に対して、ランク付け基準(ターゲットとの相関など)に基づいて、単一変数の変換(逆変換、標準化、センタリング、ログ変換など)を比較し、最も高いランク付けを持つ変換を選択します。PCA:このノードは、「データマイニングの前処理」にある「特徴抽出」ノードを使用して、間隔入力変数に対する自動特徴抽出手法として「自動」を指定しています。「自動」では、間隔入力変数の総数が500以下の場合は、主成分分析(PCA)が適用され、それ以外の場合は、特異値分解(SVD)が適用されます。特徴抽出-自動エンコーダ:このノードでは、オートエンコーダを用いて特徴抽出を行います。この手法では、特徴抽出にすべての入力変数(間隔と名義)を使用します。オートエンコーダーは、入力データを再構成するために使用できる特徴のセットを学習することを目的とした教師なし学習技術です。手短に言えば、ニューラルネットワークは、ターゲット(出力)ニューロンを入力ニューロンと等しく設定することによって訓練されるものです。このノードでは、中間隠れ層が10に設定されているので、10個の新しい特徴が作成されます。最後のステップでは、勾配ブースティングを用いた5つの異なる予測モデルが生成されます。5つのモデルを生成後、パフォーマンスを比較します。勾配ブースティングは、非常に効果的な教師あり学習アルゴリズムであり、予測精度の面で他のアルゴリズムより優れていることが多いため、使用しています。Studioを使用し、パイプラインを一から作成し、予測モデルを生成する手順を紹介しました。今回は、前回からの続きとして、予め用意されているパイプラインのテンプレートを使用した、モデル生成手順を紹介します。「パイプラインの新規作成」ダイアログが表示されます。標準で実装されているテンプレートのリストが表示されます。この中から使用したいテンプレートを選択し、「OK」をクリックします。今回は、「分類尺度のターゲット変数の高度なテンプレート」を使用します。選択したパイプラインの内容が表示されます。このテンプレートでは、以下の7つのモデルを生成し、結果を比較することができます。※テンプレートに使用されている機能ノードごとの詳細なオプション内容は右側画面内で確認でき、必要に応じて変更可能です。パイプライン内への機能ノードの追加・削除・変更などカスタマイズも可能です。※一から作成したパイプラインや、既存テンプレートをカスタマイズしたパイプラインを、その企業独自のテンプレートとして共有し、活用することができます。※一つのプロジェクト内に、複数のパイプラインを作成し、結果を比較することができます。パイプラインの実行アイコンをクリックし、実行します。実行中の機能ノードは時計アイコンがクルクル回転し、正常に完了すると緑のチェックマークが表示されます。パイプラインの実行が完了したら、ビジュアルパイプラインで予測モデル生成(基本編)と同様に、「モデルの比較」ノードのスノーマンアイコンをクリックし、メニューから「結果」を選択し、このパイプラインの実行結果を確認することができます。一つのプロジェクト内で、複数のパイプラインを作成している場合には、パイプライン間でモデル精度を比較し、プロジェクト内でのチャンピオンモデルを確認することができます。画面上部の「パイプラインの比較」をクリックします。パイプライン2の勾配ブースティングのモデルの精度が最も高い、チャンピオンモデルであることが示されています。以上が、パイプラインのテンプレートを使用して、予測モデルを生成する際の手順です。コーディングスキルを持たないビジネスユーザーでも、まず、学習用のデータを選択し、予測対象の項目を選択し、テンプレートを選んで実行するだけで、精度の高いの予測モデルを自動生成することができるということです。Viya特設サイトにある動画でもご覧いただけます。Viyaでは、SAS言語のみならず、PythonやR、Java、Luaなどの汎用プログラミング言語からViyaのAI&アナリティクスの機能を使用し、予測モデルを生成することができるようになっています。昨今、「AI民主化」の流れに沿って、予測モデル生成を必要としているのはデータサイエンティスト(以降:DS)だけではなく、業務部門のビジネスアナリストや一般のビジネスユーザーも必要としています。Viyaでは、GUI上でマウスの簡単操作だけで予測モデル生成を可能としています。DSの中にも、コーディングせずに、もっと簡単に精度の高い予測モデルを生成できる手段があれば活用したいと感じている人達もいます。Studioを使用し、機械学習のモデル、時系列予測のモデル、テキストマイニングのモデルをGUIベースの簡単マウス操作で作成することができます。モデル生成プロセスをグラフィカルなフロー図として描き、実行するだけです。このフロー図のことを「パイプライン」と呼んでいます。Studioで予測モデルを生成するには、大きく2通りの方法があります。1つは、マウスの簡単ドラッグ操作でパイプラインを一から作成する方法と、もう一つは、予め用意されているパイプラインのテンプレートを使用する方法です。パイプラインを一から作成する際の基本的な手順を紹介します。Studioの画面が表示されます。「プロジェクトの新規作成」をクリックします。予測)を選択し、学習用のデータソースを選択します。今回は、「データマイニングと機械学習」を選び、ローンの審査モデルを作成します。HMEQJというデータソースは、顧客ごとに1行の横持ち形式のデータです。「保存」をクリックすると、ローン審査モデルプロジェクトが作成され、選択したデータソースの変数リストが表示されます。予測対象の項目(ターゲット変数)を指定します。変数名:BAD(ラベル名:延滞フラグ)を選択し、右画面内で、役割に「ターゲット」を選択します。延滞フラグには、過去に延滞の実績があればフラグに“1”が、無ければ“0”が設定されています。予測対象の項目を指定後、画面上部にある「パイプライン」をクリックします。パイプラインには「データ」ノードのみが表示されています。パイプラインに追加可能な機能ノードのリストが表示されます。今回は、欠損値補完を行った上で、勾配ブースティングとランダムフォレストでモデルを生成してみましょう。データに対する前処理として欠損値補完を行います。「データ」ノードの下に「補完」ノードが追加されます。同様の手順で、「教師あり学習」内にある「勾配ブースティング」を「補完」ノード上へドラッグすると、「補完」ノードの下に「勾配ブースティング」ノードが追加されます。このようにドラッグ操作でノードを追加する以外に、パイプライン上のメニューからノードを追加することもできます。「補完」ノードの下に、「フォレスト」ノードが追加されます。機能ノードごとの詳細なオプションの設定は、右側画面内で行います。パイプラインが完成したら、パイプラインの実行アイコンをクリックし、実行します。実行中の機能ノードは時計アイコンがクルクル回転し、正常に完了すると緑のチェックマークが表示されます。「結果」を選択します。モデルの比較結果が表示されます。今回は勾配ブースティングのモデルの精度の方が高い=チャンピオンであると判定されています。「アセスメント」タブ内では、リフトやROCの情報などを確認することができます。以上が、ビジュアルパイプラインで予測モデルを一から生成する際の基本的な手順です。Viya特設サイトの「機械学習」トピック内にある動画でもご覧いただけます。Viyaで提供される各種機能やリソースへのアクセス制限を設定する方法を紹介します。ユーザーやグループが行うことができる(あるいは参照することができる)内容はルールによって設定されます。ルールは以下の権限要素によって構成されています。・プリンシパル:ユーザーまたはグループ。・ターゲット:サービス、フォルダ、レポートなどのリソース。・権限:アクセスのタイプ(たとえば、読み取りまたは書き込み)。・設定:アクセスが提供されているかどうかの表示、たとえば許可または禁止。identifier(uri)を使用して識別されます。URIは、フォルダやレポート、データプランなどのコンテンツ、またはデータのインポートなどの各種の機能などを表すことができます。Viyaでのuriの例をいくつか紹介します。Analyticsでレポートを作成することができるように設定しています。カスタムグループを作成します。ルールを使用して、そのグループに使用機能に対する権限を設定します。Manager)上で、管理者(管理者のみがユーザーとグループを管理できます)が、ユーザー>カスタムグループ>カスタムグループの新規作成を選択します。カスタムグループの新規作成画面で、「名前」にグループ名、「ID」に一意のID、「説明」に必要に応じて説明を記載します。新しいグループが作成されたら、編集ボタンをクリックして、新しいメンバーをグループに追加します。ユーザーまたは他のグループを新しいグループのメンバーとして追加することができます。Analyticsの機能にアクセスできるようにルールを作成、または更新します。Analyticsに現在適用されているルールを見ていきます。Viya(以降VA)の次期版8.3に搭載予定の新機能をダイジェストで紹介します。表示される「データ」リスト画面内で、必要な階層項目や計算項目の作成、カスタムカテゴリーの作成、不要な項目の非表示、などを設定し、このデータビューに基づいてレポートを作成してきました。VA8.3では、同じデータソースに基づく複数の異なるデータビューを定義し、これを異なるレポート間、ユーザー間で共有し、再利用することができるようになります。同じデータソースに基づく、異なるレポートを作成する際の効率が大幅に向上します。従来は、オブジェクトごとに右画面内で設定できるフィルター(オブジェクトフィルター)を使用する場合、例えば、レポート内に3つのチャートオブジェクト(円グラフ、クロス表、棒グラフ)があり、円グラフと棒グラフにだけ同じ条件で絞り込みをかけたい場合は、円グラフと棒グラフの両オブジェクトにそれぞれ同じフィルターを設定する必要がありました。VA8.3では、作成したフィルター定義を複数の異なるオブジェクトに再適用することが可能になります。このフィルター定義は共通フィルターとしてデータビューに保存し、「1-1.」項で紹介したように、レポート間、ユーザー間でも共有し、再利用が可能になります。従来、レポート参照者がレポートを表示し、好みの条件を選択し、レポート表示内容を変更した場合、そのレポートを一旦閉じた後、再度同じ内容を参照したい場合は、再度同じ作業を繰り返す必要がありました。VA8.3では、レポート参照時にレポートに対して行った最終操作結果状態を保持することが可能となり、レポート再表示時に、同じ作業を繰り返す必要が無くなります。VA8.3では、レポート作成・編集時に、背景にグリッドを表示し、レポートページ内のお好みの位置に、オブジェクトを正確かつ素早く配置することが可能になります。レポートが、あなたに、ストーリーを語ります。再生可能なダッシュボードを使用することで、レポート参照者は、静的ではなく動的なダッシュボードをフルスクリーンで体験することができます。会議の場などで、PowerPointのスライドショーのように、BIレポートを効果的に表示することも可能です。あなたが設定したタイミングで、設定した順序で、レポートページ単位やページ内オブジェクト単位で、ダッシュボード内容が自動再生されます。従来のVAでは、レポート全体を最短1分間隔で自動リフレッシュすることが可能でしたが、VA8.3では、レポートのページ単位、ページ内のオブジェクト単位に、最短1秒間隔で自動リフレッシュが可能になります。これによって、リアルタイムBIレポートモニタリングが実現されます。ページ内の折れ線グラフは1秒間隔で、リアルタイムなデータの変動を表示し、棒グラフは2分間隔で、別のデータの更新状況を表示する、といったことが可能になります。そのままでは、数値の羅列で、ビジネス状況を直感的に捉えるのは難しいリスト表やクロス集計表の表現力が拡張されます。表のセル内に、数値だけでなく、棒グラフやヒートマップなどを表示することができます。このビジュアライゼーションによって、問題点を迅速に特定し、データの傾向を直感的に捉えることが可能になります。表のセル内に表示する数値の桁数が多い場合に、ワンタッチで短縮形表示に変更することが可能になります。これによって、表示スペースを節約して、表を読み易くできます。Viyaサーバ上のコンテンツにアクセスするための強力なモバイルアプリを作成することが可能です。API向けパッケージ:DLPyでは、DLPyの基本的な機能を紹介しました。その中で、ディープラーニングの判断根拠となり得る情報、つまり入力画像のどこに着目しているのかをカラフルなヒートマップとして出力することができるheat_map_analysis()メソッドに触れました。今回は、heat_map_analysis()メソッドを使用して、ヒートマップを出力する際に指定可能な有効なオプションに関していくつか紹介します。Viyaのディープラーニングでは、ネットワークの層ごとにGPUを使用するかどうかの指定が可能ですが、ヒートマップを出力する際にも、指定したテストデータをモデルに当てはめての予測処理は実行されることになるので、同様にGPUを使用することが可能です。GPUを使用することで、ヒートマップ出力の時間を短縮することができます。最初にheat_map_analysis()メソッドを実行する際には、モデルにテストデータを当てはめて判別(予測)処理が行われますが、以降、heat_map_analysis()メソッドを使用して、必要な判断根拠情報を再出力する際には、最初の実行時に計算された値を再利用するので、都度再計算(判別・予測処理)は行わず、より効率的、迅速に、ヒートマップを出力することができます。model.predict()」と、実行済みの計算結果が使用されている旨が表示されています。ディープラーニングのモデルにテストデータを当てはめて判別(予測)した結果として、正しく判定された画像と間違った判定が下された画像があります。すべて:“A”(All)、を指定して該当画像の判断根拠情報を出力することが可能です。画像のどの部分に着目して、間違った判断に至ったのかを確認することができるので、モデル精度を改善するためには、学習用にどのような画像が必要なのかといった、示唆も与えてくれます。image_id」パラメータを使用し、特定の画像を指定して、出力することも可能です。以下は、画像ファイルリストの上位2つの画像のヒートマップをファイル名指定で出力している例です。以下は、画像ファイルリストの先頭の画像のヒートマップをID指定で出力している例です。上記例の詳細に関しては、こちらのGitfubサイトをご覧ください。DLPyの詳細に関しては、こちらのGithubサイトをご覧ください。前回は、SASの「Pipefitter」の基本的な使用方法を紹介しました。続く今回は、基本内容を踏まえ、ひとつの応用例を紹介します。Viyaのディープラーニング手法の一つであるCNNを「特徴抽出器」として、決定木、勾配ブースティングなどを「分類器」として使用することで、データ数が多くないと精度が出ないCNNの欠点を、データ数が少なくても精度が出る「従来の機械学習手法」で補強するという方法が、画像解析の分野でも応用されています。Viyaに搭載のディープラーニング(CNN)で、ImageNetのデータを学習させ、そのモデルに以下の複数のイルカとキリンの画像をテストデータとして当てはめたモデルのpooling層で出力した特徴空間に決定木をかけている例です。以下はCNNの構造の定義です。0機械学習のパイプラインを簡素化するPython向けパッケージ「Pipefitter」SASでは、Python向けパッケージ/ライブラリとして、機械学習のパイプラインの実装を簡素化する「Pipefitter」を提供しています。「Pipefitter」のもう一つの重要な特徴は、SASが提供する他の2つのPythonパッケージの能力に基づいていることです。9で、SWATを介してCASで同じように実行されるように設計されています。以下は、タイタニック号の乗船者データに基づくパイプラインの例です。DataFrameにデータをダウンロードします。Viyaの機能をPythonなど各種汎用プログラミング言語から利用するためのパッケージであるSWATを提供していました。これに加え、よりハイレベルなPython向けAPIパッケージであるDLPyの提供も開始され、PythonからViyaの機能をより効率的に活用することが可能となっています。※DLPyの詳細に関しては以下サイトをご覧ください。API向けハイレベルパッケージです。DLPyではKerasに似たAPIを提供し、ディープラーニングと画像処理のコーディングの効率化が図られています。Viya上でその処理を実行させることも可能になります。以下はCNNの層の定義例です。Kerasに酷似していることがわかります。OutputLayer、です。以下は学習時の記述例です。複数のイルカとキリンの画像をCNNによって学習し、そのモデルにテスト画像を当てはめて予測する内容を例に、DLPyの機能(一部抜粋)を紹介します。DLPyでは、事前に構築された以下のディープラーニングモデルを提供しています。以下のモデルでは、ImageNetのデータを使用した事前学習済みのweightsも提供(このweightsは転移学習によって独自のタスクに利用可能)しています。以下は、ResNet50の事前学習済みのweightsを転移している例です。heat_map_analysis()メソッドを使用し、画像の何処に着目したのかをカラフルなヒートマップとして出力し、確認することができます。mapの層を指定して表示し、確認することもできます。mapの出力結果です。mapの出力結果です。Viyaの機能を活用するためのパッケージであるSWATを使用した例を説明しましたが、今回は、以下2点に関してご紹介します。Viyaのディープラーニング(CNN)で学習させ、そのモデルに以下の画像を当てはめて、これがイルカなのか否かを判別するものです。実際、この画像はイルカであると判定されたんですが。Viyaでは、その判断根拠となり得る情報の一つとして、入力画像のどこに着目したのかを以下の通り出力し、確認できるようになっています。mapを取得し、feature_map.display()で指定したレイヤーの内容を表示することができます。