분류 기반 알고리즘은 사기 감지, 기본 예측, 신용 점수, 자산 가격 움직임 방향성 예측, 매매 권장 사항등 정성적 반응을 예측하는 금융 영역에서 사용되었다.
이러한 문제의 경우 범주 클래스 레이블을 예측하는 것이기 때문에 분류 기반 머신러닝을 사용하는 것이 적합하다.
사기 감지(불균형한 데이터셋)
일반적으로 금융 부분에서 사기의 경우 당하는 사람이 매우 적기 때문에 사기 감지의 경우 불균형 데이터셋을 다루는 문제이다.
불균형 데이터셋을 처리하는 방법은 데이터를 다운/업 샘플링을 통해서 데이터간의 균형을 맞춰 예측을 향상시킬 수 있다.
- 업샘플링
업샘플링은 소수 클래스의 관측치를 증가시켜 데이터 간의 균형을 맞추는 방법이다.
업샘플링을 할 때는 단순히 기존 데이터를 복제하는 방법을 사용할 수 있다.
다만 이는 모델이 소수 클래스의 샘플을 외울 수 있어 과적합이 생길 수 있는 단점이 있다.
그리고 소수 클래스의 샘플을 기반으로 새로운 샘플을 생성하는 방법인 SMOTE(Synthetic Minority Over-sampling Technique)을 사용할 수 있다.
이는 각 소수 클래스 샘플에 대해 가까운 이웃을 찾아 이들 사이에 해당하는 임의의 점을 선택해 새로운 데이터를 생성한다.
다만 소수 클래스 사이의 경계가 모호해 질 수 있고 이상치에 민감하게 반응하는 단점이 있다.
그리고 ADASYN(Adaptive Synthetic Sampling)이라는 방법이 있는데 이는 소수 클래스 샘플이 다수 클래스와 가까울 수록 더 많은 합성 샘플을 생성하게 하여 클래스 간의 경계를 더 잘 학습하도록 돕는다.
- 다운샘플링
다운샘플링은 다수 클래스의 관측치를 감소시켜 데이터 간의 균형을 맞추는 방법이다.
다만 다운샘플링을 할 때는 중요한 정보를 잃을 수 있으므로 데이터를 제거하기 전에 중요도가 낮은 데이터를 선별적으로 제거하는 등의 과정이 필요하다.
다운샘플링은 업샘플링에 비해 계산 비용이 적게 들고, 데이터가 과도하게 증가하는 것을 방지할 수 있다는 장점이 있다.
다만 데이터 샘플의 축소로 비사기성 거래가 사기성으로 잘못 분류되는 거짓 양성의 경향이 발생할 수 있다.
평가 메트릭
대부분의 경우 사기가 아니기 때문에 데이터의 불균형이 심하다.
이러한 경우 정확도로 학습을 하게 된다면 모두 사기가 아니라고 하는 모델도 99%가 넘는 정확도가 나오게 된다.
이러한 경우 혼동 행렬을 보면 거짓 음성이 높게 나와 좋지 못하다.
따라서 이를 고려한 평가 메트릭을 선택해야한다.
- 정밀도
양성으로 예측된 데이터 중 실제로 양성인 데이터의 비율을 의미한다.
이는 특정 클래스의 잘못된 판단을 최소화하고자 할 때 주로 사용된다.
- 재현율
실제 양성인 데이터 중에서 양성으로 올바르게 예측된 데이터의 비율이다.
이는 맞는 것을 놓치는 경우의 비용이 클 때 주로 사용된다.
- F1 점수
정밀도와 재현율의 조화 평균으로, 두 메트릭의 균형을 고려한 성능 지표이다.
사기 감지에서는 사기인 상황을 놓치는 경우가 있으면 안됨으로 재현율을 사용하여 학습을 진행하면 좋다.
F1점수를 사용하는 이유는 재현율과 정밀도모두 다 높은 것을 선택하면 좋겠지만 둘 사이는 정밀도 재현율 트레이드오프 때문에 한쪽을 올리면 나머지는 떨어질수밖에 없다.
따라서 상황에 따라서 재현율과 정밀도 어느쪽을 더 중시할지 선택해야한다.
채무 불이행 확률(데이터 전처리)
채무 불이행 확률을 계산하여 차용인이 얼마나 위험하고 이 위험을 감안해서 얼마를 빌려줘야하는가에 대해서 학습을 한다.
학습을 통해 예측되는 변수는 대손상각으로 몇 개월 동안 지불하지 못해 채권자가 회수 하려고 했으나 실패한 빚을 의미한다.
먼저 데이터를 보면 특성이 150개가 있는 것을 볼 수 있다.
예측되는 변수에서 default(채무 불이행)은 매우 적어서 무시하고 완전 지불과 대손상각(charged off)만 고려한다.
그리고 모든 특성이 중요한 것이 아니기 때문에 주요 특성만 남겨서 훈련 시간을 줄이고 과적합도 방지한다.
특성 제거
1. 누락된 값이 많은 특성 제거
특성에 결측값이 많은 경우 해당 특성이 모델링에 유용한 정보를 제공하지 못해 제거하는 것이 좋다.
결측값을 평균과 같은 값으로 대체하는 방법도 있지만 이는 원래 데이터의 분포를 왜곡시킬 수 있어 잘못된 학습을 할 가능성이 있다.
2. 직관에 따라서 신용의 세부 정보가 담긴 데이터는 유지하고 필요 없는 특성은 제거한다
분석의 목적과 관련이 없는 특성의 경우 모델의 복잡도를 증가시키고 예측 성능을 저하시킬 수 있다.
3. 변수와의 상관관계를 통해서 상관관계가 적은 특성을 제거한다.
중요도가 낮은 특성은 모델의 예측에 크게 기여하지 않는 것으로 간주된다.
따라서 이러한 특성을 제거하면 복잡성을 줄이고 학습 및 예측 속도를 향상시킬 수 있다.
4. 특성중에 높은 상관관계가 있는 특성을 제거
두 특성 간에 높은 상관관계가 있으면 두 변수가 유사한 정보를 가지고 있어 다중공선성 문제가 생길 수 있다.
이러한 문제는 모델의 해석을 어렵게 만들고 예측에도 부정적인 영향을 끼치기 때문에 특성중 하나를 제거하여 이러한 문제를 완화할 수 있다.
범주형 특성 처리
1. 높은 카디널리티를 가지는 경우
사용자의 ID와 같이 대부분의 범주가 몇 번 사용되지 않는 경우 모델링과 관련 없는 데이터일 가능성이 높아 제거하는 것이 좋다.
2. 레이블 인코딩
만약 범주형 특성이 낮음 중간 높음과 같이 순서를 가지고 있을 경우 각 범주에 고유한 정수를 할당할 수 있다.
다만 수학적인 순서가 없는 데이터에 레이블 인코딩을 사용할 경우 모델이 데이터 사이에 수학적인 순서나 거리로 학습을 할 가능성이 있어 잘못된 결과가 나올 수 있다.
3. 원-핫 인코딩
각 범주를 대표하는 새로운 변수를 생성하여 해당 범주에 속하면 1 아니면 0으로 표시를 한다.
이러한 과정은 각 범주마나 벡터에서 하나의 위치만 차지하여 학습이 가능하게 하지만 범주의 수가 많은 경우 차원이 증가하게 되어 차원의 저주나 학습 시간의 증가로 이어질 수 있다.
비트코인 거래 전략(장단기 데이터 관계에 따른 매매여부 예측)
비트코인 거래 전략 -> 장단기 가격의 관계에 따른 매매여부 예측
변동성이 커서 시장의 움직임을 빠르게 예측하는게 중요하다.
데이터셋에는 분단위의 시가, 최고가, 저가, 종가 데이터와 거래량이 있다.
단기 가격이 장기보다 높으면 1로 표기 낮으면 0으로 표기해서 장단기 추세파악을 한다.
특성 엔지니어링
- 이동 평균선
시계열 데이터에서 잡음을 줄여 단기적인 변동을 낮추고 장기적인 가격 추세를 보여준다.
이동 평균선은 지정된 기간 동안의 데이터를 산술 평균하는 단순 이동 평균과 최근 가격 변동이 평균에 더 큰 영향을 주는 지수 이동 평균과 같이 다양한 종류가 존재한다.
- 스토캐스틱 오실레이터
특정 기간동안 주식의 종가를 이전 가격 범위와 비교하는 모멘텀 지표이다.
%K, %D는 각각 느린 지표와 빠른 지표를 나타낸다.
빠른 지표는 느린 지표보다 기본 주가의 변동에 민감하여 많은 거래 신호를 생성할 확률이 높다.
따라서 %K 선이 %D 선을 상향 돌파하면 골든 크로스로 매수 신호로 생각할 수 있고, 하향 돌파하면 데드크로스로 매도 신호로 해석될 수 있다.
- 상대 강도 지수
RSI 주식 또는 기타 자산의 가격의 과매수 과매도 상태를 표기하기 위해 최근 가격 변동의 규모를 측정하는 지표이다.
$$\begin{cases}
& \text{평균 이득} = \frac{\text{N일 동안의 총 이득}}{N} \\
& \text{평균 손실} = \frac{\text{N일 동안의 총 손실의 절대값}}{N} \\
& RS = \frac{평균 이득}{평균 손실} \\
& RSI = \frac{RS}{1 + RS}
\end{cases}$$
70에 가까워지면 과매수 된것으로 보고 30에 가까워지면 과매도 되어 저평가 될 확률이 있음을 파악 할 수 있다.
- 변화율(ROC)
현재 가격과 n기간 과거 가격사이의 백분율 변화를 측정하여 나타낸 지표이다.
변화율은 가격 변동의 속도와 방향을 파악하는데 사용되어 가격이 상승 또는 하락의 추세를 식별하는데 도움을 준다.
ROC값이 높은 자산은 과매수 확률이 높은 것으로 보고 ROC가 낮으면 과매도 확률이 높은것으로 본다.
- 모멘텀
주가 또는 거래량의 가속 속도로 가격이 변하는 속도를 뜻한다.
모멘텀이 양수인 경우는 가격이 상승하고 있음을 의미하고 음수인 경우는 가격이 하락하고 있음을 의미한다.