강의 목표: 이번 주차 강의에서는 K-평균 클러스터링과 주식 시장 데이터를 이해하고, 데이터를 수집 및 전처리하는 방법을 학습합니다. Python을 이용하여 실습도 함께 진행합니다.
1. K-평균 클러스터링 개요
먼저, K-평균 클러스터링(K-means Clustering)에 대해 자세히 알아보겠습니다. K-평균 클러스터링은 데이터를 유사한 그룹으로 나누는 비지도 학습 알고리즘입니다. 비지도 학습(Unsupervised Learning)이란, 데이터에 대한 명확한 라벨(정답)이 없는 상황에서 데이터의 패턴을 찾는 머신러닝 기법을 의미합니다.
K-평균 클러스터링의 기본 아이디어는 간단합니다. 우리는 데이터 포인트들을 K개의 클러스터로 나누고, 각 클러스터의 중심에 가장 가까운 데이터 포인트들을 그룹화합니다. 여기서 K는 우리가 설정하는 클러스터의 수입니다.
K-평균 클러스터링의 작동 원리:
- K 값 선택: 먼저, 클러스터의 수(K)를 설정합니다. 예를 들어, 3개의 클러스터로 나누고 싶다면 K=3으로 설정합니다.
- 초기 클러스터 중심 설정: K개의 초기 클러스터 중심(centroids)을 무작위로 선택합니다. 클러스터 중심은 각 클러스터의 중심 위치를 나타내는 점입니다.
- 클러스터 할당: 각 데이터 포인트를 가장 가까운 클러스터 중심에 할당합니다. 여기서 가장 가까운 중심은 유클리드 거리(Euclidean distance)를 사용해 계산합니다. 유클리드 거리는 두 점 사이의 직선 거리를 의미합니다.
- 중심 업데이트: 각 클러스터의 평균값을 계산하여 새로운 중심으로 설정합니다. 이때 평균값은 클러스터에 속한 모든 데이터 포인트의 좌표 평균을 의미합니다.
- 반복: 클러스터 할당과 중심 업데이트를 중심이 더 이상 변하지 않을 때까지 반복합니다. 보통 몇 번의 반복(iteration) 후에는 중심이 안정화되어 변하지 않게 됩니다.
보충 설명
- 유클리드 거리(Euclidean distance): 두 점 사이의 직선 거리를 의미하며, n차원 공간에서 두 점 (x1, y1)과 (x2, y2) 사이의 거리는 sqrt((x2 - x1)² + (y2 - y1)²)로 계산됩니다.
- 비지도 학습(Unsupervised Learning): 데이터에 대한 명확한 라벨(정답)이 없는 상황에서 데이터의 패턴을 찾는 머신러닝 기법입니다.
이 알고리즘을 통해 유사한 데이터를 그룹으로 묶어, 각 클러스터가 나타내는 특성을 분석할 수 있습니다.
2. 주식 시장 데이터 개요 (OHLCV 데이터)
주식 시장 데이터를 분석할 때, OHLCV 데이터가 많이 사용됩니다. OHLCV는 다음을 의미합니다:
- Open: 하루 중 첫 거래 가격
- High: 하루 중 최고 가격
- Low: 하루 중 최저 가격
- Close: 하루 중 마지막 거래 가격
- Volume: 하루 동안 거래된 주식의 수
이 데이터는 주식의 일일 가격 변동과 거래량을 나타내어 시장의 상태를 분석하는 데 유용합니다.
이제, OHLCV 데이터를 어떻게 수집하고 전처리하는지 살펴보겠습니다.
3. Python을 이용한 데이터 수집
주식 데이터를 수집하기 위해 Yahoo Finance API를 사용해 보겠습니다. Python에서는 yfinance
라이브러리를 사용하여 손쉽게 주식 데이터를 가져올 수 있습니다. 다음은 Python 코드 예제입니다:
import yfinance as yf
# 데이터 다운로드
df = yf.download('AAPL', start='2023-01-01', end='2023-12-31')
df = df[['Open', 'High', 'Low', 'Close', 'Volume']]
df.head()
이 코드는 Apple(AAPL) 주식 데이터를 2023년 1월 1일부터 2023년 12월 31일까지 다운로드합니다. head()
메서드는 데이터프레임의 상위 5개 행을 출력하여 데이터가 올바르게 수집되었는지 확인합니다.
[Output]
4. 데이터 전처리
수집한 데이터를 분석하기 전에 전처리 작업이 필요합니다. 여기에는 결측치 처리와 데이터 표준화가 포함됩니다.
- 결측치 처리: 결측치가 있는 경우, 이를 이전 값으로 채웁니다.
# 결측치 처리 (예: 이전 값으로 대체)
df.fillna(method='ffill', inplace=True)
- 데이터 표준화: K-평균 클러스터링을 위해 데이터의 단위와 범위를 표준화합니다.
from sklearn.preprocessing import StandardScaler
# 데이터 표준화
scaler = StandardScaler()
scaled_features = scaler.fit_transform(df)
5. 데이터 시각화
수집한 주식 데이터를 시각화하여 가격 변동을 확인해봅니다.
import matplotlib.pyplot as plt
# 데이터 시각화
plt.figure(figsize=(10, 5))
plt.plot(df['Close'])
plt.title('Stock Price Over Time')
plt.xlabel('Date')
plt.ylabel('Close Price')
plt.show()
이 코드는 종가(Close) 데이터를 시각화하여 주식 가격의 변동을 보여줍니다.
[Output]
결론
이번 주차 강의에서는 K-평균 클러스터링의 기본 개념과 주식 시장 데이터를 수집하고 전처리하는 방법을 배웠습니다. Python을 사용하여 실제 데이터를 수집하고 시각화해 보면서 실습을 진행했습니다.
다음 주차 강의에서는 K-평균 클러스터링 알고리즘을 주식 시장 데이터에 적용하여 클러스터링을 수행하고, 이를 통해 시장 레짐을 감지하는 방법을 학습하겠습니다.
여러분이 오늘 배운 내용을 토대로 실습을 해보세요. 데이터 수집과 전처리는 데이터 분석의 기초이므로 여러 번 반복해 볼수록 좋습니다. 다음 주에 더 흥미로운 내용으로 찾아뵙겠습니다!
질문 및 피드백: 강의 내용에 대한 질문이나 피드백이 있으시면 댓글로 남겨주세요. Happy coding!
[다음강의] [K-means clustering] 2.K-평균 클러스터링 개요 및 적용 (tistory.com)
'비트코인 자동매매 프로그램 > [전략개발] 인공지능' 카테고리의 다른 글
[K-means clustering] 3.시장 레짐 정의 및 거래 전략 수립 (2) | 2024.06.18 |
---|---|
[K-means clustering] 2.K-평균 클러스터링 개요 및 적용 (0) | 2024.06.17 |
[K-means clustering] 0. 인공지능을 활용한 주식 시장 레짐 감지 및 거래 전략 수립 (0) | 2024.06.17 |
[LSTM] 8. 주가 변동 방향 예측 (2) | 2024.06.13 |
[LSTM] 7. 모델 평가 및 예측 (1) | 2024.06.13 |