SAS Studio Taskの紹介 仕事の中で、このような状況に遭遇したことはないでしょうか?普段Enterprise Guide或いはSAS Studioを利用している分析チームの中には、コーディングユーザとSAS言語ができないGUIユーザがいます。ある分析プロジェクトにおいて、特定のモデルを活用する場合に、そのモデルはSASコードを書くことで利用することはできますが、EGのGUI操作やSAS Studio のTaskだけでは活用することができません。この場合に、GUIユーザがコーディングユーザと同じような分析を行うためには、コーディングユーザが作ったSASコードを利用し、入出力情報やパラメータなどを修正した上で使用することになります。しかし、このようなやり方では、たとえば、修正を間違えることによって、エラーを起こし、コードを書いた人に助けてもらわないといけないことも時々発生していました。 この状況に置いて、SAS言語ができないユーザでも、コードを書かずにGUI上の簡単なマウス操作で実施できるような便利な機能をご紹介します。 SAS Studioには、SAS Studioカスタムタスクという機能が組み込まれています。必要な機能が既存のタスクとして用意されていなくても、プロシジャーがあれば自らタスクを簡単に作成できるインターフェースです。XML形式で必要な入出力箇所やオプションを定義することによって、GUI画面を持つタスクが簡単に作れます。そのタスクをSAS Studio上では勿論、SAS Enterprise Guide上でも使うことができます。非常に便利な機能です。この便利なSAS Studioカスタムタスクには以下のような特徴があります。 ・タスクを作る際にはSAS以外のプログラミング知識は必要ありません。 ・SAS Studioで作る場合は、XMLを書きながら、作成途中のGUIの画面を常に確認できます。 ・タスクを使う人は簡単なマウス操作で利用可能です ・そして、SAS StudioとEnterprise Guide両方での利用が可能です。 ・XMLベースなのでタスクの修正は簡単です。 ・テキストボックス、チェックボックスなど多様なコントロールを定義可能です。 SAS Studio Taskの作り方 今回は混合正規モデルを例にSAS Studio Taskの作成方法を紹介します。SAS Studio Taskを作るには二つの方法があります。 一つ目は新規で一からタスクを作成する方法です。 二つ目は既存のタスクをテンプレートとして使い、内容を修正しながらタスクを作る方法です。 今回の記事は一つ目の方法をメインとして紹介しますが、記事の最後に二つ目の方法に関しても簡単に紹介します。作成ツール(XMLエディタ)としては、SAS Studioや任意のエディターのいずれかを使用しても構いませんが、この記事では最新のSAS Studio 5.2を使用しています。操作方法などは使っているSAS Studioのバージョンによって変わる場合はありますが、定義の書き方に相違はありません。 SAS Studioを開いて、メニューから新規作成をクリックし、タスクと選択します。そして下の図のようなタスクテンプレートの画面が表示され、この画面内でSAS Studio Taskの定義を行います。まずSAS Studio Taskの定義の構造を紹介します。 最初の2行はシステムにより生成されたタスクのエンコーディングとスキーマバージョンの定義です。この部分を修正する必要はありません。 <?xml version="1.0" encoding="UTF-16"?> <Task schemaVersion="7.2">
Tag: SAS Viya
前回のブログでは、Microsoft AzureストレージサービスのブロックBlobストレージについて軽く紹介し、SASからBlobストレージ中の特定の一つのファイルにアクセスする方法を紹介しました。 第1回リンク:https://blogs.sas.com/content/sasjapan/2020/10/01/sas-azure-blob-1/ しかし、実際のビジネスシーンでは、特定の一つのファイルにだけアクセスする運用はやはり割合的には少ないと考えています。 そこで、今回のブログでは、より効率的に、複数データに同時にアクセスできる方法を紹介します。そしてこれは、Microsoft AzureのBlobストレージをファイルシステムとしてSASサーバにマウントし、SASサーバから便利にアクセスする方法です。 前回と同じように、下記の方法を使うためには、前提条件として、SAS ViyaサーバとBlobストレージがあるAzure間でネットワーク通信ができる必要がありますので、ネットワークセキュリティ条件を確認してから、下記の方法をお試しください。 方法②: BlobストレージをファイルシステムとしてSASサーバにマウントし、SASサーバからアクセスする方法。 Microsoft Azure側: 1.まず、Azureポータルに入り、「ストレージアカウント」をクリックします。(図2-1) 図2-1 2.その配下で、使用されている対象Blob用のストレージアカウントをクリックします。(図2-2) 図2-2 3.そして、表示された左ペインの中で、「アクセスキー」というメニューをクリックします。(図2-3) 図2-3 4.該当ページでは、このストレージアカウントにアクセスするためのキーの情報が含まれているので、その中の、「ストレージアカウント名」と「キー」をメモしてください。あとで接続設定情報を作る時に使用します。(図2-4) 図2-4 5.一層上に戻り、同じくストレージアカウントの左ペインで、Blobサービスの中の「コンテナー」をクリックします。(図2-5)アクセス先のコンテナー名前(例:folderfirst)をメモしてください。あとで接続設定情報を作る時に使用します。 図2-5 以上で、Azure側の準備作業が終わります。次は、SASサーバ側の準備作業を進めていきます。 SAS Viyaサーバ側: 今回、Blobストレージをファイルシステムとしてマウントするには、Blobfuseという仮想ファイルシステムドライバー機能を使います。そのため、事前にSAS ViyaがインストールされているLinuxサーバ側に、そのツールをインストールする必要があります。 このブログで使用しているSAS ViyaサーバはRHEL/CentOS 7.x系のLinuxサーバであるため、Blobfuseのインストールを含めた手順は下記となります。 6.使用するSASユーザで、SASサーバ側にMicrosoftパッケージリポジトリをインストールします。 sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm 7.BlobfuseをSASサーバ側にインストールします。 sudo yum install blobfuse 8.Azureでは、低いレイテンシーとパフォーマンスのため、SSDが提供され、今回はそれを使って、ディレクトリーを作成します。(SSD使わないことも可能ですので、その場合、別ディレクトリーで作成して頂いてかまいません。) sudo mkdir /mnt/resource/blobfusetmp -p sudo chown #YourUserName#:sas /mnt/resource/blobfusetmp
近年、クラウドベンダーが提供するサービスが充実し、より多くのクラウドサービスが誕生してきました。しかし、一つのニーズに対して、複数のサービスを選択できるようになってきているものの、どのサービスが最適なのかを判断することは逆に難しくなってきていると考えられます。最近、SASを活用しているお客様から、「Microsoft社のAzureを使っていますが、これからクラウドにデータを移行して、安くて使い勝手なストレージサービスは何かありませんか」と聞かれたこともありました。 このブログシリーズでは、クラウド上のストレージサービスの一種であるMicrosoft Azure CloudのBlobストレージサービスの概要を紹介した上で、SAS ViyaからそのBlock Blobストレージに格納されているデータへアクセスする方法をご紹介させていただきます。 このブログシリーズは合計2回です。今回のブログでは、まず特定の一つファイルへのアクセス方法をご紹介します。次回のブログでは、より汎用的なアクセス方法、つまり、Blobストレージを一つのファイルシステムとして、SASサーバと連携し、一度に複数のデータにアクセスする方法をご紹介します。ぜひ最後まで、お付き合いいただければと思います。 第1回:https://blogs.sas.com/content/sasjapan/2020/10/01/sas-azure-blob-1/ 第2回:https://blogs.sas.com/content/sasjapan/2020/10/05/sas-azure-blob-2/ Blobストレージとは何か? まず、Blobストレージとは何かを紹介する前に、Blobって何でしょうか、から始めます。聞きなれない方もいらっしゃるかと思いますので。実際、BlobはBinary Large OBjectの略称です。本来はデータベースで用いられているデータタイプの種類で、メディアファイルや、圧縮ファイル、実行ファイルなどのデータを格納する時に使用されているものです。 では、Blobストレージとは何か?Microsoft社の紹介では、こう書かれています。 「Blob Storage は、テキスト・データやバイナリ・データなどの大量の非構造化データを格納するために最適化されています。非構造化データとは、特定のデータ・モデルや定義に従っていないデータであり、テキスト・データやバイナリ・データなどがあります。」 少し言い換えますと、Blobストレージは、ログファイルから、画像ファイルやビデオ・オーディオファイルまで格納できます。もちろん、通常目的でのデータ利用にも対応しているため、データの格納場所として使っても問題ありません。(Microsoft Azureの資料によりますと、4.75 TiBまで可能です。) なぜBlobストレージなのか 前文で少し申し上げたSASのお客様から頂いた質問の中で、「安くて使い勝手の良いストレージサービスは」と聞かれた事に関して、安いというポイントに関しては、下記の図をご覧ください。 ソース:https://azure.microsoft.com/ja-jp/pricing/details/storage/(2020/09/09アクセス時点) ご覧のように、ブロックBlobのストレージサービスは、安価で、かつ非構造化データに対応し、一般目的でのデータストレージとして、非常に向いています。 もちろん、ビジネスケースによっては、様々考慮すべき点(既存環境にHadoop環境があるかどうか、スループット、ビッグデータ等々)もありますが、今回は、主にこのブロックBlobストレージを例として紹介します。 SAS ViyaからBlobストレージにアクセスする方法 ここからは、SAS ViyaからBlobストレージにアクセスする方法をご紹介します。下記の方法を使うために、前提条件として、SAS ViyaサーバとBlobストレージがあるAzure間でネットワーク通信ができる必要がありますので、ネットワークセキュリティ条件を確認してから、下記の方法をお試しください。 方法①: SASのPROC HTTPプロシージャを使って、Blobストレージ内の特定の一つのデータにアクセスする方法。 Microsoft Azure側: 1.まず、Azureポータルに入り、「すべてのリソース」をクリックします。(図1-1) 図1-1 2.その配下で、利用されているストレージアカウントをクリックします。(図1-2) 図1-2 3.次に、表示された左側のメニューの中で、「Blob Service」配下のコンテナーをクリックします。(図1-3) 図1-3 *豆知識: ここで、いきなりコンテナーが出てくることに関して、混乱している方もいらっしゃるかもしれないので、少し解説します。こちらのコンテナーとは、Dockerコンテナーの意味ではありません。Blobストレージサービス配下のデータ格納用のサブ階層のことであり、フォルダーのようなものとイメージしてください。(図1-4) 図1-4 4.上記図1-3のように、その中に一つ「folderfirst」というコンテナーが存在しており、それをクリックすると、中に保管されているデータが見えるようになります。(図1-5) 図1-5 5.ここからが重要なポイントです。特定のデータ、例えば、「sas7bdat」データにSAS Viyaからアクセスしたい場合は、該当ファイルの名前をクリックして、下記のようなプロパティ情報を表示させます。(図1-6) 図1-6
商品やサービスを販売している企業においては、過剰在庫を防止したり、欠品による機会損失を防止し、収益を最大化するために需要予測が行われています。しかし、実際のビジネスの現場では、需要や売れ行きの傾向が異なる品目が混在するようなケースでは、その予測に多くの手間と時間がかかってしまうなどのいくつかの課題があります。 例えば、通年売れる品目や動きが遅い品目、新規品目、季節に影響を受ける品目などがあり、これらは同じ時系列モデルで処理できるわけではありません。このような課題に対する一つの解決策としては、パターンの近い商品をサブセグメントに小分けし、そのセグメントに応じて予測戦略を適用しわけることで、精度を向上します。つまり、時系列データの特徴を自動に分析して需要のパターンごとにデータを分類し、需要パターンごとに予測作業をすることです。この需要パターンの自動分類と予測については、すでにブログでご紹介しているので、こちら「SAS Viya: ビジュアルパイプラインで需要分類&予測」を参照してください。 一方で、単に時系列データとしての特徴だけではなく、品目の種類や販売地域など、業務的な観点での品目属性によって予測を管理したり、または、属性情報を加えて特徴エンジニアリングし、その特徴量と属性を加味することで精度向上を期待することもあります。そうすると、さらに自由に複雑な属性を持つ大量な時系列データを小分けして精度の高い予測結果が期待できます。つまり、ビジネス的な品目属性に基づいてデータを分割し、業務システムから属性ごとの品目データを抽出、加工処理し、それぞれ別々にモデリングを行うケースです。予測結果の全体像を把握するためには、個別に予測を実施した後、それらの結果を収集し、統合する必要もあります。 しかし、このような、データの分割や再集約には多くの手間がかかりますし、データを管理するための命名ルールなども慎重に行う必要があります。こうした課題を解決し、需要傾向の異なる商品が混在する大量のデータに対して、一つのモデリングプロジェクで最適な需要予測を一括で行うことができたら、便利だと思いませんか? 今回は、このような実際の背景にもとづき、こうした複雑な分析処理を一元的に、手軽に実現できるSAS Visual Forecastingのセグメンテーション予測機能を紹介させていただきます。 SAS Visual Forecastingの機能を活用することで、時系列データを、データの性質(動きが遅い品目、新規品目、季節品目など)に基づき、複数の類似する時系列セグメントに分割することができます。その上で、予測プロジェクト内で各セグメントを個別にモデル化できます。これにより、ユーザーは各セグメントにおける時系列のパターン/特性をより的確にモデル化するためのモデリング戦略の調整を行えるようになりますし、予測結果を全体的に把握することも可能になります。 それでは、一つの具体例を見ながら、Visual Forecastingのセグメンテーションの有用性を実感していきましょう。 今回は、米国でスキンケア商品の販売を手掛ける企業における、需要予測の課題を解決することを想定しています。この企業は、スキンケア商品の時系列売上データに基づき商品セグメントごとに二週間先の売上高を予め把握(予測)しておきたいと考えていました。 まずはスキンケア商品の時系列データを見てみましょう: 上図のように、毎日各倉庫から在庫の各商品を発送して売上高を計上、また店から各商品に行われたプロモーションやキャンペーンなどの情報を収集し、商品時系列データにまとめます。今回は、各倉庫の管理している商品売上高に基づき予測を行います。 上記の情報を表にすると下記の時系列データになります。 商品は「ProductKey」、販売倉庫は「DistributionCenter」、販売時間の時系列データは「DATE」、販売に影響する変数として割引率の「Discount」。最後に、予測目標の売上高は「Revenue」になります。 この販売トランザクション情報に、商品マスターの属性情報を加味します。 商品マスターの属性情報というのは、上図のような販売チャンネルや商品カテゴリーなどの商品が販売プロセスにおける各種補足情報のことです。例えば、販売量の高い商品はどの販売チャンネルから売れたか、どの商品カテゴリーのものか、これらの情報は商品の販売曲線の可視化にも使えるし、精確な予測にも不可欠であり、将来の販売推進方針にも繋げます。 一つの具体属性データサンプルを見ます。 商品のカテゴリーが「ProductCategory」、商品名は「ProductName」、商品の販売チャンネルが「ProductType」です。そして、商品セグメントが「_seg_」になります。セグメントという項目を少し紹介します。例えば、小売業界にとって通年売れる商品や季節限定の商品などが必ず存在すると思います。しかし、小売業者にとって、具体的に自社商品の中でどのようなものが通年売れる商品なのか、どのようなものが特別な時間にしか売れないのか、その商品を担当する担当者しか把握きません。長年にわたり、商品ごとに「通年売れる商品」や「夏限定商品」、「クリスマス商品」、「新規開発の商品」などの特徴を明白なビジネスノウハウにし、需要予測にも使いたいと考えています。このような情報を商品セグメントと称し、セグメントごと明らかに時系列特徴もはっきり分かれています。 最後に、下図のように、時系列データと属性データを結合させ、予測モデルに利用するマスターデータの準備が完成です。 今回はSAS Visual Forecastingを活用することで、時系列データを、データのセグメント属性(通年販売品目、新規品目、季節品目など)に基づき、複数の類似する時系列セグメントに分割し、精確な予測を実現することを目的としています。それを実現するため、本来であれば、各商品セグメントのマスターデータをそれぞれ抽出してモデル開発と予測を実施する必要があります。例えば、通年売れる商品に関しては従来通りにARIMAモデルで予測し、一方で、新たに開発し、販売後間もない新規開発の商品に関してはニューラルネットワークでのモデリングを適用したい場合があります。しかし、現在商品セグメントが多数もあり、データの前準備にも手間がかかります。 SAS Visual Forecastingのセグメンテーション予測機能を利用すれば、データの分割をせずすべての商品カテゴリーのデータを含むマスターデータで簡潔かつ精確にモデリングを行えます。 ここまでは今回のセグメンテーション予測イメージの説明になります。これからは実際にSAS Visual Forecastingで操作する様子を体験していきます。 まずは、Visual Forecastingのプロジェクトを一つ立ち上げます。プロジェクト名をセグメンテーション予測にして、テンプレートに外部セグメンテーションを選びます。データは先ほど説明したスキンケア商品の時系列データ「SKINPRODUCT」を選択します。 次はプロジェクトデータ設定画面で、予測用の時系列データの各列に役割を指定します。 例えば、以下のように役割を割り当てます 「時間」:「DATE」列(日付) 「独立変数」:「Discount」(値引額) 「従属変数」(ターゲット変数):「Revenue」(売上高) By変数というのは、時系列データをグループにまとめる単位を指しています。 そしてデータソースとして時系列データの属性情報を持っているマスター表「SKINPRODUCT_ATT_SEG」も追加します。この表を追加したことによって、さらに細かいグループベースで予測することができます。 この表には予めセグメンテーシ予測用に作成しておいた「_seg_」列が含まれます。中身は商品セグメント名で、計7セグメントが入っています。例えば、「Long term - All year goods」(通年販売商品)、「Long
概要 第一回の「CASサーバーとSWATパッケージ」に続き、第二回としてCASのアクションセットの活用やCASサーバーへのデータ読み込みなどの基本操作の方法について紹介します。 アクションセットについて CASサーバー上での分析作業を開始する前に、“アクションセット”という重要な概念に関して紹介します。 アクションセットは、関連する機能を実行するアクションの論理的なグループです。 SAS Viyaでは、関数のことを「アクション」、関連する関数のグループを「アクションセット」と呼んでいます。アクションでは、サーバーのセットアップに関する情報を返したり、データをロードしたり、高度な分析を実行するなど、さまざまな処理を実行できます。 アクションセットを使ってみましょう それでは、サンプルコードを使いながら、SAS Viyaのアクションセットでデータの読み込みからプロットまでの一連の操作を説明します。 ・データの読み込み CASサーバーにデータを読み込むには二つの方法があります。一つはread.csv()でcsvファイルをRデータフレームの形で読み込んだ上で、as.casTable()を使用する方法です。この関数はデータをRのデータフレームからCASテーブルにアップロードすることができます。今回の例では金融関連のサンプルデータhmeqを使って紹介します。 library("swat") conn <- CAS(server, port, username, password, protocol = "http") hmeq_data <- read.csv(“hmeq.csv”) hmeq_cas <- as.casTable(conn, hmeq) もう一つはcas.read.csv()を使って、ローカルからファイルを読み込んで、そのままCASサーバーにアップロードする方法です。仕組みとしては、一つ目の方法と大きくは変わりません。 hmeq_cas <- cas.read.csv(conn, hmeq) as.casTable()或いはcas.read.csv()からの出力はCASTableオブジェクトです。その中に、接続情報、作成されたテーブルの名前、テーブルが作成されたcaslib(CASライブラリ)、およびその他の情報が含まれます。 Rのattributes()関数を使えば中身を確認できます。 attributes(hmeq_cas) $conn CAS(hostname=server, port=8777, username=user, session=ca2ed63c-0945-204b-b4f3-8f6e82b133c0, protocol=http) $tname [1] "IRIS" $caslib [1] "CASUSER(user)"
本シリーズの記事について オープンソースとの統合性はSAS Viyaの一つの重要な製品理念です。SAS言語やGUIだけではなく、R言語やPythonなどのオープンソース言語でも、SAS ViyaのAI&アナリティクス機能を活用することが可能になっています。このシリーズの記事は、R言語からSAS Viyaの機能を活用して、データ準備からモデルの実装までの一連のアナリティクス・ライフサイクル開発をサンプルコードの形で紹介していきます。 CASサーバーとSWATパッケージとは コードの内容を紹介する前に、まずCASサーバーとSWATパッケージに関して、簡単に紹介します。CASはSAS Cloud Analytic Serviceの略称です。SAS Viyaプラットフォームの分析エンジンで、様々な種類のデータソースからデータを読み込み、メモリーにロードし、マルチスレッドかつ分散並列でハイパフォーマンスな分析処理を実行します。現在のCASサーバーは3.4.0以降のバージョンのPythonと3.1.0以降のバージョンのRをサポートしています。 オープンソース言語のクライアントからCASサーバーのインタフェースを使用するために、SASからSWAT(SAS Scripting Wrapper for Analytics Transfer)というパッケージをGithubに公開し、提供しています。RとPythonにそれぞれ対応しているバージョンはありますが、本記事のサンプルコードではR用の SWATをメインで使用します。SWATパッケージを通してCASサーバーと通信し、インタフェースを直接利用することができます。データサイエンティストはSWATパッケージを使用し、RやPythonからSAS Viyaの豊富なAI&アナリティクス機能を活用し、様々なデータ分析処理を行ったり、機械学習や深層学習のモデルを作成したりすることができます。 環境の準備 R言語用SWATパッケージを利用するために必要なRの環境情報は以下の通りです。 ・64-bit版のLinux或いは64-bit版のWindows ・バージョン3.1.0以降の64-bit版のR ・Rパッケージ「dplyr」、「httr」と「jsonlite」がインストールされていること 筆者が使用している環境は64-bit版のWindows 10と64-bit版のR 3.5.3となり、IDEはRstudioです。 パッケージのインストール SWATをインストールするために、標準的なRインストール用関数install.package()を使用します。SWATはGithub上のリリースリストからダウンロードできます。 ダウンロードした後、下記のようなコマンドでSWATをインストールします。 R CMD INSTALL R-swat-X.X.X-platform.tar.gz X.X.Xはバージョン番号であり、platformは使用するプラットフォームと指しています。 或いはRの中から下記のコマンドのようにURLで直接インストールするのもできます。 install.packages('https://github.com/sassoftware/R-swat/releases/download/vX.X.X/R-swat-X.X.X-platform.tar.gz', repos=NULL, type='file') この部分の詳細はR-swatのGitHubのリンクを参考にしてください。 SAS Viyaと一回目の通信をやってみよう 全ての準備作業が完了したら、問題がないことを確認するために、Rから下記のコードを実行してみます。 library("swat") conn <- CAS(server, port, username, password,
なぜ“sasctl”が必要なのか? オープンソースとの統合性はSAS Viyaの一つの重要な製品理念であり、そのための機能拡張を継続的に行っています。その一環として”sasctl”という新しいパッケージがリリースされました。SAS Viyaでは従来から、PythonからViyaの機能を使用するために”SWAT”パッケージを提供しており、SAS Viyaのインメモリー分析エンジン(CAS)をPythonからシームレスに活用し、データ準備やモデリングをハイパフォーマンスで実行することができるようになっていました。しかし、データ準備やモデル開発は、アナリティクス・ライフサイクル(AI&アナリティクスの実用化に不可欠なプロセス)の一部のパートにすぎません。そこで、開発されたモデルをリポジトリに登録・管理して、最終的に業務に実装するためのPython向けパッケージとして”sasctl”が生まれたのです。 sasctlの概要 sasctlで提供される機能は、大まかに、3つのカテゴリーに分けられます。 また、この3つのカテゴリーは、お互いに依存する関係を持っています。 1.セッション sasctlを使用する前に、まずSAS Viyaのサーバーに接続する必要があります。(この接続は、ViyaマイクロサービスのRESTエンドポイントに対して行われることに注意してください) SAS Viyaのサーバーへの接続は、セッションのオブジェクトを生成することにより行われます。 >>> from sasctl import Session >>> sess = Session(host, username, password) この時点で、sasctlはViya環境を呼び出して認証し、この後のすべての要求に自動的に使用される認証トークンを受け取りました。 ここからは、このセッションを使用してViyaと通信します。 2.タスク タスクは一般的に使用される機能を意味し、可能な限りユーザーフレンドリーになるように設計されています。各タスクは、機能を実現するために、内部的にViya REST APIを複数回呼び出しています。例えば、register_modelタスクではREST APIを呼び出し、下記の処理を実行しています: リポジトリの検索 プロジェクトの検索 プロジェクトの作成 モデルの作成 モデルのインポート ファイルのアップロード その目的としては、ユーザーがPythonを使って、アナリティクス・ライフサイクルで求められるタスクを実行する際に、sasctlの単一のタスクを実行するだけで済むようにすることです。 >>> from sasctl.tasks import register_model >>> register_model(model, 'My Model', project='My Project') 今後も継続的に新しいタスクを追加していきますが、現在のsasctlには下の2つのタスクを含まれています:
SAS Visual Analytics on SAS Viya(以降VA)の最新版8.4に搭載されている新機能の中から、以下5つの機能に関してダイジェストでご紹介します。 1.AIストーリーテラー機能 2.レポート編集&表示切替の利便性向上 3.閲覧時レポートカスタマイズ&制御 4.分析用ビジュアル候補提示 5.カスタムグループ作成の容易化 6.Visual Analytics SDK 1.AIストーリーテラー(自動分析&解説)機能 VA8.3から搭載されていた機能やUIが拡張されています。 AIストーリーテラー(自動分析&解説)機能では、分析対象の変数(ターゲット)を指定するだけで、その変数に影響を与えているその他の変数の特定や、変数ごとにどのような条件の組み合わせがターゲット変数に依存しているのかを「文章(条件文)」で表現して教えてくれます。 この例で使用するデータ「HMEQJ」は、ローンの審査を題材にしたもので、顧客ごとに1行の横持ちのデータです。このデータ内にある「延滞フラグ」が予測対象の項目(ターゲット変数)で、0(延滞なし)、1(延滞あり)の値が含まれています。 データリスト内の「延滞フラグ」を右クリックし、「説明」>「現在のページで説明」を選ぶだけで、「延滞フラグ」をターゲット変数に、その他の変数の組み合わせを説明変数とした複数の決定木(ディシジョンツリー)が実行され、 以下のような結果が表示され、見つけ出された有用な洞察を説明してくれます。 分析結果画面内説明: ① 予測対象値(0:延滞なし、1:延滞あり)の切り替えが可能です。この例では、「1:延滞あり」を選択し、「延滞する」顧客に関して分析しています。 ② 全体サマリーとして、すべての顧客の内、延滞実績のある顧客は19.95%(5,960件中の1,189件)であることが示されています。 ③ 「延滞する」ことに関して影響を与えている変数の重要度を視覚的に確認することができます。最も影響度の高い変数(今回は「資産に対する負債の割合」)の重要度を1として、1を基準値にした相対重要度が算出され、横棒グラフで表示されます。従来版に比べて、変数ごとの影響度合いの違いを明確に捉えることができます。 ④ 「高」タブには、「延滞する」可能性が高いトップ3のグループ(条件の組み合わせ)が文章で示され、「低」タブには、「延滞する」可能性が低いトップ3のグループ(条件の組み合わせ)が文章で示されます。この例では、③で「資産価値」が選択され、「資産価値」に基づき、延滞する可能性の高い/低いグループのトップ3が表示され、「資産価値」に関する条件部分がハイライトしています。 ⑤ この例では、③で「資産価値」が選択され、これに応じて「0:延滞なし、1:延滞あり」別の顧客の分布状況がヒストグラムで表示されています。選択された変数が数値属性の場合は、ヒストグラムで、カテゴリ属性の場合は積み上げ棒グラフで表示されます。チャートの下端では、チャートから読み取れる内容を文章で解説しています。 以下は、カテゴリ属性の変数を選択した場合の表示例です。 以上のように、分析スキルレベルの高くないビジネスユーザーでも、簡単かつ容易に、そして分かり易くデータから有効な知見を得ることができます。 ※AIストーリーテラー機能に関しては、SAS Viya特設サイトのビジュアライゼーションセクションで動画でもご覧いただけます。 2.レポート編集&表示切替の利便性向上 従来のVAでは、編集モードで作成したレポートを表示モードで確認する際には、メニューから「レポートを開く」を選択し、レポートが表示されるのを少し待つ必要がありました。また、レポート表示モードから編集モードに戻るにもメニューから「編集」を選択する必要がありました。 VA8.4では、編集モードと表示モード切替の利便性が改善され、画面左上のペンシルアイコンをクリックするだけで、編集画面<->表示画面間を瞬時に切り替えられるので作業効率が向上します。 また、ご覧の通り、編集画面と表示画面のレイアウトも統一されています。 3.閲覧時レポートカスタマイズ&制御 一般的にBIツールでは、対象ユーザーを3つの層(管理者、レポート作成者(デザイナ)、レポート閲覧者(コンシューマ))に分類し、それぞれに最適なインターフェースを提供しています。しかし、レポート閲覧者の中には、「基本的には誰かが作成したレポートを見るだけでいいんだけど、自分好みに変更できたらもっといいのにな…」という声も多くあります。このレポートカスタマイズ者層に答えられないために、彼らは、レポートを開き、そのデータをダウンロードし、Excelに取り込んで好みのレポートを作成しようとするのです。 VA8.4では、レポートカスタマイズ者層向けに、作成済みレポートを開いて閲覧中に、簡単操作で好みに合うようにレポートをカスタマイズすることができるようになりました。 以下は、レポート閲覧中に「円グラフ」を他のチャートタイプに変更するメニューが表示されている例です。 また、レポート作成者は、レポートカスタマイズ者向けに、カスタマイズ可能な機能範囲を3段階で制御することが可能です。 これで、レポート作成者の負担も軽減され、レポート閲覧者の痒いところに手が届きそうですね。 4.分析用ビジュアル候補提示 レポート作成の元となるデータソースを選択すると、そのデータソース内の項目に基づき、「こんな分析が有効じゃないの…」と、分析画面の候補を自動的に提示してくれる機能です。 画面左端から電球マークの「候補」アイコンをクリックすると、分析候補がいくつか表示され、提示された分析画面をドラッグ操作でレポートに挿入することができます。 より素早く、効果的な情報を含むレポートを作成することができそうですね。これも一つの自動分析機能です。 5.カスタムグループ作成の容易化 従来版のVAでは、カスタムグループを作成する際には、カスタムグループ作成専用の画面内で、グループに含める要素の選択と、グループ名称を設定し、OKをクリックしてチャートに反映させる必要がありましたが、VA8.4では、チャート上でグループ化対象の要素を選択し、そのグループに名称を設定して、素早くカスタムグループを作成することができるようになりました。 6. Visual Analytics SDK
前回は、ビジネス価値創出につながる「オペレーショナル・アナリティクス for Data Scientist」ユースケースの論文を紹介しました。今回は、企業様にとって、クラウド上のインフラアーキテクチャと分析プラットフォームのデプロイメントについて、ご紹介します。昨今、なぜ「コンテナ」が注目されているのか、そして、クラウドやコンテナ上に分析プラットフォームを移行/構築し、活用することに関心があるのであれば、ぜひ最後までご覧ください。 1.Cows or Chickens: How You Can Make Your Models into Containers モデルは特定の作業(新しいデータをスコアリングして予測を出すこと)として役割を果たしてきています。一方、コンテナは簡単に作成し、廃棄し、再利用できることができます。実際、それらは簡単にインテグレートさせ、パブリッククラウドとオンプレミス環境で実行できます。SASユーザは本論文を通じて、簡単にモデルの機能をコンテナに入れることができます。例えば、パブリッククラウドとオンプレミス環境でのDockerコンテナ。また、SASのModel Managerは様々なソース(オープンソース、SAS、コンテナ等々)からモデルの管理を行うことができます。したがって、この論文はそれらの基本知識と、どのようにSASの分析モデルをコンテナに入れることをメインに紹介します。 2.Orchestration of SAS® Data Integration Processes on AWS この論文では、Amazon Web Services(AWS)S3でのSASデータインテグレーションプロセスの構成について説明します。例としては、現在サポートしているお客様がクレジット報告書を生成するプロセスを毎日実行しています。そして、そのお客様の対象顧客は1カ月ごとに1回その報告を受け取ります。データ量としては、毎日に約20万の顧客情報が処理され、最終的に毎月約600万人の顧客へ報告することとなります。プロセスはオンプレミスデータセンターで始まり、続いてAWSのSASデータインテグレーションでAPR計算が行われ、最後にオンプレミスデータセンターで報告書が生成されます。さらに詳しい情報としては、彼らのアーキテクチャ全体はマイクロサービスを使われていますが、同時にAWS Lambda、簡易通知サービス(SNS)、Amazon Simple Storage Service(Amazon S3)、およびAmazon Elastic Compute Cloud(EC2)などの独立した高度に分離されたコンポーネントも使われています。つまり、それらにより、データパイプラインに対するトラブルシューティングが簡単になっていますが、オーケストレーションにLambda関数を使用することを選択すると、プロセスがある程度複雑になります。ただし、エンタープライズアーキテクチャにとって最も安定性、セキュリティ、柔軟性、および信頼性もあります。S3FやCloudWatch SSMのようなより単純な代替手段がありますが、それらはエンタープライズアーキテクチャにはあまり適していません。 3.SAS® on Kubernetes: Container Orchestration of Analytic Work Loads 現在、Big Dataの時代で、Advanced analyticsのためのインフラストラクチャに対するニーズが高まっています。また、分析自体に対して、最適化、予測が最も重要領域であり、小売業、金融業などの業界ではそれぞれ、分析に対する独自の課題を抱えています。この論文では、Google Cloud
「ビジュアルパイプラインで将来予測」では、SAS ViyaのModel Studioを使用した時系列予測の基本的な手順を紹介しました。 今回は、需要予測の精度を高める代表的な一つの手法として、需要分類をご紹介します。 例えば、お菓子の販売に関する需要を予測する場合を考えてみましょう。 ポテトチップスやおかきのように通年を通して売れる商品もあれば、アイスクリームのように夏季に需要が増加する商品、チョコレートのようにバレンタインデーの直前と当日に需要が急増する商品、お盆やお彼岸などの際にお供え用にときどき購入される商品などなど、お菓子の種類によって需要のパターンは異なってきます。 これらの異なる需要パターンの商品に対して、一律同じアルゴリズムを適用しても予測精度は高まりません。 こうした課題に対処するために、SAS Viyaの時系列予測では、自動的に需要のパターンを分析し、予測の精度を高めるような仕組みも搭載されています。 SAS ViyaのModel 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に関する予測結果です。 以上のように、SAS ViyaのModel Studio上でビジュアルパイプラインを用いた時系列予測では、需要のパターンに基づく、より精度の高い予測モデリング戦略の自動実行も可能なんですね。 ※ビジュアルパイプラインでの需要分類&予測は、SAS Viya特設サイト内の「ビジュアライゼーション」及び「機械学習」セクションにて動画をご覧いただけます。 ※需要予測精度の向上に関しては、「ビジネスで「需要予測機能」を活用するために必要な3つの要素」ブログも参考にしてください。 ※Enterprise Open Analytics Platform 「SAS Viya」 を知りたいなら「特設サイト」へGO!