適用対象: SQL Server 2017 (14.x) 以降のバージョン
このデータサイエンティスト向けチュートリアルでは、SQL Server 2017のR機能サポートに基づく予測モデリングのエンドツーエンドソリューションの構築方法を学びます。 このチュートリアルでは、SQL Server上のNYCタクシーデモデータベースを使用しています。
R コード、SQL Server データ、カスタム SQL 関数の組み合わせを使用して、ドライバーが特定のタクシー乗車でチップを受け取ることができる確率を示す分類モデルを構築します。 また、R モデルを SQL Server に配置し、サーバーのデータを使用してモデルに基づくスコアを生成します。
この例は、営業キャンペーンに対する顧客の反応予測や、支出やイベント参加の予測など、あらゆる現実の問題にも応用できます。 ストアドプロシージャからモデルを呼び出せるため、アプリケーションに簡単に埋め込むことができます。
このウォークスルーはR開発者にRサービス(In-Database)を紹介するために設計されているため、可能な限り使用されています。 しかし、これは必ずしもRがすべてのタスクに最適なツールであるという意味ではありません。 多くの場合、特にデータ集計と機能エンジニアリングについては、 SQL Server の方が優れたパフォーマンスを示す可能性があります。 このようなタスクでは、特に SQL Serverの新機能 (メモリ最適化列ストア インデックスなど) のメリットが得られます。 可能な最適化については、レッスンの中でご紹介します。
前提条件
R に付属する RStudio や組み込みの RGUI ツールなどの R IDE
このチュートリアルは、クライアント ワークステーションで行うことをお勧めします。 同じネットワーク上で SQL Server と R 言語が有効になっている SQL Server コンピューターに接続できる必要があります。 ワークステーションの設定手順については、「SQL Server 上のR開発のためのデータサイエンスクライアントの設定」を参照してください。
または、SQL Server と R 開発環境の両方を備えたコンピューターでこのチュートリアルを実行することもできますが、この構成は運用環境にはお勧めできません。 クライアントとサーバーを同じコンピューターに配置する必要がある場合は、"リモート" クライアントから R スクリプトを送信するために、Microsoft R ライブラリの 2 つ目のセットを必ずインストールしてください。 SQL ServerインスタンスのプログラムファイルにインストールされているRライブラリは使わないでください。 具体的には、1台のコンピュータを使う場合、クライアントとサーバーの両方の操作をサポートするために、これら両方の場所にRevoScaleRライブラリが必要です。
- C:\Program Files\Microsoft\R クライアント\R_SERVER\library\RevoScaleR
- C:\Program Files\Microsoft SQL Server\MSSQL14。MSSQLSERVER\R_SERVICES\library\RevoScaleR
追加の R パッケージ
このウォークスルーでは、Rサービスの一部としてデフォルトでインストールされていない複数のRライブラリが必要です(In-Database)。 これらのパッケージは、ソリューションを開発するクライアントと、ソリューションを展開する SQL Server コンピューターの両方にインストールする必要があります。
クライアント ワークステーション上
ご使用の R 環境に次の行をコピーし、コンソール ウィンドウ (Rgui または IDE) でコードを実行します。 一部のパッケージでは、必須パッケージもインストールされます。 全部で、約 32 パッケージがインストールされます。 この手順を完了するには、インターネット接続が必要です。
# Install required R libraries, if they are not already installed.
if (!('ggmap' %in% rownames(installed.packages()))){install.packages('ggmap')}
if (!('mapproj' %in% rownames(installed.packages()))){install.packages('mapproj')}
if (!('ROCR' %in% rownames(installed.packages()))){install.packages('ROCR')}
if (!('RODBC' %in% rownames(installed.packages()))){install.packages('RODBC')}
サーバー上
SQL Server にパッケージをインストールするには、いくつかのオプションがあります。 例えば、SQL Serverは「Install R with sqlmlutils」機能を提供しており、データベース管理者がパッケージリポジトリを作成し、ユーザー権限を割り当てて自分のパッケージをインストールすることができます。 ただし、管理者であれば、正しいライブラリにインストールすればRを使って新しいパッケージをインストールすることができます。
注
サーバー上では、たとえ促されてもユーザーライブラリにインストール しないでください 。 ユーザーライブラリにインストールすると、SQL Serverインスタンスはパッケージを見つけたり実行したりできません。 詳細については、「 sqlmlutils を使用した R パッケージのインストールを参照してください。
SQL Server コンピューターで、管理者権限で RGui.exe を開きます。 SQL Server R Servicesをデフォルト設定でインストールすれば、
C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\R_SERVICES\bin\x64で RGui.exe を見つけられます。R プロンプトで、次の R コマンドを実行します。
install.packages("ggmap", lib=grep("Program Files", .libPaths(), value=TRUE)[1])
install.packages("mapproj", lib=grep("Program Files", .libPaths(), value=TRUE)[1])
install.packages("ROCR", lib=grep("Program Files", .libPaths(), value=TRUE)[1])
install.packages("RODBC", lib=grep("Program Files", .libPaths(), value=TRUE)[1])
この例では、R grep 関数を使用して、使用できるパスのベクトルを検索し、"Program Files" を含むパスを見つけます。 詳細については、「基本パッケージの RDocumentation」を参照してください。
パッケージが既にインストールされている場合は、installed.packages() を実行してインストール済みパッケージの一覧を確認します。