Criar modelos R (SQL Server e tutorial RevoScaleR)

Aplica-se a: SQL Server 2016 (13.x) e versões posteriores

Este é o tutorial 7 da série de tutoriais RevoScaleR sobre como usar funções RevoScaleR com SQL Server.

Tem enriquecido os dados de treino. Neste tutorial, vais analisar os dados usando modelação de regressão. Os modelos lineares são uma ferramenta importante no mundo da análise preditiva. O pacote RevoScaleR inclui algoritmos de regressão que podem subdividir a carga de trabalho e executá-la em paralelo.

  • Criar um modelo de regressão linear
  • Criar um modelo de regressão logística

Criar um modelo de regressão linear

Neste passo, crie um modelo linear simples que estime o saldo do cartão de crédito dos clientes, utilizando como variáveis independentes os valores das colunas de género e creditLine .

Para isso, utilize a função rxLinMod , que suporta contextos de computação remota.

  1. Crie uma variável R para armazenar o modelo concluído e chame o rxLinMod, passando uma fórmula apropriada.

    linModObj <- rxLinMod(balance ~ gender + creditLine,  data = sqlFraudDS)
    
  2. Para visualizar um resumo dos resultados, chame a função de resumo padrão R no objeto modelo.

    summary(linModObj)
    

Pode achar estranho que uma função R simples como um resumo funcione aqui, já que no passo anterior definiu o contexto de computação para o servidor. No entanto, mesmo quando a função rxLinMod usa o contexto de computação remota para criar o modelo, também devolve um objeto que contém o modelo para a sua estação de trabalho local e armazena-o no diretório partilhado.

Assim, pode executar comandos R padrão contra o modelo como se tivesse sido criado usando o contexto "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

Criar um modelo de regressão logística

De seguida, crie um modelo de regressão logística que indique se um determinado cliente representa risco de fraude. Vais usar a função RxLogit do RevoScaleR, que suporta o ajuste de modelos de regressão logística em contextos de computação remota.

Mantém o contexto de computação tal como está. Também continuará a usar a mesma fonte de dados.

  1. Chame a função rxLogit e passe a fórmula necessária para definir o modelo.

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

    Como é um modelo grande, contendo 60 variáveis independentes, incluindo três variáveis fictícias que são descartadas, pode ter de esperar algum tempo para que o contexto de cálculo devolva o objeto.

    A razão pela qual o modelo é tão grande é que, em R e no pacote RevoScaleR , cada nível de uma variável fatorial categórica é automaticamente tratado como uma variável fictícia separada.

  2. Para visualizar um resumo do modelo devolvido, chame a função resumo R.

    summary(logitObj)
    

Resultados parciais

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

Passo seguinte