Öğretici: glm ile verileri analiz etme

Azure Databricks'te genelleştirilmiş doğrusal model (GLM) kullanarak doğrusal ve lojistik regresyon gerçekleştirmeyi öğrenin. glm , R'ninkine glm()benzer şekilde Genelleştirilmiş Doğrusal Modele uyar.

Söz dizimi: glm(formula, data, family...)

Parametreler:

  • formula: Uydurılacak modelin sembolik açıklaması, örneğin: ResponseVariable ~ Predictor1 + Predictor2. Desteklenen işleçler: ~, +, -ve .
  • data: Herhangi bir SparkDataFrame
  • family: Doğrusal regresyon veya "binomial" lojistik regresyon için dize "gaussian"
  • lambda: Sayısal, Normalleştirme parametresi
  • alpha: Sayısal, Elastic-net karıştırma parametresi

Çıkış: MLlib PipelineModel

Bu öğreticide elmas veri kümesinde doğrusal ve lojistik regresyon gerçekleştirme adımları gösterilmektedir.

Elmas verilerini yükleme ve eğitim ve test kümelerine bölme

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)

Kullanarak doğrusal regresyon modeli eğitme glm()

Bu bölümde, eğitim verilerini kullanarak doğrusal regresyon modelini eğiterek bir baklavanın özelliklerinden fiyatını tahmin etme işlemi gösterilmektedir.

Kategorik özelliklerin (kesme - İdeal, Premium, Çok İyi...) ve sürekli özelliklerin (derinlik, karat) bir karışımı vardır. SparkR bu özellikleri otomatik olarak kodlar, böylece bu özellikleri el ile kodlamanız gerekmez.

# Family = "gaussian" to train a linear regression model
lrModel <- glm(price ~ ., data = trainingData, family = "gaussian")

# Print a summary of the trained model
summary(lrModel)

Modelin yeni verilerde ne kadar iyi çalıştığını görmek için test verilerinde kullanın predict() .

Sözdizimi:predict(model, newData)

Parametre:

  • model: MLlib modeli
  • newData: SparkDataFrame, genellikle test kümeniz

Çıkış:SparkDataFrame

# Generate predictions using the trained model
predictions <- predict(lrModel, newData = testData)

# View predictions against mpg column
display(select(predictions, "price", "prediction"))

Modeli değerlendirin.

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")))

kullanarak lojistik regresyon modeli eğitme glm()

Bu bölümde, bazı özelliklerine göre elmas kesimini tahmin etmek için aynı veri kümesinde lojistik regresyonun nasıl oluşturulacağı gösterilmektedir.

MLlib'de lojistik regresyon ikili sınıflandırmayı destekler. Bu örnekteki algoritmayı test etmek için verileri iki etiketle çalışacak şekilde alt kümeleyin.

# 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"))

Modeli değerlendirin.

errorsLogR <- select(predictionsLogR, predictionsLogR$label, predictionsLogR$prediction, alias(abs(predictionsLogR$label - predictionsLogR$prediction), "error"))
display(errorsLogR)