03_미래를예측하는데이터분석
03 미래를 예측하는 데이터 분석
예측분석
데이터를 분석해 특정결과를 미리 예측해보는 것
핵심개념
지도 학습과 비지도 학습의 개념을 이해
회귀 분석으로 예측을 수행
시계열 데이터의 트랜드를 예측
수학적 기법을 활용하여 평점을 예측
3.1 프로야구 선수의 다음 해 연봉 예측 (회귀분석)
예측 분석의 가장 대표적인 회귀분석 (Regression analysis) y = w1 X1 + w2 X2 + ... + b 를 구하자
이미 y 를 알고 있는 학습 전용 데이터셋 / 그게 아닌 테스트 전용 데이터셋 이 있고, 이러한 학습 방식이 지도학습
step 1. 탐색: 프로야구 연봉 데이터 살펴보기
히스토그램과 상자그림 (Box Plot) 으로 살펴보자
상자 그림은 사분위값 특성으로 데이터의 분포를 파악하며, 일반적인 범주를 벗어나는 데이터를 파악할 수 있다. wiki
step 2. 예측: 투수의 연봉 예측하기
각 피처간 범위가 다르니 피처의 정규화 / 피처 스케일링을 수행
표준화: ( (X) - (X 의 평균) / X 의 표준편차 )
연속형이 아닌 피처는 원-핫 인코딩 으로 벡터로 바꿔줌
학습 데이터셋과 테스크 데이터셋으로 데이터 분리
회귀 분석 계수 학습 & 학습된 계수 출력
step 3. 평가: 예측 모델 평가하기
Statsmodel 라이브러리의 OLS 클래스의 summary() 함수를 이용하면 계수의 대한 분석과 결정계수 (R-squared), 혹은 수정결정계수 (Adj. R-squared) 를 알 수 있으며 이는 '회귀분석으로 추정한 모델이 주어진 데이터를 얼마나 잘 설명하는가' 에 대한 점수며 1 에 가까울수록 잘 설명함
F-value 와 F-value 의 p-value 인 Prob 수치 관찰
학습데이터셋과 테스트 데이터셋에 대한 수정 결정계수를 관찰
벌어지지 않는게 좋으며, 학습 점수가 테스트에 비해 높다면 과적함 (overfit) 임
RMSE (Root Mean Square Error) score 로도 회귀 모델 평가
실제값과 예측값의 차이를 절대적인 수치로 나타낸 것. 당연히 높을수록 부정확
이 또한 train 과 test 를 나눠 볼 수 있다.
다중 공선성 관찰
회귀분석은 피처 간의 '독립성'이 전제. 변수 간 상관 관계가 높다면 회귀분석에 부정적인 영향
분산팽창요인 (VIF, Variance Inflation Factor) 계수로 평가. 일반적으로 10 ~ 15 를 넘으면 다중 공선성의 문제 발생
step 4. 시각화: 분석 결과 시각화
선수마다 작년연봉, 예측연봉, 실제연봉을 보여주자
정리
주요 키워드
핵심 내용
설명
데이터의 분리
학습 전용 데이터셋과 테스트전용 데이터셋 분리
회귀 분석 모델을 학습 전용 데이터셋으로 나누어 학습하고, 이를 테스트전용 데이터셋으로 평가. 이 과정을 지도 학습
피처의 정규화
데이터의 피처 스케일링
피처 간의 단위를 맞춰주는 피처 스케일링 작업 수행
범주형 피처의 변환
원-핫 인코딩
연산 불가능한 범주형 피처를 연산 가능한 벡터 형태의 피처로 변환
회귀 분석의 평가
R2 score, RMSE score
R2 score, RMSE score 등의 평가 지표를 통해 회귀 분석이 얼마나 잘 되었는지 평가
다중 공선성 분석
피처 간의 독립성 검정
VIF 계수를 통해 피처 간의 다중 공선성 문제를 검증
3.2 비트코인 시세 예측하기 (시계열 데이터 분석)
연속적인 시간에 따라 다르게 측정되는 데이터를 분석해보자. 규칙적 시계열 데이터와 비규칙적 시계열 데이터가 있다.
step 1. 탐색: 시간 정보가 포함된 데이터 살펴보기
날짜와 가격에 대한 2개의 피처로 구성
step 2. 예측: 파이썬 라이브러리를 활용해 시세 예측하기
ARIMA 분석(statsmodel 모듈) & Additive 모델 (Facebook Prophet 라이브러리)
ARIMA 분석
구성
AR 모델
자기 자신의 과거를 정보로 사용, 현재의 상태는 이전의 상태를 참고해서 계산된다.
MA 모델
이전 항에서 오차를 이용해 현재 항의 상태를 추론
차분 (Difference) (추세변동의 경향성)
python statsmodel 모듈
Order(x1, x2, x3)
X1: AR 이 몇 번째 과거까지 갈 것인지
X2: 차분 (현 변수 상태에서 바로 전 변수상태 빼줌) -> 불규칙성을 보정, 경향성 수반
X3: MA 가 몇 번째 과거까지 바라보는지
가이드가 존재한다.
결과 검토
실제값과 예측값의 차이 관찰
모델 검토
향후 5일을 예측해보자
Additive 모델 (트랜드성 예측에 초점)
회귀 분석의 단점을 극복하기 위해 각 피처마다 비선형적 집합을 가능하게 하는 일련의 방법을 적용 추가설명
step 3. 활용: 더 나은 결과를 위한 방법
모델의 성능을 향상시켜보자.
상한가, 하한가를 지정
이는 데이터의 특성에 따라 독이 될 수 있다.
상한, 하한 개념이 없는 비트코인 시세 데이터에서는 오히려 독이 됐다.
이상치 제거
결과적으로 정확도 (RMSE) 면에서는 떨어지지만, '트랜드'를 예측하는데는 더 나음
결론
모델을 향상시키기 위해 여러 수단을 써볼 수 있고, 이는 데이터의 특성에 맞게 조치해야 한다. 또한, 모델의 성능 또한, 정확도, 경향성 등등 다양한 측면이 있기 때문에 수단에 따라 모델의 어느 특정 성능을 개선시킬 수 있다.
정리
주요 키워드
핵심 내용
설명
시계열 데이터 분석
시계열 데이터 분석의 정의
연도, 월, 일자 같은 시간성을 띠는 데이터를 학습하며 미래의 수치를 예측하는 분석입니다.
ARIMA 모델링
시계열 예측 분석 방법
ARIMA 모델은 '얼마만큼의 나를 돌아보며', '얼마만큼의 차분을 이용하여 규칙성을 줄 것이며', '얼마만큼의 오차를 관찰할 것인지'를 활용한 시계열 예측 분석의 방법입니다.
모델의 평가
학습 데이터셋과 테스트 데이터셋의 분리
특정한 시간 혹은 일자를 기준ㅇ로 학습 데이터셋과 테스트 데이터셋을 분리합니다.
모델 개선의 방법
상한선과 하한선 설정, 이상치 제거
더 나은 분석을 위해 상한선과 하한선을 설정하거나 이상치를 제거하는 방법을 사용할 수 있습니다.
3.3 매래에 볼 영화의 평점 예측하기
아직 보지 않았지만, 좋아할만한 영화들을 추천해보자.
step 1. 탐색: MovieLens 데이터 살펴보기
3개의 데이터셋이 있고 각 셋마다 피처들이 있다. 데이터셋마다 '::' 구분자로 구분되어 있기 때문에, read_csv() 함수를 사용할 때, delimiter='::' 파라미터로 구분하자
step 2. 분석: 탐색적 데이터 분석하기
먼저 EDA 를 통해 데이터를 살펴보자
예제의 데이터셋은 UIR (User - Item - Rating) 데이터셋으로 이러한 데이터셋은 행렬로 나타내기 용이하다. (행: user, 열: movie, 점: rating)
점이 비어있다: rating 이 비어있다 (희소행렬) -> 빈 공간을 채워 (예측) 행렬완성 (Matrix Completion) 을 이루자.
step 3. 예측: 수학적 기법을 활용해 평점 예측하기
행렬분해 (Matrix Factorization) 중 특이값 분해 (SVD, Singular Value Decomposition) 를 이용하자
surprise 라이브러리를 활용해 행렬완성
step 4. 평가: 예측 모델 평가하기
가장 보편적인 RMSE 점수를 사용
학습데이터, 테스트데이터 분리
학습 데이터셋으로 SVD 모델 학습
테스트 데이터로 예측값 생성 -> RMSE 계산
정리
주요 키워드
핵심 내용
설명
행렬 완성
평점 예측을 위해 행렬의 빈 공간을 완성
U-I-R 데이터셋은 행렬로 나타낼 수 있으며, 행렬의 R 을 예측하는 것이 행렬 완성의 목적
행렬 분해
SVD 를 이용한 행렬 분해
행렬 분해를 역이용하여 행렬을 완성할 수 있음. 그중, SVD 방법이 가장 널리 사용됨
예상 평점의 정확도
행렬의 예측 요소를 RMSE 로 평가하는 방법
원래의 행렬을 A, SVD 로 생성된 행렬을 A' 라고 할 때, A 에서 값이 존재하는 Rating A' 에서 예측된 Rating 의 값들을 비교해 RMSE 를 계산할 수 있음.
Last updated