Tag: SAS Viya

Data Visualization
SAS Visual Analyticsで地図上にカスタム境界線(領域)を描いて分析―(続編)

前回、この機能を紹介した際には、海外に実在する施設や地図上での活用例をご覧いただきました。 その続編となる今回は、以下の2点に関してご紹介します。 (尚、以下のデモ画面に表示されている数値(座席数、利用率、収益率、等)はすべてダミーデータです)   1.日本地図上に実在する施設に対するカスタム境界線分析 2.カスタム境界線機能で、こんなことまでできるなんて…   1.日本地図上に実在する施設に対するカスタム境界線分析 私は埼玉県さいたま市に在住しているのですが、だからというわけではありませんが、今回は、埼玉スタジアムの座席レイアウトを地図上の埼玉スタジアム上に描画してみました。(図1.参照) 図1.埼玉スタジアム地図上に描画された、観客席レイアウト 図1.では、「客席別利用率」ページが表示されています。 左側には客席ゾーン別の座席数が棒グラフで表示され、右側には、スタジアムの客席レイアウトが表示され、利用率によって色分けされています。また、棒グラフ上でゾーンCが選択され、スタジアム内の対応する客席の部分がハイライトされている状態です。 もちろん、SAS Visual Analytics(以降、VA)の標準機能を使用して、特定の客席エリアをクリックし、そのエリアのチケット料金や、収益の推移、などの詳細情報をポップアップで表示させることも可能です。 右側の地図が本当に埼玉スタジアムのある地点なのかを分かりやすく見ていただくために、図2.ではズームアウトしたものも載せました。埼玉スタジアムは国道122号線沿いにあるんですね。 図2.図1.から地図を少しズームアウトした状態 以下の図3.は同じレポート内の「ゾーン別客席マップ」ページです。棒グラフのゾーン別の色に合わせて、客席エリアの色を合わせたものです。 図3.「ゾーン別客席マップ」ページ   2.カスタム境界線機能で、こんなことまでできるなんて… 実は、VAの地図描画用オブジェクトである、「ジオマップ」では、地図を非表示にすることができます。 あれ?、地図描画用の機能なのに、地図を非表示にする意味あるの?と思われるかと思いますが、これがあるんですね。 その一例をご紹介します。 以下の図4.は、とある列車の車両内の座席別収益率を分析するレポートです。座席ごとの収益率が色分けで表示されています。(座席別に収益率を把握する必要があるかどうかは別のお話ですが) 図4.列車内座席別収益率レポート この座席レイアウトも「ジオマップ」オブジェクトを使用し、地図上に描画されているものなのですが、地図は境界線(領域)を描くためには必要ですが、この例のような場合は、描いた後は地図が必要ないので非表示にしているわけです。地図を非表示にしていること以外は、その他の例と同様に、チャートやアナリティクスとのインタラクション等はもちろん可能です。 上記の図4.でも、座席別収益率の棒グラフ上で、最も収益率の低い座席(右端の棒)を選択し、該当の座席位置をハイライト表示しています。 SAS Visual Analytics on SAS Viyaでは、こんなこともできるんですね。 例えば、人体図の中の内臓別の疾患状況をビジュアルに分析する、工場内プラントの設備(工程)ごとの稼働状況を図解でビジュアルに可視化し分析する、店舗内の商品陳列棚別の在庫状況や売上状況を図解でビジュアルに可視化し分析する…なんていうこともできそうですね。

Data Visualization
SAS Visual Analyticsで地図上にカスタム境界線(領域)を描いて分析

