[Pythhon] MAE로 척도가 다른 시간 시퀀스 데이터의 유사도 비교

6353 단어 MAEPythonstock
모양이 비슷한 도표(시간 서열 데이터)를 찾고 싶었을 거야.
이번에는 척도는 다르지만 모양이 비슷한 시간 서열 데이터를 찾기 위해 정규화 비례자를 MAE(평균 절대 오차)로 비교하는 방법을 썼다.

모티프


평소여기 기사.에 주식 투자에 대해 외형이 비슷한 주식(예를 들어 일관 충격으로 크게 변동한 주식을 추출하는 것)을 선별하고 싶다고 적혀 있다.
외형이 비슷한 브랜드를 선별하는 장점으로
・모양이 같은 브랜드를 피하여 분산 투자에 도움
• 모양이 같은 브랜드를 구매해 개별 품목의 불편함을 보완
・모양이 같은 브랜드의 공통점을 분석함으로써 투자에 도움
잠깐만요.
그러나 주식 가격은 모양이 비슷해도 규모가 다르다.
예컨대 이하 UAL(유나이티드항공)과 DAL(델타항공)은 일관 충격으로 크게 떨어져 모양이 비슷하지만 규모가 달라 선별 시 어떤 기준으로 비교하기는 어렵다.

따라서 이 글은 선별을 위해 같은 비율로 표준화된 코드를 준비했다.

주식 가격 데이터의 준비


비교할 데이터가 있으면 이 장을 건너뛰십시오.
이번에는 파이톤의 판다스-데이터리더에서 UAL, DAL, AAPL 주가를 기록했다.
※ 이번 내용과 관계없이 취득 후 CSV 등에 보관하는 것이 좋습니다. API 서버에 부담이 될 수 있기 때문입니다.
import datetime
import pandas_datareader.data as web

start = datetime.date(2018,1,1)
end = datetime.date.today()

ual = web.DataReader('UAL', 'yahoo', start, end)['Adj Close']
dal = web.DataReader('DAL', 'yahoo', start, end)['Adj Close']
aapl = web.DataReader('AAPL', 'yahoo', start, end)['Adj Close']
※ 조정 후 최종 값(Adj Close)만 획득할 수 있습니다.
이들 주식 가격 데이터는 판다스의 DataFrame에서 제공한 것이다.
이때 데이터는 다음과 같다.

귀일화


데이터만 비교하는 형태를 위해 비율을 0∼1로 정규화했다.
정규화 Min-Max 정규화
mmn(x) = \frac{x_i-\min(x)}{\max(x)-\min(x)}
pandas의 DataFrame은 다음과 같이 정규화할 수 있습니다.
def mmn(ticker):
    mmn = (ticker - ticker.min()) / (ticker.max() - ticker.min())
    return mmn

ual = mmn(ual)
dal = mmn(dal)
aapl = mmn(aapl)
따라서 다음과 같은 데이터가 0~1로 정규화되고 있다고 본다.

UAL과 DAL은 주가 형태가 비슷해 이해하기 쉬워졌다.

MAE로 비교.


마지막으로 정량 계산 유사도.
유사도는 평균 절대 오차(MAE)를 사용한다.
MAE = \frac{1}{N}\sum_{i=1}^{N}|x_{1i} - x_{2i}|
이번 상황은 MAE가 작을수록 모양을 닮은 데이터 서열로 MAE와 0이 완전히 일치한다.
MAE는 아래에서 계산할 수 있습니다.
from sklearn.metrics import mean_absolute_error

MSE_dal_ual = mean_absolute_error(dal, ual)
MSE_ual_aapl = mean_absolute_error(ual, aapl)
MSE_aapl_dal = mean_absolute_error(aapl, dal)
MSE_dal_ual =  0.08767186335370042
MSE_ual_aapl =  0.5756471586956278
MSE_aapl_dal =  0.5380791440469056
UAL과 DAL의 유사성을 확인했습니다.

매듭을 짓다


이번에 비교해보니 이동평균치를 획득한 후 MAE로 비교해보면 비교가 가능할 텐데, 이 경우 TA-Lib을 사용하면 이동평균치를 쉽게 만들 수 있어 추천해드립니다.
그럼 앞으로 이 기사의 내용으로 비슷한 형태의 주가 도표를 선별하고 싶습니다.

좋은 웹페이지 즐겨찾기