Tutorial: como analisar dados com glm
Saiba como executar a regressão linear e logística usando um modelo linear generalizado (GLM) em Azure Databricks. glm
ajusta-se a um Modelo Linear Generalizado, semelhante ao R’s glm()
.
Sintaxe: glm(formula, data, family...)
Parâmetros:
formula
: Descrição simbólica do modelo a ser ajustado, por exemplo:ResponseVariable ~ Predictor1 + Predictor2
. Operadores com suporte:~
,+
,-
e.
data
: qualquer SparkDataFramefamily
: cadeia de caracteres,"gaussian"
para regressão linear ou"binomial"
para regressão logísticalambda
: parâmetro numérico, regularizaçãoalpha
: parâmetro numérico, mixagem elástico-líquido
Saída: MLlib PipelineModel
Este tutorial mostra como executar a regressão linear e logística no conjunto de linhas de ouros.
Carregar dados de diamantes e dividir em conjuntos de treinamento e teste
require(SparkR)
# Read diamonds.csv dataset as SparkDataFrame
diamonds <- read.df("/databricks-datasets/Rdatasets/data-001/csv/ggplot2/diamonds.csv",
source = "com.databricks.spark.csv", header="true", inferSchema = "true")
diamonds <- withColumnRenamed(diamonds, "", "rowID")
# Split data into Training set and Test set
trainingData <- sample(diamonds, FALSE, 0.7)
testData <- except(diamonds, trainingData)
# Exclude rowIDs
trainingData <- trainingData[, -1]
testData <- testData[, -1]
print(count(diamonds))
print(count(trainingData))
print(count(testData))
head(trainingData)
Treinar um modelo de regressão linear usando glm()
.
Esta seção mostra como prever o preço de um losango de seus recursos treinando um modelo de regressão linear usando os dados de treinamento.
Há uma mistura de recursos categóricos (corte - Ideal, Premium, Muito bom...) e recursos contínuos (profundidade, carat). O SparkR codifica automaticamente esses recursos para que você não precise codificar esses recursos manualmente.
# Family = "gaussian" to train a linear regression model
lrModel <- glm(price ~ ., data = trainingData, family = "gaussian")
# Print a summary of the trained model
summary(lrModel)
Use predict()
nos dados de teste para ver quão bem o modelo funciona em novos dados.
Sintaxe: predict(model, newData)
Parâmetros:
model
: Modelo de MLlibnewData
: SparkDataFrame, normalmente seu conjunto de testes
Saída: SparkDataFrame
# Generate predictions using the trained model
predictions <- predict(lrModel, newData = testData)
# View predictions against mpg column
display(select(predictions, "price", "prediction"))
Avalie o modelo.
errors <- select(predictions, predictions$price, predictions$prediction, alias(predictions$price - predictions$prediction, "error"))
display(errors)
# Calculate RMSE
head(select(errors, alias(sqrt(sum(errors$error^2 , na.rm = TRUE) / nrow(errors)), "RMSE")))
Treinar um modelo de regressão logística usando glm()
Esta seção mostra como criar uma regressão logística no mesmo conjunto de mesmos para prever um corte de losango com base em alguns de seus recursos.
A regressão logística no MLlib dá suporte apenas à classificação binária. Para testar o algoritmo neste exemplo, crie um subconjunto dos dados para trabalhar com dois rótulos.
# Subset data to include rows where diamond cut = "Premium" or diamond cut = "Very Good"
trainingDataSub <- subset(trainingData, trainingData$cut %in% c("Premium", "Very Good"))
testDataSub <- subset(testData, testData$cut %in% c("Premium", "Very Good"))
# Family = "binomial" to train a logistic regression model
logrModel <- glm(cut ~ price + color + clarity + depth, data = trainingDataSub, family = "binomial")
# Print summary of the trained model
summary(logrModel)
# Generate predictions using the trained model
predictionsLogR <- predict(logrModel, newData = testDataSub)
# View predictions against label column
display(select(predictionsLogR, "label", "prediction"))
Avalie o modelo.
errorsLogR <- select(predictionsLogR, predictionsLogR$label, predictionsLogR$prediction, alias(abs(predictionsLogR$label - predictionsLogR$prediction), "error"))
display(errorsLogR)