みなさんご存知の通り、SAS Visual AnalyticsはセルフサービスBI&Analyticsツールで、ビジネスユーザー自身で簡単にレポートやダッシュボードを作成することができます。その際、標準で備わっている数多くのチャートオブジェクトを使用することができますが、お客様要件によっては、標準のチャートタイプだけでは表現できないものもあります。それに答えるためにSAS Visual Analytics 8.2(以下VA)には大きく2つの機能が用意されています。 データドリブンコンテンツ 地図上のカスタム境界線描画 1番目の「データドリブンコンテンツ」とは、サードパーティのビジュアライゼーション・ライブラリ(D3.js, C3, Google Chart Toolsなど)と連携することで、チャートタイプやビジュアルのバリエーションを大幅に拡張可能な機能ですが、 今回は、2番目の「地図上のカスタム境界線描画」機能に関してご紹介します。 VAに標準搭載のチャートオブジェクトには地図描画のための「ジオマップ」オブジェクトが含まれています。この機能を活用することで、例えば、地図上で隕石落下地点と被害の度合いを分析(図1.参照)したり、都道府県別の売上や店舗別の顧客数などをビジュアライズし、分析(図2.参照)することができます。 図1.隕石落下地点と被害の度合い分析ダッシュボード 図2.店舗別の売上と利益をバブルのサイズと色で表示 地図描画のタイプとしては、図1の「座標」、図2の「バブル」以外に「領域」を選択可能です。 「座標」とは、地図上の該当ポイントに円形や星形などのアイコンを表示するものです。 そして、「領域」では、基本的に地図上の国の境界線や、その一つ下のレベルである州や都道府県の境界線領域を描画します。例えばアメリカの州や日本の都道府県の領域を指定した値に基づき色分けして表示するものです。(図3.参照) 図3.都道府県ごとの売上分析 さらに、地図上に表示するこの「領域」をカスタムで描画することが可能で、これを「カスタム境界線(領域)」描画機能と呼んでいます。 この機能を活用することで、例えば、特定施設内の人や物の動線を描画したり、家屋ごとのソーラー発電量を実際の地図上に描画することなども可能になります。 その基本的な手順を、アメリカにあるコロラド・コンベンション・センター(以下CCC)内のミーティングフロアにある各種の会議室領域の描画を例に、以下に示します。 図4. VAレポート上に表示された完成版(部屋ごとの面積などを色分けして描画することができます) CCCのフロアレイアウト画像を入手し、市販ツールあるいはオープンソース製品を使用し、Esri shapeファイルを作成 Esri ShapeファイルをVA環境にインポート インポートしたデータに基づきカスタム境界線(領域)をレポート上に描画   1. CCCのフロアレイアウト画像を入手し、市販ツールあるいはオープンソース製品を使用し、Esri Shapeファイルを作成 この例では市販のEsri Desktopツールを使用し、CCCのサイトから入手したフロアレイアウトの画像をEsri地図上に重ね(図5.参照)、部屋の輪郭をなぞって描き(図6.参照)、結果をEsri Shapeファイルとして保存(図7.参照)します。(詳細に関しては、使用するツールのマニュアルを御覧ください。) 図5. Esri地図上のCCCのある地点の上に、CCCのフロアレイアウト画像を重ねる 図6. 部屋の輪郭をなぞって描く(描いた領域ごとにIDを設定しておきます。この例ではRoomID) 図7. 結果をEsri Shapeファイルとして保存 2. Esri ShapeファイルをVA環境にインポート VA環境に実装されているマクロ%SHPIMPRTを使用し、Esri ShapeファイルをSAS Datasetに変換(以降Shapeデータ)し、VA環境(インメモリー)にロードします。 詳細は、以下サポートサイトにあるSAS Viya管理者(Administration)マニュアルを御覧ください。 https://support.sas.com/documentation/onlinedoc/viya/index.html

Machine Learning
ディープラーニングの判断根拠

予測モデル生成において、従来は、人が考えてデータの中から特徴を抽出する必要がありましたが、ディープラーニングでは、この特徴を自動的に抽出して学習することが可能になっています。 半面、どのように特徴が抽出されているのかに関しては、基本的にはブラックボックスであり、説明責任が求められるような業務要件では、その分析結果を業務に活用することが難しい場合もあります。 しかし、近年ディープラーニングから出てきた結果の根拠=判断根拠を可視化する手法がいくつか考案されてきています。 関連情報サイト: https://qiita.com/icoxfog417/items/8689f943fd1225e24358 https://pair-code.github.io/saliency/ http://blog.brainpad.co.jp/entry/2017/07/10/163000 SAS Viyaでは、各種のディープラーニング(DNN, CNN, RNN)を用いた学習が可能ですが、今回はCNNを用いた画像認識において、判断根拠となり得る情報の出力に関してご紹介します。 この例は、複数のイルカの画像をCNNで学習し、対象の画像(写真)がイルカなのかどうかを判別するものです。 モデルを作成後、以下の画像をモデルに当てはめてスコアリングを実施。 この画像は「イルカ」だと判定されたのですが、その判断根拠の一つとして、以下のように、この画像のどの部分がより重要であると判断されているのかを可視化することが可能になっています。 【レイヤー1のfeature map】 【レイヤー18のfeature map】 SAS Viyaでは、モデルのスコアリング時のオプションとして、指定したレイヤ(層)の特徴マップ(feature map)を画像として指定ライブラリに出力することが可能です。 >> スコアリング用のアクション:”dlScore” の layerOut={出力先ライブラリとテーブル名} オプションと layers={出力対象レイヤ名} オプション >> 上図はライブラリに出力された画像(feature map)を表示したものです。

