AutoEnceoder를 사용하여 예외 감지를 시도했습니다.
8462 단어 Python이상 검출autoencodertech
학습표 데이터의 이상 검출을 위해 아래 사이트의 코드를 시도해 봤습니다.
데이터 집합은kaggle의 심전도 데이터를 사용합니다.
AutoEnocder에서 PTB 진단 ECG 데이터베이스의 정상 데이터를 학습하여 정상 데이터와 이상 데이터의 이상 점수를 계산하여 비교합니다.
데이터 세트의 상세한 상황은 이쪽을 보십시오.
Colab에서 실행되는 코드는 여기.입니다.
데이터 세트가 Google Drive에 업로드되어 실행되고 있습니다.
또 신경 네트워크에 익숙하지 않은 사람이기 때문에 이상한 점이 있다면 부드럽게 지적해 주시면 감사하겠습니다.
참고 사이트에서 온 코드 변경점
코드는 참고 사이트에서 유용한 것으로 자세한 내용은 참고 사이트(재등재)나 Colab의 데이터를 참조하십시오.
이 밖에 사용된 데이터 집합의 열수 188에 따라 네트워크의 층수를 변경하여 한 층을 증가시켰다.
class AutoEncoder(nn.Module):
def __init__(self):
super(AutoEncoder, self).__init__()
self.dense_enc1 = nn.Linear(188*20, 1024)
self.bn1 = nn.BatchNorm1d(1024)
self.dense_enc2 = nn.Linear(1024, 512)
self.bn2 = nn.BatchNorm1d(512)
self.dense_enc3 = nn.Linear(512, 256)
self.bn3 = nn.BatchNorm1d(256)
self.dense_enc4 = nn.Linear(256,128)
self.dense_dec1 = nn.Linear(128,256)
self.bn4 = nn.BatchNorm1d(256)
self.dense_dec2 = nn.Linear(256, 512)
self.bn5 = nn.BatchNorm1d(512)
self.dense_dec3 = nn.Linear(512, 1024)
self.bn6 = nn.BatchNorm1d(1024)
self.drop1 = nn.Dropout(p=0.2)
self.dense_dec4 = nn.Linear(1024, 188*20)
# 以下略
데이터 사용
일반 데이터는 ptbdbnormal.csv 사용 중입니다.
또한 아래 도표는 심전도 5개를 1개의 도표에 표시한다(이상 데이터도 마찬가지).
또 6할은 학습용 데이터, 4할은 평가용 데이터다.
이상 데이터는 ptbdb입니다abnormal.csv 사용 중입니다.
이상 득점
걱정은 적지만 정상 데이터의 이상 점수는 약 0.01이다.
이상 데이터의 이상 점수는 0.03~0.05로 정상 데이터보다 높다.
0.02~0.03을 한도값으로 설정하면 이상을 검출할 수 있습니다.
기타
Azure의 이상 검출 서비스Anomaly Detector와 Amazon Lookout for Metrics도 마음에 걸려서 조만간 해보고 싶어요.
또 이상 검출을 공부할 때 아래의 책을 읽었다.
기계 학습과 통계적 생각과 시간 서열 분석의 생각이 상세하게 해설되었다.
이상은 끝까지 읽어주셔서 감사합니다.
Reference
이 문제에 관하여(AutoEnceoder를 사용하여 예외 감지를 시도했습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/megane_otoko/articles/038_autoencoder텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)