本文中用到的所有demo我都已經發布到了Github,需要的同學可以自行下載:
https://github.com/kingliantop/azurelabs/tree/master/RServerDemo
Microsoft R客戶端的安裝
Microsoft R客戶端是一個免費的用於數據科學分析的高性能的工具。他基於開源的R語言構建,所以你可以使用任何開源的R packages,另外R client也支持微軟的強大的ScaleR語言,包括使用mrsdeploy package遠程執行。
1. 首先,下載安裝Microsoft R client for windows,介紹地址如下:
https://msdn.microsoft.com/en-us/microsoft-r/r-client-install-windows
下載安裝地址:http://aka.ms/rclient/
2. 當然,如果你使用Linux,也可以下載安裝R client for Linux
https://msdn.microsoft.com/en-us/microsoft-r/r-client-install-linux
下載地址: http://aka.ms/rclientlinux.
3. 在安裝過程中,如果你需要運行一些預先訓練的模型,記得勾選"pre-trained models":
R IDE的安裝
安裝了Microsoft R 客戶端以后,你可以選擇安裝你喜歡的R IDE安裝,例如帶有R插件的Visual Studio,或者RStudio
-
RTVS for R Client on Windows: R Tools for Visual Studio (RTVS) 是一個集成開發環境,你可以使用Visual Studio免費版本,R Tools也支持,安裝完成后后,如果你的機器上有多個R環境,可以配置Microsoft R作為默認客戶端 .
-
RStudio for R Client:支持 Windows or Linux平台, RStudio 是一個非常流行的R IDE. 在安裝完RStudio后他會自己查找R客戶端,但如果你有多個R環境,可以指定Microsoft R作為 C:\Program Files\Microsoft\R Client\R_SERVER\bin\x64 作為客戶端路徑
在本例中,我們使用RStudio免費版,下載RStudio然后安裝:https://www.rstudio.com/
使用Microsoft R進行機器學習
1. 在這個測試案例中,我們用R語言來預測航班的延遲。測試數據集中有天氣數據,航班數據,我們可以用這些歷史數據來構建模型,預測是否在未來的天氣情況下,航班將會延遲。這個案例是一個機器學習中的分類問題,屬於監管學習,二分法中,結果0認為航班按時起飛,結果1代表航班延遲超過15分鍾起飛。
github <- "https://raw.githubusercontent.com/Microsoft/RTVS-docs/master/examples/MRS_and_Machine_Learning/Datasets/"
inputFileFlightURL <- paste0(github, "Flight_Delays_Sample.csv")
inputFileWeatherURL <- paste0(github, "Weather_Sample.csv")
#Create a temporary directory to store the intermediate XDF files.
td <- tempdir()
outFileFlight <- paste0(td, "/flight.xdf")
outFileWeather <- paste0(td, "/weather.xdf")
outFileOrigin <- paste0(td, "/originData.xdf")
outFileDest <- paste0(td, "/destData.xdf")
outFileFinal <- paste0(td, "/finalData.xdf")
#Import the flight data.
flight_mrs <- rxImport(
inData = inputFileFlightURL, outFile = outFileFlight,
missingValueString = "M", stringsAsFactors = FALSE,
# Remove columns that are possible target leakers from the flight data.
varsToDrop = c("DepDelay", "DepDel15", "ArrDelay", "Cancelled", "Year"),
# Define "Carrier" as categorical.
colInfo = list(Carrier = list(type = "factor")),
# Round down scheduled departure time to full hour.
transforms = list(CRSDepTime = floor(CRSDepTime/100)),
overwrite = TRUE
)
rxSummary(~., data = flight_mrs, blocksPerRead = 2)
6. 分割數據,80%用來做機器學習進行尋來你,20%用來做測試,進行訓練。
ROC和AUC通常用來衡量一個二元分類器的好壞。
ROC為接收者操作特征曲線(receiver operating characteristic curve)
AUC曲線下面積 (Area under the Curve of ROC)
8 .在這個實例中,也提供了使用決策樹Decision Tree進行分析和預測,產生的結果可以直接進行對比:
在服務器端運行和調試你的R腳本
一般情況下,比較小的數據量我們本地的筆記本及開發環境就可以,但一旦數據量比較大,運算周期比較長,我們怎么開發測試學習模型昵?如果你有一個遠端的R服務器,運算能力比較強,那么利用微軟提供的免費的mrsdeploy擴展包,就可以快速的將你的R腳本再遠端執行。
如上圖所示,微軟為了幫助開發人員和運維人員在遠端服務器端開發,調測,測試R腳本,提供了一個叫做mrsdeploy 的擴展包,借助於這個包,你可以將你的代碼在遠端執行和部署。Mrsdeploy提供了兩種連接雲端R服務器的過程,一個是基於服務器用戶名密碼的認證的remoteLogin() ,另外一個使用Azure AD來做認證的remoteLoginAAD(). 基本語法如下:
remoteLogin( https://YourHostEndpoint, session = TRUE, diff = TRUE, commandline = TRUE username = NULL, password = NULL, )
remoteLoginAAD( endpoint, authuri = https://login.windows.net, tenantid = "<AAD_DOMAIN>", clientid = "<NATIVE_APP_CLIENT_ID>", resource = "<WEB_APP_CLIENT_ID>", session = TRUE, diff = TRUE, commandline = TRUE )
本例中我們使用remoteLogin來登陸遠端服務,用戶名密碼就是你在前文中用Admin Utility創建的用戶名和密碼。
remoteLogin("42.159.238.196:12800",username="admin",password="XXXXXXXX")
3. 使用pause()和resume()函數即可在本地模式和遠端模式之間切換,pause從遠端模式切換回本地模式,resume從本地切換回遠端模式:
REMOTE> pause() > date() [1] "Thu May 18 22:57:02 2017" > resume() |
|
|
library(mrsdeploy)
library(RevoScaleR)