[R] wine데이터 품질 예측 랜덤포레스트 알고리즘
우선, 랜덤포레스트 알고리즘을 적용하기 위해 R 패키지인 randomForest를 설치합니다.
install.packages("randomForest")
그리고 wine 데이터셋을 불러옵니다.
wine <- read.csv("https://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv", sep=";")
이제 랜덤포레스트 알고리즘을 적용하여 와인의 품질을 예측해보겠습니다. 먼저, 데이터셋을 학습용과 테스트용으로 나눕니다.
set.seed(123)
train <- sample(nrow(wine), nrow(wine) * 0.8, replace = FALSE)
train_wine <- wine[train, ]
test_wine <- wine[-train, ]
다음으로, randomForest 패키지를 이용하여 모델을 학습시킵니다.
library(randomForest)
rf_model <- randomForest(quality ~ ., data = train_wine, ntree = 1000)
학습이 완료되면, 테스트 데이터를 이용하여 모델의 성능을 평가합니다.
predicted_quality <- predict(rf_model, test_wine[,-12])
mse <- mean((predicted_quality - test_wine$quality)^2)
print(paste("MSE : ",mse))
[1] "MSE : 0.25834885175434"
MSE는 오차의 제곱을 평균으로 나눈것으로 0에 가까울수록 추측한 값이 원본에 가까운 것이기 때문에 정확도가 높다고 할 수 있다.
예측값과 실제값 차이의 면적의 평균이라고 할 수 있다. MSE값이 0.25가 나왔으니, 정확도를 75%정도로 해석하는 맥락이다.
이제와인의 품질을 예측하고, 그 예측 결과를 그래프로 시각화해보겠습니다.
library(ggplot2)
library(dplyr)
wine_prediction <- predict(rf_model, wine[,-12])
wine_result <- data.frame(actual = wine$quality, predicted = wine_prediction)
ggplot(wine_result, aes(x=actual, y=predicted)) +
geom_point() +
geom_abline(intercept = 0, slope = 1, linetype="dashed", color="red") +
ggtitle("Wine Quality Prediction") +
xlab("Actual Quality") + ylab("Predicted Quality")
위 코드는 와인 데이터셋을 이용하여 랜덤포레스트 알고리즘으로 와인의 품질을 예측하고,
그 결과를 산점도와 회귀직선으로 시각화한 그래프를 생성합니다.
또한, 와인 데이터셋을 이용하여 다양한 그래프를 그려볼 수 있습니다. 예를 들어, 와인의 각 변수(알코올, pH 등)들 간의 상관관계를 나타내는 산점도 행렬을 그려보겠습니다.

사진 설명을 입력하세요.
library(GGally)
ggpairs(wine, columns = 1:11, ggplot2::aes(colour = quality))
varImpPlot(rf_model)
위 코드는 와인 데이터셋의 1번 변수부터 11번 변수까지 각각의 변수들 간의 산점도 행렬을 그리는 그래프를 생성합니다. 산점도 행렬의 대각선 부분은 각 변수들의 히스토그램을 나타내며, 비대각선 부분은 두 변수간의 산점도를 나타냅니다. 산점도의 색상은 와인의 품질(quality)을 나타냅니다.
varImpPlot(rf_model)
또한, 와인의 각 변수들이 와인의 품질에 미치는 영향을 나타내는 변수 중요도 그래프를 그려볼 수도 있습니다.

위 코드는 랜덤포레스트 모델에서 각 변수들의 중요도를 나타내는 그래프를 생성합니다. 이 그래프는 와인의 품질 예측에 가장 영향력이 있는 변수를 보여주는데, 중요도가 높은 변수일수록 품질 예측에 더 큰 영향을 미칩니다.
마지막으로, 와인의 각 변수들과 와인의 품질(quality) 간의 관계를 나타내는 그래프를 그려보겠습니다.
library(ggplot2)
library(dplyr)
library(tidyr)
wine %>%
gather(key="variable", value="value", -quality) %>%
ggplot(aes(x=value, y=quality, color=quality)) +
geom_point(alpha=0.5) +
facet_wrap(~ variable, scales="free") +
ggtitle("Wine Quality by Variable") +
xlab("Variable Value") + ylab("Wine Quality")
위 코드는 와인 데이터셋의 각 변수들과 와인의 품질 간의 관계를 나타내는 그래프를 생성합니다. 각 변수들은 gather 함수를 이용하여 길쭉한 데이터 형태로 변환한 후, ggplot2 패키지를 이용하여 그래프를 그립니다. 각 변수마다 별도의 그래프를 그리기 위해 facet_wrap 함수를 이용합니다. 그래프의 색상은 와인의 품질을 나타냅니다.

사진 설명을 입력하세요.
이렇게 와인 데이터셋을 이용하여 다양한 그래프를 그려보았습니다.
참고로,
구글 콜랩(Google Colab)에서 R을 실행하려면 R을 지원하는 콜랩 노트북을 사용해야 합니다. 아래의 URL을 클릭하면 R을 지원하는 콜랩 노트북을 바로 열 수 있습니다.
colab.research.google.com/notebook#create=true&language=r

코드 아래에 코드 셀 삽입 Ctrl+M B 텍스트 텍스트 셀 추가 Drive로 복사 헤더 공개 상태 전환 Colab 시작 페이지 Colab에 이미 익숙하다면 이 동영상을 통해 양방향 테이블, 코드 실행 기록 보기, 명령어 팔레트에 관해 알아보세요. Colab이란? Colaboratory(줄여서 'Colab'이라고 함)을 통해 브라우저 내에서 Python 스크립트를 작성하고 실행할 수 있습니다. 구성이 필요하지 않음 무료로 GPU 사용 간편한 공유 학생 이든, 데이터 과학자 든, AI 연구원 이든 Colab으로 업무를 더욱 간편하게 ...
colab.research.google.com
노트북을 열면 R 코드를 입력할 수 있는 코드 셀을 만들어 R 코드를 실행할 수 있습니다.