Artificial Intelligence | Machine Learning
SAS Viyaを「無償」で「実データ」で「体感」してみよう!

2017年12月にSAS Viyaの最新版3.3がリリースされました。 これに伴い、皆様には、大幅に拡張されたSAS Viyaの機能を存分に体感いただくために今版から、皆様がお持ちの「実データ」でSAS Viyaベースのすべての製品を自由に触っていただけるようになりました。 ぜひ、ご利用ください! 利用手順に関しては、以下のブログをご覧ください。 SAS Viyaを体感してみよう! ~SAS Viya無償試用版利用ガイド~

Machine Learning | Programming Tips
SAS Viyaにディープラーニングが登場! さっそく画像分類してみた。

SAS Viyaがリニューアルされまして、ついにディープラーニングが登場しました! SAS ViyaのディープラーニングではオーソドックスなDeep Neural Network(DNN)から、画像認識で使われるConvolutional Neural Network(CNN、畳込みニューラルネットワーク)、連続値や自然言語処理で使われるRecurrent Neural Network(RNN、再帰的ニューラルネットワーク)まで利用可能になります。 ディープラーニングを使うことのメリットは、従来の機械学習やニューラルネットワークが苦手としている画像や文章を認識し、高い精度で分類や推論することが可能になります。 高い精度というのは、ディープラーニングのモデルによっては人間の目よりも正確に画像を分類することができるということです。 例えばコモンドールという犬種がありますが、この犬はモップのような毛並みをしていて、人間ではモップと見間違えることがあります。 これは犬? それともモップ? こういう人間だと見分けにくい画像に対しても、ディープラーニングであれば、人間よりも正確に犬かモップかを見分けることができるようになります。 というわけで、今回はSAS Viyaのディープラーニングを使って画像分類をしてみたいと思います。 ディープラーニングの仕組み 画像分類のディープラーニングではCNNを使います。 CNNは画像の特徴を探し出す特徴抽出層と特徴から画像を分類する判定層で構成されています。   特徴抽出層は主に畳込み層とプーリング層で構成されています。 畳込み層で入力画像に対し、ピクセルの特徴(横線の有無とか斜め線とか)を探し出し、プーリング層で重要なピクセルを残す、という役割分担です。 判定層は、特徴抽出層が見つけた特徴をもとに、画像の種類を分類します。 例えば犬と猫の分類であれば、特徴抽出層が入力画像から、面長で大きな鼻の特徴を見つけだし、犬と分類します。   または、丸っこい顔立ちと立った耳の特徴を見つけだし、猫と分類します。   SAS Viyaで画像を扱う SAS ViyaディープラーニングでCifar10をネタに画像分類をしてみたいと思います。 Cifar10は無償で公開されている画像分類のデータセットで、10種類の色付き画像60,000枚で構成されています。 各画像サイズは32×32で、色はRGBです。 10種類というのは飛行機(airplane)、自動車(automobile)、鳥(bird)、猫(cat)、鹿(deer)、犬(dog)、蛙(frog)、馬(horse)、船(ship)、トラック(truck)で、それぞれ6,000枚ずつ用意されています。 画像は総数60,000枚のうち、50,000枚がトレーニング用、10,000枚がテスト用です。   画像データは以下から入手することができます。 https://www.cs.toronto.edu/~kriz/cifar.html さて、Cifar10を使って画像分類をしてみます。言語はPython3を使います。 SAS Viyaで画像分類をする場合、まずは入手したデータをCASにアップロードする必要があります。 CASはCloud Analytics Servicesの略称で、インメモリの分散分析基盤であり、SAS Viyaの脳みそにあたる部分です。 SAS Viyaの分析は、ディープラーニング含めてすべてCASで処理されます。 CASではImage型のデータを扱うことができます。 Image型とは読んで字のごとくで、画像を画像フォーマットそのままのバイナリで扱えるということです。

