회귀분석
- 연속형 : 회귀분석 -> 지도학습
- 회귀모형에는 많은 알고리즘이 있음
- 제일 오래된 알고리즘 ??
- 연속형 : y = f(x1 ... xp) + 오차
- y는 내 개인정보의 함수이긴 한데 완전히 맞추진 못하고 오차가 존재
- 직선은 직선과 기울기 밖에 없음
- 연속형 : y = B0 + B1x1 + B2x2 + ... + Bpxp + 오차 -> 선형회귀분석
- 내 데이터를 가장 잘 설명하는 직선을 찾아야함
✅ 중선형 회귀분석
1️⃣ 중회귀모형
- 단순선형회귀분석 계산 예제 : x=체중 y=키 -> 점 5개 찍어서 직선 긋기
- 직선을 잘 긋는 방법 : 실제점하고 사이의 거리, 이 거리가 작으면 작을 수록 좋음
- 이 거리가 5개 생김. 전체적으로 잘 맞춰야하니까 거리들을 5개 동시에 줄여야함
- 에러1,에러2,에러3,에러4,에러5
- 내 오차에서 절대값을 붙여서 작게한다
- min 시그마|Error(i)|
- 최소제곱추정법(Least Square) : min 시그마 Error(i) ^2 (오차의 제곱의 합을 최소화하는 직선을 찾는다)
- 최소제곱추정법을 따라서 직선을 찾으면 됨
- 모형식
- 그럼 이걸 누가 찾아주냐 컴퓨터가 찾아줌
- 공식 : B = b = (X^TX)^-1X^Ty
- 최대 가능도법 : 수리통계학시간에 나오는 가능도? 이게 뭐임 가능도 함수를 최대화시키는 직선을 찾는다
- 직선일 때는 최소제곱법이랑 최대 가능도법이랑 같음
- 점점 어렵네..
- 머신러닝에 가면 최대 가능도법을 log loss라고 부름
- 컴퓨터가 뭘 찾아주냐 이 직선을
- 모든 통계패키지는 다 찾을 수 있거든
모형식
: y = B0 + B1x + Error
- 이름 잘 봐둔다. 절편(상수)이 필요하지.
- 단순선형회귀 분석 예측식(predidted) : y(hat) = 2(절편) + 1(기울기)(x) -> 나의 예측값은 이 직선 위에 있음
- 직선위에 있는 점들..
- y - y(hat) = 잔차
- lm : linear model
- M <- lm(모형식:y~z, 데이터셋:data=DF) : 결과가 모형임
- summary(M)
- yh(y hat) <- predict(M, newdata= (예측을 할 데이터셋) )
- DF <- DF %>% mutate(yh=predict(M, newdata=DF), res=y-yh)
- res : 잔차
- 잔차의 합은 계산해봤자 소용이 없다.
- 내가 만든 모형에서의 잔차의 합은 항상 0
- 제곱하거나 절대값을 붙이기
- MSE(Mean Squared Error) 평균제곱오차 = 1/n n(시그마)i=1 (yi - yi(hat))^2
- MAE(Mean Absolute Error) 평균절대오차 = 1/n n(시그마)i=1 |yi - yi(hat)| -> 작을 수록 좋음
- 잔차의 합이 0이기 때문에 잔차의 평균은 0
- MSE = ASE -> 그냥 1/n으로 한다
- 활용한다는 게 뭐냐하면 모형이 들어오면 이걸로 예측하겠다는 말임
- 스코어링 : 내가 기존에 만든 것을 가지고 새로운 사람들의 점수를 매기는 것
- SC <- data.frame(x=c(1.5,2.5,3.5)) : 변수는 x 하나. 개인정보만 줬다
- 내가 아는 가장 유명한 회귀분석 : (
딸
) -5+1/2*엄마키
+ 1/2*아빠키
/ (아들
) +5 +1/2*엄마키
+ 1/2*아빠키
: 간단한 문제에 연속형 이산형이 다 들어가있음
- Machine Learning 의 기본 목적 : 예측
- 통계학의 기본 목적 : 설명
2️⃣ 그림
- predict(M, DF) : 내 예측값이 150이면 실제값도 150이면 좋음. 45도 직선에 점들이 막 붙으면 좋은 것. yhat과 y의 산점도
- -1 < 상관계수 < 1 / 0 < (상관계수)^2 < 1
- 상관계수가 높아야 좋음
- 1에 가까울 수록 좋음
- 결점계수 : 0 < R^2 < 1
mse
랑 mae
는 값이 작을 수록 좋고, r2=cor(DF$y, DF$yh)^2
는 값이 클 수록 좋음