학습 데이터(train data)로 피처와 레이블값(결정 값, 클래스 값)을 머신러닝 알고리즘 학습해 모델을 생성 > 생성된 모델에 새로운 데이터(test data) 값이 주어졌을 때 미지의 레이블 값(결정 값, 클래스 값)을 예측 시 사용하는 알고리즘 분류는 지도학습의 대표적인 유형
로지스틱회귀(Logistic regression) : 회귀라는 단어가 들어가지만 , 분류를 위한 모델입니다. 종속변수 y와 한개이상의 독립변수 x와의 선형상관관계를 모델링하는 기법. 1번 2번 3번으로 바로 분류 X -> 1번과 1번이 아닌것 > 2번과 2번이 아닌것
로지스틱 연속형을 인풋 데이터를 통해 이산형 아웃풋을 얻는, 바이너리 클래시피케이션 테스크에 사용되며 바이너리 클래시피케이션은 두가지 값으로 분류해주는 것을 의미합니다. 그리고 그 두가지 범주를 0이나 1로 표현하였기 때문에 시그모이드라는 함수를 사용해서 0에서 1사이의 확률 값을 만들어주었습니다. 마지막으로 크로스앤트로피라는 방법을 사용해서 추정된 값과 참값 사이의 오차를 계산해주어 오차를 줄이도록 만들어 준 것입니다.
서포트벡터머신 : 데이터를 사상공간에 표현했을때 데이터의 경계사이에 선을 그어 최대 마진을 가지는 경계선을 가지는 알고리즘
개별 클래스 간의 최대 분류 마진을 효과적으로 찾아주는 알고리즘
나이브베이즈(Naive Bayes) : 각각의 특성이 독립적이라고 가정하는 조건부 확률. 순진한 가정 사전 확률을 구성하는 사건은 모두 독립사건이다.
의사결정나무(Decision Tree, 결정트리학습): 상위 노드의 의사결정 규칙에 따라 하위 노드로 데이터를 나눠 나가며 분류나 예측을 수행해 나가는 모델
데이터 균일도에 따른 규칙 기반의 알고리즘
쉽고 유연하며, 스케일링이나 정규화의 영향이 적지만 과적합으로 인한 예측 성능 저하 문제가 발생할 수 있다.
앙상블에 많이 사용된다.
랜덤포레스트 : 의사결정 나무의 앙상블모델 *앙상블 (Ensemble)?여러개의 모델을 학습시켜, 그 모델들의 예측결과를 활용하여 더 정확한 예측값을 구하는 모델이다 앙상블 학습에는 배깅(나온결과를 투표 혹은 평균활용)과 부스팅의 방식이 있다
여러 머신러닝 알고리즘들을 결합해 사용하는 알고리즘
보통 약한 학습기인 결정트리를 이용한다.
k- 최근접 이웃(K-nearest neighbor algorithm): 새로운 데이터를 예측할때 훈련데이터셋에서 가장 가까운 이웃 데이터를 찾아 예측한다 여러개의 이웃데이터를 찾을 경우에는 더 많은 이웃을 따라간다
베이즈 정리(Bayes' Theorem)
베이즈 정리
사후확률 = 우도 * 사전확률 / 증거 조건부 확률 ; 사건 B가 일어난 상태에서 A사건이 일어날 확률
예시) 광고라는 단어가 들어갔을떄, 스팸메일일 확률
P(스팸|광고) = P(광고|스팸) * P(스팸) = 4/20 * 20/100 = 0.8
P(광고) 5/100
광고라는 단어가 들어가면 80%가 스팸메일이다.
베이지안 통계(Bayesian Statistics)
베이지안
실제로 관측된 데이터를 사용하여 확률 분포를 고려
회귀분석(Regression Analysis)
- 독립변인이 종속변인에 영향을 미치는지 알아보고자 할때 실시하는 분석방법 - 단순 선형 회귀 분석은 독립변수 X(설명변수) 에 대하여 종속변수 Y(반응변수) 들 사이의 관계를 수학적 모형을 이용하여 규명하는 것 - 목적 : 이미 알고있는 표본 데이터를 통해 모집단의 분포를 추정
- 회귀(regression) 의 사전적 의미 ? go back to an earlier and worse condition (옛날의 대표적인 상태로 돌아감
(예시) 몸무게 = a*키 + b 키 = 독립변수 몸무게 = 종속변수
회귀의 기본원리
선형 회귀 모델의 직선과 실제 값 사이의 차를 뜻하는 residual error를 최소화 시키는 것이다
x값에 따라 여러 y값이 나오겠지만, 결국 추론된 직선으로 회귀할 것이다
회귀분석에서의 통계 검정
만들어진 회귀모형이 유의한지
유의한 예측모형인가? - 주어진 모든 변수들이 함께 어느 정도 예측변수의 변량을 설명(예측)하는가? - 결정계수 R2의 크기에 대해 F분포로 결정
회귀계수들이 유의한지
어떤 예측 변수들이 유의한지 - 각 독립변수(X)의 회귀 계수(a)가 유의한가?? - t- 검정을 사용
정규화(Regularization)
<첫번째 그림>을 보면 직선 방정식을 이용하여 선을 그었습니다. 데이터와 직선의 차이가 꽤 나네요. 정확한 예측은 아닙니다. 이런 경우를 underfitted 또는 high bias 라고 합니다. bias가 큰 모델은 test data를 위한 학습이 덜 된 것이 원인이고, 이는 train data와 test data간의 차이가 너무 커서 train data로만 학습한 모델은 test data를 맞출수가 없는 것
<두번째 그림>이 가장 좋은 모델이라고 말할 수 있습니다. 어느정도 데이터에 적합하면서 bias와 variance에 대해서도 적절합니다.
<세번째 그림>을 보면 현재 데이터로는 잘 맞겠지만 다른 데이터를 사용한다면 정확한 예측을 하지 못합니다. 이런 경우는 overfitting 또는 high variance 라고 합니다. variance가 큰 모델은 train data에 over-fitting된 것이 원인이고, 이는 너무 train data에 fitting된 모델을 만들어서 test data에서 오차가 발생한 것을 의미합니다.
Bias와 Variance
Bias와 Variance = 모델의 loss 또는 error * Bias : 참 값들과 추정 값들의 차이(or 평균간의 거리) => <추정값의 평균>과 <참 값>들간의 차이 * Variance : 추정 값들의 흩어진 정도 => <추정 값의 평균>과 <추정 값>들간의 차이 => loss => 참값과는 관계없이 추정값들의 흩어진 정도만 의미!
(a) 가장 좋은 모델 (b) 추정 값들을 평균한 값은 참 값과 비슷한데(bias가 작은데), 추정 값들의 variance가 커서 loss가 큰 모델 (c) bias가 크고, variance가 작은 모델 (d) bias, variance 둘 다 큰 모델
Train data , Test data
train data와 test data 관점에서 살펴보도록 하겠습니다.
train data에서는 (a)와 같은 결과 이었는데(train loss가 작았는데),
test data를 넣어보니 (b),(c),(d)의 결과가 나왔다고 해 보겠습니다.
3 가지 모두 train data에서는 loss가 작았는데 test data에 적용해 보니 loss가 커졌습니다
(b),(c),(d)모두 에러가 크지만 서로 다른 유형의 에러
(b) variance가 큰 (b)모델 / train data에 over-fitting된 것이 원인이고, 이는 너무 train data에 fitting된 모델을 만들어서 test data에서 오차가 발생 (c) bias가 큰 (c) 모델은 test data를 위한 학습이 덜 된 것이 원인이고, 이는 train data와 test data간의 차이가 너무 커서 train data로만 학습한 모델은 test data를 맞출수가 없는 것입니다. 만일, (c) 그림이 train data에 대한 것이라면 train data에 대해 under-fitting 즉, 학습이 덜 된 모델이라고 할 수 있습니다. (d) 는 둘 다의 경우로 생각할 수 있겠습니다.
선형 회귀분석에서 중요한 가정
선형성 : 종속변수(Y)와 독립변수(X) 사이에는 선형관계가 있다 종속변수와 독립변수 사이에 비션형 관계가 있고 선형회귀모델이 적합하지 않고 예측이 실제와는 거리가 멀다는 결정적인 가정
정규성 : Residual error는 정규분포로 가정
동질성 : 잔차(오류)는 X의 일정한 분산을 가짐
회귀
단순회귀(선형회귀) = X ~ Y => y = ax+b
다항회귀 => y = ax**2 + bx + c
다중회귀 : 이렇게 단순히 두개의 관계를 구하는게 아니라 Real World에서는 여러개의 요소 가 Y에 영향 미칠수있
X1, X2, X3 ... ~ Y
y = ax1 + bx2 + cx3 ...
어떤 회사 주식이 있다고 하면, x가 '금리'뿐만이 아니라, => 금리, 환율 , 경쟁사 이슈 등 수많은 요소가 들어가는게 대다수이겠죠?
y = w1x1 + w2x2 + w3x3 ...
w = weight = 가중치 = 얼마나 x가 중요한지
다중회귀의 문제점?
기본적으로 "과적합"에 취약함
y = w1x1 + w2x2 + w3x3 ...
w1 , w2, ... , w100 까지도 될수도있음 -> Real World에서 영향을 미치는 변수는 100만개도 넘을거기 때문에
따라서 !! "규제" 해야될 필요성이 있다
규제 = Regulation
(예시) 독립변수는 5개만해, 그래야 알아먹지!!
W1**2 + W2**2 + W3**3 + ... < "특정 숫자"
|W1| + |W2| + |W3| + ... < "특정 숫자"
Ridge regression (릿지 리그레션)
W1**2 + W2**2 + W3**3 + ... < "특정 숫자"
비중(weight) 하나하나 영향력을 크게 매기고 싶으면 사용 -> 왜냐? 제곱이기 때문에 효과가 그대로 감, 낮은 웨이트느 ㄴ확죽어 센 웨이트는 확 세게 보임,
Lasso regression(라쏘 리그레션)
|W1| + |W2| + |W3| + ... < "특정 숫자"
요곤 상태적으로 순함, 실제로 해봤을떄 이 회귀가 적합하겠다 하는 걸 판단해야지
상관분석(Correlation Analysis)
두 변수 간에 어떤 선형적 관계를 가지는 지 분석하는 기법으로 상관계수를 이용하여 측정한다.