Вариант использования из данных Health

В продолжение более раннего сообщения Оценка качества модели, алгоритма или прогноза мы продолжим здесь с данными о здоровье, База данных диабета индейцев пима. База данных диабета индейцев пима — это хорошо известный и широко используемый набор данных в области исследований диабета и машинного обучения. Набор данных содержит информацию о женщинах-индейцах пима в возрасте 21 года и старше из индейской общины пима недалеко от Феникса, штат Аризона, США.

Этот набор данных часто используется для изучения методов прогностического моделирования и классификации для прогнозирования начала диабета на основе различных атрибутов, связанных со здоровьем. Набор данных включает следующие переменные:

Беременности: количество беременностей.

Глюкоза: концентрация глюкозы в плазме крови через 2 часа после перорального теста на толерантность к глюкозе.

Кровяное давление: диастолическое артериальное давление (мм рт. ст.).

SkinThickness: толщина кожной складки трицепса (мм).

Инсулин: 2-часовой инсулин в сыворотке (мЕд/мл)

ИМТ:индекс массы тела (вес в кг / (рост в м)²)

DiabetesPedigreeFunction:функция родословной диабета (показатель семейного анамнеза).

Возраст:Возраст (лет)

Результат: переменная класса (0 или 1), указывающая, развился ли у человека диабет или нет.

Целью использования этого набора данных обычно является разработка моделей, которые могут прогнозировать наличие или отсутствие диабета на основе заданных атрибутов.

Исследователи и специалисты по данным часто применяют к этому набору данных различные алгоритмы машинного обучения, такие как логистическая регрессия, деревья решений, случайные леса и машины опорных векторов, для построения прогностических моделей возникновения диабета. Кроме того, набор данных полезен для изучения взаимосвязи между различными факторами риска и развитием диабета.

База данных диабета индейцев пима стала эталонным набором данных в этой области, помогая в разработке и оценке новых алгоритмов и методов прогнозирования и классификации диабета.

Здесь, в этом кратком чтении, мы можем выполнить регрессионный анализ Pima Indians Diabetes Database предсказания диабета, используя другие переменные в качестве предикторов. Мы разделяем данные на наборы для обучения и тестирования, строим модель линейной регрессии, делаем прогнозы на тестовом наборе и рассчитываем метрики оценки.

Чтобы получить доступ и использовать базу данных диабета индейцев пима в R, вы можете загрузить ее с помощью функции data(), а затем выполнить регрессионный анализ для оценки ее модели:

# Load the Pima Indians Diabetes Database
data(PimaIndiansDiabetes)
# Split the data into training and testing sets
set.seed(123)
split <- initial_split(PimaIndiansDiabetes, prop = 0.7)
trainData <- training(split)
testData <- testing(split)
# Build a linear regression model
model <- lm(diabetes ~., data = trainData)
# Make predictions on the test set
predictions <- predict(model, newdata = testData)
# Calculate evaluation metrics
residuals <- residuals(model)
ssr <- sum(residuals^2)
mse <- mean(residuals^2)
r_squared <- summary(model)$r.squared
adj_r_squared <- summary(model)$adj.r.squared
# Print the evaluation metrics
cat("Sum of Squared Residuals (SSR):", ssr, "\n")
cat("Mean Squared Error (MSE):", mse, "\n")
cat("R-squared (R²):", r_squared, "\n")
cat("Adjusted R-squared (Adjusted R²):", adj_r_squared, "\n")
 # Print the evaluation metrics
> cat("Sum of Squared Residuals (SSR):", ssr, "\n")
Sum of Squared Residuals (SSR): 85.27287 
> cat("Mean Squared Error (MSE):", mse, "\n")
Mean Squared Error (MSE): 0.1587949 
> cat("R-squared (R²):", r_squared, "\n")
R-squared (R²): 0.3003585 
> cat("Adjusted R-squared (Adjusted R²):", adj_r_squared, "\n")
Adjusted R-squared (Adjusted R²): 0.2897579 

В этом примере мы разделили набор данных «PimaIndiansDiabetes» на наборы для обучения и тестирования, используя функцию initial_split() из пакета tidymodels. Затем мы строим модель линейной регрессии, используя обучающие данные, и делаем прогнозы на тестовом наборе.

После этого мы вычисляем метрики оценки, получая остатки из модели и выполняя необходимые вычисления. Сумма квадратов невязок (SSR) получается путем суммирования квадратов невязок, среднеквадратическая ошибка (MSE) рассчитывается путем усреднения квадратов невязок, R-квадрат (R²) получается из сводки модели, а скорректированный R-квадрат (скорректированный R²) также получается из сводки модели.

Наконец, метрики оценки выводятся на консоль.

Чтобы продолжить пример, охватывающий дополнительные показатели, вот пример расчета дополнительных показателей оценки с использованием базы данных диабета индейцев пима и модели логистической регрессии:

# Load the Pima Indians Diabetes Database
data(PimaIndiansDiabetes)

# Convert the 'diabetes' variable to factor with levels "0" and "1"
PimaIndiansDiabetes$diabetes <- as.factor(PimaIndiansDiabetes$diabetes)

