Вариант использования из данных 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. Он более или менее предоставит вам те же обучающие входные данные, что и этот.
Это всего лишь беглый взгляд на пример использования оценочных метрик, но в более широкой картине парадигмы моделирования эта концепция может и должна использоваться в различных областях исследования. Конечно, выбор показателей оценки зависит от конкретной проблемы, типа анализа и характера данных. Важно выбрать метрики, которые соответствуют целям исследования и дают значимую информацию о производительности оцениваемой модели или алгоритма.
Поскольку важно обращаться с наборами данных, связанных со здоровьем, с соблюдением этических норм, сохранять конфиденциальность и следовать передовым методам анализа данных при работе с аналогичными наборами данных. Но если вы все же попробуете новый набор данных, доступный для всех. Поделитесь своей частью оценки эффективности в чате для интерактивного обучения для всех.
Не стесняйтесь пропускать вещи, если вы боретесь между ними, так как это совершенно нормально, если вы не понимаете этого с первого раза. Продолжайте пробовать знания, которые вы получили до сих пор, расставляя точки, вы когда-нибудь доберетесь до этого.
Удачного обучения!
Продолжайте расширять свои возможности!