(비전공자들을 위한 초간단 요약 및 정리입니다.! 잘못된 부분이나 덧붙일 부분 있으면 댓글 달아주세요)
1. 회귀분석이란?
-> 나 공부 10시간 하고, 게임 3시간 했는데 시험 몇 점 나올까??
- 독립 변수 (공부, 게임 = X) -> 시험 점수(시험 점수 = y)
- 새로운 독립 변수 값들이 주어 을때 시험 점수를 예측하는 것
-> 공부 1시간 더 하면 시험점수는 몇점이나 오를까?
- 독립 변수의 영향력 (계수 구하기)
즉, 저희 수업에서 회귀분석은
기존 데이터들을 컴퓨터에게 학습시켜서
어떤 변수가 얼마나 영향을 끼치는지(계수) 찾아내고 // 미래값을 예측(y값) 하는 과정이라고 볼 수 있습니다!
2.결정계수(R^2)와 p-value
> 그래서 컴퓨터가 예측한거 얼마만큼 믿을 수 있어? ->> 결정계수 (R^2)
- 시험점수(y)에 중요한게 공부(x1)가 70%, 게임(x2)이 30% 고 다른건 아무것도 영향을 끼치지 않는다고 가정하면 공부랑 게임 얼만큼 하는지만 알면 시험점수를 100% 예측할 수 있겠죠 이런경우가 바로 결정계수가 1 (100% 맞출 수 있다는 뜻) . 하지만 공부 데이터만 가지고 컴퓨터를 학습시켰다면? 30%는 좀 틀릴 수도 있겠죠.! 이러면 결정게수가 0.7
- 즉 결정계수는 0(아무것도 못맞춤) ~ 1(다 맞춤) 사이 값으로 나옵니다.
> 이거 혹시 우연은 아님? ->> p-value(유의미성)
학습을 했는데 정말 우연히 이런 결과가 나왔을 수도 있겠죠 ? 그 확율을 p-value라고 합니다
일반적으로 p-value가 0.05보다 높으면 (5%) 통계적으로 무의미하다고 합니다. 반대로 그 이하면 통계적으로 유의미하다고 합니다
- 예를들어 공부라는 변수가 p-value가 0.001라면 "공부하면 점수 오른다는 결과가 단순히 우연일 확률은 0.1%뿐"이라는 말. 즉, 공부는 점수에 확실히 영향을 준다! 라고 할 수 있겠죠
그래서 저희 수업에서는
1) 다양한 모델들로 컴퓨터를 학습시키고
-> model = LinearRegression().fit(X,y) # fit()이 나오면 학습시킨다는 뜻! (LinearRegression 이외에도 RandomForestRegressor나 DecisionTreeRegressor, SVR등)
2) 진짜로 잘 예측하나 확인 해보기 위한 데이터를 미리 나눠서 검사해보고
-> 미리 데이터 train / test 로 쪼개놓고 train으로 학습시켜놓고 나중에 test로 진짜 잘맞나? 확인해보기 위해 쓰는 도구!
X_train,X_test,y_train,y_test = train_test_split(df, test_size=0.2, random_state=0)
첨에 완전 헷갈리게 했던 test와 train....
여기서 나눌때도 어떤곳에 치우쳐서 결과가 나올 수도 있으니까(예를들어 둘이서 케익 잘라먹는데 한명이 과일 독차지한경우가 있을 수도 있으니)
잘라보는것도 여러번 반복해보면서 이쪽으로도 잘라보고 저쪽으로도 잘라보고 하면서 결과를 비교하는 도구도 배웠죠 바로 KFold
from sklearn.model_selection import KFold << 이부분 수업 찾아보세용!
3) 그 결과가 얼마나 믿을만한지? / 의미가 있는지? 검토 해 보고
model = sm.OLS(y,X) <ㅡ OLS도 회귀분석 도구입니다 !! (LinearRegression 이랑 거의 같음) 근데 OLS 는 summary 하면 좋은 분석도구를 제공!
R-squared가 바로 아까말한 결정계수
p>|t|가 바로 p밸류값, coef가 아까 말한 얼마나 영향을 끼치나 하는 계수
4) 예측을 더 좋게 만드는 모델을 만들기 위해 데이터를 다듬기
대표적인 데이터 전처리
1) 결측치 처리 (없는 데이터 채워넣기)
2) 스케일러 (변수들 표준화 시키기)
학습시킬때 방해만 되는 변수들 빼기
1) p-value 0.05보다 높으면 무의미
2) 다중공선성 너무 높으면 중복되는 변수 있다는 의미
5) 그 결과를 웹으로 만들어서 올려도 보고, 표도 그리고 그래프도 그리고, 가짜 데이터도 만들어서 테스트도 해보고 ........하게 됩니다
다음에는 위 과정에서 배운 모델들이랑 처리들을 쉽게 요약 해 보겠습니다!
댓글 (4)