Tworzenie modeli R (samouczek dotyczący programu SQL Server i pakietu RevoScaleR)

Dotyczy: SQL Server 2016 (13.x) i nowsze wersje

To jest 7. samouczek z serii tutoriali RevoScaleR, jak korzystać z funkcji RevoScaleR z SQL Server.

Wzbogaciłeś dane treningowe. W tym poradniku przeanalizujesz dane za pomocą modelowania regresyjnego. Modele liniowe są ważnym narzędziem w świecie analityki predykcyjnej. Pakiet RevoScaleR zawiera algorytmy regresji, które mogą dzielić obciążenie i uruchamiać je równolegle.

  • Tworzenie modelu regresji liniowej
  • Tworzenie modelu regresji logistycznej

Tworzenie modelu regresji liniowej

W tym etapie stwórz prosty model liniowy, który szacuje saldo karty kredytowej dla klientów, używając jako niezależnych zmiennych wartości w kolumnach płci i linii kredytowej .

Aby to zrobić, użyj funkcji rxLinMod , która obsługuje zdalne konteksty obliczeniowe.

  1. Stwórz zmienną R do przechowywania ukończonego modelu i wywołaj rxLinMod, przekazując odpowiednią formułę.

    linModObj <- rxLinMod(balance ~ gender + creditLine,  data = sqlFraudDS)
    
  2. Aby zobaczyć podsumowanie wyników, wywołaj standardową funkcję podsumowywania R na obiekcie modelu.

    summary(linModObj)
    

Możesz pomyśleć, że to dziwne, że zwykła funkcja R, taka jak summary , działa tutaj, ponieważ w poprzednim kroku ustawiasz kontekst obliczeniowy na serwerze. Jednak nawet gdy funkcja rxLinMod korzysta z kontekstu zdalnego obliczeniowego do stworzenia modelu, zwraca obiekt zawierający model do lokalnej stacji roboczej i przechowuje go w katalogu współdzielonym.

Dlatego możesz wykonywać standardowe polecenia R na modelu, tak jakby został on utworzony przy użyciu kontekstu „local”.

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

Tworzenie modelu regresji logistycznej

Następnie stwórz model regresji logistycznej, który wskazuje, czy dany klient stanowi ryzyko oszustwa. Użyjesz funkcji RevoScaleRrxLoit , która wspiera dopasowywanie modeli regresji logistycznej w zdalnych kontekstach obliczeniowych.

Zachowaj kontekst obliczeniowy bez zmian. Będziesz też nadal korzystać z tego samego źródła danych.

  1. Wywołaj funkcję rxLogit i przekaż formułę potrzebną do zdefiniowania modelu.

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

    Ponieważ jest to duży model, zawierający 60 zmiennych niezależnych, w tym trzy zmienne fikcyjne, które są pomijane, może być konieczne czekanie na zwrot obiektu przez kontekst obliczeniowy.

    Powodem, dla którego model jest tak duży, jest to, że w R i w pakiecie RevoScaleR każdy poziom zmiennej czynnikowej kategorycznej jest automatycznie traktowany jako osobna zmienna fikcyjna.

  2. Aby zobaczyć podsumowanie zwróconego modelu, wywołaj funkcję R summary .

    summary(logitObj)
    

Wyniki częściowe

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

Następny krok