[KT AIVLE SCHOOL]

머신러닝(7)

조진목_스터디 2024. 10. 22. 22:57

이상탐지: 일반적인 값과 다른 특이한 값(outlier)이나 드문 사건을 탐지하는 기법

문제 유형은 지도 학습이나 학습 방법은 비지도 학습의 형태이다. (모델 평가를 위해 Label이 필요하다.)

평가 지표: F1-score

 

 

Isolation Forest: 랜덤하게 feature를 선정하고, 랜덤하게 split 기준을 삼아 Tree를 생성

- 훈련 셋으로 부터 256개 이상 데이터 샘플링

- 정상 데이터 depth가 길다. / 비정상 데이터 depth가 짧다.

- 경로의 길이를 점수화(Scoring)하여 1에 가까울 수록 Abnormal

- 파라미터

✓n_estimators: 하나의 데이터를 고립시키기 위해 생성하는 tree의 개수 / Default : 100

✓max_samples: Default : 256

✓contamination: Score 계산 후, 이상치로 간주할 비율(0.5 보다 작아야 함)

# contamination
# 높으면: 정상 간주 영역이 좁아진다, 확실한 정상만 보겠다. > 조금이라도 의심되면 비정상
# 낮으면: 정상 간주 영역이 넓어짐 왠만하면 다 정상으로 받아주어라. > 확실히 고장이면 고장


model = IsolationForest(contamination = 0.1, n_estimators = 50 )
model.fit(X1)
pred = model.predict(x_val)

# 분류 결과 평가
print(confusion_matrix(y_val, pred))
print(classification_report(y_val, pred))

 

 

범위를 이동하며 F1_score를 저장하고 시각화

result = []
conts = np.linspace(0.01, 0.5, 100)
for c in conts:
    model = IsolationForest(contamination=c, random_state=20)
    model.fit(x_train)
    pred = model.predict(x_val)
    pred = np.where(pred==1, 0, 1)
    result.append(f1_score(y_val, pred))
    
print(round(max(result),3), round(conts[np.argmax(result)], 3) )
plt.plot(conts, result, marker = '.')
plt.grid()
plt.show()

 

 

 

 

'[KT AIVLE SCHOOL]' 카테고리의 다른 글

딥러닝(2)  (0) 2024.10.31
딥러닝(1)  (0) 2024.10.30
머신러닝(6)  (0) 2024.10.21
머신러닝(5)  (0) 2024.10.20
머신러닝(4)  (0) 2024.10.17