Maak R-modellen aan (SQL Server en RevoScaleR-tutorial)

Van toepassing op: SQL Server 2016 (13.x) en latere versies

Dit is tutorial 7 van de RevoScaleR-tutorialserie over hoe je RevoScaleR-functies gebruikt met SQL Server.

Je hebt de trainingsdata verrijkt. In deze tutorial analyseer je de data met behulp van regressiemodellering. Lineaire modellen zijn een belangrijk hulpmiddel in de wereld van voorspellende analyse. Het RevoScaleR-pakket bevat regressie-algoritmen die de werklast kunnen onderverdelen en parallel kunnen uitvoeren.

  • Een lineair regressiemodel maken
  • Een logistiek regressiemodel maken

Een lineair regressiemodel maken

In deze stap maakt u een eenvoudig lineair model dat het creditcardsaldo van de klanten schat, waarbij als onafhankelijke variabelen de waarden in de kolommen geslacht en kredietlijn worden gebruikt.

Hiervoor gebruik je de rxLinMod-functie , die remote compute-contexten ondersteunt.

  1. Maak een R-variabele aan om het voltooide model op te slaan en roep rxLinMod aan, waarbij een geschikte formule wordt doorgegeven.

    linModObj <- rxLinMod(balance ~ gender + creditLine,  data = sqlFraudDS)
    
  2. Om een samenvatting van de resultaten te bekijken, roep de standaard R-samenvattingsfunctie op het modelobject aan.

    summary(linModObj)
    

Je zou het vreemd kunnen vinden dat een gewone R-functie zoals summary hier werkt, aangezien je in de vorige stap de computecontext op de server zet. Echter, zelfs wanneer de rxLinMod-functie de remote compute-context gebruikt om het model te maken, retourneert het ook een object dat het model bevat naar je lokale werkstation en slaat het op in de gedeelde map.

Daarom kun je standaard R-commando's uitvoeren tegen het model alsof het was gemaakt met de "lokale" context.

Results

Linear Regression Results for: balance ~ gender + creditLineData: sqlFraudDS (RxSqlServerData Data Source)
Dependent variable(s): balance
Total independent variables: 4 (Including number dropped: 1)
Number of valid observations: 10000
Number of missing observations: 0
Coefficients: (1 not defined because of singularities)

Estimate Std. Error t value Pr(>|t|) (Intercept)
3253.575 71.194 45.700 2.22e-16
gender=Male -88.813 78.360 -1.133 0.257
gender=Female Dropped Dropped Dropped Dropped
creditLine 95.379 3.862 24.694 2.22e-16
Signif. codes: 0  0.001  0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 3812 on 9997 degrees of freedom
Multiple R-squared: 0.05765
Adjusted R-squared: 0.05746
F-statistic: 305.8 on 2 and 9997 DF, p-value: < 2.2e-16
Condition number: 1.0184

Een logistiek regressiemodel maken

Maak vervolgens een logistisch regressiemodel dat aangeeft of een bepaalde klant een frauderisico vormt. Je gebruikt de functie RevoScaleRrxLogit , die het fitten van logistische regressiemodellen in externe rekencontexten ondersteunt.

Houd de berekeningscontext zoals die is. Je blijft ook dezelfde databron gebruiken.

  1. Roep de rxLogit-functie aan en geef de formule door die nodig is om het model te definiƫren.

    logitObj <- rxLogit(fraudRisk ~ state + gender + cardholder + balance + numTrans + numIntlTrans + creditLine, data = sqlFraudDS, dropFirst = TRUE)
    

    Omdat het een groot model is, met 60 onafhankelijke variabelen, waaronder drie dummyvariabelen die worden weggelaten, moet je mogelijk even wachten tot de compute-context het object teruggeeft.

    De reden dat het model zo groot is, is dat in R en in het RevoScaleR-pakket elk niveau van een categorische factorvariabele automatisch als een aparte dummyvariabele wordt behandeld.

  2. Om een samenvatting van het teruggegeven model te bekijken, roep de R-samenvattingsfunctie aan.

    summary(logitObj)
    

Gedeeltelijke resultaten

Logistic Regression Results for: fraudRisk ~ state + gender + cardholder + balance + numTrans + numIntlTrans + creditLine
Data: sqlFraudDS (RxSqlServerData Data Source)
Dependent variable(s): fraudRisk
Total independent variables: 60 (Including number dropped: 3)
Number of valid observations: 10000 -2

LogLikelihood: 2032.8699 (Residual deviance on 9943 degrees of freedom)

Coefficients:
Estimate Std. Error z value Pr(>|z|)     (Intercept)
-8.627e+00  1.319e+00  -6.538 6.22e-11
state=AK                Dropped    Dropped Dropped  Dropped
state=AL             -1.043e+00  1.383e+00  -0.754   0.4511

(other states omitted)

gender=Male             Dropped    Dropped Dropped  Dropped
gender=Female         7.226e-01  1.217e-01   5.936 2.92e-09
cardholder=Principal    Dropped    Dropped Dropped  Dropped
cardholder=Secondary  5.635e-01  3.403e-01   1.656   0.0977
balance               3.962e-04  1.564e-05  25.335 2.22e-16
numTrans              4.950e-02  2.202e-03  22.477 2.22e-16
numIntlTrans          3.414e-02  5.318e-03   6.420 1.36e-10
creditLine            1.042e-01  4.705e-03  22.153 2.22e-16

Signif. codes:  0 '\*\*\*' 0.001 '\*\*' 0.01 '\*' 0.05 '.' 0.1 ' ' 1
Condition number of final variance-covariance matrix: 3997.308
Number of iterations: 15

Volgende stap