SQL開発者のための In-Database R 分析(チュートリアル)
このチュートリアルの目的は、SQLプログラマーにSQL Serverで機械学習ソリューションを構築する実践的な体験を提供することです。このチュートリアルでは、ストアドプロシージャにRコードを追加することで、RをアプリケーションあるいはBIソリューションに組み込む方法を学習します。
[!NOTE]
同様のチュートリアルのPython版はこちら。Python版はSQL Server 2017で動作します。
概要
機械学習開発のライフサイクルは一般的に、データの取得とクレンジング、データの探索と特徴エンジニアリング、モデルのトレーニングとチューニング、そして最終的には本番環境へのモデル展開で構成されます。実際のコーディング、デバッグ、テストは、R用の統合開発環境(例えば、RStudioやR Tools for Visual Studio)を使用するのが最適です。
Rでソリューションを作成してテストした後、RコードをTransact-SQLストアドプロシージャとしてSQL Serverに展開します。このチュートリアルでは、必要なすべてのRコードを提供します。
-
サンプルデータセットとすべてのスクリプトファイルをローカルコンピュータにダウンロードします。
-
Lesson 2: PowerShellを使用したSQL Serverへのデータインポート
指定したインスタンス上にデータベースとテーブルを作成し、サンプルデータをテーブルにロードするPowerShellスクリプトを実行します。
-
Transact-SQLストアドプロシージャからRを実行し、基本的なデータの探索と可視化を実行します。
-
ユーザ定義関数を活用しデータの特徴抽出を行います。
-
Lesson 5: T-SQLを使用したモデルのトレーニングと保存
ストアドプロシージャ化したRコードにより機械学習モデルを構築して保存します。
-
モデルをデータベースに保存した後、Transact-SQLを使用して予測のためにモデルを呼び出します。
[!NOTE]
ストアドプロシージャに埋め込まれたコードに問題がある場合、ストアドプロシージャから返される情報は通常、エラーの原因を理解するには不十分であるため、RコードのテストはR用の統合開発環境(IDE)を使用することをお勧めします。
シナリオ
このチュートリアルでは、よく知られているNYC Taxiデータセットを使用します。このチュートリアルをすばやく簡単にするために、データはサンプリングして利用します。このデータセットの、時刻、距離、ピックアップ場所などの列に基づき、特定の乗車においてチップが得られるかどうかを予測するバイナリ分類モデルを作成します。
要件
このチュートリアルは、データベースやテーブルの作成、テーブルへのデータのインポート、SQLクエリの作成など、基本的なデータベース操作に慣れているユーザーを対象としています。
チュートリアルを開始する前に、次の準備を完了する必要があります。:
-
SQL Server 2017のDatabase Engine ServicesおよびMachine Learning Services(In-Database)をインストールしてください。
-
SQL Server 2017 内でR(およびPython)実行するにはsp_configureでexternal scripts enabledの設定変更が必要です。またexternal scripts enabledパラメータは設定変更の反映にSQL Server 2017の再起動が必要です。
-
1.外部スクリプト実行機能の有効化
T-SQLEXEC sp_configure 'external scripts enabled', 1;
-
2.SQL Server 2017の再起動
cmdnet stop "SQL Server Launchpad (MSSQLSERVER)" net stop "SQL Server (MSSQLSERVER)" net start "SQL Server (MSSQLSERVER)" net start "SQL Server Launchpad (MSSQLSERVER)"
netコマンドに渡すインスタンス名は環境に応じて変更してください。またSQL Server AgentサービスなどSQL Serverサービスに依存するサービスがある場合には明示的に再開してください。
-
-
このチュートリアルで使用するSQL Serverログインには、データベースやその他のオブジェクトの作成、データの更新、データの参照、ストアドプロシージャの実行の権限を付与してください。
リンク
次のステップ
出典
In-database R analytics for SQL developers (tutorial)