Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Pelajari cara melakukan regresi linier dan logistik dengan menggunakan model linier umum (GLM) di Azure Databricks.
glm cocok dengan Model Linear Umum, mirip dengan R glm().
Sintaks: glm(formula, data, family...)
Parameter :
-
formula: Deskripsi simbolis model yang akan dipasang, untuk eg:ResponseVariable ~ Predictor1 + Predictor2. Operator yang didukung:~,+,-, dan. -
data: SparkDataFrame apa pun -
family: Untai (karakter),"gaussian"untuk regresi linier atau"binomial"untuk regresi logistik -
lambda: Parameter Regulerisasi, Numerik -
alpha: Parameter pencampuran Elastic-net numerik
Output: MLlib PipelineModel
Tutorial ini menunjukkan cara melakukan regresi linier dan logistik pada himpunan data berlian.
Muat data berlian dan bagi menjadi set data pelatihan dan pengujian.
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)
Melatih model regresi linier dengan menggunakan glm()
Bagian ini menunjukkan cara memprediksi harga berlian dari fitur-fiturnya dengan melatih model regresi linier menggunakan data pelatihan.
Ada campuran fitur kategoris (potongan - Ideal, Premium, Sangat Bagus...) dan fitur kontinu (kedalaman, karat). SparkR secara otomatis mengodekan fitur-fitur ini sehingga Anda tidak perlu mengodekan fitur-fitur ini secara manual.
# Family = "gaussian" to train a linear regression model
lrModel <- glm(price ~ ., data = trainingData, family = "gaussian")
# Print a summary of the trained model
summary(lrModel)
Gunakan predict() pada data pengujian untuk melihat seberapa baik model bekerja pada data baru.
Sintaks: predict(model, newData)
Parameter :
-
model: Model MLlib -
newData: SparkDataFrame, biasanya set pengujian Anda
Hasil:SparkDataFrame
# Generate predictions using the trained model
predictions <- predict(lrModel, newData = testData)
# View predictions against mpg column
display(select(predictions, "price", "prediction"))
Evaluasi model tersebut.
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")))
Melatih model regresi logistik dengan menggunakan glm()
Bagian ini menunjukkan cara membuat regresi logistik pada himpunan data yang sama untuk memprediksi potongan berlian berdasarkan beberapa fiturnya.
Regresi logistik di MLlib mendukung klasifikasi biner. Untuk menguji algoritma dalam contoh ini, batasi data menjadi dua label.
# 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"))
Evaluasi model tersebut.
errorsLogR <- select(predictionsLogR, predictionsLogR$label, predictionsLogR$prediction, alias(abs(predictionsLogR$label - predictionsLogR$prediction), "error"))
display(errorsLogR)