On this page
데이터 과학
- 데이터 과학 : 데이터를 사용하여 질문에 합리적인 답을 내릴 수 있게 해주는 활동
데이터 분석에 있어 기초통계, 선형모형(회귀·분산 분석 포함)은 제대로 배울 것을 권장.
중요한 요소 : 협업할 수 있는 태도, 소통능력, 폭넓은 독서(논픽션 양서)
데이터 획득 : UCI, 머신러닝 리포, 캐글, 위키피디아 데이터 세트 리스트 등…
분석 순서 : 데이터 취득·데이터 정리 → 탐색적 자료 분석 EDA : 시각화·기초통계량 계산(데이터의 패턴, 이상치 탐색) → 확증적 자료 분석 CDA : 통계적 가설·가설검정·신뢰구간(통계적 모형화 statistical modeling)
통계
특별한 이유를 제외하고는 양측검정 하는 것이 좋다.
p-value가 크다는 것은 귀무가설에 반하는 증거가 불충분하다는 것이지 귀무가설을 증명하는 증거가 있다는 것이 아니다.
1종 오류 : 귀무가설을 잘못 기각
2종 오류 : 대립가설을 잘못 기각
“유의수준 5%에서 유의하다” 라고만 하지말고 p-value 그 자체의 값도 알려야 한다.
모수는 상수다.(빈도주의자 관점)
높은 p-value를 귀무가설이 옳다는 증거로 이해하는 오류
: 높은 p-value는 대립가설을 입증하는 증거가 불충분함을 의미한다. 효과가 아주 강해도 데이터 관측치가 적으면 p-value가 높을 수 있다. 즉, 높은 p-value는 증거/데이터 불충분으로 이해해야 한다.낮은 p-value가 항상 의미있다고 이해하는 오류
: 만약 표본크기가 너무 크고, 표본평균의 증가값 자체가 너무 적다면 낮은 p-value 자체로는 의미가 없다.95% 신뢰구간의 정의 : 같은 모형에서 반복해서 표본을 얻고 신뢰구간을 얻을 때 신뢰구간이 참 모수값을 포함할 확률이 95%가 되도록 만들어진 구간
중심극한정리 : 어떤 분포든 표본평균은 대략 종모양을 따른다. 정규분포에 기반.
95% 신뢰구간의 크기는 \(\frac{1}{\sqrt{n}}\) 이다. 즉, 표본의 크기가 커지면 커질수록 신뢰구간의 크기는 줄어들고 그 줄어드는 속도는 \(\sqrt{n}\) 이다.
통계 인터뷰 질문
- p-value를 정의하라 : 귀무가설 하에서, 관찰된 통계량만큼 극단적인 값이 관찰될 확률
- 비전문가들이 이해하기 쉽게 p-value를 설명하라.
모집단, 모수, 표본
모집단(population) : 데이터가 (랜덤하게) 표본화되었다고 가정하는 분포/집단
모수(population parameter) : 모집단을 정의하는, 값을 모르는 상수
표본(sample) : 모집단으로부터 (랜덤하게) 추출된 일부 관측치
통계량(statistics) : 모수를 추정하기 위해 데이터로부터 계산된 값
귀무가설(null hypothesis) : 모수에 대한 기존(status quo)의 사실 혹은 디폴트 값
대립가설(alternative hypothesis) : 모수에 대해 귀무가설과 대립하여 증명하고 싶은 사실
가설검정(hypothesis testing) : 통계량을 사용해 귀무가설을 기각하는 절차
타입 1 오류(Type 1 error) : 가설검정 절차가 참인 귀무가설을 기각하는 사건
타입 2 오류(Type 2 error) : 가설검정 절차가 거짓인 귀무가설을 기각하지 않는 사건
유의수준(significance level) : 타입 1 오류를 범할 확률의 허용치
P-value : 만약 귀무가설이 참일 때 데이터가 보여준 정도로 특이한 값이 관측될 확률
더미 변수 : 통계 및 회귀 분석에서 사용되는 용어. 범주형 데이터를 처리하거나 특정 변수의 상태를 나타내기 위해 사용되는 가상의 이진 변수. 일반적으로, 머신 러닝 모델이나 통계 모델은 숫자형 데이터를 다루는 데 효과적. 그러나 범주형 데이터(예: 성별, 국적, 색상 등)는 이진 변수로 변환해야 한다. 이를 위해 더미 변수를 사용. 더미 변수는 원래 범주형 변수의 각 범주에 대해 0 또는 1의 값을 가지는 새로운 이진 변수. 예를 들어, 성별이라는 범주형 변수가 있을 때, 이를 더미 변수로 나타내려면 남성인 경우에는 1로, 여성인 경우에는 0으로 표현하거나 그 반대로 할 수 있다. 더미 변수를 사용하면 범주형 데이터를 포함한 모델에서 계산이 용이해지며, 해당 변수가 모델에 미치는 영향을 측정할 수 있다. 또한, 더미 변수를 사용함으로써 모델이 범주 간의 상대적인 영향을 학습할 수 있다.
t값 : \(\frac{\bar{x}-\mu_0}{\frac{s}{\sqrt{n}}}\)
PCA : 주성분 분석(Principal Component Analysis, PCA)는 다차원 데이터를 저차원으로 차원 축소하는 기술 중 하나다. 주로 데이터의 분산을 최대한 보존하면서 차원을 축소하는 데 사용된다. PCA의 목표는 데이터의 주성분(principal components)을 찾는 것인데, 주성분은 데이터의 분산이 최대가 되도록 하는 방향이 된다. 즉, 첫 번째 주성분은 데이터의 분산이 가장 큰 방향이며, 두 번째 주성분은 첫 번째 주성분과 직교하면서 데이터의 분산을 최대한 보존하는 방향이 된다. 이런 식으로 주성분은 데이터의 분산을 차례로 최대화하는 방향으로 정의된다. PCA를 통해 얻은 주성분들은 기존 변수들의 선형 조합으로 표현된다. 이를 통해 데이터를 표현하는 데 필요한 변수의 수를 줄일 수 있다. 이는 차원 축소의 효과를 가져오며, 중요한 정보를 유지하면서 데이터의 복잡성을 낮춘다. PCA는 주로 데이터 시각화, 노이즈 제거, 특성 추출 등 다양한 분야에서 활용된다. 또한, 다중공선성 문제를 해결하거나 머신러닝 모델의 학습 속도를 향상시키는 데에도 사용될 수 있다.
랜덤 변수(Random Variable)는 확률적인 실험 또는 현상의 결과를 수치적으로 나타내는 변수를 의미한다. 랜덤 변수는 표본 공간의 각 원소를 실수 값으로 매핑하는 함수로 정의되며, 확률 분포에 따라 그 값을 취한다. 랜덤 변수는 확률 이론과 통계학에서 핵심 개념 중 하나이며, 확률 분포를 통해 랜덤 변수의 특성과 동작을 설명하고 예측하는 데 사용된다. 확률 변수를 이용하면 확률적인 현상을 수학적으로 모델링하고, 이를 통해 다양한 통계적 추론 및 예측을 수행할 수 있다.
랜덤프로세스 : 확률 변수의 시퀀스 또는 함수로, 시간 또는 공간에 따라 확률적으로 변하는 프로세스를 나타낸다. 랜덤 프로세스는 시간에 따른 랜덤한 변동을 모델링하거나 시공간에서의 랜덤한 현상을 분석하는 데 사용된다. 이는 확률론과 통계학, 시계열 분석, 통신 이론, 제어 이론 등 다양한 분야에서 응용된다.
랜덤 프로세스는 다음과 같은 주요 특징을 갖는다:
확률 변수의 집합: 랜덤 프로세스는 각각의 시간 또는 위치에 대해 하나 이상의 확률 변수를 갖는다. 이 확률 변수들은 시간 또는 위치에 따라 변하는 값들을 나타낸다.
시간 또는 위치의 집합: 랜덤 프로세스는 정의된 시간 또는 위치의 집합에서 정의된다. 시간의 경우, 이를 시계열(random time series)이라고 부르기도 한다.
확률 분포의 변화: 랜덤 프로세스의 특정 시간 또는 위치에서의 값은 확률 분포를 따른다. 이 분포는 시간이나 위치에 따라 변할 수 있다.
랜덤 프로세스의 예시로는 브라운 운동(Brownian motion), 마코프 체인(Markov chain), 확률 과정(Stochastic process) 등이 있다. 이러한 랜덤 프로세스는 자연 현상, 금융 모델링, 통신 시스템 등에서 모델링과 분석에 활용된다.
표준화(Standardization) : 표준화는 데이터의 평균을 0으로, 표준 편차를 1로 만드는 변환을 의미. 표준화된 값은 Z 점수 또는 표준 점수로 불리며 다음의 공식으로 계산 \(z=\frac{x-\mu}{\sigma}\)
정규화(Normalization) : 정규화는 데이터의 범위를 [0, 1] 또는 [-1, 1]로 조정하는 변환을 의미. Min-Max 정규화는 가장 일반적인 형태로 다음의 공식으로 계산 \(x_{normalized} = \frac{x-\min(X)}{\max(X)-\min(X)}\) 정규화는 다양한 변수 간의 스케일을 맞추어줌으로써 경사 하강법과 같은 최적화 알고리즘의 수렴 속도를 향상시키고, 학습 과정을 안정화 시킨다.
*** 표준 정규 분포에서 '정규'와 정규화는 관련이 없음.. 정규분포인 데이터에 표준화를 해주면 그게 표준 정규분포!! 표준정규분포 = 평균이 0이고 표준편차가 1인 정규분포
중심 극한 정리 : n이 충분히 클 때 어떤 분포든 표본 평균의 분포는 대략 종 모양을 따른다. 정규 분포에 기반
부트스트랩 : 부트스트랩(Bootstrap)은 통계학과 머신 러닝에서 사용되는 샘플링 방법 중 하나로, 주어진 데이터로부터 중복을 허용하여 샘플을 추출하는 과정을 말한다. 일반적으로 데이터셋에서 일부를 무작위로 추출하는 과정에서는 원래 데이터셋에 존재하는 정보의 일부가 누락될 수 있다. 부트스트랩은 이러한 문제를 완화하기 위해 중복을 허용하여 여러 번의 샘플링을 수행한다.
iid(Independent and Identically Distributed) : 독립 동일 분포. 통계적 가정과 머신러닝 모델의 일부에서 사용된다. 예를 들어, 통계적 가설 검정에서 독립 동일 분포 가정은 검정 결과의 신뢰성을 보장하는 데 중요하다. 머신러닝에서는 iid 가정이 모델의 일반화 성능을 평가하는 데 사용된다. 훈련 데이터셋과 테스트 데이터셋이 iid를 만족한다면, 모델이 새로운 데이터에 대해 더 잘 일반화될 것으로 기대할 수 있다.
- Independent : 데이터 샘플들이 서로 독립적. 하나의 데이터 포인트나 관측치가 다른 것과 상관없이 독립적으로 발생했다는 것을 나타낸다. 예를 들어, 동일한 데이터셋에서 뽑은 두 개의 관측치는 서로 영향을 주지 않고 독립적으로 존재한다.
- Identically Distributed : 데이터 샘플들이 같은 확률 분포에서 추출되었다는 것을 의미한다. 모든 데이터 포인트가 동일한 특성을 가지며, 동일한 확률 분포를 따르는 것을 의미한다.
통계적 패턴인식 : 데이터에서 통계적 구조나 패턴을 추출하고 이를 활용하여 패턴을 인식하거나 분류하는 기술. 이는 주로 통계학, 머신 러닝, 인공 지능 분야에서 활용되며, 다양한 응용 분야에서 패턴을 감지하고 이해하는 데 사용된다.
Class imbalance를 고려한 모델 학습 방법 (Chat-GPT 답변)
- 가중치 조절 : 적은 수의 클래스에 대해 더 높은 가중치를 부여하여 모델이 이러한 클래스에 더 집중하도록 유도
- 샘플링 기법 : 1. Under-sampling 다수 클래스의 데이터를 일부 제거하여 클래스간의 균형을 맞춘다. 하지만 정보 손실이 발생할 수 있다. // 2. Over-sampling 소수 클래스의 데이터를 복제하거나 합성하여 데이터를 늘린다. SMOTE(Synthetic Minority Over-sampling Technique)와 같은 기술을 사용할 수 있다.
- 앙상블 방법 : 다양한 모델을 조합하여 앙상블을 형성하는 것도 클래스 불균형을 해소하는데 도움이 될 수 있다. 예를 들어, 다수결 투표를 통해 예측을 결합할 수 있다.
- 평가 지표의 선택 : 정확도(accuracy)만을 평가 지표로 사용하지 말고, 클래스 불균형을 고려한 평가 지표를 선택. 정밀도(precision), 재현율(recall), F1-score 등이 유용할 수 있다.
- 다단계 학습(?) : 다단계 분류기를 사용하여 클래스 간의 계층적인 학습을 수행할 수 있다. 이를 통해 클래스 간의 계층 구조를 고려할 수 있다.
- 클래스 가중치 설정 : 일부 모델은 클래스에 대한 가중치를 설정할 수 있는 매개변수를 제공한다. 이를 조절하여 클래스 불균형을 고려할 수 있다.
- 사전 훈련된 모델 사용 : 사전 훈련된 모델을 사용하여 초기 가중치를 설정하면 클래스 불균형에 민감한 초기화 문제를 완화할 수 있다.
- 클래스 결합 : 비슷한 클래스를 하나로 결합하거나, 다수 클래스의 몇 개를 합쳐서 클래스의 수를 줄일 수도 있다.
- 전이학습
- 데이터 증강
다단계 분류기(multi-class classifier) : 데이터를 둘 이상의 클래스로 분류하는 머신러닝 모델. 일대일/일대다/다중출력분류
SQL
유닉스 쉘
파이썬 코딩 스타일 : PEP 0008 (도움을 주는 pylint)
정보이론, 엔트로피
평가지표
손실함수
한계효용체감
Gapminder(http://www.gapminder.org/) :스웨덴의 비영리 통계 분석 서비스. 틈새주의(mind the gap)라는 지하철 경고문에서 영감을 얻은 이름은 세계관과 사실/데이터 간의 간극을 조심하고 좁히자는 이상을 반영
7. 데이터 종류에 따른 분석 기법
7.2 모든 데이터에 행해야 할 분석
각각의 변수형을 다루기 전에, 어떤 변수든 기본적으로 행할 분석 (R 기준)
데이터 내용, 구조, 타입을 파악 head()
데이터의 요약 통계량을 파악 summary() 함수가 유용
결측치가 있는지 살펴본다. summary() 함수는 결측치의 갯수를 보여준다.
무작정 시각화를 해본다. plot(), pairs()를 돌려보면 좋다.
7.3 수량형 변수의 분석
데이터 분포의 시각화: 히스토그램, 상자그림, 확률밀도함수 시각화
요약 통계량 계산
데이터의 정규성 검사: qqplot, qqline 은 분포가 정규분포와 얼마나 유사한지 검사하는데 사용
가설검정과 신뢰구간: t-test 진행, 일변량 t-검정과 신뢰구간 구하기. (데이터의 분포가 정규분포가 아니라도 큰 문제가 되지 않는다.)
이상점 찾아보기: 로버스트 통계량(이상점의 영향을 적게 받는 방법) 계산
7.6 수량형 X, 수량형 Y의 분석
산점도를 통해 관계의 모양 파악
상관계수를 계산. 상관계수는 선형 관계의 강도만을 재는 것을 염두에 둔다.
선형 모형을 적합. 모형의 적합도와 모수의 의미를 살펴본다. 잔차의 분표를 살펴본다. 잔차에 이상점은 있는가? 잔차가 예측변수에 따라서 다른 분산을 갖지는 않은가?
이상치가 있을 때는 로버스트 회귀분석을 사용한다.
비선형 데이터에는 LOESS 등의 평활법을 사용한다.
7.6.2 상관계수
\[r=\frac{\sum^n_{i=1}(x_i - \bar{x})(y_i-\bar{y})}{\sqrt{\sum^n_{i=1}(x_i-\bar{x})^2}\sqrt{\sum^n_{i=1}(y_i-\bar{y})^2}}\]
피어슨 상관계수는 두 변량의 ‘선형(linear)’ 관계의 강도를 -1(완벽한 선형 감소 관계)에서 1(완벽한 선형 증가 관계) 사이의 숫자로 나타낸다. 0은 선형 관계가 없음을 나타낸다.
산점도를 그리지 않고 상관계수만 보는 것은 위험하다.
상관계수는 또한 이상치의 영향을 많이 받으므로 로버스트한 방법인 켄탈의 \(\tau\) 나 스피어맨의 \(\rho\) 로 통계량을 계산하는 것도 좋은 방법이다.
7.6.3 선형회귀 모형 적합
\[Y_i\sim \beta_0 + \beta_1 x_{1i} + ... + \beta_p x_{pi} + \epsilon_i,\quad \epsilon_i \sim {}_{iid} N(0,\sigma^2)\]
- 여기서 \(x_{ij}\)는 j번째 설명변수의 i번째 관측치를 나타낸다. 모수는 절편(intercept) \(\beta_0\), 경사(slope) \(\beta_1, \beta_2, ..., \beta_p\), 오차항(error term)의 분포의 분산 \(\sigma^2\) 이다. 설명변수의 개수가 하나밖에 없을 때, 즉 \(p=1\) 일 때 이 모형은 하나의 설명변수와 하나의 반응변수로 이루어진 가장 단순한 선형회귀 모형이 된다.
\[Y_i \sim \beta_0 + \beta_1 x_i + \epsilon_i , \quad \epsilon_i \sim {}_{iid}N(0, \sigma^2)\]
이처럼 하나의 \(X\) 변수로 이루어진 모형을 단순 회귀분석 모형(simple regression model)이라고 한다.
lm()과 summary.lm() 함수는 위의 선형 모형을 최소제곱법(least squares method)으로 추정한다. 즉, 잔차의 제곱합을 최소화하는 다음 문제를 풀어서 추정치를 구한다.
\[(\hat{\beta_0}, \hat{\beta_1}) = \text{arg min}_{\beta_0, \beta_1} \sum^n_{i=1}[y_i - (\beta_0 + \beta_1 x_i)]^2\]
- 적합된 추정치는 보통 햇(hat, \(\hat{}\) )을 붙인다.
7.6.4 모형 적합도 검정
총 제곱합(total sum of squares) \(\text{SST} = \sum^n_{i=1}(y_i - \bar{y})^2\) 은 모형화 전의 반응변수의 변동을,
회귀 제곱합(regression sum of square) \(\text{SSR} = \sum^n_{i=1}(\hat{y}-\bar{y})^2\) 은 회귀분석 모형으로 설명되는 반응변수의 변동을,
잔차 제곱합(error sum of squares) \(\text{SSE} = \sum^n_{i=1}(y_i - \hat{y_i})^2\) 은 모형으로 설명되지 않는 반응 변수의 변동을 나타낸다.
최소제곱법으로 \(\hat{\beta_j}\) 그리고 \(\hat{y_i}\) 를 추정할 때 총 제곱합은 다음처럼 분할된다.
\[\text{SST} = \text{SSR} + \text{SSE}\]
결정계수(coefficient of determination): 반응변수의 총 변동 중 얼마만큼이 선형 모형으로 설명이 되는지를 나타내며 0에서 1사이 값이고 1에 가까울수록 설명변수의 설명력이 높음을 나타낸다.
\[R^2 = \frac{\text{SSR}}{\text{SST}}\]
수학적으로 증명 가능한 사실은, 회귀 모형에서는 설명변수를 모형에 추가할 때마다, 즉 설명변수의 개수가 늘어날 때마다 \(R^2\) 값은 항상 증가한다는 것!
따라서 \(R^2\) 만을 모형 평가에 사용하면 무조건 X 변수가 많은 모형이 이기게 된다.
Adjusted R-squared는 \(R^2\) 의 이러한 문제점을 보완하기 위해 다음처럼 약간의 수정을 가한 값이다.
\[\text{Adjusted}\ R^2 = 1-(1-R^2)\frac{n-1}{n-p-1} = R^2 - (1-R^2)\frac{p}{n-p-1}\]
7.6.6 선형회귀 모형의 가정 진단
이론적으로 선형회귀 결과가 의미 있으려면 다음의 여러 가지 조건이 충족되어야 한다.
\(x\) 와 \(y\) 의 관계가 선형이다.
잔차의 분포가 독립이다.
잔차의 분포가 동일하다
잔차의 분포가 \(N(0, \sigma^2)\) 이다.
가장 만족하기 어려운 조건 4는 다행히도(!) 아주 중요하지는 않다.
하지만 조건 3이 어긋나는 경우, 특히 분산이 \(x\) 값에 따라 변하는 것은 추정치와 오차의 유효성에 영향을 준다.
이러한 오차 분포를 ‘이분산성 오차 분포(heteroscedastic error distribution)’ 라고 부른다. (반대로 오차의 분산이 x 값에 따라 일정한 것은 ’homoscedastic’하다고 한다.)
이러한 경우에는 보통 가중회귀분석(weighted regression) 기법을 사용하면 된다.
그리고 조건 1, 2가 어긋난다면 모든 모수가 의미가 왜곡되게 되므로 시각적으로 잔차의 분포가 x 변수에 따라, 그리고 y 변수에 따라 변하는지를 살펴볼 필요가 있다.
이러한 검토를 회귀분석 진단(regression diagnostic)이라고 한다.
회귀분석 진단 중 중요한 수치 중 하나는 레버리지(leverage)다.
이를 이해하기 위해 회귀분석 모형을 약간 행렬/선형대수적으로 설명해보면 적합된 \(\hat{\beta}, y\) 벡터값은 다음처럼 표현될 수 있다.
\[\hat{\beta} = (X^TX)^{-1}X^T y\]
\[\hat{y} = X\hat{\beta} = X(X^TX)^{-1}X^Ty = Hy\]
여기서 \(y, \hat{y}\) 는 길이가 n인 벡터이고, \(\hat{\beta}\) 는 p+1인 벡터, \(X\) 는 각 행 \(i\) 가 p+1 차원의 관측치 \([1, x_{i1}, ..., x_{ip}]\) 인 n * (p+1) 차원 행렬이다.
회귀분석은 선형대수적으로 n차원의 점 \(y=(y_1, ..., y_n)\) 을 \(X\) 행렬의 열들로 생성(span)되는 p차원의 평면에 투영(projection)해서 \(\hat{y}\) 를 얻는 작업이다.
위의 수식을 살펴보면 투영행렬(projection matrix)은 바로 n*n 차원의 행렬 \(H = X(X^TX)^{-1}X^T\) 이다. 이 행렬은 영향행렬(influence matrix) 혹은 hat matrix 라고도 불린다.
레버리지 \(h_{ii}\) 는 바로 이 행렬의 \(i\) 번째 대각원소(diagonal element)다. 만약 \(h_{ii}\) 값이 크면 \(y_i\) 값의 작은 변화에도 적합값 \(\hat{y}\) 가 \(y_i\) 방향으로 더 많이 ‘끌려가게’ 된다. 즉, 더 많이 영향(influence)을 받게 되는 것이다
7.6.8 비선형/비모수적 방법, 평활법과 LOESS
앞서 상관계수는 선형 관계의 강도만을 측정함을 보였다. 선형회귀분석은 이와 마찬가지로 모형 자체가 ‘선형’ 관계를 가정한다.
비선형적인 \(x\)-\(y\) 관계를 추정해내기 위해서는 \(y=\text{exp}(a+bx)\) 모형 같은 비선형회귀분석(nonlinear regression)을 사용하거나 \(y=a+bx+cx^2+dx^3\) 같은 다항회귀분석(polynomial regression)을 사용하기도 한다.
하지만 이러한 모형들보다 손쉽게 사용할 수 있는 것은 모형에 아무 가정도 하지 않는 평활법(smoothing)이다. 즉,
\[y_i = f(x_i) + \epsilon_i, \ \epsilon_i\sim_{iid} (0, \sigma^2)\]
여기서 \(f(x)\) 는 ‘매끄러운’(보통 두 번 미분 가능한 것으로 정의) 함수면 된다. 선형함수일 필요가 없다.
그리고 \({}_{iid}(0, \sigma^2)\) 은 잔차 분포로 평균이 0, 분산이 \(\sigma^2\) 인 분포를 나타낸다. 정규분포 \(N(0, \sigma^2)\) 일 필요가 없다.
다양한 평활법 중 국소 회귀(local regression) 방법인 LOESS(locally weighted scatterplot smoothing)가 많이 사용된다.link
LOESS는 기본적으로 각 예측변수 \(x_0\) 값에서 가까운 k개의 \((x_i, y_i)\) 관측치들을 사용하여 2차 다항회귀 모형을 적합하여 \(\hat{f}(x_0)\) 를 추정하고, 이것을 다양한 \(x_0\) 값에 대해 반복하는 것이다.
크기가 변하는 윈도우(window)를 왼쪽에서 오른쪽으로 이동하며 로컬(local)하게 간단한 모형을 적합하는 것이 아이디어다. 여기서 평활의 정도인 파라미터 k 값은 교차검증(cross-validation)으로 최적화한다.
7.7 범주형 x, 수량형 y
mpg 데이터에서 5개의 차종 간에 연비의 차이가 있는지, 3개의 혈압약 간에 혈압의 감소량이 차이가 있는지 등의 문제를 생각해보자.
차종, 3개의 혈압약 등은 범주형 설명변수로 볼 수 있다.
연비, 혈압감소 등은 수량형 반응변수로 볼 수 있다.
이런 데이터를 분석할 때는 다음 방법들을 사용하면 된다.
병렬상자그림(side-by-side boxplot) 을 이용하여 데이터를 시각화한다. 집단 간에 평균과 중앙값의 차이가 존재하는지, 이상치는 존재하는지, 각 집단의 분산은 유사한지 등을 살펴보자.
ANOVA 선형 모형을 적합한다.
잔차의 분포를 살펴본다. 이상점은 없는가? 모형의 가정은 만족하는가?
7.7.1 분산분석(ANOVA)
설명변수가 범주형이고, 반응변수가 수량형일 경우에는 선형 모형의 특별한 예인 분산분석(analysis of variance, ANOVA)을 사용한다(집단의 개수가 2개일 경우에 사용하는 two-sample t-test는 특별한 경우다).
분산분석 관련해서는 분산분석/선형 모형 교재를 통해 심도있게 학습할 것을 권한다.
7.7.2 선형 모형, t-검정의 위대함
한가지 기억해둘 것은 앞서 살펴본 회귀분석이나, 지금 살펴보는 ANOVA 분산분석이나 수학적으로는 동일한 선형 모형이라는 것이다.
모수에 대한 검정 절차로 사용하는 t-검정도 동일하고, 모형의 적합도를 평가하는 Multiple \(R^2\), Adjusted-\(R^2\), F-test 등도 동일하다! 선형 모형은 이처럼 매우 중요하다.
7.7.4 분산분석의 진단
이론적으로, 분산분석 결과가 의미 있기 위해서는 다음 여러 가지 가정이 충족되어야 한다.
잔차의 분포가 독립이다.
잔차의 분산이 동일하다.
잔차의 분포가 \(N(0, \sigma^2)\) 이다.
7.8 수량형 x, 범주형 y(성공-실패)
X와 (jitter된) Y 변수의 산점도를 그려본다. 그리고 Y 변수의 그룹 별로 X 변수의 병렬 상자그림을 그려본다. Y 변수 값에 따라 X 변수의 분포가 차이가 있는지, 두 변수 간에 어떤 관계가 있는지, 이상치는 존재하는지,
표본 로그오즈(log odds, 성공확률이 \(\mu\)라고 할 때 \(\text{log}(\mu/(1-\mu)\))를 로그오즈라 한다)와 x의 산점도에 선형 패턴이 있는지 등을 살펴보자.
glm() 함수로 일반화 선형 모형을 적합한다. summary.glm() 함수로 심도있는 결과를 얻는다.
plot.glm()으로 잔차의 분포를 살펴본다. 이상점은 없는가? 모형의 가정은 만족하는가?
7.8.1 일반화 선형 모형, 로짓/로지스틱 함수*
- 성공-실패 범주형 y 변수와 수량형(그리고 범주형) 설명변수를 가진 데이터는 전통적인 선형 모형으로 다룰 수 없다. 왜냐하면 전통적인 선형 모형은 반응변수 y의 범위가 무한대이기 때문이다.
… 여기부터 추후 다시 다루기
13. 빅데이터 회귀분석 I: 부동산 가격 예측
13.1 회귀분석이란?
- 연속형과 수치형 반응변수를 예측하는 회귀분석 기법 살펴보기
13.1.1 정확도 지표, RMSE
분류분석에서는 정확도 지표로 이항편차, 혼동행렬, ROC곡선, AUC 등을 사용하는 데 반해, 회귀분석에서는 훨씬 간단한 RMSE(Root Mean Squared Error)가 흔히 사용된다.
관측값이 \(y_i\) 이고, 예측값이 \(\hat{y_i}\) 일 때 RMSE는 다음처럼 주어진다.
\[\text{RMSE} = \sqrt{\frac{1}{n}\sum^n_{i=1}(y_i-\hat{y_i})^2}\]
RMSE 예측오차 값이 작을수록 더 정확한 모형이다.
13.1.2 회귀분석 문제 접근법
회귀분석 문제의 큰 그림은 앞 장에서 살펴본 분류분석 방법과 유사하다. 반복하면,
훈련세트로 (전체 데이터의 60%) 다양한 모형을 적합
검증세트로 (전체 데이터의 20%) 모형을 평가, 비교하고, 최종 모형을 선택한다.
테스트세트로 (전체 데이터의 20%) 선발된 최종 모형의 일반화 능력을 계산한다.
조금 더 세부적인 단계를 기술하면 다음과 같다.
데이터의 구조를 파악한다.
데이터를 랜덤하게 훈련세트, 검증세트, 테스트세트로 나눈다.
시각화와 간단한 통계로 y 변수와 x 변수 간의 관계를 파악한다. 어떤 x 변수가 반응변수와 상관 관계가 높은가? 이상치는 없는가? 변환이 필요한 x 변수는 없는가?
시각화와 간단한 통계로 x 변수들 간의 관계를 파악한다. 상관 관계가 아주 높은 것은 없는가? 비선형적인 관계는 없는가? 이상치는 없는가?
다양한 회귀분석 모형을 적합해본다. 이 책에서는 다음 방법들을 다룰 것이다.
선형 분석
라쏘
나무 모형
랜덤 포레스트
부스팅
각 회귀분석 모형에서 다음 내용을 살펴보자.
변수의 유의성: 모형이 말이 되는가? 기대한 변수가 중요한 변수로 선정되었는가?
적절한 시각화: 로지스틱 분석, 나무 모형 등 모형마다 도움되는 시각화를 제공한다.
모형의 정확도: 교차검증을 이용하여 검증세트에서 계산하여야 한다.
검증세트를 사용하여 최종 모형을 선택한다. 즉, 다양한 모형을 검증세트를 사용해 평가하고, 가장 예측 성능이 좋은 모형을 최종 모형으로 선발한다.
테스트세트를 사용하여 최종 선발된 모형의 일반화 능력을 살펴본다. 다시 말하지만, 테스트세트는 모형 적합 과정에 사용되어서는 안된다! 즉, 테스트세트는 숨겨 두었다가 이 때에만 꺼내서 사용해야 한다.
13.2 회귀분석 예제: 부동산 가격 예측
~~
13.5.1 선형회귀 모형에서 변수 선택
~~
- ‘지나치게 복잡한’ 모형의 92개 모수 중에서 가장 중요한 모수를 선택하기 위해서 MASS::stepAIC() 함수를 사용할 수 있다. 스텝(stepwise)변수 선택으로 (일반화)선형회귀 모형에서 중요한 변수를 자동으로 선택해준다.
13.6 라쏘 모형 적합
13.7 나무 모형
13.8 랜덤 포레스트
13.9 부스팅
13.10 최종 모형 선택과 테스트세트 오차 계산
~~
13.10.1 회귀분석의 오차와 시각화
여러 회귀분석 방법의 오차를 비교해서 시각화하는 방법 중 하나는 예측오차의 분포(validation set의)를 병렬 상자그림으로 보여주는 것이다.
또 다른 예측값의 시각화는 8장에서 살펴본 모형들 간의 예측값들끼리 산점도행렬을 그리고 상관계수를 표시하는 것이다. (p.299)
14. 빅데이터 회귀분석 II: 와인 품질 예측
14.1 와인 품질 데이터 소개
와인의 화학적인 특성을 나타내는 11가지 변수를 예측변수로 사용하여 얼마나 좋은 품질의 와인인지를 예측하는 회귀분석 문제.
~~
14.3 데이터의 시각화
~~
16.3 인터뷰 준비
16.3.1 통계 개념 복습
초급 통계
P-value란?
표준 편차란?
표준오차란?
신뢰구간과 표본 크기의 관계는?
t-검정의 의미는?
선형 모형의 가정
선형 모형 모수추정 공식은?
선형 모형에서 범주형 설명변수는 어떻게 다뤄지는가? 모형행렬이란?
중급-고급 통계
베이즈 확률 계산
일반화 선형 모형이란?
분류분석 모형
과적합이란?
변수 선택의 이유는?
교차검증이란?
고급 통계
부트스트랩이란?
순열검정이란?
정규화된 모형을 설명하라.
라쏘 모형이란? 능형회귀 모형이란? 두 모형의 차이는?
다변량 모형
16.3.2 코딩 복습
R
파이썬
SQL: 다양한 join 명령어(inner join, left join, right join, outer join)의 차이와 사용법 그리고 group by, subquery 등의 사용
일반 팁
칠판에 코딩하는 연습을 해두자. 컴퓨터에서 하는 것과 느낌이 다르다.
간단한 알고리즘 질문을 하는 경우가 많다. 간단한 정렬(sorting) 알고리즘 한 둘은 익히도록 하자. 그리고 복잡도를 나타내는 O() 표현도 익히면 좋다.
데이터구조 중 리스트, 해시/딕셔너리 등은 알고 있도록 하자.
문제 풀이 과정을 쓰고만 있지 말고 말로 표현하도록 하자. 영어로 ’thinking out loud’라고 한다.
스타일 가이드를 준수하는 깨끗한 코드를 쓰면 좋다.
16.4 행동질문과 상황질문
행동질문(behavioral questions)과 상황질문(situational questions)은 테크니컬 질문 외에 사람의 기술적, 인성적 면모를 파악하는 질문들이다.
행동질문은 “과거에 어떤 상황에서 어떤 적이 있었는가?”를 묻는 질문이다.
상황질문은 “만약 어떤 상황이 있었다면 어떻게 할 것인가?”를 묻는 질문이다.
각 경우에는 다음 형태로 답을 하는 것이 이상적이다.
P: problem. 어떤 문제가 있었는가?
A: action. 어떤 행동을 취했는가?
R: results. 어떤 결과를 얻었는가?
아래의 몇 가지 예를 들어보자.
혁신의 경험은?
P: 고객데이터 분석시스템이 없었다. 데이터를 모으기는 했지만 사용되지 않았다.
A: 고객데이터를 분석하여 그래프화하는 프로토타입을 개발하였다.
R: 회사에서 널리 사용하는 시스템이 되었다. 수백만 달러의 추가수익으로 이어졌다. 전담 팀이 구성되었다.
리더십을 발휘해본 경험은?
P: 작은 연구팀을 맡게 되었다. 열정은 있지만 경험이 부족한 일꾼들이었다.
A: 경험을 쌓아주기 위해 다양한 실제 프로젝트 주제를 제공하였다. 효율적인 작업을 위해 베스트 프랙티스를 설정하였다. 여러 도구들을 체계적으로 사용하였다. 깃을 이용한 코드관리, 구글 독스를 사용한 문서화, 지라(JIRA)를 사용한 프로세스 관리를 사용하였다.
R: 팀의 생산성이 30% 향상되었다.
불편한 상관/동료를 겪은 경험은?
P: 상관이 테크니컬 리더십이 부족하였다. 정보 공유도 충분하지 않았다.
A: 개인적으로 만나서 신뢰관계를 형성하였다. 정보 공유를 위한 여러 도구와 프로세스를 제안하였다.
R: 주어진 환경 하에서 최선의 결과를 이끌어내었다.
팀 간의 불화를 경험한 적이 있는가?
P: 팀 간에 장벽이 있었다. 자신의 밥그릇을 보호하려는 경향 때문이었다.
A: 먼저 적극적으로 자처하여 도움을 주었다.
R: 조금씩 팀 간의 신뢰가 쌓여갔다. 세 달 후에는 정기적인 협력 모임을 가지게 되었다.
구글의 인사담당 이사인 라즐로 보그(Laszlo Bock)의 ’Work Rules’에서 이러한 질문의 효용을 깊이 다루고 있다.
행동질문과 상황질문의 예를 더 찾고자 한다면 온라인에서 ’behavioral interview questions’를 검색하면 된다. 그리고 US Department of Veterans Affairs에서는 Performance Based Interviewing(PBI)이라는 이름으로 다양한 질문들을 제공하고 있다.
16.5 취업의 패러독스
취업의 패러독스는 이것이다. “압도적으로 많은 회사가 경력자를 찾는다.” 그렇다면 경력자는 과연 어디서 처음 취업이 되어서 그런 경력을 쌓았을까?
이 패러독스는 많은 직종의 현실이지만 데이터 과학 분야에서는 더 심한 편이다. 그래서 가능한 한 실제 직장 상황에 가까운 프로젝트 경험을 쌓는 것이 도움이 된다.
학교에 있다면 특히 석사나 박사 과정에 있다면 학교에서 의미 있는 프로젝트를 수행한 내용을 이력서나 링크드인 프로파일에 쓸 수 있을 것이다.
다른 직종에 있다면 그리고 운이 좋게 현재 있는 직종에서 의미 있는 데이터를 구할 수 있다면 그 데이터를 사용하여 데이터 분석을 해보는 것도 도움이 될 것이다.
그러므로 멀리 내다보고, 현재 있는 곳에서 최선을 다해 데이터 과학에 관한 훈련을 하고, 프로젝트 경험을 얻는 것이 도움이 된다.