주제
- FinanceDataReader (주가 데이터 수집을 위해 사용된 Python 라이브러리) 를 가지고 삼성전자 주식 예측
기계학습 접근
진행과정
- 결측치 처리
- 퍼센트 변화 계산
- 특성 공학 및 추가 데이터
- 스케일링
- 학습 및 테스트 데이터 분할
도출과정
- 특성 선택
- 기초 특성 설정
- Open, High, Low, Close, Volume, Change 등의 기본적인 주가 정보가 포함됩니다.
이외에도 KS11 (KOSPI 지수), KQ11 (KOSDAQ 지수), USD/KRW (원/달러 환율) 등의 추가적인 시장 데이터를
수집했습니다. - 기술적 지표 추가
- 이동 평균, MACD, RSI, OBV, CMF, ATR, 볼린저 밴드, VWAP 등
- 주가의 추세, 모멘텀, 변동성, 거래량 등 다양한 측면을 분석하여 더 정교한 예측을 가능하게 합니다 - 상관계수를 통한 특성 선택
- 종가(Close)와의 상관계수를 계산하여, 이 값이 특정 임계값(예: 0.5) 이상인 특성들만을 선택합니다.
- 주가 예측과 가장 관련이 깊은 특성들을 식별하는 데 도움을 줍니다
- 기초 특성 설정
- 특성 준비
- 스케일링
- MinMaxScaler를 사용하여 특성 데이터의 스케일을 조정합니다.
- 든 특성 값이 0과 1 사이의 범위에 있도록 변환하는 과정으로, 모델의 학습 효율성을 높이고, 수치적 안정성을
개선하는 데 도움을 줍니다. - 학습 및 테스트 데이터 분할
- 전처리된 데이터를 학습 데이터와 테스트 데이터로 분할합니다. 일반적으로 데이터의 80%를 학습용으로,
나머지 20%를 테스트용으로 분할하는 비율을 사용합니다.
- 분할은 모델이 과거 데이터를 학습하고, 학습된 모델의 성능을 미래 데이터에 대해 평가하는 데 사용됩니다. - 입력 및 목표 변수 분리
- Close 열(목표 변수)을 제외한 나머지 열을 입력 변수로 사용합니다.
- Close 열은 모델이 예측하려는 종가 값입니다.
- 스케일링
- 모델 선택
- 선형 회귀(Linear Regression)
- 기본적인 회귀 분석 모델로, 독립 변수의 선형 조합을 사용하여 종속 변수를 예측합니다. - 릿지 회귀(Ridge Regression)
- 회귀 계수에 대한 L2 패널티를 적용하여 과적합을 방지합니다. - 라쏘 회귀(Lasso Regression)
- 회귀 계수에 대한 L1 패널티를 적용하여 불필요한 특성의 계수를 0으로 만듭니다. - 랜덤 포레스트(Random Forest Regressor)
- 여러 결정 트리를 결합하여 예측 성능을 향상시키는 앙상블 방법입니다. - Prophet
- 시계열 데이터에 대한 예측을 위해 설계된 모델로, 계절성과 트렌드 변화를 고려합니다.
- 선형 회귀(Linear Regression)
- 파라미터 튜닝 및 교차 검증
- 그리드 서치(GridSearchCV)
- 모델의 하이퍼파라미터를 최적화하기 위해 사용됩니다. 예를 들어, 릿지와 라쏘 회귀에서는 alpha 값을,
랜덤 포레스트에서는 n_estimators와 max_depth 값을 조정합니다. - 교차 검증
- 데이터를 여러 부분으로 나누어, 일부는학습에 일부는 검증에 사용함으로써 모델의 일반화 성능을 평가합니다.
- 그리드 서치(GridSearchCV)
- 성능 지표
- 평균 제곱 오차(MSE)
- 정의 : 실제 값과 예측 값의 차이를 제곱한 후 평균을 낸 값입니다.
- 사용 이유
: MSE는 오차의 크기를 제곱하기 때문에, 큰 오차에 대해 더 큰 패널티를 부여합니다.
모델이 큰 오차를 만들어내는 것을 강하게 처벌하여, 큰 예측 실수를 줄이는 데 도움이 됩니다.
MSE는 오차의 크기와 방향을 모두 고려하여, 모델이 데이터에 얼마나 잘 적합하는지를 정량적으로 평가
할 수 있게 해줍니다. - 결정 계수(R²)
- 정의 : 데이터의 분산 중 모델이 설명할 수 있는 분산의 비율을 나타냅니다.
- 사용 이유
: R²는 모델이 데이터의 변동성을 얼마나 잘 포착하는지를 나타내며, 모델의 설명력을 평가하는 데 사용
값이 1에 가까울수록 모델이 데이터를 더 잘 설명한다고 할 수 있습니다. R²는 모델의 성능을 직관적으로
이해할 수 있게 해주며, 다른 모델들 간의 성능 비교에 유용하게 사용됩니다. - 평균 절대 오차(MAE)
- 정의 : 실제 값과 예측 값의 차이의 절대값의 평균입니다.
- 사용 이유
: MAE는 오차의 절대값을 사용하기 때문에, MSE에 비해 이상치에 덜 민감합니다.
모델이 평균적으로 얼마나 많은 오차를 만들어내는지를 보여주며, 예측 오차의 실제 크기를
이해하는 데 유용합니다. MAE는 모델의 예측이 실제 값에서 평균적으로 얼마나 떨어져 있는지를
직관적으로 파악할 수 있게 해줍니다.
- 평균 제곱 오차(MSE)
- 모델별 성능 평가 결과
- 선형 회귀 (Linear Regression)
- MSE : 1.0998663033629005e-31
- R² : 1.0
- MAE : 2.865716617314058e-16
- 해석
: 선형 회귀 모델은 완벽한 R² 점수를 달성했다. 이는 모델이 데이터를 완벽하게 예측했음을 의미하지만,
실제 상황에서 이러한 결과는 과적합을 의심할 필요가 있다. - Ridge 회귀
- MSE: 2.9852146670771345e-05
- R²: 0.8293449690216336
- MAE: 0.0042518866158621086
- 해석
: Ridge 회귀 모델은 상대적으로 높은 R² 점수를 보여준다.
모델이 데이터의 변동성을 상당 부분 설명할 수 있음을 나타낸다.
그러나, 모델의 행렬이 잘 조건화되지 않았다는 경고는 수치적 안정성 문제를 시사한다. - Lasso 회귀
- MSE: 0.00016209095546287263
- R²: 0.07337863065930073
- MAE: 0.009703396776462042
- 해석
: Lasso 회귀의 성능은 상대적으로 낮은 R² 점수를 보여준다.
모델이 데이터의 변동성을 충분히 설명하지 못함을 의미한다. 또한, 목적 함수가 수렴하지 않았다는 경고는
최적화 과정에서의 문제를 나타낸다. - 랜덤 포레스트 (Random Forest Regressor)
- MSE: 8.099796714724595e-10
- R²: 0.9999953696091791
- MAE: 1.2047888389628065e-05
- 해석
: 랜덤 포레스트 모델은 매우 낮은 MSE와 높은 R² 점수를 달성하여, 모든 모델 중 최상의 성능을 보여준다.
이는 복잡한 비선형 관계와 데이터 내의 상호작용을 효과적으로 포착할 수 있음을 시사한다. - Prophet
- MSE: 0.00023598461613838902
- R²: -0.3490474377491095
- MAE: 0.011630655948358713
- 해석
: Prophet 모델은 음의 R² 점수를 기록했다. 이는 모델의 예측이 실제 데이터의 변동성을설명하지 못하며,
평균값을 사용하는 단순 모델보다도 나쁜 성능을 보여준다는 것을 의미한다
- 선형 회귀 (Linear Regression)
- 모델별 예측 성능 비교
- 선형 회귀 (Linear Regression) 모델은 완벽한 R² 점수(1.0)를 달성하여 데이터를 완벽하게 예측했다고
보고하였지만, 이는 과적합을 의심할 수 있는 결과이다. - Ridge 회귀 모델은 R² 점수가 0.8293로 나타나, 상당한 예측 성능을 보였으나, 이상적인 조건에서 벗어난 수치적
문제에 대한 경고가 있었다. - Lasso 회귀 모델의 성능은 R² 점수가 0.0734로 상대적으로 낮게 나타났으며, 수렴 문제에 대한 경고가 발생.
- 랜덤 포레스트 (Random Forest Regressor) 모델은 모든 모델 중 최고의 성능을 보였으며, R² 점수가 0.999995로
거의 완벽한 예측을 보여주었다. - Prophet 모델은 R² 점수가 -0.3490으로, 예측 성능이 가장 낮았으며 실제 데이터의 변동성을 설명하지 못하는
것으로 나타났다.
- 선형 회귀 (Linear Regression) 모델은 완벽한 R² 점수(1.0)를 달성하여 데이터를 완벽하게 예측했다고
- 종합적 해석 및 논의
- 랜덤 포레스트 모델이 복잡한 주식 시장 데이터의 패턴과 변동성을 가장 잘 포착하고 예측하는 것으로 나타났다.
이 모델의 우수한 성능은 다수의 결정 트리를 조합하여 데이터 내의 복잡한 상호작용과 비선형 관계를 효과적으로 모델링할 수 있기 때문이다. - 선형 회귀 모델의 완벽한 성능은 과적합의 가능성을 시사한다. 모델이 훈련 데이터에 지나치게 최적화되어
실제 시장 조건에서의 일반화 성능이 떨어질 수 있음을 의미한다. - Ridge와 Lasso 회귀의 낮은 성능과 수렴 문제는 금융 데이터의 복잡성과 변수 간의 상호작용을 적절히
반영하기 위한 모델 구조의 한계를 드러낸다. - Prophet 모델의 부정적인 R² 점수는 주식 시장 데이터 예측에 있어 시즌성과 트렌드를 모델링하는 방식이 이번
데이터에서 적합하지 않음을 나타낸다.
- 랜덤 포레스트 모델이 복잡한 주식 시장 데이터의 패턴과 변동성을 가장 잘 포착하고 예측하는 것으로 나타났다.
프로젝트 후기
- 생각보다 예측모델을 만드는게 어려웠고 만들어도 최적화를 잘 해야 좋은 결과를 얻을 수 있다고 생각했다.
반응형
'Project' 카테고리의 다른 글
Project_4 (0) | 2024.04.16 |
---|---|
36. ~ 40. Project_2 - 프로모션 개선 점 찾아 매출 증진 아이디어 (0) | 2024.01.29 |
15. ~ 20. Project_1 - 소비 습관 분석 후 구매 제품 예측 (0) | 2024.01.28 |