SQL Server R Services のサンプル デモのご紹介
Microsoft Japan Data Platform Tech Sales Team
坂本 禎尚
SQL Server 2016 では R Services という新たなサービスが仲間入りしました。
R Services の R は統計解析言語として有名なプログラミング言語の R です。SQL Server 2016 では、この R が SQL Server 上で使えるようになります。しかもただ R が使えるだけでなく、Revolution Analytics 社(2015 年 4 月にマイクロソフトが買収完了)が持っていた並列分散処理による大量データ処理の高速化手法を利用することができるようになっていて、オープンソースの R と比較して機能、性能面で大きなアドバンテージを持っています。
こちらの記事でも紹介されていますので、是非ご覧下さい。
この R Services を使ったシナリオ ベースのサンプルが GitHub で公開されています。
https://github.com/Microsoft/SQL-Server-R-Services-Samples
現状、このサンプルの中には 5 つのデモ シナリオが入っています。また、下記シナリオは SQL Server R Services の代わりに、弊社パブリック クラウド Azure の PaaS サービスである Azure Machine Learining を用いたものが Cortana Intelligence Gallery (以下 CIS )において提供されていますので、ご興味のある方はこちらも是非ご覧下さい
- Churn
- 小売り業における顧客離れの分析シナリオ(Churn モデルを使ったシナリオ)
- CIS 版 : https://gallery.cortanaintelligence.com/Collection/Retail-Customer-Churn-Prediction-Template-1?r=legacy
- EnergyDemandForecasting
- 電気の需要予測シナリオ(ランダム フォレスト回帰モデルを使ったシナリオ)
- CIS 版 : https://gallery.cortanaanalytics.com/SolutionTemplate/Demand-Forecasting-for-Energy-1
- FraudDetection
- オンライン商取引における不正利用検知シナリオ(バイナリ分類を使ったシナリオ)
- CIS 版 : https://gallery.cortanaintelligence.com/Collection/Online-Fraud-Detection-Template-1
- PredictiveMaintenance
- 飛行機のエンジン データを使った予防保守シナリオ(回帰、バイナリ分類、多項分類を使ったシナリオ)
- CIS 版 : https://gallery.cortanaanalytics.com/Collection/Predictive-Maintenance-Template-3
- RetailForecasting
- 各店舗、各商品ごとの需要予測シナリオ(時系列分析や回帰を使ったシナリオ)
- CIS 版 : https://gallery.cortanaintelligence.com/Collection/Retail-Forecasting-Template-1
今回はその中から EnergyDemandForecasting をセットアップする手順概要をご紹介します。
手順の詳細やデプロイした処理の中身に関しては、ダウンロードしたファイルの [EnergyDemandForecasting] フォルダー → [SQLR] フォルダーの下にある README.md ファイルを参照下さい。
デモ シナリオ
このデモ シナリオは電気の需要予測を題材にしています。
デモ用データを自動生成し、そのデータをもとにした機械学習モデルを構築して、更にそのモデルをもとに需要予測を行います。また、その過程を Power BI で可視化するという end-to-end のデモになっています。
デモの流れイメージ図
それでは、具体的なセットアップ手順を見ていきましょう。
事前準備
(GitHub からリポジトリ ダウンロード)
GitHub から Microsoft/SQL-Server-R-Services-Samples のリポジトリをダウンロード(上記 URL)します。
NOTE: Please don't use "Download ZIP" to get this repository, as it will change the line endings in the data file. Use "git clone" to get a local copy of this repository.
という注意書きも書かれていますので、GitHub のクライアント アプリケーションをインストール頂いてご自分のローカルにクローンを作って頂くのがお勧めです。
GitHub Desktop のダウンロードは下記の URL から可能です。
リポジトリのクローンの作り方は幾つかありますが、GitHub Desktop がインストールされていれば、今回のサンプルが公開されているリポジトリ(https://github.com/Microsoft/SQL-Server-R-Services-Samples)にアクセスして[Clone or download] ボタンより、[Open in Desktop] を選択すると GitHub Desktop が自動的に起動します。あとは、どこにクローンを作るかを選択するだけです。
(SQL Server 側の設定 )
SQL Server R Services をインストールして利用可能な状態になっている必要があります。
下記のマニュアル ページにインストール含めたセットアップ方法が記載されています。
https://msdn.microsoft.com/ja-jp/library/mt696069.aspx
Step 1.
まず最初にサンプル データや、デモの処理に使用するストアド プロシージャー等を格納する為のデータベースを作成します。
例えば、[EnegeryForecast] という名前でデータベースを作成しておきます。
Step 2.
ダウンロードしたファイルの [EnergyDemandForecasting] フォルダー → [SQLR] フォルダーの下に setup.ps1 という PowerShell スクリプトを実行します。
Step 3.
正しくデプロイできているかを確認します。正しくデプロイできていれば、以下のように各種テーブル、ストアド プロシージャーやジョブが作られています。
NOTE: If you are using Windows Authentication, only the data simulators and prediction job for region 101 will be created, as we assumed a less powerful server is used
Step 2. のスクリプトで SQL Server 認証ではなく Windows 認証で実行した場合、作られるジョブは 101 だけです。102~104 のジョブは作られなくてもデプロイに失敗しているわけではありません。
データベース オブジェクトやジョブは作られているようなのにきちんと動いていない(例えば、しばらく経っても Power BI のレポートに何も表示されない等)ように見える場合は、実行ログが格納されている dbo.runlogs テーブルを参照してエラーが出てないかチェックして下さい。
Step 4.
Power BI で需要予測結果を表示する為に、[EnergyDemandForecasting] フォルダー → [SQLR] フォルダー → [PowerBI] フォルダーの下にある EnergyDemandForecast.pbix ファイルを開いてデータの取得元の設定を変更します。
Step 5.
需要データは 15 分おき、温度データは 60 分おき、予測データは 15 分おきに作られます。しばらく動かし続けると以下のようなレポートが表示できるようになります。
デモで動いている R スクリプトについて
今回のデモでは [usp_trainModel] と [usp_predictDemand] の 2 つのストアド プロシージャー内で R スクリプトが実行されています。
以下は[usp_trainModel] を抜粋したものですが、この R スクリプト内で実行されている大まかな処理は、「データベース内にあるテーブルからデータ取得」→「データのフィルターリング」→「機械学習モデルの構築」→「構築されたモデルをデータベースのテーブル内に格納」です。
R スクリプト内に、頭が rx で始まっている関数が幾つか出てきていますが、これらが旧 Revolution Analytics 社でスペシャル チューニングが施された関数群(マイクロソフト買収後に作ったものもあります)です。
いかがでしたでしょうか?
これまでオープンソースの R を使って非常に限られたコンピューター リソースで統計解析をやっておられた方は数多くいらっしゃるかと思います。
これからは、SQL Server に搭載されたR Services を使えば、データベース サーバー上でデータの移動を伴うことなく、処理も自動的に並列化されるので大規模データの統計解析思いのままになります。
そのうえ、そこで作られた皆さん独自のモデルを使い、リアルタイムに予測を行うようなシステムが SQL Server さえあれば構築可能になります。
今回ご紹介したデモ シナリオ以外のものも是非試して頂き、SQL Server R Services の実システムへの活用にお役立て下さい。