SVM 조정 주식 예측

4533 단어
블 로그 가 Mun 으로 이사:https://kiddie92.github.io
동기 업데이트
지난 블 로 그 는 SVM 의 알고리즘 정 수 를 설명 했다. 이 블 로 그 는 한 번 시도 해 보 았 는데 주요 내용 은 다음 과 같다. 1) SVM 분 류 를 이용 하여 상기 지수의 등락 을 예측 하 는 것 이다.2) SVM 조 참 을 시험 해 본다.
상하 이 증권거래소 의 등락 을 예측 하 다.
문제 설명
주식 등락 을 예측 하 는 것 과 지수의 등락 을 예측 하 는 원 리 는 똑 같 으 며, 모두 '역사적 데이터' 를 이용 해 미래의 흐름 을 추정 하 는 것 이다.주식 데 이 터 는 단순히 시간 서열 이다.여기 서 우 리 는 분류 방법 을 이용 하여 예측 모델 을 구축한다.
  • 우선, 지난 장시간 동안 증 시 지수 에 대한 데 이 터 를 얻 습 니 다
  • 이러한 데이터 의 일부 특징 (features) 을 계산한다. 예 를 들 어 sma, wma, mom 등
  • 특징 데 이 터 를 이용 하여 훈련 데이터 (train dataset) x_train 를 구축 하고 일부 데 이 터 를 테스트 집합 (test dataset)
  • 으로 보류 합 니 다.
  • 데이터 라벨 y_train: 거래 일 당일 의 종가 가 지난 거래 일의 종가 보다 높 으 면 '+' 데이터 이 고 '+ 1' 이 라 고 표시 되 며 그렇지 않 으 면 '- 1'
  • 이다.
  • svm 를 이용 하여 상기 라벨 이 있 는 데 이 터 를 분류
  • 테스트 데 이 터 를 정 하고 그 특징 데 이 터 를 계산 하 며 분류 모델 을 이용 하여 분류
  • 분류 결과 ('+ 1' 은 '상승', '- 1' 은 '하락') 와 실제 데이터 의 등락 상황 을 비교 하고 일치 하면 분류 가 정확 하고 예측 이 정확 하 다 는 것 을 설명 한다
  • .
    여기 서 주의해 야 할 것 은 x_trainy_train 의 대응 관 계 는 적어도 한 거래 일의 시간 차 가 있어 야 한 다 는 것 이다. 그렇지 않 으 면 모델 은 의미 가 없 을 것 이다.
    코드 를 쓰다
    생각 이 나 면 코드 를 쓰 는 것 이 간단 합 니 다. 여기 서 우 광 에 있 는 SVM 코드 를 참고 하 였 습 니 다.코드 의 가장 중요 한 부분 은 데이터 처리 부분 입 니 다. 다음 과 같 습 니 다. (소스 코드 를 클릭 하면 완전한 소스 파일 을 볼 수 있 습 니 다)
    Tips: github 에서 ipython notebook 을 직접 볼 수 없다 면 보 려 는 파일 의 URL 을 복사 해서 들 어가 면 볼 수 있 습 니 다.
    for index in range(2,len(close_pri)):
        #    [-2]                     
        sma_data = talib.SMA(close_pri[:index],timeperiod=7)[-2]
        wma_data = talib.WMA(close_pri[:index],timeperiod=7)[-2]
        mom_data = talib.MOM(close_pri[:index],timeperiod=7)[-2]
        
        features = []
        features.append(sma_data)
        features.append(wma_data)
        features.append(mom_data)
        x_train.append(features)
        
        #            ,    1,    -1
        if close_pri[index-1] < close_pri[index]:
            label = 1
        else:
            label = -1
        y_train.append(label)
    

    SVM 인삼
    이 를 예 로 들 어 서로 다른 매개 변수 가 얻 은 분류 결 과 를 테스트 한 결과 모델 의 일반화 능력 에 어떤 영향 을 미 칠 지 예측 할 계획 이 었 으 나 매개 변수 sklearn 에서 svm 분류 알고리즘 의 매개 변수 소개 로 바 뀌 었 다.
    우선 sklearn 에서 svm 분류 문제 에 대한 목표 함수 / loss 를 살 펴 보 겠 습 니 다.sklearn 에서 제 시 된 svc 공식 은 다음 과 같다. 상기 문장의 식 (18) 을 비교 하면 여기 있 는 매개 변수 C 는 식 (18) 의 역수 임 을 알 수 있다.
    여기 서 반 연 문제 와 유사 한 정규 화 방법 을 이해 하면 전체 목표 함 수 는 벌 함수 / penalty function 으로 볼 수 있 고 C 는 벌칙 인자 로 볼 수 있다.그러면 C 가 클 수록 벌칙 항목 이 작 다 는 뜻 이다. the vise versa 는 분류 가 정확 할 수록 거리 가 가장 큰 지 조금 잃 어 버 리 는 것 이 중요 하지 않다 는 뜻 이다.C 가 정 무한 이 라면 분류 가 정확 해 야 가장 중요 하 다 고 상상 할 수 있다. gutter 의 너 비 는 이미 중요 하지 않 고 이때 의 모델 은 반드시 적합 할 것 이다.이렇게 되면 분석 해 야 할 매개 변 수 는 핵 함수 의 매개 변수 밖 에 없다.sklearn 공식 인 자 는 다음 과 같 습 니 다 (어, 이렇게 많아,). 다음은 몇 가지 중요 한 것 을 골 라 보 겠 습 니 다.
    SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0,
      decision_function_shape='ovr', degree=3, gamma='auto', kernel='rbf',
      max_iter=-1, probability=False, random_state=None, shrinking=True,
      tol=0.001, verbose=False)
    
    decision_function_shape: 'ovo' OR 'ovr' 는 여러 가지 분류 문제 에 대해 ovo 는 두 가 지 를 분류 하 는 것 을 나타 낸다. ovr 는 그 중의 한 가지 유형 과 다른 모든 것 을 분류 하 는 것 degree 은 바로 여러 가지 핵 함수 중의 degree max_iter 이다. 최대 교체 횟수 는 SMO 알고리즘 tol 에 대해 교체 할 때 종료 조건 이 있 는 gamma: rbf 핵 함수 의 매개 변 수 는 gamma 가 클 수록정밀도 가 높 을 수록 고 스 함수 가 높 고 마 르 기 때 문 입 니 다.과 의합 도 심각 해 집 니 다. 따라서 고 스 핵 도 정 해 지지 않 은 분류 라면 svm 을 사용 하지 마 세 요.
    설치
    ta - lib 를 설치 할 때 약간의 구 덩이 를 만 났 습 니 다. 기록 하 세 요.
    공식 ta - lib 의 방법 에 따라 먼저 의존 도 를 설치 합 니 다.
    wget http://prdownloads.sourceforge.net/ta-lib/ta-lib-0.4.0-src.tar.gz
    tar -vxf ta-lib-0.4.0-src.tar.gz
    cd ta-lib/
    ./configure --prefix=/usr  #      lib      
    

    시험 해 보기: ipython3
    In [1]: import talib
    In [2]:   
    

    가 져 오기 모듈 오류: libta_lib.so.0: cannot open shared object file: No such file or directory/usr/lib/ 의 라 이브 러 리 파일 이 시스템 환경 변수 에 불 러 오지 않 아서 모듈 을 가 져 올 때 라 이브 러 리 파일 libta_lib.so.0 을 찾 지 못 하고 환경 변 수 를 추가 하면 됩 니 다.
    echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib' >> ~/.bashrc
    

    총결산
  • svm 로 2 분 류 를 하여 상기 지 수 를 예측 하 는 것 을 실현 했다
  • .
  • sklearn 의 SVC 매개 변 수 를 어느 정도 분석 했다
  • ta - lib 이 모듈 은 CentOS 에 설치 할 때 문제 가 발생 할 수 있 습 니 다
  • Reference
  • 우 광 SVM 튜 토리 얼
  • sklearn - SVM 매개 변수 설명
  • 좋은 웹페이지 즐겨찾기