Data Visualization
SAS Visual Analytics 8.2 新機能概要

2017年11月にリリース予定の「SAS Visual Analytics 8.2」に搭載予定の新機能概要をご紹介します。 【SAS Visual Analytics 8.2 新機能概要】 サードパーティ・ビジュアライゼーション D3.jsやC3、あるいはGoogleチャートの機能を活用し、VAに標準装備のチャートタイプでは表現できない、より柔軟で洗練されたチャートを描画し、レポートに組み込むことが可能です。 新規追加ビジュアライゼーション バブルチェンジプロット、平行座標プロット、スケジュールチャート、など、新たに9種類のチャートオブジェクトが追加されます。 オブジェクト間の自動リンク&フィルタ設定 レポート内の全てのオブジェクトを自動的に連係させることで、効果的でインタラクティブなレポートを簡単に作成可能です。その際、一方向のフィルタなのか双方向のフィルタなのかを指定することができます。 レポート自動保存&復元 作成中のレポートは定期的に自動保存されます。これによって、仮に保存し忘れてログオフしたとしても、再ログオン時に前の状態を復元することができます。 カスタム領域塗りつぶし VA7.4と同様に、地図上にカスタムで指定した領域を塗りつぶして描画することが可能です。 地図機能拡張 Esri地図データとの連係機能が拡張され、デモグラフィック情報の活用が可能になります。例えば地図上に表示されている自店舗群を選択し、周辺住民の平均年収や年齢などの情報を把握でき、より効果的なロケーションアナリティクスが可能になります。  

Advanced Analytics | Programming Tips
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"

Machine Learning
小林 泉 0
機械学習のパラメータをオートチューニングしよう(回帰編)!

先日投稿した「機械学習のパラメータをオートチューニングしよう(分類編)!」の続きです。 今回は回帰分析をオートチューニングします。 あらまし 機械学習の課題はパラメータチューニングで、手動で最高のパラメータを探そうとすると、とても時間がかかり効率的ではありません。 SAS Viyaではパラメータチューニングを自動化するオートチューニング機能を提供しています。 オートチューニング機能を使うことで、限られた時間内、条件下で最高のパラメータを探索し、予測モデルを生成することができます。   今回やること 今回はオートチューニングを使って数値予測モデルを生成します。 使うデータは架空の銀行の金融商品販売データです。顧客の取引履歴と営業履歴から構成されており、新たな金融商品の販売数を予測するデータとなっています。 内容は以下のようになっており、約5万行、22列の構成です。 1行1お客様データとなっていて、顧客の口座情報や取引履歴、営業履歴が1行に収納されています。 ターゲット変数はcount_tgtで、これは各顧客が購入した金融商品数を表しています。 ほとんどが0(=未購入)ですが、購入されている顧客の購入数を予測するモデルを生成します。 今回はランダムフォレストを使って予測したいと思います。 ランダムフォレストは別々の決定木を複数作り、各決定木の予測値をアンサンブルして最終的な予測値とする機械学習の一種です。   まずは手動で予測 SAS Viyaでランダムフォレストを使って予測モデルを生成するにあたり、まずはCASセッションを作ってトレーニングデータとテストデータをインメモリにロードします。 # PythonからCASを操作するためのSWATライブラリをインポート import swat   # 接続先ホスト名、ポート番号、ユーザー名、パスワードを指定 host = "localhost" port = 5570 user = "cas" password = "p@ssw0rd"   # mysessionという名称のCASセッションを作成 mysession = swat.CAS(host, port, user, password)  

Machine Learning
小林 泉 0
機械学習のパラメータをオートチューニングしよう(分類編)!