# Split the data into training and testing sets
set.seed(123)
trainIndex <- createDataPartition(PimaIndiansDiabetes$diabetes, p = 0.7, list = FALSE)
trainData <- PimaIndiansDiabetes[trainIndex, ]
testData <- PimaIndiansDiabetes[-trainIndex, ]

# Build a logistic regression model
model <- glm(diabetes ~ ., data = trainData, family = "binomial")

# Make predictions on the test set
predictions <- predict(model, newdata = testData, type = "response")

# Convert predicted values to factor with levels "0" and "1"
predictions <- as.factor(ifelse(predictions > 0.5, "1", "0"))

# Calculate evaluation metrics
confusionMatrix <- caret::confusionMatrix(predictions, testData$diabetes)

# Convert factor values to numeric for MAE and RMSE calculation
numeric_predictions <- as.numeric(predictions) - 1
numeric_actual <- as.numeric(testData$diabetes) - 1

# Calculate MAE and RMSE
MAE <- mean(abs(numeric_predictions - numeric_actual))
RMSE <- sqrt(mean((numeric_predictions - numeric_actual)^2))

# Print the evaluation metrics
cat("Mean Absolute Error (MAE):", MAE, "\n")
cat("Root Mean Squared Error (RMSE):", RMSE, "\n")
# Print the evaluation metrics
> cat("Mean Absolute Error (MAE):", MAE, "\n")
Mean Absolute Error (MAE): 0.2304348 
> cat("Root Mean Squared Error (RMSE):", RMSE, "\n")
Root Mean Squared Error (RMSE): 0.4800362 

Для других матриц следующий код выполнит задание:

# Split the data into training and testing sets
set.seed(123)
trainIndex <- createDataPartition(PimaIndiansDiabetes$diabetes, p = 0.7, list = FALSE)
trainData <- PimaIndiansDiabetes[trainIndex, ]
testData <- PimaIndiansDiabetes[-trainIndex, ]

# Build a logistic regression model
model <- glm(diabetes ~., data = trainData, family = "binomial")

# Make predictions on the test set
predictions <- predict(model, newdata = testData, type = "response")


# Create a confusion matrix
confusionMatrix <- table(Actual = testData$diabetes, Predicted = ifelse(predictions > 0.5, 1, 0))
Accuracy <- sum(diag(confusionMatrix)) / sum(confusionMatrix)
Precision <- confusionMatrix[2, 2] / sum(confusionMatrix[, 2])
Recall <- confusionMatrix[2, 2] / sum(confusionMatrix[2, ])
F1_Score <- 2 * (Precision * Recall) / (Precision + Recall)

# Calculate AUC-ROC
roc <- roc(testData$diabetes, predictions)
AUC_ROC <- auc(roc)

# Print the evaluation metrics

cat("Accuracy:", Accuracy, "\n")
cat("Precision:", Precision, "\n")
cat("Recall:", Recall, "\n")
cat("F1 Score:", F1_Score, "\n")
cat("AUC-ROC:", AUC_ROC, "\n")
# Print the evaluation metrics
> cat("Accuracy:", Accuracy, "\n")
Accuracy: 0.7695652 
> cat("Precision:", Precision, "\n")
Precision: 0.7014925 
> cat("Recall:", Recall, "\n")
Recall: 0.5875 
> cat("F1 Score:", F1_Score, "\n")
F1 Score: 0.6394558 
> cat("AUC-ROC:", AUC_ROC, "\n")
AUC-ROC: 0.84425 

Мы использовали пакет «caret» для расчета дополнительных показателей, таких как точность, точность, отзыв, оценка F1.

Запустив этот код, вы получите метрики оценки. Эти метрики дают представление о соответствии модели, точности прогноза и степени дисперсии, объясняемой предикторами.

Не стесняйтесь адаптировать этот код к вашим конкретным потребностям или модифицировать его для оценки метрик с использованием различных наборов данных или моделей регрессии в R. Он более или менее предоставит вам те же обучающие входные данные, что и этот.

Это всего лишь беглый взгляд на пример использования оценочных метрик, но в более широкой картине парадигмы моделирования эта концепция может и должна использоваться в различных областях исследования. Конечно, выбор показателей оценки зависит от конкретной проблемы, типа анализа и характера данных. Важно выбрать метрики, которые соответствуют целям исследования и дают значимую информацию о производительности оцениваемой модели или алгоритма.

Поскольку важно обращаться с наборами данных, связанных со здоровьем, с соблюдением этических норм, сохранять конфиденциальность и следовать передовым методам анализа данных при работе с аналогичными наборами данных. Но если вы все же попробуете новый набор данных, доступный для всех. Поделитесь своей частью оценки эффективности в чате для интерактивного обучения для всех.

Не стесняйтесь пропускать вещи, если вы боретесь между ними, так как это совершенно нормально, если вы не понимаете этого с первого раза. Продолжайте пробовать знания, которые вы получили до сих пор, расставляя точки, вы когда-нибудь доберетесь до этого.

Удачного обучения!

Продолжайте расширять свои возможности!