본문 바로가기

전체 글

k-means K-means란? 가장 대표적인 clustering 모델으로, 비지도 학습이다. 주어진 데이터를 k개의 클러스터로 분류하는 작업이다. 가장 먼저 임의로 centroid를 설정하고, centroid를 수정해가면서 결론에 도달한다. (centroid가 더 이상 변화하지 않는 지점에서 멈춤) k-means의 장점, 단점 : 이해와 구현이 쉽고, 효율적인 시간 복잡도를 가진다. : 최적의 k값을 찾기 어렵고, 이상치에 민감함 간단한 코드 from sklearn.cluster import KMeans Kmean = KMeans(n_clusters = 클러스터의 개수, init='centroid지정밥법') Kmean.fit(data) K-means++ 일반적인 kmeans는 초기 centroid값에 따라 이상한 결.. 더보기
차원축소 : 주성분분석 차원 축소를 해야 하는 이유 - 차원의 저주를 해결하기 위해 : 차원이 증가할 때 학습 데이터 수가 차원의 수보다 적어 성능이 저하됨. : 데이터의 용량이 큰 경우, 불필요한 샘플들이 많이 포함되어 있어 모델의 성능이 저하됨 -> 이 때 샘플을 늘리거나 차원을 줄여서 이 문제를 해결해야하나, 샘플을 늘리는 것은 현실적으로 쉽지 않음 - 데이터 시각화를 용이하게 해 데이터를 더 직관적으로 파악할 수 있게 하기 위해 - 특성의 수를 유의미하게 줄여 훈련 속도와 성능을 최대로 유지하기 위해 차원 축소 방법 - Feature Selection : heatmap 을 그려 상관관계가 큰 특성들을 합치거나, 필요없는 특성 제거 - Feature Extraction : projection 등을 통해 feature 추출.. 더보기
prophet model = Prophet() model.fit(df) prophet은 페이스북에서 공개한 시계열 예측 라이브러리로, 훨씬 쉽고 빠르게 시계열 분석을 이용할 수 있습니다. prophet model은 holiday라는 식이 하나 추가된 모습을 볼 수 있습니다. g(t)는 추세, 즉 주기적이지 않은 변화를, s(t)는 주기적 패턴을 보이는 계절성, h(t)는 휴일, 마지막 항은 정규분포를 띄는 오차를 나타내는 식입니다. 휴일의 경우, 비행기 판매량이 늘어난다던가, 거래가 중지 된다던가 등 다양한 평소와는 다른 변수들이 있기 때문에 일상과 다른 휴일의 변수를 더해주어야합니다. prophet을 import 하기 위해서는 from fbprophet import Prophet 을 통해 라이브러리를 예측해주면 됩니.. 더보기
ARIMA&SARIMA ARIMA와 SARIMA 수식 ARIMA 모델은 AR차수와 difference 그리고 MA차수 총 3개의 parameter 만 포함하는 반면, SARIMA 모델은 AR차수, seasonal AR차수, difference, seasonal difference, MA차수, seasonal MA 차수, Seasonality 총 7개의 parameter를 포함하고 있습니다. 저의 가장 큰 고민은 SARIMA 모델을 사용할 때, 어떻게 parameter를 정하는지였습니다. 이에 대해 간단하게 알아보겠습니다. 먼저 계절 주기(S)를 구합니다. 간단하게 seasonal_decompose(df, period)..plot()을 사용해 계절성과 추세를 분리해서 살펴봅니다. 이 때 계절성이 없다면 굳이 SARIMA모델을 사.. 더보기
Fitting the ARMA model 저번에 배운 ARMA 모델을 바탕으로 어떻게 해당 모델을 fitting 해서 어떠한 미래 데이터를 얻을 수 있는 지에 대해 간단하게 살펴보겠습니다 plot_acf 와 plot_pacf 를 통해 어떠한 parameter로 fitting 할 지 대략적인 감을 잡은 뒤 AIC 또는 BIC를 사용하여. 가장 알맞은 모델을 골라줄 수 있습니다. 2011 - 2021 까지의 SP500 data를 사용해보겠습니다. SP500_diff = SP500.diff().dropna() fig, (ax1, ax2) = plt.subplots(2,1, figsize=(12,8)) plot_acf(SP500_diff, ax=ax1) plot_pacf(SP500_diff, ax=ax2) SP500의 ACF를 살펴봤더니, 추세가 존재.. 더보기
시계열분석 _ ARMA모델 개념정리 Stationary 저번에 마지막에 약간 다뤘는데 다시 한 번 살짝 짚고 넘어가면 보통 아래 3가지를 만족하면 stationary data입니다. 1) 데이터의 평균이 상수인 경우 2) 데이터의 분산이 상수인 경우 3) 계절성이 존재하지 않는 경우 그리고 이중에서도 특히, 데이터의 평균이 0인 경우는 특별하게, white noise라고 합니다. 눈으로 확인하는 것보다는 Adfuller test (ADF) 를 진행해보는 것이 가장 정확할 것입니다. ARMA 모델에 데이터를 넣기 위해서는 해당 데이터가 stationary 해야하기 때문에 다시 한 번 stationary 에 대해 정리했습니다. PACF 저번 포스트(?) 에서 ㅋㅋACF에 대해서는 다뤘는데 PACF에 대해서는 다루지 않았는데 PACF는 part.. 더보기
시계열분석 _ 자기상관과 ACF 시계열 분석을 공부를 어제 시작했는데 저는 여기서부터 벌써 막혀버렸네요...어렵다는 것은 알았지만 제가 생각한 것 보다 더 어렵네요..! 역시 거두절미하고 시작하겠습니다. Auto correlation 먼저, 자기 상관(auto correlation) 은 자기 자신과 일정한 시점 뒤의 자기 자신 사이의 상관관계입니다. 아래식은 자기 상관 계수에 관한 식인데요, 보통의 상관계수와 마찬가지로 계수는 -1과 1사이에서 결정되며, 계수가 1에 가까울수록 강한 양의 상관관계, 계수가 -1에 가까울수록 강한 음의 상관관계를 가집니다. 이 때 양의 값을 가지면, 추세를 따름, 음의 값 을 가지면 평균 되돌림이라고 하기도 합니다. 위 식을 보면 k 가 lag를 의미한다는 것을 알 수 있습니다. 원래 데이터와 원래 데이.. 더보기
시계열분석 기초(1) 시계열 분석은 보통 시간 순서로 정렬된 데이터를 분석하는 것을 의미합니다. 그래서 보통 주가 등의 financial data나 기온 변화 등에 대한 데이터를 많이 사용합니다. 제가 시계열분석을 공부하고자 마음먹은 이유도 저 financial data를 잘 다루고 싶어서 입니다. 거두절미하고, 제가 오늘 공부한 내용을 바로 소개해드릴게요~ 저는 데이터캠프에서 시계열분석에 대해 공부하고 있는데 관련 데이터를 제공해주지 않아 제가 간단한 데이터를 다운받았습니다! https://trends.google.com/trends/?geo=KR Google 트렌드 trends.google.com 여긴 구글에서 특정단어를 검색한 횟수를 날짜별로 제공해주는 사이트인데요..! csv파일도 쉽게 다운 받을 수 있고, 시계열에 .. 더보기