💡주택 데이터 분석
주택 데이터 샘플
TOTAL VALUE | TAX | LOT SQFT | YR BUILT | GROSS AREA | LIVING AREA | FLOORS | ROOMS | BEDROOMS | FULL BATH | HALF BATH | KITCHEN | FIREPLACE | REMODEL |
344.2 | 4330 | 9965 | 1880 | 2436 | 1352 | 2 | 6 | 3 | 1 | 1 | 1 | 0 | None |
412.6 | 5190 | 6590 | 1945 | 3108 | 1976 | 2 | 10 | 4 | 2 | 1 | 1 | 0 | Recent |
330.1 | 4152 | 7500 | 1890 | 2294 | 1371 | 2 | 8 | 4 | 1 | 1 | 1 | 0 | None |
498.6 | 6272 | 13773 | 1957 | 5032 | 2608 | 1 | 9 | 5 | 1 | 1 | 1 | 1 | None |
331.5 | 4170 | 5000 | 1910 | 2370 | 1438 | 2 | 7 | 3 | 2 | 0 | 1 | 0 | None |
337.4 | 4244 | 5142 | 1950 | 2124 | 1060 | 1 | 6 | 3 | 1 | 0 | 1 | 1 | Old |
359.4 | 4521 | 5000 | 1954 | 3220 | 1916 | 2 | 7 | 3 | 1 | 1 | 1 | 0 | None |
320.4 | 4030 | 10000 | 1950 | 2208 | 1200 | 1 | 6 | 3 | 1 | 0 | 1 | 0 | None |
333.5 | 4195 | 6835 | 1958 | 2582 | 1092 | 1 | 5 | 3 | 1 | 0 | 1 | 1 | Recent |
409.4 | 5150 | 5093 | 1900 | 4818 | 2992 | 2 | 8 | 4 | 2 | 0 | 1 | 0 | None |
주택 데이터에는 각 주택에 대한 총 가치, 세금, 부지 면적, 지어진 연도, 총 면적, 생활 면적, 층 수, 방 개수, 침실 개수, 전체 욕실 개수, 반 욕실 개수, 부엌 수, 벽난로 여부, 리모델링 정보 등이 포함되어 있다.
데이터프레임 불러오기 및 서브셋 생성
housing.df <- read.csv("WestRoxbury.csv", header = TRUE) # load data
dim(housing.df) # find the dimension of data frame
head(housing.df) # show the first six rows
View(housing.df) # show all the data in a new tab
# Practice showing different subsets of the data
housing.df[1:10, 1] # show the first 10 rows of the first column only
housing.df[1:10, ] # show the first 10 rows of each of the columns
housing.df[5, 1:10] # show the fifth row of the first 10 columns
housing.df[5, c(1:2, 4, 8:10)] # show the fifth row of some columns
housing.df[, 1] # show the whole first column
housing.df$TOTAL.VALUE # a different way to show the whole first column
housing.df$TOTAL.VALUE[1:10] # show the first 10 rows of the first column
length(housing.df$TOTAL.VALUE) # find the length of the first column
mean(housing.df$TOTAL.VALUE) # find the mean of the first column
summary(housing.df) # find summary statistics for each column
- R의 데이터프레임과 벡터, 리스트 등을 다루는 기본 문법 및 함수 사용
- 데이터프레임의 서브셋을 생성하고 확인하는 방법
- R의 데이터 분석에서 주로 사용되는 함수들을 활용하여 기초적인 통계 및 데이터 확인 기술
데이터 불러오기
housing.df <- read.csv("WestRoxbury.csv", header = TRUE) # load data
"WestRoxbury.csv" 파일을 읽어와서 데이터프레임인 housing.df에 저장한다.
header = TRUE는 파일의 첫 번째 행이 변수명을 포함하고 있다는 것을 나타낸다.
데이터프레임 차원 확인
dim(housing.df) # find the dimension of data frame
dim() 함수를 사용하여 데이터프레임의 행과 열의 수를 확인한다.
데이터 확인
head(housing.df) # show the first six rows
head() 함수를 사용하여 데이터프레임의 처음 6개 행을 확인한다.
데이터 전체를 새 탭에서 확인
View(housing.df) # show all the data in a new tab
View() 함수를 사용하여 데이터프레임을 새 탭에서 전체적으로 확인한다.
다양한 서브셋 확인 연습
housing.df[1:10, 1] # show the first 10 rows of the first column only
housing.df[1:10, ] # show the first 10 rows of each of the columns
housing.df[5, 1:10] # show the fifth row of the first 10 columns
housing.df[5, c(1:2, 4, 8:10)] # show the fifth row of some columns
housing.df[, 1] # show the whole first column
housing.df$TOTAL.VALUE # a different way to show the whole first column
housing.df$TOTAL.VALUE[1:10] # show the first 10 rows of the first column
length(housing.df$TOTAL.VALUE) # find the length of the first column
mean(housing.df$TOTAL.VALUE) # find the mean of the first column
summary(housing.df) # find summary statistics for each column
각각의 코드 라인은 다양한 서브셋을 만들고 데이터를 확인한다.
[1:10, 1]은 첫 번째 열의 처음 10행을 가져오고, [1:10, ]은 모든 열의 처음 10행을 가져온다.
$를 사용하여 열 이름을 직접 지정하여 해당 열을 가져올 수 있다.
length(), mean(), summary() 함수 등을 사용하여 열의 길이, 평균, 요약 통계량을 계산할 수 있다.
관측치 선택 및 과대표본화
# random sample of 5 observations
s <- sample(row.names(housing.df), 5)
housing.df[s,]
# oversample houses with over 10 rooms
s <- sample(row.names(housing.df), 5, prob = ifelse(housing.df$ROOMS>10, 0.9, 0.01))
housing.df[s,]
- sample() 함수를 사용하여 무작위로 데이터를 추출하는 방법
- 조건에 따라 확률을 부여하여 표본을 추출하는 방법
- 데이터프레임에서 선택된 행을 확인하는 방법
5개의 관측치를 무작위로 선택
# random sample of 5 observations
s <- sample(row.names(housing.df), 5)
housing.df[s,]
sample() 함수를 사용하여 데이터프레임의 행 이름(row names) 중에서 5개를 무작위로 선택한다.
선택된 행 이름을 변수 s에 저장하고, 해당 행들을 housing.df에서 선택하여 출력한다.
이를 통해 데이터에서 임의의 5개의 관측치를 확인할 수 있다.
관측치(observations)
관측치는 데이터 세트에서 하나의 행을 나타낸다.
각 행은 개별적인 데이터 포인트를 의미하며, 해당 데이터 포인트는 여러 변수 또는 특징의 값으로 이루어져 있다.
예를 들어, 주어진 주택 데이터의 경우, 각 주택은 하나의 관측치이며, 각 행은 해당 주택에 대한 다양한 특징(가치, 세금, 면적 등)의 값으로 구성된다. 따라서 관측치는 데이터 분석에서 개별적으로 측정되거나 관찰된 데이터 포인트를 나타낸다.
방이 10개 이상인 주택을 과대표집(oversample)
# oversample houses with over 10 rooms
s <- sample(row.names(housing.df), 5, prob = ifelse(housing.df$ROOMS > 10, 0.9, 0.01))
housing.df[s,]
과대표집은 위 코드에서 housing.df$ROOMS 변수의 값이 10보다 큰 경우에 높은 확률로 선택되도록 하여, 방의 개수가 10개 이상인 주택에 대해 더 많은 샘플을 얻는 과정에서 사용되었다.
sample() 함수: 사용하여 데이터프레임의 행 이름 중에서 5개를 무작위로 선택하며, 선택 확률은 방의 개수(housing.df$ROOMS)가 10개 이상인 경우에 높게 조정된다.
ifelse(housing.df$ROOMS > 10, 0.9, 0.01): 방의 개수가 10개 이상이면 0.9, 그렇지 않으면 0.01의 확률을 가진다는 것을 의미한다.
선택된 행 이름을 변수 s에 저장하고, 해당 행들을 housing.df에서 선택하여 출력한다. 이를 통해 방의 개수가 10개 이상인 주택을 과대표집하여 확인할 수 있다.
과대표집
과대표집은 불균형한 데이터셋에서 적은 클래스의 샘플을 늘리는 방법으로, 머신러닝에서는 주로 분류 문제에서 다수 클래스와 소수 클래스 간의 균형을 맞추기 위해 사용한다.
변수 데이터 확인
names(housing.df) # print a list of variables to the screen.
t(t(names(housing.df))) # print the list in a useful column format
colnames(housing.df)[1] <- c("TOTAL_VALUE") # change the first column's name
class(housing.df$REMODEL) # REMODEL is a factor variable
class(housing.df[ ,14]) # Same.
levels(housing.df[, 14]) # It can take one of three levels
class(housing.df$BEDROOMS) # BEDROOMS is an integer variable
class(housing.df[, 1]) # Total_Value is a numeric variable
names(housing.df): 데이터 프레임 housing.df의 변수(열) 이름 목록을 출력한다. 데이터셋의 각 열에 대한 변수 이름을 확인할 수 있다.
t(t(names(housing.df))): 변수 이름 목록을 보기 좋은 형식으로 출력한다. t() 함수는 행렬 또는 데이터 프레임의 전치(transpose)를 수행하며, 이렇게 두 번 적용하여 변수 이름을 세로로 나열한 형태로 출력한다.
colnames(housing.df)[1] <- c("TOTAL_VALUE"): 데이터 프레임의 첫 번째 열(인덱스 1)의 이름을 "TOTAL_VALUE"로 변경한다. 따라서 첫 번째 열의 변수 이름이 "TOTAL_VALUE"로 설정된다.
class(housing.df$REMODEL): 데이터 프레임의 "REMODEL" 열의 데이터 타입(클래스)을 출력한다. "REMODEL" 열은 범주형(factor) 변수인지 확인할 수 있다.
class(housing.df[,14]): 데이터 프레임의 14번째 열의 데이터 타입을 출력한다. 해당 열이 어떤 데이터 타입인지를 확인한다.
levels(housing.df[, 14]): "REMODEL" 열이 범주형(factor) 변수인 경우, 해당 열이 가질 수 있는 범주(수준)들을 출력한다. 이는 주로 명목형 변수에서 사용된다.
class(housing.df$BEDROOMS): "BEDROOMS" 열의 데이터 타입을 확인한다. 해당 열이 정수(integer) 변수인지 확인한다.
class(housing.df[, 1]): 데이터 프레임의 첫 번째 열("TOTAL_VALUE")의 데이터 타입을 출력한다. 주로 해당 열이 숫자형(numeric) 변수인지를 확인하는 용도로 사용한다.
더미 변수 변환
# Option 1: use dummies package
install.packages(dummies)
library(dummies)
housing.df <- dummy.data.frame(housing.df, sep = ".")
names(housing.df)
# Option 2: use model.matrix() to convert all categorical variables in the data frame into a set of dummy variables. We must then turn the resulting data matrix back into
# a data frame for further work.
xtotal <- model.matrix(~ 0 + REMODEL, data = housing.df)
xtotal <- as.data.frame(xtotal)
t(t(names(xtotal))) # check the names of the dummy variables
head(xtotal)
xtotal <- xtotal[, -4] # drop one of the dummy variables.
# In this case, drop REMODELRecent.
범주형 변수를 더미(dummy) 변수로 변환하는 방법에 대한 두 가지 옵션을 사용한다.
이러한 방법은 주로 범주형 변수를 처리하고 회귀 모델 등에 활용하기 위해 사용하며, 더미 변수로 변환함으로써 범주형 정보를 모델에 포함시킬 수 있다.
Option 1. dummies 패키지 사용
install.packages(dummies)
library(dummies)
housing.df <- dummy.data.frame(housing.df, sep = ".")
names(housing.df)
dummy.data.frame() 함수: 데이터 프레임 내의 범주형 변수를 더미 변수로 변환한다.
sep = ".": 생성된 더미 변수의 이름에 원래 변수 이름과 더미 변수의 범주를 나타내는 문자열을 결합하는 데 사용되는 구분자이다.
names(housing.df): 새롭게 생성된 더미 변수가 포함된 데이터 프레임의 변수 이름을 출력한다.
Option 2. model.matrix() 사용
xtotal <- model.matrix(~ 0 + REMODEL, data = housing.df)
xtotal <- as.data.frame(xtotal)
t(t(names(xtotal)))
head(xtotal)
xtotal <- xtotal[, -4]
model.matrix(~ 0 + REMODEL, data = housing.df): "REMODEL" 열을 더미 변수로 변환하는 모델 매트릭스를 생성한다. ~ 0 + REMODEL은 상수 항을 포함하지 않도록 지정한다.
as.data.frame(xtotal): 모델 매트릭스를 데이터 프레임으로 변환한다.
t(t(names(xtotal))): 새롭게 생성된 더미 변수의 이름을 확인하는데 사용된다.
head(xtotal): 새롭게 생성된 더미 변수들의 처음 몇 행을 출력한다.
xtotal <- xtotal[, -4]: 네 번째 더미 변수를 삭제하는 데 사용된다. 여기서는 "REMODELRecent" 더미 변수를 삭제한다.
누락된 데이터 생성 및 대체
# To illustrate missing data procedures, we first convert a few entries for
# bedrooms to NA's. Then we impute these missing values using the median of the
# remaining values.
rows.to.missing <- sample(row.names(housing.df), 10)
housing.df[rows.to.missing,]$BEDROOMS <- NA
summary(housing.df$BEDROOMS) # Now we have 10 NA's and the median of the
# remaining values is 3.
# replace the missing values using the median of the remaining values.
# use median() with na.rm = TRUE to ignore missing values when computing the median.
housing.df[rows.to.missing,]$BEDROOMS <- median(housing.df$BEDROOMS, na.rm = TRUE)
summary(housing.df$BEDROOMS)
주로 결측값(missing values)이 포함된 변수의 값들을 대체하기 위한 절차를 다룬다.
여기서는 중앙값 대체를 사용했지만, 다른 방법들도 있으며 선택하는 방법은 데이터의 특성과 상황에 따라 다를 수 있다.
누락된 데이터 생성 및 확인
# To illustrate missing data procedures, we first convert a few entries for
# bedrooms to NA's. Then we impute these missing values using the median of the
# remaining values.
rows.to.missing <- sample(row.names(housing.df), 10)
housing.df[rows.to.missing,]$BEDROOMS <- NA
summary(housing.df$BEDROOMS) # Now we have 10 NA's and the median of the
# remaining values is 3.
sample(row.names(housing.df), 10): 데이터 프레임에서 임의로 10개의 행을 선택하여 그 행들의 "BEDROOMS" 변수 값을 NA(결측값)로 변경한다.
summary(housing.df$BEDROOMS): "BEDROOMS" 변수의 요약 통계를 출력한다. 이때, 10개의 값이 NA이며, 나머지 값들의 중앙값은 3이다.
누락된 값을 중앙값으로 대체
# replace the missing values using the median of the remaining values.
# use median() with na.rm = TRUE to ignore missing values when computing the median.
housing.df[rows.to.missing,]$BEDROOMS <- median(housing.df$BEDROOMS, na.rm = TRUE)
summary(housing.df$BEDROOMS)
median(housing.df$BEDROOMS, na.rm = TRUE): "BEDROOMS" 변수의 중앙값을 계산한다. na.rm = TRUE 옵션을 사용하여 결측값을 무시하고 중앙값을 계산한다
housing.df[rows.to.missing,]$BEDROOMS <- median(...): 이전에 생성한 결측값을 가진 특정 행들의 "BEDROOMS" 값을 해당 변수의 중앙값으로 대체한다.
summary(housing.df$BEDROOMS): "BEDROOMS" 변수의 새로운 요약 통계를 출력한다. 이제 결측값이 없으며 중앙값은 변경 전과 동일한 3이다.
데이터를 훈련, 검증, 테스트 세트로 분리
# use set.seed() to get the same partitions when re-running the R code.
set.seed(1)
## partitioning into training (60%) and validation (40%)
# randomly sample 60% of the row IDs for training; the remaining 40% serve as
# validation
train.rows <- sample(rownames(housing.df), dim(housing.df)[1]*0.6)
# collect all the columns with training row ID into training set:
train.data <- housing.df[train.rows, ]
# assign row IDs that are not already in the training set, into validation
valid.rows <- setdiff(rownames(housing.df), train.rows)
valid.data <- housing.df[valid.rows, ]
# alternative code for validation (works only when row names are numeric):
# collect all the columns without training row ID into validation set
valid.data <- housing.df[-train.rows, ] # does not work in this case
## partitioning into training (50%), validation (30%), test (20%)
# randomly sample 50% of the row IDs for training
train.rows <- sample(rownames(housing.df), dim(housing.df)[1]*0.5)
# sample 30% of the row IDs into the validation set, drawing only from records
# not already in the training set
# use setdiff() to find records not already in the training set
valid.rows <- sample(setdiff(rownames(housing.df), train.rows),
dim(housing.df)[1]*0.3)
# assign the remaining 20% row IDs serve as test
test.rows <- setdiff(rownames(housing.df), union(train.rows, valid.rows))
# create the 3 data frames by collecting all columns from the appropriate rows
train.data <- housing.df[train.rows, ]
valid.data <- housing.df[valid.rows, ]
test.data <- housing.df[test.rows, ]
데이터를 훈련(train), 검증(validation), 테스트(test) 세트로 나누는 과정을 보여준다.
머신러닝 모델의 훈련 및 평가를 위해 데이터를 이러한 세트로 나누는 것이 일반적이다.
훈련 및 검증 데이터 나누기 (60% 훈련, 40% 검증)
# use set.seed() to get the same partitions when re-running the R code.
set.seed(1)
# randomly sample 60% of the row IDs for training; the remaining 40% serve as validation
train.rows <- sample(rownames(housing.df), dim(housing.df)[1] * 0.6)
# collect all the columns with training row ID into the training set
train.data <- housing.df[train.rows, ]
# assign row IDs that are not already in the training set, into the validation set
valid.rows <- setdiff(rownames(housing.df), train.rows)
valid.data <- housing.df[valid.rows, ]
set.seed(1): 난수 생성에 사용되는 시드(seed)를 설정하여 코드를 다시 실행할 때 동일한 무작위 분할을 얻을 수 있다.
sample(rownames(housing.df), dim(housing.df)[1] * 0.6): 데이터 프레임의 행 ID 중 60%를 무작위로 추출하여 훈련 데이터의 행 ID로 선택한다.
다른 훈련 및 검증 데이터 나누기 (50% 훈련, 30% 검증, 20% 테스트)
# randomly sample 50% of the row IDs for training
train.rows <- sample(rownames(housing.df), dim(housing.df)[1] * 0.5)
# sample 30% of the row IDs into the validation set, drawing only from records
# not already in the training set
valid.rows <- sample(setdiff(rownames(housing.df), train.rows), dim(housing.df)[1] * 0.3)
# assign the remaining 20% row IDs as the test set
test.rows <- setdiff(rownames(housing.df), union(train.rows, valid.rows))
# create the 3 data frames by collecting all columns from the appropriate rows
train.data <- housing.df[train.rows, ]
valid.data <- housing.df[valid.rows, ]
test.data <- housing.df[test.rows, ]
setdiff(a, b): 집합 a에는 있지만 집합 b에는 없는 원소를 반환한다.
union(a, b): 집합 a와 b의 합집합을 반환한다.
훈련 데이터 (50%)
# randomly sample 50% of the row IDs for training
train.rows <- sample(rownames(housing.df), dim(housing.df)[1] * 0.5)
sample(rownames(housing.df), dim(housing.df)[1] * 0.5): 데이터 프레임의 행 ID 중 50%를 무작위로 추출하여 훈련 데이터의 행 ID로 선택한다.
검증 데이터 (30%)
# sample 30% of the row IDs into the validation set, drawing only from records
# not already in the training set
valid.rows <- sample(setdiff(rownames(housing.df), train.rows), dim(housing.df)[1] * 0.3)
setdiff(rownames(housing.df), train.rows): 훈련 데이터의 행 ID를 제외한 나머지 행 ID를 얻는다.
sample(setdiff(rownames(housing.df), train.rows), dim(housing.df)[1] * 0.3): 나머지 행 ID 중 30%를 무작위로 추출하여 검증 데이터의 행 ID로 선택한다.
테스트 데이터 (20%)
# assign the remaining 20% row IDs as the test set
test.rows <- setdiff(rownames(housing.df), union(train.rows, valid.rows))
union(train.rows, valid.rows): 훈련 데이터와 검증 데이터의 행 ID의 합집합을 얻는다.
setdiff(rownames(housing.df), union(train.rows, valid.rows)): 전체 행 ID 중에서 합집합에 속하지 않는 나머지 20%를 무작위로 추출하여 테스트 데이터의 행 ID로 선택한다.
선형 회귀 모델을 훈련 및 예측 및 잔차(예측 오차)를 확인
reg <- lm(TOTAL_VALUE ~ .-TAX, data = housing.df, subset = train.rows) # remove variable "TAX"
tr.res <- data.frame(train.data$TOTAL_VALUE, reg$fitted.values, reg$residuals)
head(tr.res)
선형 회귀 모델을 훈련하고, 훈련 데이터에 대한 예측 및 잔차(예측 오차)를 확인하는 과정을 수행한다.
선형 회귀 모델은 종속 변수에 대한 최적의 선형 관계를 찾으며, 훈련 후에는 훈련 데이터에 대한 예측값과 잔차를 얻을 수 있다. 이를 통해 모델의 적합성을 평가하고 예측 결과를 확인할 수 있다.
선형 회귀 모델
선형 회귀 모델은 종속 변수와 하나 이상의 독립 변수 간의 관계를 모델링하는 통계학적 기법 중 하나이다.
주로 독립 변수와 종속 변수 간의 관계를 정량화하여 연속형 종속 변수에 대한 예측 또는 설명하는 데 사용한다.
선형 회귀 모델의 기본 형태
Y=β0+β1X1+β2X2+…+βnXn+ε
- 는 종속 변수이다.
- 은 독립 변수이다.
- 는 y 절편(intercept)이며, 은 각 독립 변수의 기울기이다.
- 는 오차 항으로, 실제 관측값과 모델의 예측값 사이의 차이를 나타낸다.
선형 회귀 모델은 주어진 데이터에 가장 적합한 회귀 계수 을 찾아내어 예측 모델을 구축한다. 이러한 회귀 계수는 최소 제곱법(Least Squares Method) 등의 최적화 기법을 사용하여 추정된다. 최소 제곱법은 관측값과 모델의 예측값 간의 잔차(오차)의 제곱의 합을 최소화하는 회귀 계수를 찾는다.
선형 회귀 모델 훈련
reg <- lm(TOTAL_VALUE ~ .-TAX, data = housing.df, subset = train.rows)
lm(TOTAL_VALUE ~ .-TAX, data = housing.df, subset = train.rows): 종속 변수 TOTAL_VALUE와 독립 변수들을 사용하여 선형 회귀 모델을 생성한다. -TAX는 모델에서 TAX 변수를 제외하라는 의미이다.
data = housing.df: 모델 훈련에 사용할 데이터 프레임을 지정한다.
subset = train.rows: 훈련에 사용할 데이터의 행을 지정한다.
훈련 결과 확인
tr.res <- data.frame(train.data$TOTAL_VALUE, reg$fitted.values, reg$residuals)
train.data$TOTAL_VALUE: 훈련 데이터의 실제 종속 변수 값들을 선택한다.
reg$fitted.values: 훈련된 모델을 사용하여 훈련 데이터에 대한 예측값을 얻는다.
reg$residuals: 훈련 데이터에 대한 잔차(예측 오차)를 얻는다.
data.frame(...): 위 세 값을 열로 갖는 데이터 프레임을 생성한다.
결과 확인
head(tr.res)
head(tr.res): 데이터 프레임의 처음 일부를 출력하여 확인한다.
검증 데이터셋 예측과 잔차 계산
pred <- predict(reg, newdata = valid.data)
vl.res <- data.frame(valid.data$TOTAL_VALUE, pred, residuals =
valid.data$TOTAL_VALUE - pred)
head(vl.res)
선형 회귀 모델을 사용하여 검증 데이터에 대한 예측을 수행하고, 예측 결과를 확인한다.
검증 데이터셋에 대한 예측값 계산
pred <- predict(reg, newdata = valid.data)
이미 학습된 선형 회귀 모델(reg)을 사용하여 검증 데이터셋(valid.data)에 대한 종속 변수의 예측값(pred)을 계산한다.
검증 데이터셋과 예측값, 잔차를 포함한 데이터프레임 생성
vl.res <- data.frame(valid.data$TOTAL_VALUE, pred, residuals = valid.data$TOTAL_VALUE - pred)
증 데이터셋의 실제 종속 변수 값(valid.data$TOTAL_VALUE), 모델에 의한 예측값(pred), 그리고 이 둘의 잔차(residuals)를 포함한 데이터프레임(vl.res)을 생성한다.
데이터프레임의 앞 부분 확인
head(vl.res)
head(vl.res)는 데이터프레임의 처음 몇 행을 출력하여 확인할 수 있다. 이를 통해 예측값, 실제값, 잔차 등이 어떻게 구성되어 있는지 살펴볼 수 있다.
예측 정확도 계산
library(forecast)
# compute accuracy on training set
accuracy(reg$fitted.values, train.data$TOTAL_VALUE)
# compute accuracy on prediction set
pred <- predict(reg, newdata = valid.data)
accuracy(pred, valid.data$TOTAL_VALUE)
라이브러리 로드
library(forecast)
forecast 패키지를 로드한다. 이 패키지는 시계열 예측과 관련된 기능을 제공한다.
학습 데이터셋에 대한 예측 정확도 계산
accuracy(reg$fitted.values, train.data$TOTAL_VALUE)
선형 회귀 모델이 학습 데이터셋에 대해 얼마나 잘 예측했는지를 나타내는 예측 정확도를 계산한다. reg$fitted.values는 학습 데이터에 대한 모델의 예측값이고, train.data$TOTAL_VALUE는 실제 학습 데이터의 종속 변수 값이다.
검증 데이터셋에 대한 예측 계산
pred <- predict(reg, newdata = valid.data)
이미 학습된 모델을 사용하여 검증 데이터셋에 대한 예측값을 계산하고 이를 pred에 저장한다.
검증 데이터셋에 대한 예측 정확도 계산
accuracy(pred, valid.data$TOTAL_VALUE)
검증 데이터셋에 대한 선형 회귀 모델의 예측 정확도를 계산한다.
pred는 검증 데이터에 대한 모델의 예측값이고, valid.data$TOTAL_VALUE는 실제 검증 데이터의 종속 변수 값이다.
accuracy 함수는 예측값과 실제값을 비교하여 다양한 정확도 지표를 계산한다. 정확도, 에러율 등이 이에 포함된다.