주) 본인 학습을 위해 학습기간중 지속적으로 update 됩니다. 방문하신 분들을 위한 것이 아닙니다. 타이핑 연습용!^^
머신러닝 수행 단계별 사용 변수명
단계 | 내용 | 사용변수명 |
1 | 데이터셋 전처리한다. | - |
2 | 데이터셋 분할한다. | train, test |
3 | 머신러닝 모델 만든다. | model |
4 | 테스트셋으로 '예측'한다. | yhat |
5 | 실제값과 비교 검증한다. | (yhat - y) |
ML 모델별 라이브러리 및 함수
ML 분류 모델 유형 | R 라이브러리 | 함수명 |
다중선형회귀분석(MLR) | base | lm( ) |
인공지능신경망(ANN) | nnet | nnet( ) |
Regression트리(RT) | rpart | rpart( ) |
서포트벡터머신(SVM) | kernlab | ksvm( ) |
랜덤포레스트 | randomForest | randomForest( ) |
** base : 기본으로 설치된 라이브러리
MSE(Mean Square Error)
yhat : test data사용 model로 예측한 값
y : test set의 실제 값
오차 : (yhat-y)
오차제곱 : (yhat-y)^2
오차제곱합 : ∑(yhat-y)^2
평균오차제곱합(MSE) : (∑(yhat-y)^2)/n
R code : mean(yhat-y)^^2
# Load datasets -base - read.csv()
# 라비브러리 MASS, Boston dataset 사용
> library(MASS) # Load MASS library
> str (Boston) # Boston dataset의 구조
'data.frame': 506 obs. of 14 variables:
$ crim : num 0.00632 0.02731 0.02729 0.03237 0.06905 ...
$ zn : num 18 0 0 0 0 0 12.5 12.5 12.5 12.5 ...
$ indus : num 2.31 7.07 7.07 2.18 2.18 2.18 7.87 7.87 7.87 7.87 ...
$ chas : int 0 0 0 0 0 0 0 0 0 0 ...
$ nox : num 0.538 0.469 0.469 0.458 0.458 0.458 0.524 0.524 0.524 0.524 ...
$ rm : num 6.58 6.42 7.18 7 7.15 ...
$ age : num 65.2 78.9 61.1 45.8 54.2 58.7 66.6 96.1 100 85.9 ...
$ dis : num 4.09 4.97 4.97 6.06 6.06 ...
$ rad : int 1 2 2 3 3 3 5 5 5 5 ...
$ tax : num 296 242 242 222 222 222 311 311 311 311 ...
$ ptratio: num 15.3 17.8 17.8 18.7 18.7 18.7 15.2 15.2 15.2 15.2 ...
$ black : num 397 397 393 395 397 ...
$ lstat : num 4.98 9.14 4.03 2.94 5.33 ...
$ medv : num 24 21.6 34.7 33.4 36.2 28.7 22.9 27.1 16.5 18.9 ...
** 14개 변수, 354 관측행
** integer 변수 2개, 연속형 변수 12개
# Check missing values - base - table(is.na())
> table(is.na(Boston)) # Check missing values
FALSE
7084
머신러닝 - 데이터셋 분할
# Split datasets - base -sample()
idx <- sample() # index 무작위 비복원 추출
train <- ... # 트레인셋 만들기
test <- ..... # 테스트셋 만들기
R code
> idx<-sample(1:nrow(Boston), size=nrow(Boston)*0.7, replace=F)
> train<-Boston[idx,]
> test<- Boston[-idx,]
> str(train) ; str(test)
머신러닝 - '예측' 모델
목적변수 : $medv (median value of owner-occupied homes in $1000s.)
설명변수 : $medv 제외 13개
#1 MLR - base - lm()
#1 Multiple Linear Regression - base - lm()
model<- lm(medv~., train) # train set으로 MLR 모델 만들기
model2<- step(model, method="both") # no 영향변수 제거후 모델
yhat<-predict(model2, test, type="raw") # test data로 예측
mean((yhat-test$medv)^2) # MSE 계산
R code
#1 MLR - base - lm()
model<-lm(formula=medv~., data=train)
model2<-step(model,method="both")
yhat<-predict(model2, test)
mean((yhat-test$medv)^2)
#2 ANN - nnet - nnet()
#2 ANN - nnet - nnet()
library(nnet) # load nnet library
model<-nnet(medv~., train, size = 5) # 인공지능신경망 모델 만들기
yhat <- predict (model, test) # test data로 예측
mean((yhat-test$medv)^2) # MSE 계산
R code
#2 ANN -nnet -nnet()
library(nnet)
model<-nnet(medv~., train, size=5)
yhat<-predict(model, test)
mean((yhat-test$medv)^2)
#3 Regression tree - rpart - rpart()
library(rpart) # load rpart library
model<-rpart(medv~., train) # 회귀트리 모델 만들기
yhat <- predict (model, test) # test data로 예측
mean((yhat-test$medv)^2) # MSE 계산
R code
#3 Regression Tree - rpart -rpart()
library(rpart)
model<-rpart(medv~., train)
yhat<-predict(model, test)
mean((yhat-test$medv)^2)
#4 SVM - kernlab -ksvm()
library(kernlab) # load kernlab library
model<-ksvm(medv~., train, kernel="rbfdot") # 서포트벡터머신 모델 만들기
yhat <- predict (model, test) # test data로 예측
mean((yhat-test$medv)^2) # MSE 계산
R code
#4 SVM - kernlab - ksvm()
library(kernlab)
model<-ksvm(medv~., train, kernel="rbfdot")
yhat<-predict(model, test)
mean((yhat-test$medv)^2)
#5 RF - randomForest - randomForest()
library(randomForest) # load randomForest library
model<-randomForest(medv~., train) # 랜덤포레스트 모델 만들기
yhat <- predict (model, test) # test data로 예측
mean((yhat-test$medv)^2) # MSE 계산
R code
#5 RF - randomForest - randomForest()
library(randomForest)
model<-randomForest(medv~., train)
yhat<-predict(model, test)
mean((yhat-test$medv)^2)
모델별 MSE
Model | MSE |
Multiple Linear Regression | 25.20274 |
Artificial Neural Network | 533.8449 |
Regression Tree | 30.50108 |
Suppot Vector Machine | 15.27348 |
RandomForest | 17.47483 |
R종합코드
> #1 MLR - base - lm()
> model<-lm(medv~., train)>
> model2<-step(model, method="both")
> yhat<-predict(model2, test)
> mean((yhat-test$medv)^2)
> #2 ANN -nnet -nnet()
> library(nnet)
> model<-nnet(medv~., train, size=5)
> yhat<-predict(model, test)
> mean((yhat-test$medv)^2)
> #3 Regression Tree - rpart -rpart()
> library(rpart)
> model<-rpart(medv~., train)
> yhat<-predict(model, test)
> mean((yhat-test$medv)^2)
> #4 SVM - kernlab - ksvm()
> library(kernlab)
> model<-ksvm(medv~., train, kernel="rbfdot")
> yhat<-predict(model, test)
> mean((yhat-test$medv)^2)
> #5 RF - randomForest - randomForest()
> library(randomForest)
randomForest 4.7-1.2
Type rfNews() to see new features/changes/bug fixes.
> model<-randomForest(medv~., train)
> yhat<-predict(model, test)
> mean((yhat-test$medv)^2)
# THE END
자필기억
![]() |
![]() |
'학습 및 사례' 카테고리의 다른 글
[빅데이터분석기사 실기 4탄] 학습실행 - 머신러닝, Unsupervised Learning (1) | 2025.06.02 |
---|---|
경기도일자리재단 베이비부머인턴쉽(컨설팅형) 역량교육 참여 (3) - Problem-solving (5) | 2025.05.31 |
[빅데이터분석기사 실기 2탄] 학습실행 - 머신러닝, Classification (0) | 2025.05.25 |
[빅데이터분석기사 실기 1탄] 학습계획 수립 (0) | 2025.05.19 |
[직접생산확인] 2025년 실태조사원 역량교육 - 학습계획, 학습방법 및 시험결과 (0) | 2025.05.18 |