-
[R 회귀분석 예제] 야구선수 연봉에 영향을 미치는 요인 (Linear Regression)개발지식 아카이브/Data - ALL 2020. 6. 21. 11:19
목표
어떤 요소가 야구선수의 연봉에 영향을 미칠까 ?
목차
1. 데이터 분석
2. 데이터 클리닝
3. 변수 선택
3.1 Approaches
3.2 The Best Subset Approach
3.3 Stepwise Approach
과정
1. 데이터 분석
install.packages("ISLR") library(ISLR) dim(Hitters) head(Hitters) summary(Hitters)
야구선수들의 스펙정보와 연봉정보를 제공하는 통계 패키지 ISLR을 이용합니다. 패키지를 설치 후, 임포트해줍니다.
총 263개의 샘플에 20개의 예측 변수를 가진 데이터입니다.
샘플 몇 개를 볼까요. 결과에 영향을 미칠것이라고 가정하고 있는 예측 변수(Predictor Variables)들을 먼저 보면, League, Department, NewLeague 3개는 범주형 변수, 나머지 변수들은 모두 회귀형 변수입니다. 범주형 번수들은 모두 2개의 factor를 가지는 거 보이시죠. 그리고 가장 중요한 반응 변수(Response Variable) Salary는 이산형 값을 갖는 회귀형 데이터입니다.
그러므로 일단 이산확률분포가 정규분포를 따를 것이라고 가정하여, Linear Regression (선형 회귀) 알고리즘으로 영향력이 있는 변수들을 찾아볼게요.
2. 데이터 클리닝
sum(is.na(Hitters)) Hitters<- na.omit(Hitters)
결측 값이 있는 샘플이 59개가 있네요. 결측 값을 따로 예측하여 대체하는 기법도 있지만 단순히 이 샘플들은 삭제하는 쪽을 택합니다.
3. 변수 선택
3.1 Approaches
변수선택을 하는 방법은 여러가지가 있지만 많이 쓰이는 4가지를 소개할게요.
Approach Description The Best Subset 모든 가능한 변수 조합을 다 보고 가장 최적의 선택을 하는 것 Backward 변수를 다 선택하고 하나씩 빼가면서 설명력을 보는 것 Forward 변수를 1개부터 시작해서 하나씩 더해가면서 설명력을 보는 것 Stepwise 앞의 두가지를 번갈아가며 하는 것 그런데 기계는 무슨 기준으로 어떤 모형이 설명력이 더 좋은 모형이라고 판단하는 걸까요? 어떤 판단 기준이 필요하겠죠? 그래서 우리는 기계가 의사결정을 하는데에 필요한 Metric 도 같이 지정해줘야합니다.
3.2 The Best Subset Approach
먼저 The best subset approach로 진행해볼게요.
그리고 통계 Metric 중 하나인 수정결정계수(adjt R^2)를 이용하겠습니다.
R^2는, 데이터를 설명하기 위해 만들어진 회귀식과 실제 데이터간의 괴리도를 보여주는 Metric 입니다. 만들어진 회귀식에 Salary를 제외한 다른 변수들의 값을 집어 넣었을 때, y값으로 예측 Salary 값이 실제 Salary 값과 비슷하게 나온다면 이 모형은 훌륭한 모형일 것입니다. 그렇지 않고 동떨어진 값이 나온다면 나쁜 모형이겠죠. R^2 은 이 설명력이 높을 수록 1에 가까운 값이 나오게 되고, 설명력이 떨어질 수록 0에 가까운 값이 나오게 설계되어있습니다. R^2 와 adjt R^2의 차이는 전체 변수를 다 사용하여 계산하는지, 유의하다고 판단되는 변수만 사용하여 계산하는지의 차이입니다.
install.packages("leaps") library(leaps) reg.full<-regsubsets(Salary~.,data=Hitters) summary(reg.full)
summary.reg$adjr2 which.max(summary.reg$adjr2) plot(summary.reg$adjr2,type="o")
11개의 변수를 사용했을 때 가장 높은 설명력을 가지네요.
coef(reg.full,11)
그럼 그 11개 변수들을 좀 볼까요.
AtBat, CAtBat, Cwalks, Division 은 음의 계수를 가지네요. 즉 연봉에 나쁜 영향을 주는 변수들입니다. Hits, Walks, CRuns, CRBI, LeagueN, PutOuts, Assists 는 연봉이 올라가는 데에 영향을 끼치는 변수들입니다. Hits 가 안타 개수인가요? 1개당 6.92 라는 높은 상관성을 보이네요.
3.3 Stepwise Approach
변수 선택 Approach 를 바꾸면 다른 모형을 얻을 수도 있을까요? 네, 모형은 달라질 수 있습니다. 이번에는 AIC 메트릭을 사용하는 Stepwise 방식으로 변수선택을 해볼게요.
library(MASS) # Fit the full model full.model <- lm(Salary ~., data = Hitters) # Stepwise regression model step.model <- stepAIC(full.model, direction = "both", trace = FALSE) summary(step.model)
첫번째 접근법과 차이를 보면, LeagueN 변수 하나가 제외되었네요. 그 외의 변수는 모두 같고 계수도 대충 비슷한 값이 나오네요. Hits 타수 변수의 계수를 보시면, 6.91802 인데, 이 모형에서도 타자가 공을 1개 더 칠때마다 연봉이 6.91만큼 상승한다고 판단한다는 거죠.
두 개의 모형 중 어떤 것을 선택할까요? Adjusted R^2 값이 동일하므로 (반올림 고려) F-stat 값, p-value 를 비교하여 최종적으로 변수 선택을 하면 됩니다.
다른 포스팅
2019/05/25 - [[IT] 공부하는 개발자/Machine Learning] - [쉽게 설명하는 머신러닝] 개념 정리
2019/05/26 - [[IT] 공부하는 개발자/Machine Learning] - [쉽게 설명하는 머신러닝] 머신러닝 문제 정의, 알고리즘 선택 방법
다음 포스팅에서는 같은 데이터로, 트레이닝을 통해 야구선수 연봉 예측하는 머신러닝을 해보겠습니다~! 연봉을 제외한 다른 요인들을 넣었을 때 연봉이 얼마가 나올지 대략 예상해주는 모델입니다. 알고리즘은 정규분포 가정의 Linear Regression으로 1개, (연봉이 이산형 데이터이므로) 데이터에 대해 어떤 분포 가정도 하지 않는 Lasso, Ridge 알고리즘으로 모델을 2개 더 만들어본 후, 모델 3개의 예측력을 비교해보고 최종적으로 모델 선택을 하겠습니다. (^^)/
'개발지식 아카이브 > Data - ALL' 카테고리의 다른 글
Zeppelin 과 Notebook 비교, 어떤 것을 고를까? (1) 2023.05.18 [Streamlit] 설치 단계에서 발생한 이슈와 해결방법 정리 (0) 2023.04.16 [Kafka] 카프카란? 개념과 디자인 (0) 2020.04.11 [쉽게 설명하는 머신러닝] 머신러닝 문제 정의, 알고리즘 선택 방법 (0) 2019.05.26 [쉽게 설명하는 머신러닝] 개념 정리 (0) 2019.05.25