이 포스팅은 2019년 12월 20일에 작성된 예전 블로그 글을 새로이 옮긴 것입니다. 참고바랍니다.
들어가며
데이터 과학을 위한 통계를 공부하기 위해서는, 우선적으로 통계 용어에 익숙해지는 것이 중요하다고 생각한다. 그런면에서 『데이터 과학을 위한 통계』는 각 주제별로 용어와 개념을 보기 편하게 구성이 되어있다.
목차 순서에 따른 용어와 개념적인 부분을 우선 공부하고, 심화된 내용을 채워가는 방법이 좋을 것 같다는 판단에 해당 내용만 따로 공부하기 위해 정리하였다.
탐색적 데이터 분석
정형화된 데이터의 요소
용어 정리
- 연속형(continuous) : 일정 범위 안에서 어떤 값이든 취할 수 있는 데이터 (유의어 : 구간형, 실수형, 수치형 데이터)
- 이산(discrete): 횟수와 같은 정수 값만 취할 수 있다. (유의어 : 정수형, 횟수 데이터)
- 범주형(categorical): 가능한 범주 안의 값만을 취할 수 있다. (유의어 : 목록, 열거, 요인, 명목, 다항형(polychotomous)데이터)
- 이진(binary): 두 개의 값(0/1 혹은 참/거직)만을 갖는 범주형 데이터의 특수한 경우다. (유의어 : 이항적, 논리형, 지표(indicator), 불리언 데이터)
- 순서형(ordinal): 값들 사이에 분명한 순위가 있는 범주형 데이터다. (유의어 : 정렬된 요인 데이터)
주요 개념
- 일반적으로 소프트웨어에서는 데이터를 종류별로 구분한다.
- 데이터 종류에는 연속, 이산, 범주(이진), 순서 혀태가 있다.
- 소프트웨어에서 데이터 종류를 정하는 것은 해당 데이터를 어떻게 처리할지를 정하는 것과 같다.
테이블 데이터
용어 정리
- 데이터 프레임(data frame): 통계와 머신러닝 모델에서 가장 기본이 되는 테이블 형태의 데이터 구조를 말한다.
- 피처(feature): 일반적으로 테이블의 각 열이 하나의 피처를 의미한다. (유의어 : 특징, 속성, 입력, 예측변수(predictor), 변수)
- 결과(outcome): 데이터 과학 프로젝트의 목표는 대부분 어떤 결과를 예측하는 데 있다. 실험이나 연구에서 결과를 예측하기 위해 피처를 사용한다. (유의어 : 종속변수, 응답, 목표, 출력)
- 레코드(record): 일반적으로 테이블의 각 행은 하나의 레코드를 의미한다. (유의어 : 기록값, 사건(case), 사례, 예제, 관측값, 패턴, 샘플)
주요 개념
- 데이터 과학에서 기본이 되는 데이터 구조는 행과 열이 각각 레코드와 변수(피처)를 의미하는 테이블 모양의 행렬이다.
명령어
# 기본 테이블형 데이터 구조
data.frame(..., row.names = NULL, check.rows = FALSE,
check.names = TRUE, fix.empty.names = TRUE,
stringsAsFactors = default.stringsAsFactors())
# data.frame은 다중 인덱스를 지원하지 않는다. 이를 보완하기 위한 두 가지 패키지를 주로 사용
data.table
dplyr
위치 추정
용어 정리
- 평균(mean): 모든 값의 총합을 개수로 나눈 값 (유의어 : 평균(average))
- 가중평균(weighted mean): 가중치를 곱한 값의 총합을 가중치의 총합으로 나눈 값 (유의어 : 가중평균(weighted average))
- 중간값(median): 데이터에서 가장 가운데 위치한 값 (유의어 : 50번째 백분위수(percentile))
- 가중 중간값(weighted median): 데이터를 정렬한 후, 각 가중치 값을 위에서부터 더할 때, 총합의 중간이 위치하는 데이터 값
- 절사평균(trimmed mean): 정해진 개수의 극단값(extreme value)을 제외한 나머지 값들의 평균 (유의어 : 절단평균(truncated mean))
- 로버스트하다(robust): 극단값들에 민감하지 않다는 것을 의미한다. (유의어 : 저항성 있다(resistant))
- 특잇값(outlier): 대부분의 값과 매우 다른 데이터 값 (유의어 : 극단값)
주요 개념
- 가장 기본적인 위치 추정 기법은 평균이다. 하지만 극단값(특잇값)에 민감할 수 있다.
- 중간값, 절사평균과 같은 다른 방법들이 좀 더 로버스트하다.
명령어
# 평균
mean(x, ...)
# 중간값
median(x, na.rm = FALSE, ...)
# 가중평균
install.packages("matrixStats")
library(matrixStats)
weighted.mean(x, w, ...)
# 가중 중간값
weightedMedian(x, w = NULL, idxs = NULL, na.rm = FALSE,
interpolate = is.null(ties), ties = NULL, ...)
변이 추정
용어 정리
- 편차(deviation): 관측값과 위치 추정값 사이의 차이 (유의어 : 오차, 잔차)
- 분산(variance): 평균과의 편차를 제곱한 값들의 합을 n-q로 나눈 값, n은 데이터 개수 (유의어 : 평균제곱오차)
- 표준편차(standard deviation): 분산의 제곱근 (유의어 : L2 노름(norm), 유클리드 노름)
- 평균절대편차(mean absolute eeviation): 평균과의 편차의 절댓값의 평균 (유의어 : L1 노름, 맨하탄 노름)
- 중간값의 중위절대편차(median absolute deviation from the median): 중간값과의 편차의 절댓값의 중간값
- 범위(range): 데이터의 최댓값과 최솟값의 차이
- 순서통계량(order statistics): 최소에서 최대까지 정렬된 데이터 값에 따른 계량형 (유의어 : 순위)
- 백분위수(percentile): 어떤 값들의 p퍼센트가 이 값 혹은 더 작은 값을 갖고, (100-p)퍼센트가 이 값 혹은 더 큰 값을 갖도록 하는 값 (유의어 : 분위수)
- 사분위범위(interquartile range): 75번째 백분위수와 25번째 백분위수 사이의 차이 (유의어 : IQR)
주요 개념
- 분산과 표준편차는 가장 보편적으로 널리 사용되는 변위 측정 방법이다.
- 이들 모두 특잇값에 민감하다.
- 평균과 백분위수(분위수)에서의 절대편차의 평균과 중간값을 구하는 것이 좀 더 로버스트하다.
명령어
# 표준편차
sd(x, na.rm = FALSE)
# 사분위범위(IQR)
IQR(x, na.rm = FALSE, type = 7)
# 중위절대편차(MAD)
mad(x, center = median(x), constant = 1.4826, na.rm = FALSE,
low = FALSE, high = FALSE)
데이터 분포 탐색하기
용어 정리
- 상자그림(box plot): 투키가 데이터의 분포를 시각화하기 위한 간단한 방법으로 소개한 그림 (유의어 : 상자 수염도)
- 도수분포표(frequency table): 어떤 구간(interval)(빈(bin))에 해당하는 수치 데이터 값들의 빈도를 나타내는 기록
- 히스토그램(histogram): x축은 구간들을, y축은 빈도수를 나타내는 도수 테이블의 그림
- 밀도 그림(density plot): 히스토그램을 부드러운 곡선으로 나타낸 그림. 커널밀도추정(kernel density estimation)을 주로 사용한다.
주요 개념
- 도수 히스토그램은 y축에 횟수를 x축에 변수 값들을 표시하고 한눈에 데이터의 분포를 볼 수 있다.
- 도수분포표는 히스토그램에 보이는 횟수들을 표 형태로 나타낸 것이다.
- 상자그림에서 상자의 위 아래 부분은 각각 75%, 25% 백분위수를 의미하며, 이것 역시 데이터의 분포를 한눈에 파악할 수 있도록 돕는다. 주로 분포들을 서로 비교하기 위해 사용된다.
- 밀도 그림은 히스토그램의 부드러운 버전이라고 할 수 있다. 데이터로부터 이 그림을 얻기 위해서는 어떤 함수를 구해야 하는데 여러 가지 가능한 추정 방법이 있다.
명령어
# 백분위수
quantile(x, probs = seq(0, 1, 0.25), na.rm = FALSE,
names = TRUE, type = 7, ...)
# 상자그림
## S3 method for class 'formula'
boxplot(formula, data = NULL, ..., subset, na.action = NULL,
xlab = mklab(y_var = horizontal),
ylab = mklab(y_var =!horizontal),
add = FALSE, ann = !add, horizontal = FALSE,
drop = FALSE, sep = ".", lex.order = FALSE)
## Default S3 method:
boxplot(x, ..., range = 1.5, width = NULL, varwidth = FALSE,
notch = FALSE, outline = TRUE, names, plot = TRUE,
border = par("fg"), col = NULL, log = "",
pars = list(boxwex = 0.8, staplewex = 0.5, outwex = 0.5),
ann = !add, horizontal = FALSE, add = FALSE, at = NULL)
# 도수분포표
table(...,
exclude = if (useNA == "no") c(NA, NaN),
useNA = c("no", "ifany", "always"),
dnn = list.names(...), deparse.level = 1)
# 히스토그램
hist(x, breaks = "Sturges",
freq = NULL, probability = !freq,
include.lowest = TRUE, right = TRUE,
density = NULL, angle = 45, col = NULL, border = NULL,
main = paste("Histogram of" , xname),
xlim = range(breaks), ylim = NULL,
xlab = xname, ylab,
axes = TRUE, plot = TRUE, labels = FALSE,
nclass = NULL, warn.unused = TRUE, ...)
# 밀도추정
density(x, bw = "nrd0", adjust = 1,
kernel = c("gaussian", "epanechnikov", "rectangular",
"triangular", "biweight",
"cosine", "optcosine"),
weights = NULL, window = kernel, width,
give.Rkern = FALSE,
n = 512, from, to, cut = 3, na.rm = FALSE, ...)
이진 데이터와 범주 데이터 탐색하기
용어 정리
- 최빈값(mode): 데이터에서 가장 자주 등장하는 범주 혹은 값
- 기댓값(expected value): 범주에 해당하는 어떤 수치가 있을 때, 범주의 출현 확률에 따른 평균
- 막대도표(bar chart): 각 범주의 빈도수 혹은 비율을 막대로 나타낸 그림
- 파이그림(pie chart): 각 범주의 빈도수 혹은 비율을 원의 부채꼴 모양으로 나타낸 그림
주요 개념
- 범주형 데이터는 보통 비율로 요약할 수 있고, 막대도표를 사용해 시각화한다.
- 범주란 전혀 다른 집합(사과/오렌지, 남자/여자), 정도를 나타내는 요인변수의 수준(낮음, 중간, 높음), 혹은 구간별로 나뉜 수치 데이터 같은 것들을 의미한다.
- 기댓값은 어떤 값과 그 값이 일어날 확률을 서로 곱해 더한 값을 의미한다. 주로 요인변수의 수준을 요약하는 데 사용한다.
명령어
# 막대도표
## Default S3 method:
barplot(height, width = 1, space = NULL,
names.arg = NULL, legend.text = NULL, beside = FALSE,
horiz = FALSE, density = NULL, angle = 45,
col = NULL, border = par("fg"),
main = NULL, sub = NULL, xlab = NULL, ylab = NULL,
xlim = NULL, ylim = NULL, xpd = TRUE, log = "",
axes = TRUE, axisnames = TRUE,
cex.axis = par("cex.axis"), cex.names = par("cex.axis"),
inside = TRUE, plot = TRUE, axis.lty = 0, offset = 0,
add = FALSE, ann = !add && par("ann"), args.legend = NULL, ...)
## S3 method for class 'formula'
barplot(formula, data, subset, na.action,
horiz = FALSE, xlab = NULL, ylab = NULL, ...)
# 파이그림
pie(x, labels = names(x), edges = 200, radius = 0.8,
clockwise = FALSE, init.angle = if(clockwise) 90 else 0,
density = NULL, angle = 45, col = NULL, border = NULL,
lty = NULL, main = NULL, ...)
상관관계
용어 정리
- 상관계수(correlation coefficient): 수치적 변수들 간에 어떤 관계가 있는지를 나타내기 위해 사용되는 측정량 (-1에서 +1까지의 범위)
- 상관행렬(correlation matrix): 행과 열이 변수들을 의미하는 표를 말하며, 각 셀은 그 행과 열에 해당하는 변수들 간의 상관관계를 의미한다.
- 산점도(scatterplot): x축과 y축이 서로 다른 두 개의 변수를 나타내는 도표
주요 개념
- 상관계수는 두 변수 사이에 서로 어떤 관계가 있는지를 측정한다.
- v1이 높아질 때 v2도 높아지고, v1이 낮아질 때 v1도 낮아지는 경우는 양의 상관관계가 있다고 한다.
- 반대로, v1이 높아질 때 v2는 낮아니고, v1이 낮아질 때 v2는 높아지는 경우는 음의 상관관계가 있다고 한다.
- 상관계수는 표준화된 측정 지표라고 할 수 있다. 항상 그 값이 -1(완전 음의 상관관계)에서 +1(완전 양의 상관관계) 사이에 존재한다.
- 상관계수가 0이라는 것은 아무런 상관성이 없다는 것을 의미한다. 하지만 데이터를 랜덤하게 재배치하면 우연히 상관계수가 양수나 음수가 될 수도 있다는 점을 알고 있어야 한다.
명령어
# 상관행렬
install.packages("corrplot")
library(corrplot)
corrplot(corr, method = c("circle", "square", "ellipse", "number", "shade",
"color", "pie"), type = c("full", "lower", "upper"), add = FALSE,
col = NULL, bg = "white", title = "", is.corr = TRUE, diag = TRUE,
outline = FALSE, mar = c(0, 0, 0, 0), addgrid.col = NULL,
addCoef.col = NULL, addCoefasPercent = FALSE, order = c("original",
"AOE", "FPC", "hclust", "alphabet"), hclust.method = c("complete", "ward",
"ward.D", "ward.D2", "single", "average", "mcquitty", "median", "centroid"),
addrect = NULL, rect.col = "black", rect.lwd = 2, tl.pos = NULL,
tl.cex = 1, tl.col = "red", tl.offset = 0.4, tl.srt = 90,
cl.pos = NULL, cl.lim = NULL, cl.length = NULL, cl.cex = 0.8,
cl.ratio = 0.15, cl.align.text = "c", cl.offset = 0.5, number.cex = 1,
number.font = 2, number.digits = NULL, addshade = c("negative",
"positive", "all"), shade.lwd = 1, shade.col = "white", p.mat = NULL,
sig.level = 0.05, insig = c("pch", "p-value", "blank", "n", "label_sig"),
pch = 4, pch.col = "black", pch.cex = 3, plotCI = c("n", "square",
"circle", "rect"), lowCI.mat = NULL, uppCI.mat = NULL, na.label = "?",
na.label.col = "black", win.asp = 1, ...)
# 산점도
plot(x, y, ...)
두 개 이상의 변수 탐색하기
용어 정리
- 분할표(contingency table): 두 가지 이상의 범주형 변수의 빈도수를 기록한 표
- 육각형 구간(hexagonal binning): 두 변수를 육각형 모양의 구간으로 나눈 그림
- 등고 도표(contour plot): 지도상에 같은 높이의 지점을 등고선으로 나타내는 것처럼, 두 변수의 밀도를 등고선으로 표시한 도표
- 바이올린 도표(viloin plot): 상자그림과 비슷하지만 밀도추정을 함께 보여준다.
주요 개념
- 육각형 구간이나 등고선 도표는 데이터의 방대한 양에 압도당하지 않으면서, 한 번에 두 수치형 변수를 시각적으로 검토하기 위해 유용한 도구이다.
- 분할표는 두 범주형 변수의 도수를 확인하기 위한 표준 방법이다.
- 상자그림과 바이올린 도표는 범주형 변수와 수치형 변수 간의 관계를 도식화하기 위한 도구이다.
명령어
# 특정 데이터 제거
## Default S3 method:
subset(x, subset, ...)
## S3 method for class 'matrix'
subset(x, subset, select, drop = FALSE, ...)
## S3 method for class 'data.frame'
subset(x, subset, select, drop = FALSE, ...)
# 분할표
CrossTable(x, y,
digits = list(expected = 1, prop = 3, percent = 1, others = 3),
max.width = NA, expected = FALSE,
prop.r = TRUE, prop.c = TRUE, prop.t = TRUE,
prop.chisq = TRUE, chisq = FALSE, fisher = FALSE,
mcnemar = FALSE, resid = FALSE, sresid = FALSE,
asresid = FALSE, missing.include = FALSE,
drop.levels = TRUE, format = c("SAS","SPSS"),
dnn = NULL, cell.layout = TRUE,
row.labels = !cell.layout,
percent = (format == "SPSS" && !row.labels),
total.r, total.c, xlab = NULL, ylab = NULL, ...)
# 육각형 구간
install.packages("ggplot2")
library(ggplot2)
ggplot(data = NULL, mapping = aes(), ...,
environment = parent.frame())
# 등고 도표
geom_density_2d(mapping = NULL, data = NULL, stat = "density2d",
position = "identity", ..., lineend = "butt", linejoin = "round",
linemitre = 10, na.rm = FALSE, show.legend = NA,
inherit.aes = TRUE)
# 바이올린 도표
geom_violin(mapping = NULL, data = NULL, stat = "ydensity",
position = "dodge", ..., draw_quantiles = NULL, trim = TRUE,
scale = "area", na.rm = FALSE, show.legend = NA,
inherit.aes = TRUE)
데이터와 표본분포
랜덤표본추출과 표본편향
용어 정리
- 표본(sample): 더 큰 데이터 집합으로부터 얻은 부분집합
- 모집단(population): 어떤 데이터 집합을 구성하는 전체 대상 혹은 전체 집합
- N(n) : 모집단(표본)의 크기
- 임의표집(랜덤표본추출)(random sampling): 무작위로 표본을 추출하는 것
- 층화표집(층화표본추출)(stratified sampling): 모집단을 층으로 나눈 뒤, 각 층에서 무작위로 표본을 추출하는 것
- 단순임의표본(단순랜덤표본)(simple random sample): 모집단 층화 없이 랜덤표본추출로 얻은 표본
- 표본편향(sample bias): 모집단을 잘못 대표하는 표본
주요 개념
- 빅데이터 시대에도 랜덤표본추출은 데이터 과학자들의 화살통에 남은 중요한 화살이다.
- 편향은 측정이나 관측에 계통적 오차가 있어 전체 모집단을 제대로 대표하지 못할 경우 발생한다.
- 데이터 품질이 데이터 양보다 중요할 때가 자주 있다. 랜덤표보누출은 편향을 줄이고, 나중에 다시 하려면 훨씬 비싼 값을 치룰 수도 있는 품질 향상을 용이하게 한다.
선택 편향
용어 정리
- 편향(bias): 계통적 오차
- 데이터 스누핑(data snooping): 뭔가 흥미로운 것을 찾아 광범위하게 데이터를 살피는 것
- 방대한 검색 효과(vast search effect): 중복 데이터 모델리이나 너무 많은 예측변수를 고려하는 모델링에서 비롯되는 편향 혹은 비재현성
주요 개념
- 가설을 구체적으로 명시하고 랜덤표본추출 원칙에 따라 데이터를 수집하면 편향을 피할 수 있다.
- 다른 모든 형태의 데이터 분석은 데이터 수집/분석 프로세스에서 생기는 편향의 위험성을 늘 갖고 있다(데이터 마이닝에서의 모델 반복 실행, 연구 시 데이터 스누핑, 흥미로운 사건의 사후 선택 등).
통계학에서의 표본분포
용어 정리
- 표본통계량(sample statistic): 더 큰 모집단에서 추출된 표본 데이터들로부터 얻은 측정 지표
- 데이터 분포(data distribution): 어떤 데이터 집합에서의 각 개별 값의 도수분포
- 표본분포(sampling distribution): 여러 표본들 혹은 재표본들로부터 얻은 표본통계량의 도수분포
- 중심극한정리(central limit theorem): 표본크기가 커질수록 표본분포가 정규본포를 따르는 경향
- 표준오차(standard error): 여러 표본들로부터 얻은 표본통계량의 변량 (개별 데이터 값들의 변량을 뜻하는 표준편차와 혼동하지 말 것)
- 모집단에서 완전히 새로운 샘플들을 많이 수집한다.
- 각각의 새 샘플에 대해 통계량 (예: 평균)을 계산한다.
- 2단계에서 얻은 통계량의 표준편차를 계산한다. 이것을 표준오차의 추정치로 사용한다.
주요 개념
- 표본통계량의 도수분포는 그 해당 지표가 표본마다 다르게 나타날 수 있음을 보여준다.
- 부트스트랩 방식 혹은 중심극한정리에 의존하는 공식을 통해 표본분포를 추정할 수 있다.
- 표준오차는 표본통계량의 변동성을 요약하는 주요 지표이다.
부트스트랩
용어 정리
- 부트스트랩 표본(bootstrap sample): 관측 데이터 집합으로부터 얻는 복원추출 표본
- 재표집(재표본추출, 리샘플링)(resampling): 관측 데이터로부터 반복해서 표본추출하는 과정. 부트스트랩과 순열(셔플링) 과정을 포함한다.
- 샘플 값을 하나 뽑아서 기록하고 제자리에 놓는다.
- n번 반복한다.
- 재표본추출된 값의 평균을 기록한다.
- 1~3단계를 R번 반복한다.
- R개의 결과를 사용하여
- 그것들의 표준편차(표본평균의 표준오차)를 계산한다.
- 히스토그램 또는 상자그림을 그린다.
- 신뢰구간을 찾는다.
주요 개념
- 부트스트랩(데이터로부터 복원추출)은 표본통계량의 변동성을 평가하는 강력한 도구이다.
- 부트스트랩은 표본분포의 수학적 근사치에 대한 엄청난 연구 없이도 다양한 환경에서 유사한 방식으로 적용될 수 있다.
- 또한 수학적 근사가 어려운 통계량에 대해서도 샘플링 분포를 추정할 수 있다.
- 예측 모델을 적용할 때, 여러 부트스트랩 표본들로부터 얻은 예측값을 모아서 결론을 만드는 것(배깅)이 단일 모델을 사용하는 것보다 좋다.
명령어
# 부트스트랩
install.packages("boot")
library(boot)
boot(data, statistic, R, sim = "ordinary", stype = c("i", "f", "w"),
strata = rep(1,n), L = NULL, m = 0, weights = NULL,
ran.gen = function(d, p) d, mle = NULL, simple = FALSE, ...,
parallel = c("no", "multicore", "snow"),
ncpus = getOption("boot.ncpus", 1L), cl = NULL)
신뢰구간
용어 정리
- 신뢰수준(confidence level): 같은 모집단으로부터 같은 방식으로 얻은, 관심 통계량을 포함할 것으로 예상되는, 신뢰구간의 백분율
- 데이터에서 복원추출 방식으로 크기 n인 표본을 뽑는다(재표본추출).
- 재표본추출한 표본에 대해 원하는 통계량을 기록한다.
- 1~2단계를 R번 반복한다.
- x% 신뢰구간을 구하기 위해, R개의 재표본 결과로부터 분포의 양쪽 끝에서 [(100 - x) / 2]% 만큼 잘라낸다.
- 절단한 점들은 x% 부트스트랩 신뢰구간의 양 끝점이다.
- 구간끝점(interval endpoint): 신뢰구간의 최상위, 최하위 끝점
주요 개념
- 신뢰구간은 구간 범위로 추정값을 표시하는 일반적인 방법이다.
- 더 많은 데이터를 보유할수록 표본추정치의 변위가 줄어든다.
- 허용할 수 있는 신뢰수준이 낮을수록 신뢰구간은 좁아진다.
- 부트스트랩은 신뢰구간을 구성하는 효과적인 방법이다.
정규분포
용어 정리
- 오차(error): 데이터 포인트와 예측값 혹은 평균 사이의 차이
- 표준화(정규화)하다(standardize): 평균을 빼고 표준편차로 나눈다.
- z 점수(z-score): 개별 데이터 포인트를 정규화한 결과
- 표준정규분포(standard normal distribution): 평균 = 0, 표준편차 = 1인 정규분포
- QQ 그림(QQ-plot): 표본분포가 정규분포에 얼마나 가까운지를 보여주는 그림
주요 개념
- 정규분포는 불확실성과 변동성에 대한 수학적 근사가 가능하도록 했다. 이는 통계의 역사적 발전에 필수적이었다.
- 원시 데이터 자체는 대개 정규분포가 아니지만, 표본들의 평균과 합계, 그리고 오차는 많은 경우 정규분포를 따른다.
- 데이터를 z 점수로 변환하려면 데이터의 값에서 평균을 빼고 표준편차로 나눈다. 그러면 데이터를 정규분포와 비교할 수 있다.
명령어
# 정규분포
## Default S3 method:
qqnorm(y, ylim, main = "Normal Q-Q Plot",
xlab = "Theoretical Quantiles", ylab = "Sample Quantiles",
plot.it = TRUE, datax = FALSE, ...)
긴 꼬리 분포
용어 정리
- 꼬리(tail): 적은 수의 극단값이 주로 존재하는, 도수분포의 길고 좁은 부분
- 왜도(skewness): 분포의 한쪽 꼬리가 반대쪽 다른 꼬리보다 긴 정도
주요 개념
- 대부분의 데이터는 정규분포를 따르지 않는다.
- 정규분포를 따를 것이라는 가정은, 자주 일어나지 않는 예외 경우('흑고니 이론(black swan theory)')에 관한 과소평가를 가져올 수 있다.
스튜던트의 t 분포
용어 정리
- n : 표본크기
- 자유도(degrees of freedom): 다른 표본크기, 통계량, 그룹의 수에 따라 t 분포를 조절하는 변수수
주요 개념
- t 분포는 사실 정규분포와 비슷한데 꼬리만 조금 더 두꺼운 형태이다.
- 이것은 표본평균, 두 표본평균 사이의 차이, 회귀 파라미터 등의 분포를 위한 기준으로 널리 사용된다.
이항분포
용어 정리
- 시행(trial): 독립된 결과를 가져오는 하나의 사건 (예 : 동전 던지기)
- 성공(success): 시행에 대한 관심의 결과 (유의어 : 1, 즉 0에 대한 반대)
- 이항식(binomial): 두 가지 결과를 갖는다. (유의어 : 예/아니오, 0/1, 이진)
- 이항시행(binomial trial): 두 가지 결과를 가져오는 시행 (유의어 : 베르누이 시행)
- 이항분포(binomial distribution): x번 시행에서 성공한 횟수에 대한 분포 (유의어 : 베르누이 분포)
주요 개념
- 이하 결과는 무엇보다도 중요한 결정 사항들(구매 또는 구매하지 않거나 클릭하거나 클릭하지 않고 생존하거나 죽는 등)을 나타내기 때문에, 모델을 만드는 데 매우 중요하다.
- 이항 시행은 두 가지 결과, 즉 하나는 확률 p, 다른 하나는 확률 (1 - p)인 실험을 말한다.
- n이 크고 p가 0 또는 1에 너무 가깝지 않은 경우, 이항분포는 정규분포로 근사할 수 있다.
명령어
# 이항 확률
dbinom(x, size, prob, log = FALSE)
pbinom(q, size, prob, lower.tail = TRUE, log.p = FALSE)
푸아송 분포와 그 외 관련 분포들
용어 정리
- 람다(lambda): 단위 시간이나 단위 면적당 사건이 발생하는 비율
- 푸아송 분포(Poisson distribution): 표집된 단위 시간 혹은 단위 공간에서 발생한 사건의 도수분포
- 지수분포(exponential distribution): 한 사건에서 그 다음 사건까지의 시간이나 거리에 대한 도수분포
- 베이불 분포(Weibull distribution): 사건 발생률이 시간에 따라 변화하는, 지수분포의 일반화된 버전
주요 개념
- 일정 비율로 발생하는 사건의 경우, 시간 단위 또는 공간 단위당 발생하는 사건의 수를 푸아송 분포로 모델링할 수 있다.
- 이 시나리오에서, 한 사건과 다음 사건 간의 시간/거리를 지수분포로 모델링할 수도 있다.
- 시간에 따라 변화하는 사건 발생률(예를 들어 증가하는 고장률)은 베이불 분포로 모델링할 수 있다.
명령어
# 푸아송 분포
rpois(n, lambda)
# 지수분포
rexp(n, rate = 1)
# 베이불 분포
rweibull(n, shape, scale = 1)
통계적 실험과 유의성 검정
A/B 검정
용어 정리
- A/B 검정 : 두 처리 방법, 제품, 혹은 절차 중 어느 쪽이 다른 쪽보다 더 우월하다는 것을 입증하기 위해 실험군을 두 그룹으로 나누어 진행하는 실험이다.
- 처리(treatment): 어떤 대상에 주어지는 특별한 환경이나 조건 (약, 가격, 인터넷 뉴스 제목)
- 처리군(처리 그룹)(treatment group): 특정 처리에 노출된 대상들의 집단
- 대조군(대조 그룹)(control group): 어떤 처리도 하지 않은 대상들의 집단
- 임의화(랜덤화)(randomization): 처리를 적용할 대상을 임의로 결정하는 과정
- 대상(subject): 처리를 적용할 개체 대상 (유의어 : 피실험자)
- 검정통계량(test statistic): 처리 효과를 측정하기 위한 지표
주요 개념
- 연구 대상을 두 가지 이상의 그룹 중 하나에 할당한다. 여기서 서로 다른 처리 조건을 제외한 나머지 조건들은 정확히 동일하게 처리된다.
- 이상적으로, 대상들은 그룹에 무작위로 배정된다.
가설검정
용어 정리
- 귀무가설(null hypothesis): 우연 때문이라는 가설 (유의어 : 영가설)
- 대립가설(alternative hypothesis): 귀무가설과의 대조(증명하고자 하는 가설)
- 일원검정(one-way test): 한 방향으로만 우연히 일어날 확률을 계산하는 가설검정
- 이원검정(two-way test): 양방향으로 우연히 일어날 확률을 계산하는 가설검정
주요 개념
- 귀무가설은 우리가 관찰한 어떤 효과가 특별한 것이 아니고 우연에 의해 발생한 것이라는 개념을 구체화하는 일종의 논리적 구조이다.
- 가설검정은 귀무가설이 사실이라고 가정하고, '영모형(null model)' (확률모형(probability model))을 생성하여 관찰한 효과가 해당 모델로부터 합리적으로 나올 수 있는 결과인지 여부를 검증하는 것이다.
재표본추출
용어 정리
- 순열검정(permutation test): 두 개 이사으이 표본을 함께 결합하여 관측값들을 무작위로(또는 전부를) 재표본으로 추출하는 과정을 말한다. (유의어 : 임의화검정, 임의순열검정, 정확검정)
- 여러 그룹의 결과를 단일 데이터 집합으로 결합한다.
- 결합된 데이터를 잘 섞은 후, 그룹 A와 동일한 크기의 표본을 무작위로(비복원) 추출한다.
- 나머지 데이터에서 그룹 B와 동일한 크기의 샘플을 무작위로(비복원) 추출한다.
- C, D 등의 그룹에 대해서도 동일한 작업을 수행한다.
- 원래 샘플(예를 들면 그룹 비율의 차이)에 대해 구한 통계량 또는 추정치가 무엇이었든 간에 지금 추출한 재표본에 대해 모두 다시 계산하고 기록한다. 이것으로 한 번의 순열 반복이 진행된다.
- 앞선 단계들을 R번 반복하여 검정통계량의 순열 분포를 얻는다.
- 복원/비복원(with or witout replacement): 표본을 추출할 때, 이미 한번 뽑은 데이터를 다음번 추출을 위해 다시 제자리에 돌려 놓거나/다음 추출에서 제외하는 표집 방법
주요 개념
- 순열검정에서는 여러 표본을 결합한 다음 잘 섞는다.
- 그런 다음 섞인 값들을 이용해 재표본추출 과정을 거쳐, 관심 있는 표본통계량을 계산한다.
- 이 과정을 반복하고 재표본추출한 통계를 도표화한다.
- 관측된 통계량을 재표본추출된 분포와 비교하면 샘플 간에 관찰된 차이가 우연에 의한 것인지를 판단할 수 있다.
명령어
# 비복원추출 방식 함수
perm_fun <- function(x, n1, n2)
{
n <- n1 + n2
idx_b <- sample(1:n, n1)
idx_a <- setdiff(1:n, idx_b)
mean_diff <- mean(x[idx_b]) - mean(x[idx_a])
return(mean_diff)
}>
통계적 유의성과 p 값
용어 정리
- p 값(p-value): 귀무가설을 구체화한 기회 모델이 주어졌을 때, 관측된 결과와 같이 특이하거나 극단적인 결과를 얻을 확률
- 알파(alpha): 실제 결과가 통계적으로 의미 있는 것으로 간주되기 위해, 우연에 의한 기회 결과가 능가해야하는 '비정상적인' 가능성의 임계 확률
- 제1종 오류(type I error): 우연에 의한 효과가 실제 효과라고 잘못 결론 내리는 것
- 제2종 오류(type II error): 실제 효과를 우연에 의한 효과라고 잘못 결론 내리는 것
주요 개념
- 유의성 검정은 관찰된 효과가 귀무가설 모형에 대한 무작위 변이의 범위 내에 있는지 결정하는 데 사용된다.
- p 값은 귀무가설로부터 나올 수 있는 결과가 관찰된 결과만큼 극단적으로 나타날 확률이다.
- 유의수준(알파)이란, 귀무가설 모델에서 '비정상'이라고 판단할 임계값을 말한다.
- 유의성 검정은 데이터 과학보다는 좀 더 공식적인 연구 보고와 관련이 있다(그러나 공식적인 연구 보고의 경우에도 최근에는 중요성이 희미해지고 있다).
t검정
용어 정리
- 검정통계량(test statistic): 관심의 차이 또는 효과에 대한 측정 지표
- t 통계량(t-statistic): 표준화된 형태의 검정통계량
- t 분포(t-distribution): 관측된 t 통계량을 비교할 수 있는, (귀무가설에서 파생된) 기준 분포
주요 개념
- 컴퓨터가 널리 보급되지 전에, 재표본 검정은 실용적이지 않았으며, 대신 통계학자들은 표준적인 분포를 참고했다.
- 이렇게 하면 검정통계량이 표준화되어 참고할 분포와 비교할 수 있다.
- 널리 사용되는 표준화된 통계량 중 하나가 t 통계량이다.
명령어
# t 통계량
# Default S3 method:
t.test(x, y = NULL,
alternative = c("two.sided", "less", "greater"),
mu = 0, paired = FALSE, var.equal = FALSE,
conf.level = 0.95, ...)
## S3 method for class 'formula'
t.test(formula, data, subset, na.action, ...)
다중검정
용어 정리
- 제1종 오류(type I error): 어떤 효과가 통계적으로 유의미하다고 잘못된 결론을 내린다.
- 거짓 발견 비율(FDR)(false discovery rate): 다중검정에서 1종 오류가 발생하는 비율
- p 값 조정(adjustment of p-value): 동일한 데이터에 대해 다중검정을 수행하는 경우에 필요하다.
- 과대적합(오버피팅)(overfitting): 잡음까지 피팅
주요 개념
- 연구 조사나 데이터 마이닝 프로젝트에서 다중성(다중 비교, 많은 변수, 많은 모델 등)은 일부가 우연히 유의미하다는 결론을 내릴 위험을 증가시킨다.
- 여러 통게 비교(즉, 여러 유의성 검정)와 관련된 상황의 경우 통계적 수정 절차가 필요하다.
- 데이터 마이닝에서, 라벨리 지정된 결과변수가 있는(즉 분류 결과를 알고 있는) 홀드아웃 표본을 사용하면 잘못된 결과를 피할 수 있다.
자유도
용어 정리
- 표본크기 n : 해당 데이터에서 관측값의 개수(행 혹은 기록값의 개수와 같은 의미)
- d.f.(degrees of freedom): 자유도
주요 개념
- 자유도(d.f.)는 검정통계량을 표준화하는 계산의 일부이며, 이를 통해 기준 분포(t 분포, F 분포 등)와 비교 할 수 있다.
- 자유도 개념은 회귀를 할 때 (다중공선성을 피하기 위해) 범주형 변수들을 n-1 지표 혹은 더미 변수로 요인화하는 것의 이유가 된다.
분산분석
용어 정리
- 쌍별 비교(pairwise comparison): 여러 그룹 중 두 그룹 간의 (예를 들면 평균에 대한) 가설검정
- 총괄검정(omnibus test): 여러 그룹 평균들의 전체 분산에 관한 단일 가설검정
- 분산분해(decomposition of variance): 구성 요소 분리, 예를 들면 전체 평균, 처리 평균, 잔차 오차로부터 개별 값들에 대한 기여를 뜻한다.
- F 통계량(F-statistic): 그룹 평균 간의 차이가 랜덤 모델에서 예상되는 것보다 벗어나는 정도를 측정하는 표준화된 통계량
- SS(sum of squares): 어떤 평균으로부터의 편차들의 제곱합
주요 개념
- ANOVA(분산분석, analysis of variance)는 여러 그룹의 실험 결과를 분석하기 위한 통계적 절차이다.
- A/B 검정과 비슷한 절차를 확장하여 그룹 간 전체적인 편차가 우연히 발생할 수 있는 범위 내에 있는지를 평가하기 위해 사용한다.
- ANOVA의 결과 중 유용한 점 중 하나는 그룹 처리, 상호작용 효과, 오차와 관련된 분산의 구성 요소들을 구분하는 데 있다.
명령어
# 총괄(순열)검정
install.packages("lmPerm")
library(lmPerm)
aovp(formula, data = NULL, perm="Exact", seqs=FALSE,
center=TRUE, projections = FALSE, qr = TRUE,
contrasts = NULL, ...)
# F 통계량
aov(formula, data = NULL, projections = FALSE, qr = TRUE,
contrasts = NULL, ...)
카이제곱검정
용어 정리
- 카이제곱검정(chi-square test): 횟수 관련 데이터에 주로 사용되며 예상되는 분포에 얼마나 잘 맞는지를 검정한다.
- 카이제곱통계량(chi-square statistic): 기댓값으로부터 어떤 관찰값까지의 거리를 나타내는 측정치
- 기댓값(expectation(expected)): 어떤 가정(보통 귀무가설)으로부터 데이터가 발생할 때, 그에 대해 기대하는 정도
- 피셔의 정확검정(Fisher's exact test): 사건 발생 횟수가 매우 낮을 때, 재표본추출 방법을 통해 더 정확한 p 값을 얻는 검정
주요 개념
- 통계학에서 흔한 절차는 관측된 데이터가 독립성 가정(예를 들면 특정 항목을 구매하려는 성향이 성별과 무관함)을 따르는지 검증하는 것이다.
- 카이제곱분포는 카이제곱통계량을 비교할 기준 분포(독립성 가정 포함)이다.
명령어
# 카이제곱통계량
chisq.test(x, y = NULL, correct = TRUE,
p = rep(1/length(x), length(x)), rescale.p = FALSE,
simulate.p.value = FALSE, B = 2000)
# 피셔의 정확검정
fisher.test(x, y = NULL, workspace = 200000, hybrid = FALSE,
hybridPars = c(expect = 5, percent = 80, Emin = 1),
control = list(), or = 1, alternative = "two.sided",
conf.int = TRUE, conf.level = 0.95,
simulate.p.value = FALSE, B = 2000)
멀티암드 밴딧 알고리즘
용어 정리
- 멀티암드 밴딧(multi-armed bandit): 고객이 선택할 수 있는 손잡이가 여러 개인 가상의 슬롯머신을 말하며, 각 손잡이는 각기 다른 수익을 가져다 준다. 다중 처리 실험에 대한 비유라고 생각할 수 있다.
- 엡실론-그리디 알고리즘(epsilon-greedy algorithm)
- 0부터 1 사이의 난수를 생성한다.
- 이 숫자가 0과 엡실론(0과 1 사이의 값으로 일반적으로 아주 작다) 사이에 존재하면, 50/50 확률로 동전 뒤집기를 시행한다.
- 그 결과 동전이 앞면이면 제안 A를 표시한다.
- 동전이 뒷면이면 제안 B를 표시한다.
- 숫자가 엡실론보다 크면, 지금까지 가장 좋은 결과를 보인 제안을 표시한다.
- 탐욕 알고리즘(greedy algorithm): 엡실론이 0인 경우. 더 이상의 실험 없이, 피실험자들을 항상 지금까지 알려진 가장 좋은 제안에 할당한다.
- 톰슨의 샘플링(Thompson's sampling)알고리즘
- 베이지언 방식을 사용. 즉 베타 분포(beta distribution)(베이지언 문제에서 사전 정보를 지정하는 일반적인 메커니즘)를 사용하여 수익의 일부 사전 분포를 가정한다. 각 추출 정보가 누적되면서 정보가 업데이트되기 때문에, 다음번에 최고 손잡이를 선택할 확률을 효과적으로 최적화할 수 있다.
- 엡실론-그리디 알고리즘(epsilon-greedy algorithm)
- 손잡이(arm): 실험에서 어떤 하나의 처리를 말한다(예를 들면 '웹 테스트에서 헤드라인 A').
- 상금(수익)(win): 슬롯머신으로 딴 상금에 대한 실험적 비유(예를 들면 '고객들의 링크 클릭 수')
주요 개념
- 전통적 A/B 검정은 임의표집 과정을 기본으로 하기 때문에, 수익이 낮은 것을 너무 많이 시도할 수 있다.
- 이와 대조적으로 MAB는 실험 도중에 얻는 정보를 통합하고 수익이 낮은 것의 빈도를 줄이는 쪽으로 표본 추출 과정을 변경한다.
- 또한 두 가지 이상의 처리를 효과적으로 다룰 수 있다.
- 추출 확률을 수익이 낮은 처리에서 수익이 높으리라 추정되는 쪽으로 이동시키기 위한 다양한 알고리즘이 존재한다.
검정력과 표본크기
용어 정리
- 효과크기(effect size): '클릭률의 20% 향상'과 같이 통계 검정을 통해 판단할 수 있는 효과의 최소 크기
- 검정력(power): 주어진 표본크기로 주어진 효과크기를 알아낼 확률
- 유의수준(significance level): 검증 시 사용할 통계 유의수준준
주요 개념
- 통계 검정을 수행하기 앞서, 어느 정도의 표본크기가 필요한지 미리 생각할 필요가 있다.
- 알아내고자 하는 효과의 최소 크기를 지정해야 한다.
- 또한 효과크기를 알아내기 위해 요구되는 확률(검정력)을 지정해야 한다.
- 마지막으로, 수행할 가설검정에 필요한 유의수준을 정해야 한다.
명령어
# 표본크기
install.packages("pwr")
library(pwr)
pwr.2p.test(h = NULL, n = NULL, sig.level = 0.05, power = NULL,
alternative = c("two.sided","less","greater"))
회귀와 예측
단순선형회귀
용어 정리
- 응답변수(반응변수)(response variable): 예측하고자 하는 변수 (유의어 : 종속변수, 변수 Y, 목표, 출력)
- 독립변수(independent variable): 응답치를 예측하기 위해 사용되는 변수 (유의어 : 변수 X, 피처, 속성)
- 레코드(record): 한 특정 경우에 대한 입력과 출력을 담고 있는 벡터 (유의어 : 행, 사건, 예시(instance), 예제(example))
- 절편(intercept): 회귀직선의 절편. 즉, X = 0일 때 예측값 (유의어 : ${b}{0}$, ${\beta}{0}$)
- 회귀계수(regression coefficient): 회귀직선의 기울기 (유의어 : 기울기(slope), ${b}{1}$, ${\beta}{1}$, 모수 추정값, 가중치)
- 적합값(fitted value): 회귀선으로부터 얻은 추정치 ${\hat{Y}}_{i}$ (유의어 : 예측값)
- 잔차(residual): 관측값과 적합값의 차이 (유의어 : 오차)
- 최소제곱(least square): 잔차의 제곱합을 최소화하여 회귀를 피팅하는 방법 (유의어 : 보통최소제곱)
주요 개념
- 회귀방정식은 응답변수 Y와 예측변수 X 간의 관계를 선형함수로 모델링한다.
- 회귀모형은 적합값과 잔차, 즉 반응에 대한 예측과 그 예측 오차를 산출한다.
- 회귀모형은 일반적으로 최소제곱법을 이용해 피팅한다.
- 회귀는 예측과 설명 모두에 사용된다.
명령어
# 선형회귀
lm(formula, data, subset, weights, na.action,
method = "qr", model = TRUE, x = FALSE, y = FALSE, qr = TRUE,
singular.ok = TRUE, contrasts = NULL, offset, ...)
# 적합값
predict (object, ...)
# 잔차
residuals(object, ...)
다중선형회귀
용어 정리
- 제곱근 평균제곱오차(root mean squared error): 회귀 시 평균제곱오차의 제곱근. 회귀모형을 평가하는 데 가장 널리 사용되는 측정 지표다. (유의어 : RMSE)
- 잔차 표준오차(residual standard error): 평균제곱오차와 동일하지만 자유도에 따라 보정된 값 (유의어 : RSE)
- R 제곱(r-squared): 0에서 1까지 모델에 의해 설명된 분산의 비율 (유의어 : 결정계수(coefficient of determination)R^2))
- t 통계량(t-statistic): 계수의 표준오차로 나눈 예측변수의 계수. 모델에서 변수의 중요도를 비교하는 기준이 된다.
- 가중회귀(weighted regression): 다른 가중치를 가진 레코드들을 회귀하는 방법
- 교차타당성검사(cross-validation): 홀드아웃 샘플 아이디어를 여러 개의 연속된 홀드아웃 샘플로 확장한 것
- k 다중 교차타당성검사(k-fold cross-validation)알고리즘
- 1/k의 데이터를 홀드아웃 샘플로 따로 떼어놓는다.
- 남아 있는 데이터로 모델을 훈련시킨다.
- 모델을 1/k 홀드아웃에 적용 (점수를 매김)하고 필요한 모델 평가 지표를 기록한다.
- 데이터의 첫 번째 1/k을 복원하고 다음 1/k (앞에서 선택했던 레코드는 제외)을 따로 보관한다.
- 2~3단계를 반복한다.
- 모든 레코드가 홀드아웃 샘플로 사용될 때까지 반복한다.
- 모델 평가 지표들을 평균과 같은 방식으로 결합한다.
- k 다중 교차타당성검사(k-fold cross-validation)알고리즘
- 폴드(fold): 훈련을 위한 샘플과 홀드아웃 샘플로 데이터를 나누는 것
- 전진선택(forward selection): 예측변수 없이 시작하여 각 단계에서 R^2)에 가장 큰 기여도를 갖는 예측변수를 하나씩 추가하고 기여도가 통계적으로 더 이상 유의미하지 않을 때 중지하는 것
- 후진선택(backward selection)또는 후진제거(backward elimination): 전체 모델로 시작해서, 모든 예측변수가 통계적으로 유의미한 모델이 될 때까지, 통계적으로 유의하지 않은 예측변수들을 제거해 나가는 것
주요 개념
- 다중선형회귀 모델은 한 응답변수 Y와 여러 개의 예측변수(${X}{1}, ..., {X}{p}$) 간의 관계를 나타낸다.
- 모델을 평가하는 가장 중요한 지표는 제곱근 평균제곱오차(RMSE)와 R 제곱(R^2)이다.
- 계수들의 표준오차는 모델에 대한 변수 기여도의 신뢰도를 측정하는 데 사용된다.
- 단계적 회귀는 모델을 만드는 데 필요한 변수들을 자동으로 결정하는 방법이다.
- 가중회귀는 방정식을 피팅할 때 레코드별로 가중치를 주기 위해 사용한다.
명령어
# 회귀모형, RSE 등 지표 계산
# Default S3 method:
summary(object, ..., digits, quantile.type = 7)
## S3 method for class 'data.frame'
summary(object, maxsum = 7,
digits = max(3, getOption("digits")-3), ...)
## S3 method for class 'factor'
summary(object, maxsum = 100, ...)
## S3 method for class 'matrix'
summary(object, ...)
회귀를 이용한 예측
용어 정리
- 예측구간(prediction interval): 개별 예측값 주위의 불확실한 구간
- 외삽법(extrapolation): 모델리에 사용된 데이터 범위를 벗어난 부분까지 모델을 확장하는 것
주요 개념
- 데이터 범위를 벗어나는 외삽은 오류를 유발할 수 있다.
- 신뢰구간은 회귀계수 주변의 불확실성을 정량화한다.
- 예측구간은 개별 예측값의 불확실성을 정량화한다.
- R을 포함한 대부분의 소프트웨어는 수식을 사용하여 예측/신뢰구간을 기본 또는 지정된 출력으로 생성한다.
- 수식 대신 부트스트랩을 사용할 수도 있다. 해석과 개념은 같다.
회귀에서의 요인변수
용어 정리
- 가변수(dummy variable): 회귀나 다른 모델에서 요인 데이터를 사용하기 위해 0과 1의 이진변수로 부호화한 변수
- 기준 부호화(reference coding): 통계학자들이 많이 사용하는 부호화 형태. 여기서 한 요인을 기준으로 하고 다른 요인들이 이 기준에 따라 비교할 수 있도록 한다. (유의어 : 처리 부호화(treatment coding))
- 원-핫 인코딩(one-hot encoding): 머신러닝 분야에서 많이 사용되는 부호화. 모든 요인 수준이 계속 유진된다. 어떤 머신러닝 알고리즘에서는 유용한 반면. 다중선형회귀에는 적합하지 않다.
- 편차 부호화(deviation coding): 기준 수준과는 반대로 전체 평균에 대해 각 수준을 비교하는 부호화 방법 (유의어 : 총합 대비(sum contrast))
주요 개념
- 요인변수는 회귀를 위해 수치형 변수로 변환해야 한다.
- 요인변수를 P개의 개별 값으로 인코딩하기 위한 가장 흔한 방법은 P-1개의 가변수를 만들어 사용하는 것이다.
- 다수의 수준을 갖는 요인변수의 경우, 더 적은 수의 수준을 갖는 변수가 되도록 수준들을 통합해야 한다.
- 순서를 갖는 요인변수의 경우, 수치형 변수로 변환하여 사용할 수 있다.
명령어
# 원-핫 인코딩
model.matrix(~PropertyType -1, data=house)
## -1이라는 인수는 원-핫 인코딩 표시법을 사용한다는 의미이다.(- 기호는 절편을 삭제한다는 것을 뜻한다.)
## 이렇게 하지 않으면 기본 설정대로, 첫 요인을 기준으로 삼는 P-1개 열로 이루어진 행렬을 출력한다.
회귀방정식 해석
용어 정리
- 변수 간 상관(correlated variables): 예측변수들끼리 서로 높은 상관성을 갖을 때, 개별 계수를 해석하는 것은 어렵다.
- 다중공선성(multicollineartiy): 예측변수들이 완벽하거나 거의 완벽에 가까운 상관성을 갖는다고 할 때, 회귀는 불안정하며 계산이 불가능하다. (유의어 : 공선성(collinearity))
- 오류로 읺 한 변수가 여러 번 포함된 경우
- 요인변수로부터 p-1개가 아닌 p개의 가변수가 만들어진 경우
- 두 변수가 서로 거의 완벽하게 상관성이 있는 경우우
- 교란변수(confounding variable): 중요한 예측변수이지만 회귀방정식에 누라되어 결과를 잘못되게 이끄는 변수
- 주효과(main effect): 다른 변수들과 독립된, 하나의 옉변수와 결과변수 사이의 관계
- 상호작용(interaction): 둘 이상의 예측변수와 응답변수 사이의 상호 의존적인 관계
상호작용 항들을 이용한 모델 선택
다수의 변수가 존재하는 문제의 경우, 모델에서 어떤 상호자용을 고려해야 할지 결정하기가 매우 어렵다. 이러한 문제에 접근하는 몇 가지 방법에 대해 알아보자
- 어떤 문제에서는 사전 지식이나 직관이 이러한 상호작용을 결정하는 데 큰 도움이 된다.
- 단계적 선택을 사용해서 다양한 모델들을 걸러낼 수 있다.
- 벌점을 부여하는 방식의 회귀 방법을 사용하여 자동으로 가능한 상호작용들을 최대한 가려내도록 한다.
- 아마도 랜덤 포레스트나 그레이디언트 부스팅 트리같은 트리 모델을 가장 일반적으로 사용하지 않을까 생각한다. 이러한 모델들은 자동으로 최적의 상호작용 항들을 걸러낸다.
주요 개념
- 예측변수들 사이의 상관성 때문에, 다중선형회귀에서 계수들을 해석할 때는 주의해야 한다.
- 다중공선성은 회귀방정식을 피팅할 때, 수치 불안정성을 유발할 수 있다.
- 교란변수란 모델에서 생략된 중요한 예측변수를 의미하며, 이에 따라 실제로 관계가 없는데 허위로 있는 것처럼 회귀 결과가 나올 수 있다.
- 변수와 결과가 서로 의존적일 때, 두 변수 사이의 상호작용을 고려할 필요가 있다.
가정 검정: 회귀 진단
용어 정리
- 표준화잔차(standardized residual): 잔차를 표준오차로 나눈 값
- 특잇값(outlier): 나머지 데이터(혹은 예측값)와 멀리 떨어진 레코드(혹은 출력값)
- 영향값(influential value): 있을 때와 없을 때 회귀방정식이 큰 차이를 보이는 값 혹은 레코드
- 지렛대(레버리지)(leverage): 회귀식에 한 레코드가 미치는 영향력의 정도 (유의어 : 햇 값(hat-value))
- 비정규 잔차(non-normal residual): 정규분포를 따르지 않는 잔차는 회귀분석의 요건을 무효로 만들 수 있다. 데이터 과학에서는 별로 중요하게 다뤄지지 않는다.
- 이분산성(heterokedasticity): 어떤 범위 내 출력값의 잔차가 매우 높은 분산을 보이는 경향(어떤 예측변수를 회귀식이 놓치고 있다는 것을 의미할 수 있다.)
- 더빈-왓슨 통계량(Durbin-Watson statistic): 시계열 데이터를 다루는 회귀분석에서 유의미한 자기상관(autocorrelation)이 있는지를 탐지하는 데 사용
- 편잔차그림(partial residual plot): 결과변수와 특정 예측변수 사이의 관계를 진단하는 그림 (유의어 : 추가변수 그림(added variable plot))
주요 개념
- 특잇점은 데이터 크기가 작을 때 문제를 일으킬 수 있지만, 주요 관심사는 데이터에서 문제점을 발견한다든지 이상을 찾아내는 것이다.
- 데이터 크기가 작을 때는 단일 레코드(회귀 특잇값 포함)가 회귀방정식에 큰 영향을 미치는 경우도 있다. 하지만 빅데이터에서는 이러한 효과가 대부분 사라진다.
- 회귀모형을 일반적인 추론(p 값 등)을 위해 사용할 경우 잔차 분포에 대한 특정 가정을 확인해야 한다. 하지만 보통 데이터 과학에서 잔차의 분포는 그렇게 중요하지 않다.
- 편잔차그림을 사용하여 각 회귀 항의 적합성을 정량적으로 평가할 수 있다. 즉 대체 모델에 대한 아이디어를 얻을 수 있다.
명령어
# 표준화잔차
## S3 method for class 'lm'
rstandard(model, infl = lm.influence(model, do.coef = FALSE),
sd = sqrt(deviance(model)/df.residual(model)),
type = c("sd.1", "predictive"), ...)
## S3 method for class 'glm'
rstandard(model, infl = influence(model, do.coef = FALSE),
type = c("deviance", "pearson"), ...)
다항회귀와 스플라인 회귀
용어 정리
- 다항회귀(polynomial regression): 회귀모형에 다항식(제곱, 세제곱 등) 항을 추가한 방식
- 스플라인 회귀(spline regression): 다항 구간들을 부드러운 곡선 형태로 피팅한다.
- 매듭(knot): 스플라인 구간을 구분하는 값들
- 일반화가법모형(generalized additive model): 자동으로 구간을 결정하는 스플라인 모델 (유의어 : GAM)
주요 개념
- 회귀분석에서 특잇값은 잔차가 큰 레코드를 말한다.
- 다중공선성은 회귀방정식을 피팅할 때 수치 불안정성을 가져올 수 있다.
- 교란변수는 모델에서 생략된 중요한 예측변수이며 허위 관계를 보여주는 회귀 결과를 낳을 수 있다.
- 한 변수의 효과가 다른 변수의 수준에 영향을 받는다면 두 변수 사이의 상호작용을 고려할 항이 필요하다.
- 다항회귀분석은 예측변수와 결과변수 간의 비선형 관계를 검증할 수 있다.
- 스플라인은 매듭들로 함께 묶여 있는 일련의 구간별 다항식을 말한다.
- 일반화가법모형(GAM)은 스플라인의 매듭을 자동으로 결정하는 프로세스를 가지고 있다.
명령어
# 다항회귀
poly(x, ..., degree = 1, coefs = NULL, raw = FALSE, simple = FALSE)
# b-스플라인
bs(x, df = NULL, knots = NULL, degree = 3, intercept = FALSE,
Boundary.knots = range(x))
# 일반화가법모형(GAM)
gam(formula, family = gaussian, data, weights, subset, na.action,
start, etastart, mustart, control = gam.control(...),
model=TRUE, method, x=FALSE, y=TRUE, ...)
gam.fit(x, y, smooth.frame, weights = rep(1,nobs), start = NULL,
etastart = NULL, mustart = NULL, offset = rep(0, nobs), family = gaussian(),
control = gam.control())
분류
나이브 베이즈
용어 정리
- 나이브 베이즈(naive Bayes)알고리즘 : 주어진 결과에 대해 예측변수 값을 관찰할 확률을 사용하여, 예측변수가 주어졌을 때, 결과 Y = i를 관찰할 확률을 추정한다.
- 조건부확률(conditional probability): 어떤 사건(Y = i)이 주어졌을 때, 해당 사건(X = i)을 관찰할 확률 $P({X}{i}|{X}{i})$
- 사후확률(posterior probability): 예측 정보를 통합한 후 결과의 확률 (이와 달리, 사전확률에서는 예측변수에 대한 정보를 고려하지 않는다.)
명령어
# 나이브 베이즈 모델
install.packages("klaR")
library(klaR)
## S3 method for class 'formula'
NaiveBayes(formula, data, ..., subset, na.action = na.pass)
## Default S3 method:
NaiveBayes(x, grouping, prior, usekernel = FALSE, fL = 0, ...)
판별분석
용어 정리
- 공분산(covariance): 하나의 변수가 다른 변수와 함께 변화하는 정도(유사한 크기와 방향)를 측정하는 지표
- 판별함수(discriminant function): 예측변수에 적용했을 때, 클래스 구분을 최대화하는 함수
- 판별 가중치(discriminant weight): 판별함수를 적용하여 얻은 점수를 말하며, 어떤 클래스에 속할 확률을 추정하는 데 사용된다.
주요 개념
- 판별분석은 예측변수나 결과변수가 범주형이든 연속형이든 상관없이 잘 동작한다.
- 공분산행렬을 사용하여 한 클래스와 다른 클래스에 속한 데이터들을 구분하는 선형판별함수(linear discriminanat function)를 계산할 수 있다.
- 이 함수를 통해 각 레코드가 어떤 클래스에 속할 가중치 혹은 점수(각 클래스당 점수)를 구한다.
명령어
# 선형판별분석(LDA)
install.packages("MASS")
library(MASS)
## S3 method for class 'formula'
lda(formula, data, ..., subset, na.action)
## Default S3 method:
lda(x, grouping, prior = proportions, tol = 1.0e-4,
method, CV = FALSE, nu, ...)
## S3 method for class 'data.frame'
lda(x, ...)
## S3 method for class 'matrix'
lda(x, grouping, ..., subset, na.action)
Arguments
로지스틱 회귀
용어 정리
- 로지스틱 회귀(logistic regression): 결과가 이진형 변수라는 점만 빼면 다중선형회귀와 유사하다.
- 로지스틱 회귀는 선형회귀를 확장한 일반화선형모형(GLM)의 특별한 사례이다.
- 확률분포 또는 분포군(로지스틱 회귀의 경우 이항분포)
- 응답을 예측변수에 매핑하는 연결 함수(로지스틱 회귀의 경우 로짓)
- 로지스틱 회귀는 선형회귀를 확장한 일반화선형모형(GLM)의 특별한 사례이다.
- 로짓(logit): (0~1이 아니라) ±∞의 범위에서 어떤 클래스에 속할 확률을 결정하는 함수 (유의어 : 로그 오즈)
- 오즈(odds): '실패'(0)에 대한 '성공'(1)의 비율
- 로그 오즈(log odds): 변환 모델(선형)의 응답변수. 이 값을 통해 확률을 구한다.
선형회귀와 로지스틱 회귀: 유사점과 차이점
- 두 가지 모두 예측변수와 응답변수를 선형 관계로 가정한다. 가장 좋은 모델을 탐색하고 찾는 과정도 아주 유사하다.
- 하지만 로지스틱 회귀는 아래 두 가지 점에서 근본적인 차이가 있다.
- 모델을 피팅하는 방식(최소제곱을 사용할 수 없다) : 선형회귀 -> 최소제곱, 로지스틱 회귀 -> 최대우도추정(MLE)
- 모델에서 잔차의 특징과 분석
주요 개념
- 로지스틱 회귀는 출력이 이진변수라는 점만 빼면, 선형회귀와 매우 비슷하다.
- 선형모형과 비슷한 형태의 모델을 만들기 위해, 응답변수로 오즈비의 로그값을 사용하는 등의 몇 가지 변환이 필요하다.
- 반복 과정을 통해 선형모형을 피팅하고 나면, 로그 오즈비는 다시 확률값으로 변환된다.
- 로지스틱 회귀는 계산 속도가 빠르고 새로운 데이터에 대해서도 빠르게 결과를 구할 수 있다는 장점 때문에 많이 사용된다.
명령어
# 로지스틱 호귀
glm(formula, family = gaussian, data, weights, subset,
na.action, start = NULL, etastart, mustart, offset,
control = list(...), model = TRUE, method = "glm.fit",
x = FALSE, y = TRUE, singular.ok = TRUE, contrasts = NULL, ...)
glm.fit(x, y, weights = rep(1, nobs),
start = NULL, etastart = NULL, mustart = NULL,
offset = rep(0, nobs), family = gaussian(),
control = list(), intercept = TRUE, singular.ok = TRUE)
분류 모델 평가하기
용어 정리
- 정확도(accuracy): 정확히 분류된 비율
- 혼동행렬(confusion matrix): 분류에서 예측된 결과와 실제 결과에 대한 레코드의 개수를 표시한 테이블(이진형인 경우 2 X 2)
- 민감도(sensitivity): 정확히 분류된 1의 비율 (유의어 : 재현율(recall))
- 특이도(specificity): 정확히 분류된 0의 비율
- 정밀도(precision): 정화히 1이라고 예측된 1의 비율(대응어 : 거짓 양성 비율(false positive ratio))
- ROC 곡선(ROC curve): 민감도와 특이성을 표시한 그림
- 곡선 아래 면적(area underneath the curve)(AUC) : ROC 곡선의 아래쪽 면적. AUC 값이 높을수록 더 좋은 분류기라고 할 수 있다.
- 리프트(lift): 모델이 다른 확률 컷오프에 대해 (비교적 드문) 1을 얼마나 더 효과적으로 구분하는지 나타내는 측정 지표
주요 개념
- 정확도(예측한 분류 결과가 몇 퍼센트 정확한지)는 모델을 평가하는 가장 기본적인 단계이다.
- 다른 평가 지표들(재현율, 특이도, 정밀도)은 좀 더 세부적인 성능 특성들을 나타낸다(예를 들면 재현율은 모델이 1을 얼마나 정확히 분류하는지를 나타낸다).
- AUC(ROC 곡선 아래 면적)는 모델의 1와 0을 구분하는 능력을 보여주기 위해 가장 보편적으로 사용되는 지표이다.
- 이와 비슷하게, 리프트는 모델이 1을 얼마나 효과적으로 분류해내는지를 측정한다. 가장 1로 분류될 가능성이 높은 것부터 매 십분위마다 이를 계산한다.
불균형 데이터 다루기
용어 정리
- 과소표본(undersample): 분류 모델에서 개수가 많은 클래스 데이터 중 일부 소수만을 사용하는 것 (유의어 : 다운샘플)
- 과잉표본(oversample): 분류 모델에서 희귀 클래스 데이터를 중복해서, 필요하면 부트스트랩 해서 사용하는 것 (유의 : 업샘플)
- 상향 가중치(up weight)혹은 하향 가중치(down weight): 모델에서 희귀(혹은 다수) 클래스에 높은(혹은 낮은) 가중치를 두는 것
- 데이터 생성(data generation): 부트스트랩과 비슷하게 다시 샘플링한 레코드를 빼고 원래 원본과 살짝 다르게 데이터를 생성하는 것
- z 점수(z-score): 표준화 결과
- K : 최근접 이웃 알고리즘에서 이웃들의 개수
주요 개념
- 데이터의 심각한 불균형(즉, 관심 있는 결과의 데이터가 희박할 때)은 분류 알고리즘에서 문제가 될 수 있다.
- 한 방법은 다수의 데이터를 다운샘플링하거나 희귀한 데이터를 업샘플링해서 학습 데이터의 균형을 맞추는 것이다.
- 갖고 있는 1의 데이터를 모두 사용해도 그 개수가 너무 적을 때는, 희귀한 데이터에 대해 부트스트랩 방식을 사용하거나 기존의 데이터와 유사한 합성 데이터를 만들기 위해 SMOTE를 사용한다.
- 데이터에 불균형이 존재할 경우 보통은 어느 한쪽(1의 클래스)을 정확히 분류하는 것에 더 좋은 점수를 주게 되어 있고, 이러한 가치 비율이 평가 지표에 반영되어야 한다.
통계적 머신러닝
K 최근접 이웃
용어 정리
- K 최근접 이웃(K-nearest neighbors)(KNN) 알고리즘
- 특징들이 가장 유사한(즉, 예측변수들이 유사한) K개의 레코드를 찾는다.
- 분류: 이 유사한 레코드들 중에 다수가 속한 클래스가 무엇인지 찾은 후에 새로운 레코드를 그 클래스에 할당한다.
- 예측(KNN 회귀(KNN regression)라고도 함) : 유사한 레코드들의 평균을 찾아서 새로운 레코드에 대한 예측값으로 사용한다.
- 이웃(neighbor): 예측변수에서 값들이 유사한 레코드
- 거리 지표(distance metric): 각 레코드 사이가 얼마나 멀리 떨어져 있는지를 나타내는 단일 값
- 유클리드 거리(Euclidean distance): 두 점 사이의 직선 거리
- 맨하탄 거리(Manhattan distance): 한 번에 대각선이 아닌 한 축 방향으로만 움직일 수 있다고 할 때, 두 점 사이의 거리. 점과 점 사이의 이동 시간으로 근접성을 따질 때 좋은 지표.
- 마할라노비스 거리(Mahalanobis distance): 두 변수 간의 상관관계를 사용하여 거리 측정. 두 변수 사이에 높은 상관관계가 있다면 아주 유용하다.
- 표준화(standardization): 평균을 뺀 후에 표준편차로 나누는 일 (유의어 : 정규화)
- z 점수(Z-score): 표준화를 통해 얻은 값
- K : 최근접 이웃을 계산하는 데 사용되는 이웃의 개수
주요 개념
- K 최근접 이웃(KNN) 방법이란 유사한 레코드들이 속한 클래스로 레코드를 분류하는 방법이다.
- 유사성(거리)은 유클리드 거리나 다른 관련 지표들을 이용해 결정한다.
- 가장 가까운 이웃 데이터의 개수를 의미하는 K는 학습 데이터에서 얼마나 좋은 성능을 보이는지를 가지고 결정한다.
- 일반적으로 예측변수들을 표준화한다. 이를 통해 스케일이 큰 변수들의 영향력이 너무 커지지 않도록 한다.
- 예측 모델링의 첫 단계에서 종종 KNN을 사용한다. 이렇게 얻은 값을 다시 데이터에 하나의 예측변수로 추가해서 두 번째 단계의 (KNN이 아닌) 모델링을 위해 사용한다.
명령어
# KNN
knn(train, test, cl, k = 1, l = 0, prob = FALSE, use.all = TRUE)
트리 모델
용어 정리
- 트리 모델(tree model): 회귀 및 분석 트리(classification and regression tree)(CART), 의사 결정 트리(decision tree), 혹은 단순히 그냥 트리(tree)라고도 불리며, 효과적이고 대중적인 분류(및 회귀) 방법이다.
- 재귀 분할(recursive partitioning): 마지막 분할 영역에 해당하는 출력이 최대한 비슷한(homogeneous)결과를 보이도록 데이터를 반복적으로 분할하는 것
- 분할값(split value): 분할값을 기준으로 예측변수를 그 값보다 작은 영역과 큰 영역으로 나눈다.
- 마디(노드)(node): 의사 결정 트리와 같은 가지치기 형태로 구성된 규칙들의 집합에서, 노드는 분할 규칙의 시작적인 표시라고 할 수 있따.
- 잎(leaf): if-then 규칙의 가장 마지막 부분, 혹은 트리의 마지막 가지(branch)부분을 의미한다. 트리 모델에서 잎 노드는 어떤 레코드에 적용할 최종적인 분류 규칙을 의미한다.
- 손실(loss): 분류하는 과정에서 발생하는 오분류의 수. 손실이 클수록 불순도가 높다고 할 수 있다.
- 불순도(impurity): 데이터를 분할한 집합에서 서로 다른 클래스의 데이터가 얼마나 섞여 있는지를 나타낸다. 더 많이 섞여 있을수록 불순도가 높다고 할 수 있다. (유의어 : 이질성(heterogeneity), 반의어 : 동질성(homogeneity), 순도)
- 가지치기(pruning): 학습이 끝난 트리 모델에서 오버피팅을 줄이기 위해 가지들을 하나씩 잘라내는 과정정
주요 개념
- 의사 결정 트리는 결과를 분류하거나 예측하기 위한 일련의 규칙들을 생성한다.
- 이 규칙들은 데이터를 하위 영역으로 연속적으로 분할하는 것과 관련이 있다.
- 각 분할 혹은 분기는 어떤 한 예측변수 값을 기준으로 데이터를 위아래 두 부분으로 나누는 것이다.
- 각 단계마다, 트리 알고리즘은 결과의 불순도를 최소화하는 쪽으로 영역 분할을 진행한다.
- 더 이상 분할이 불가능할 때, 트리가 완전히 자랐다고 볼 수 있으며 각 말단 노드 혹은 잎 노드에 해당하는 레코드들은 단일 클래스에 속한다. 새로운 데이터는 이 규칙 경로를 따라 해당 클래스로 할당된다.
- 완전히 자란 트리는 데이터를 오버피팅하기 때문에, 노이즈를 제외한 신호에만 반응하도록 트리에 가지치기를 수행해야 한다.
- 랜덤 포레스트나 부스팅 트리 같은 다중 트리 알고리즘은 우수한 예측 성능을 보장한다. 하지만 규칙에 기반을 둔 단일 트리 방법의 장점이라고 할 수 있는 전달 능력은 잃어버린다.
명령어
# 트리 모델
rpart(formula, data, weights, subset, na.action = na.rpart, method,
model = FALSE, x = FALSE, y = TRUE, parms, control, cost, ...)
배깅과 랜덤 포레스트
용어 정리
- 앙상블(ensemble): 여러 모델의 집합을 이용해서 하나의 예측을 이끌어내는 방식 (유의어 : 모델 평균화(model averaging))
- 주어진 데이터에 대해 예측 모델을 만들고 예측 결과를 기록한다.
- 같은 데이터에 대해 여러 모델을 만들고 결과를 기록한다.
- 각 레코드에 대해 예측된 결과들의 평균(또는 가중평균, 다수결 투표)을 구한다.
- 배깅(bagging): 데이터를 부트스트래핑해서 여러 모델을 만드는 일반적인 방법 (유의어 : 부트스트랩 종합(bootstrap aggregation))
- 만들 모델의 개수 M과 모델을 만드는 데 사용할 레코드의 개수 n(n < N)의 값을 초기화한다. 반복 변수 m = 1로 놓는다.
- 훈련 데이터로부터 복원추출 방법으로 n개의 부분 데이터 Y
m과 Xm을 부트스트랩 재표본 추출한다. - 의사 결정 규칙 ${\hat{f}}_{m}(X)$를 얻기 위해, Y
m과 Xm을 이용해 모델을 학습한다. - m = m + 1로 모델 개수를 늘린다. m <= M 이면 다시 1단계로 간다.
- 랜덤 포레스트(random forest): 의사 결정 트리 모델에 기반을 둔 배깅 추정 모델 (유의어 : 배깅 의사결정 트리)
- 변수 중요도(variable importance): 모델 성능에 미치는 예측변수의 중요도
- 하이퍼파라미터(hyperparameter): 랜덤 포레스트 성능 조절 값. 알고리즘을 피팅하기 전에 미리 세팅해야 하는 파라미터.
- nodesize : 말단 노드(나무에서 잎 부분)의 크기를 의미한다. 분류 문제를 위한 기본 설정은 1이며, 회귀 문제에서는 5이다.
- maxnodes : 각 결정 트리에서 전체 노드의 최대 개수를 의미한다. 기본적으로는 제한이 없도 다만 nodesize 제한 설정에 따라 가장 큰 트리의 크기가 결정된다.
주요 개념
- 앙상블 모델은 많은 모델로부터 얻은 결과를 서로 결합해 모델 정확도를 높인다.
- 배깅은 앙상블 모델 가운데 하나의 형태로, 부트스트랩 샘플을 이용해 많은 모델들을 생성하고 이 모델들을 평균화한다.
- 랜덤 포레스트는 배깅 기법을 의사 결정 트리 알고리즘에 적용한 특별한 형태이다. 랜덤 포레스트에서는 데이터를 재표본추출하는 동시에 트리를 분할할 때 예측변수 또한 샘플링한다.
- 랜덤 포레스트로부터 나오는 출력 중 유용한 것은 예측변수들이 모델 정확도에 미치는 영향력을 의미하는 변수 중요도이다.
- 랜덤 포레스트에서는 오버피팅을 피하기 위해 교차타당성검사를 통해 조정된 하이퍼파라미터를 사용한다.
부스팅
용어 정리
- 부스팅(boosting): 연속된 라운드마다 잔차가 큰 레코드들에 가중치를 높여 일련의 모델들을 생성하는 일반적인 기법
- 에이다부스트(AdaBoost): 잔차에 따라 데이터의 가중치를 조절하는 부스팅의 초기 버전
- 그레디언트 부스팅(gradient boosting): 비용함수(cost function)를 최소화하는 방향으로 부스팅을 활용하는 좀 더 일반적인 형태
- 확률적 그레디언트 부스팅(stochastic gradient boosting): 각 라운드마다 레코드와 열을 재표본추출하는 것을 포함하는 부스팅의 가장 일반적인 형태
- XG부스트(XGBoost): 대중적으로 가장 많이 사용되는 확률적 그레이디언트 부스팅 오픈소스 소프트웨어.
- 정규화(regularization): 비용함수에 모델의 파라미터 개수에 해당하는 벌점 항을 추가해 오버피팅을 피하는 방법
주요 개념
- 부스팅 방법은 일련의 모델들을 피팅할 때 이전 라운드에서 오차가 컸던 레코드들에 가중치를 더하는 방식을 사용하는 앙상블 모델의 한 부류이다.
- 확률적 그레이디언트 부스팅은 부스팅 가운데에서 가장 일반적으로 사용되며 가장 좋은 성능을 보인다. 확률적 그레이디언트 부스팅의 가장 일반적인 형태는 트리 모델을 사용한다.
- XG부스트는 확률적 그레이디언트 부스팅을 사용하기 위한 가장 유명한 소프트웨어 패키지이다. 데이터 과학에서 활용되는 거의 대부분의 언어를 지원한다.
- 부스팅은 데이터에 오버피팅되기 쉽다. 이를 피하기 위해 하이퍼파라미터를 잘 설정해야 한다.
- 정규화는 파라미터 개수(예를 들어 트리 크기)에 관한 벌점 항목을 모델리에 포함하여 오버피팅을 피하는 방법이다.
- 부스팅에서 여러 개의 하이퍼파라미터들의 조합을 찾아야 할 때, 교타타당성검사는 아주 중요하다.
비지도 학습
주성분분석
용어 정리
- 비지도 학습(unsupervised learning): 레이블이 달린 데이터를 이용해 모델을 학습하는 과정없이 데이터로부터 의미를 이끌어내는 통계적 기법들을 의미한다.
- 주성분(principal component): 예측변수들의 선형결합
- 주성분분석(principal components analysis)(PCA) : 수치형 변수가 어떤 식으로 공변하는지 알아내는 기법
- 부하(loading): 예측변수들을 성분으로 변형할 때 사용되는 가중치 (유의어 : 가중치)
- 스크리그래프(screeplot): 성분들의 변동을 표시한 그림. 성분들의 상대적인 중요도를 보여준다.
주요 개념
- 주성분은 예측변수(수치형)들의 선형결합이다.
- 주성분들은 서로 간의 상관관계가 최소화되며 중복성이 줄어들도록 한다.
- 제한된 개수의 주성분들로도 결과변수에서 대부분의 변동을 설명할 수 있다.
- 제한된 개수의 주성분들을 원래의 예측변수를 대신하여 차원이 감소된 형태로 사용할 수 있다.
- K 평균 클러스터링
용어 정리
- 클러스터(군집)(cluster): 서로 유사한 레코드들의 집합
- 클러스터 평균(cluster mean): 한 클러스터 안에 속한 레코드들의 평균 벡터 변수
- K : 클러스터의 개수
주요 개념
- 사용자가 원하는 클러스터 개수 K를 선택한다.
- K 평균 알고리즘은 더 이상 클러스터가 변하지 않을 때까지 반복해서 클러스터 평균이 가장 가까운 클러스터에 레코드를 할당한다.
- 실무적인 고려 사항을 활용해 K를 선택하는 것이 가장 일반적이다. 통계적으로 최적의 클러스터 개수를 구하는 방법은 없다.
명령어
# K 평균 클러스터링
kmeans(x, centers, iter.max = 10, nstart = 1,
algorithm = c("Hartigan-Wong", "Lloyd", "Forgy", "MacQueen"), trace=FALSE)
계층적 클러스터링
용어 정리
- 계층적 클러스터링(hierarchical clustering): K 평균보다 유연하고, 수치형 변수가 아니어도 쉽게 적용이 가능하다. 특잇점이나 비정상적인 그룹이나 레코드를 발견하는 데 더 민감하다. 직관적인 시각화가 가능하여 클러스터를 해석하기가 수월하다.
- 병합(agglomerative)알고리즘 : 유사한 클러스터들을 반복적으로 병합하는 역할을 함.
- 덴드로그램(dendrogram): 레코드들, 그리고 레코드들이 속한 계층적 클러스터에 대한 시각적으로 표현
- 거리(distance): 한 레코드가 다른 레코드들과 얼마나 가까운지를 보여주는 측정 지표
- 비유사도(dissimilarity): 한 클러스터가 다른 클러스터들과 얼마나 가까운지를 보여주는 측정 지표
- 비유사도 측정 지표 : 완전연결, 단일연결(single linkage), 평균연결(average linkage), 최소분산(minimum variance)
주요 개념
- 모든 레코드를 각각 자체 클러스터로 할당하여 알고리즘을 시작한다.
- 클러스터들은 모든 레코드가 하나의 클러스터에 속할 때까지 가까운 클러스터와 계속해서 연결된다(병합 알고리즘).
- 병합 과정은 내역이 남고 시각화할 수 있으며, 사용자가 미리 클러스터 수를 지정하지 않더라도 여러 단계에서 클러스터의 수와 구조를 시각화할 수 있다.
- 클러스터 간 거리는 모든 레코드 간 거리 정보를 사용하여 여러 가지 다른 방식으로 계산할 수 있다.
모델 기반 클러스터링
용어 정리
- 모델 기반 클러스터링(model-based clustering):전반적으로는 서로 비슷하지만 모든 데이터가 반드시 서로 가까울 필요는 없는 그룹고 서로 비슷하면서 데이터들이 아주 가까이에 있는 또 다른 그룹이 합께 있는 경우에 사용
- 다변량정규분포(multivariate normal distribution): p개의 변수 집합 ${X}{1}, {X}{2}, ...,{X}_{p}$에 대해 정규분포를 일반화한 것.
- 베이즈 정보기준(Bayesian information criteria)(BIC) : 후보가 될 만한 모델 집합 중에서 가장 좋은 모델을 찾는 일반적인 방법
주요 개념
- 클러스터들이 각자 서로 다른 확률분포로부터 발생한 것으로 가정한다.
- 분포(일반적으로 정규분포) 개수에 대한 가정에 따라 서로 다른 적합한 모델이 있다.
- 이 방법은 너무 많은 파라미터(오버피팅의 원인이 될 수 있다)를 사용하지 않으면서도 데이터에 적합한 모델(그리고 연관된 클러스터 개수)을 선택한다.
스케일링과 범주형 변수
용어 정리
- 스케일링(scaling): 데이터의 범주를 늘리거나 줄이는 방식으로 여러 변수들이 같은 스케일에 오도록 하는 것
- 정규화(normalization): 원래 변수 값에서 평균을 뺀 후에 표준편차로 나누는 방법으로, 스케일링의 일종이다. (유의어 : 표준화)
- 고워 거리(Gower's distance): 수치형과 범주형 데이터가 섞여 있는 경우에 모든 변수가 0~1 사이로 오도록 하는 스케일링 방법
주요 개념
- 스케일이 서로 다른 변수들을 스케일이 비슷하도록 변환하여, 스케일이 알고리즘에 큰 영향을 미치지 않도록 한다.
- 일반적인 스케일링 방법은 각 변수에서 평균을 빼고 표준편차로 나눠주는 정규화(표준화) 방법이다.
- 또 다른 방법은 고워 거리를 사용하는 것이다. 이 방법은 모든 변수를 0~1 범위로 스케일링한다(수치형과 범주형 데이터가 서로 혼합된 경우에 많이 사용된다).
'IT' 카테고리의 다른 글
스위프트(Swift) 5 배워보기 - 1. 다양한 타입 (2) | 2020.10.05 |
---|---|
파워목업(PowerMockup) 체험판 간단 사용기 (0) | 2020.10.04 |
[정리] 이것이 리눅스다 (2장~6장) (0) | 2020.10.04 |
[정리] JAVA 기본 개념 (0) | 2020.10.04 |
[정리] IT 인프라 구조 (0) | 2020.10.04 |
최근댓글