機械学習で予測モデルを作るとき、課題のひとつにパラメータのチューニングがあります。 パラメータとはどういう設定値や制限値で機械学習の予測モデルを作るのかを示すものです。 料理に例えると、チャーハンを作る過程が機械学習のアルゴリズムだとすると、どういう具材をどのくらいの量入れるのかがパラメータです。 お米の品種や卵の有無、豚肉か鶏肉か、調味料の種類や量がパラメータになります。チャーハンの良し悪しはこれらパラメータの良し悪しに左右されます。おいしいチャーハンを食べるためには、具材をベストな組み合わせと量で投入する必要があります。 昼食においしいチャーハンを食べたので、チャーハンでたとえました。 話を戻すと、機械学習の決定木の深さであったり、ニューラルネットワークのニューロン数であったり、パラメータは自分で設定する必要があります。機械学習では複数のパラメータを組み合わせて、ベストなレシピを作らねば良い予測モデルは作れません。   SAS Viyaでは各種機械学習アルゴリズムを提供していますが、各機械学習にそれぞれのパラメータが用意されています。料理に例えると、メニューにチャーハンのみならず餃子、ラーメン、寿司、ステーキ、チーズケーキがあるようなものです。シェフ(≒データサイエンティスト)は全てのベストなレシピ(≒パラメータ)を探索せねばならず、労力がいります。 しかし! SAS Viyaには更に便利な機能として、オートチューニングというものが用意されています。 オートチューニングは最も良いパラメータを短い時間で探索してくれる機能です。料理に例えると、究極のチャーハンレシピをViyaが自動的に作ってくれる機能です。夢のようですね。 オートチューニングでは機械学習のパラメータを変えながら複数の予測モデルを作り、最も良い予測モデルのパラメータを探してくれるというものです。決定木だけでもパラメータは10種類以上あるのですが、それらの最良な値をみつけてくれます。 パラメータチューニングを行う際、最も安易な探索方法は各パラメータの全パターンを試すことです。全パターンを試せば、その中から最も良いものはたしかにみつかります。しかし欠点はパラメータチューニングに長い時間がかかってしまい、現実的な手法ではありません。 SAS Viyaのオートチューニングはより賢いパラメータ探索のアルゴリズムを4種類用意しています。 遺伝的アルゴリズム(Genetic Algorithm, GA):パラメータを遺伝子と見立てて、淘汰、交叉、突然変異を組み換えすことでパラメータを探索する。 ラテン超方格サンプリング(Latin HyperCube Sampling, LHS):層別サンプリングの一種で、各パラメータをn個の区間に分割し、区間からランダムに値を取り出してパラメータを探索する。 ベイズ最適化(Bayesian Optimization):説明変数と予測の間にブラックボックス関数があると仮定し、ブラックボックス関数のパラメータの分布を探索する。 ランダムサンプリング(Random Sampling):ランダムにパラメータの値を選択して探索する。 探索アルゴリズムを詳しく説明していると終わらないので説明を短くまとめました。SAS Viyaではいずれかのアルゴリズムを利用してオートチューニングを実行することができます。   今回はPythonからSAS Viyaを操作して、オートチューニングを試してみたいと思います。 まずはPython SWATをimportし、CAS Sessionを生成してデータをロードします。 # PythonからCASを操作するためのSWATライブラリをインポート import swat   # mysessionという名称のCASセッションを作成 mysession = swat.CAS(host, port, user, password)   #

Advanced Analytics | Programming Tips
SAS Viyaでフーリエ変換

みなさま、こんにちは。 さて突然ですが、フーリエ変換ってご存知ですか? おそらく物理学や経済学で波形データを分析したことのある方には馴染みがあるでしょうが、フーリエ変換は波形データを扱う手法です。 フーリエ変換では周期的な波形を、sin波やcos波の重ね合わせで説明しようというものです。 たとえば以下のような波形データは、どの時間にどのくらいの強さの波が流れているかを表現しています。 これをフーリエ変換することで、周波数と振幅で表すことができるようになります。 ↓ フーリエ変換! ↓   従来のSAS製品では波形データでフーリエ変換をする機能を提供していなかったのですが、SAS ViyaのSAS Forcastingという製品を使うことで、フーリエ変換を実施することができるようになりました。 SAS Viyaでできるのは短時間フーリエ変換(Short time Fourier transform)です。 今回はSAS Viyaでフーリエ変換を実施してみたいと思います。プログラミング言語はPythonを使用します。 まずは前準備として、必要なライブラリをインポートし、CAS sessionを作成します。 CAS sessionはSAS Viyaでデータ分析を行うCASというエンジンへ認証し、接続するものです。 # CAS sessionの用意 import swat   host = "localhost" port = 5570 user = "user" password = "p@ssw0rd"   mysession = swat.CAS(host, port, user, password)   #

1 3 4 5 6