Skip to main content

이상 탐지

Views 14약 9분생성형 AI 활용

이상 탐지는 이름만 보면 단순해 보인다. 평소와 다른 것을 찾아내면 끝일 것 같기 때문이다. 하지만 실제로는 꽤 까다로운 문제다. 이유는 간단하다. 우리가 정말 찾고 싶은 사건은 대개 아주 드물고, 그래서 데이터에 충분히 나타나지 않기 때문이다. 게다가 드물다는 이유만으로 모두 위험한 것도 아니다. 반대로 자주 일어나는 일처럼 보여도 사실은 시스템이 망가지기 직전의 신호일 수도 있다.

이 장에서는 이상 탐지를 하나의 특별한 알고리즘으로 보지 않고, 정상을 어떻게 정의하고, 어떤 기준으로 경보를 띄우며, 그 경보를 실제 운영에 어떻게 연결할 것인가의 문제로 다뤄 보자. 이 관점을 잡으면 사기 거래 탐지, 장비 장애 감지, 품질 검사, 서버 모니터링처럼 서로 달라 보이는 문제들이 사실 같은 구조를 갖고 있다는 점이 보이기 시작한다.

이상 탐지

이상 탐지는 무엇을 찾는 문제인가

이상 탐지는 말 그대로 "평소와 다른 패턴"을 찾는 문제다. 여기서 중요한 단어는 "다르다"다. 다시 말해 이상은 혼자 존재하지 않는다. 반드시 정상이라는 기준이 먼저 있어야 한다.

예를 들어 카드 결제 시스템을 떠올려 보자. 평소 서울에서 소액 결제를 하던 사용자가 갑자기 해외에서 고가 상품을 연속으로 결제하면 이상하게 보일 수 있다. 공장 설비도 마찬가지다. 평소 일정한 진동과 온도를 유지하던 장비가 특정 시간대부터 미세하게 흔들리기 시작하면 장애의 전조일 수 있다. 전자상거래에서는 어떤 상품이 갑자기 반품률이 높아지면 품질 문제를 의심할 수 있다.

이런 문제들의 공통점은 분명하다. 데이터의 대부분은 정상이고, 우리가 정말 주목해야 할 사건은 아주 일부라는 점이다. 즉, 이상 탐지는 희소한 사건을 다루는 문제다. 그래서 일반적인 분류 문제처럼 "데이터를 많이 모아 정답을 붙인 뒤 학습하면 되겠지"라고 접근하면 곧바로 벽에 부딪힌다. 정작 찾고 싶은 사건은 적고, 때로는 정답 자체가 불완전하기 때문이다.

이상 탐지가 어려운 진짜 이유

이상 탐지가 어려운 이유는 모델이 약해서가 아니라, 문제 구조가 원래 어렵기 때문이다.

첫째, 이상은 드물다. 데이터에서 드물게 나타나는 패턴은 모델이 배우기 어렵다. 둘째, 이상은 다양하다. 사기 거래는 매번 같은 방식으로 일어나지 않는다. 장비 고장도 고장 유형마다 신호가 다르다. 셋째, 이상은 시간이 지나며 바뀐다. 어제의 정상 패턴이 오늘도 정상이라는 보장이 없다. 서비스가 성장하고 사용자 행동이 변하면 정상의 모양도 달라진다.

그래서 이상 탐지는 보통 "이상 그 자체를 배우는" 일보다 "정상이 어떤 모습인지 배우는" 일에 더 가깝다. 정상의 범위를 잘 그려 두고, 그 바깥에 있는 점들을 수상하다고 보는 방식이다. 이때 중요한 것은 정답처럼 보이는 하나의 경계선을 찾는 것이 아니라, 얼마나 벗어나면 위험하다고 볼 것인가를 현실적으로 정하는 일이다.

드문 패턴은 모두 이상일까

이상 탐지를 처음 접하면 흔히 "평균에서 멀면 이상"이라고 생각한다. 하지만 현실은 훨씬 복잡하다. 드문 패턴이 항상 문제는 아니기 때문이다.

예를 들어 쇼핑몰에서 명절 직전 주문량이 폭증했다고 하자. 평소 데이터만 보면 아주 이상한 수치처럼 보일 수 있다. 그러나 이것은 장애가 아니라 계절성 때문이다. 반대로 서버 응답 시간이 조금씩 늦어지는 현상은 절대적인 값만 보면 정상 범위처럼 보일 수 있지만, 사실은 큰 장애가 오기 전의 중요한 징후일 수 있다.

즉, 이상은 단순히 "작거나 큰 값"이 아니다. 맥락에서 벗어난 패턴이다. 같은 값이라도 언제, 어디서, 누구에게, 어떤 조건에서 나타났는지에 따라 의미가 달라진다. 이상 탐지가 어려운 이유가 여기에 있다. 숫자 하나가 아니라 상황 전체를 봐야 할 때가 많다.

이상치는 버릴까, 남길까

앞선 장들에서 우리는 이상치가 데이터를 왜곡할 수 있다는 이야기를 했다. 평균을 흔들고, 모델을 불안정하게 만들고, 잘못된 관측일 수도 있기 때문이다. 하지만 이상 탐지에서는 이 질문을 다시 해야 한다. 이상치는 제거 대상인가, 아니면 우리가 찾아야 할 신호인가?

답은 목적에 따라 달라진다.

집값 예측 모델을 만든다고 해 보자. 입력 오류로 30억 원짜리 아파트가 300억 원으로 기록되어 있다면, 이 값은 제거하거나 수정하는 편이 맞다. 하지만 카드 사기 탐지에서는 평소와 너무 다른 고액 결제 자체가 핵심 신호일 수 있다. 제조 데이터에서도 센서 오류로 튄 값은 버려야 하지만, 실제로 부품에 금이 가면서 생긴 비정상 측정값은 절대 버리면 안 된다.

그래서 이상치를 처리할 때는 먼저 이렇게 물어야 한다. "이 값은 잘못 기록된 것인가, 아니면 현실에서 실제로 일어난 중요한 사건인가?" 이 질문을 건너뛰고 무조건 제거하면, 가장 비싼 정보를 스스로 버리게 된다.

이상 탐지 프로젝트에서는 데이터 정제 단계부터 운영팀, 도메인 전문가, 현업 담당자와 함께 의미를 확인해야 한다. 숫자만 보고는 잡음인지 경고인지 구분하기 어려운 경우가 많기 때문이다.

레이블이 부족할 때 왜 비지도 접근을 쓰는가

이상 탐지는 정답 레이블이 부족한 경우가 많다. 사기 거래는 사후 조사 후에야 확정되기도 하고, 장비 장애는 실제로 고장이 난 뒤에만 원인이 기록되기도 한다. 품질 검사에서는 사람이 일일이 불량 여부를 붙여야 해서 비용이 크다. 결국 "정상은 많고, 이상 레이블은 적다"는 상황이 흔하다.

이럴 때 자주 쓰는 생각은 간단하다. 이상의 모양을 완벽하게 배우기 어렵다면, 정상의 범위를 먼저 배우자는 것이다. 대표적인 접근은 다음과 같다.

  • 거리 기반 접근은 어떤 데이터가 다른 데이터들로부터 너무 멀리 떨어져 있으면 이상하다고 본다.

  • 밀도 기반 접근은 주변에 비슷한 이웃이 거의 없는 희박한 영역의 점을 이상하게 본다.

  • 재구성 오류 기반 접근은 정상 데이터를 잘 복원하도록 모델을 학습시킨 뒤, 복원이 잘 안 되는 데이터를 이상으로 본다.

세 방식은 표현은 다르지만 공통된 철학이 있다. "정상은 익숙하고, 이상은 낯설다"는 생각이다.

거리 기반 접근: 멀리 떨어진 점을 수상하게 보기

거리 기반 방법은 가장 직관적이다. 군중 속에서 혼자 멀리 떨어져 있는 사람이 눈에 띄듯, 데이터 공간에서도 다른 샘플과 지나치게 동떨어진 점을 이상 후보로 본다.

예를 들어 고객들의 평소 구매 금액, 구매 시간, 구매 지역을 좌표처럼 놓고 보면 대부분은 비슷한 영역에 모인다. 그런데 한 고객의 행동이 이 군집에서 아주 멀리 튀어나와 있다면 이상 거래일 가능성을 의심할 수 있다.

이 방식의 장점은 이해가 쉽다는 점이다. 하지만 한계도 분명하다. 데이터 차원이 높아질수록 거리의 의미가 흐려질 수 있다. 또 모든 특성이 같은 중요도를 가진 것처럼 계산하면 실제 중요한 신호가 묻힐 수도 있다. 그래서 거리 기반 접근은 단순하지만, 특성 설계와 스케일링에 특히 민감하다.

밀도 기반 접근: 주변에 친구가 없는 점 찾기

밀도 기반 방법은 "혼자 떨어져 있는가"보다 "주변이 얼마나 비어 있는가"를 본다. 어떤 점이 절대적으로 멀리 있지 않더라도, 가까운 이웃이 거의 없다면 수상하다고 판단할 수 있다.

이 방법은 지역적인 이상을 찾는 데 유리하다. 예를 들어 전체 데이터 중에서는 평범해 보이는 값이라도, 특정 사용자 그룹이나 특정 시간대 안에서는 유난히 튀는 경우가 있다. 밀도 기반 방법은 이런 맥락적 차이를 어느 정도 포착하는 데 도움이 된다.

다만 밀도 역시 데이터 표현 방식에 크게 영향을 받는다. 어떤 특성을 넣고 어떤 특성을 빼느냐에 따라 "희박함"의 의미가 완전히 달라질 수 있다. 결국 모델이 아니라 데이터 표현이 성능을 좌우하는 경우가 많다.

재구성 오류 기반 접근: 정상은 잘 복원되고, 이상은 어색하다

재구성 오류 기반 접근은 조금 더 현대적인 감각을 갖고 있다. 정상 데이터를 입력받아 다시 비슷하게 복원하도록 모델을 학습시키면, 정상 패턴은 익숙하므로 잘 복원된다. 반면 훈련 때 자주 보지 못한 이상 패턴은 복원이 서툴러지고, 입력과 출력의 차이가 커진다. 이 차이를 이상 점수로 사용할 수 있다.

이미지 품질 검사에서 자주 쓰이는 방식이 이 생각에 가깝다. 정상 제품 사진만 충분히 학습한 모델은 정상 제품의 모양은 잘 재현한다. 그런데 표면에 균열이나 얼룩이 있는 제품 사진이 들어오면 복원 결과가 어색해지고, 그 차이가 커진다. 텍스트, 로그, 센서 데이터에서도 비슷한 발상을 적용할 수 있다.

이 접근은 복잡한 패턴을 다루는 데 강점이 있지만, 역시 만능은 아니다. 정상 데이터에 이미 다양한 변동이 섞여 있으면 모델이 이상까지 정상처럼 복원해 버릴 수 있다. 다시 말해 정상의 범위를 너무 넓게 배워 버리면 민감도가 떨어질 수 있다.

이상 탐지에서 더 중요한 것: 이상 점수와 임계값

이상 탐지 모델은 대개 "정상" 또는 "이상"을 곧바로 딱 잘라 말하지 않는다. 대신 각 데이터에 대해 이상 점수를 매긴다. 문제는 여기서부터다. 어느 점수부터 경보를 띄울 것인가?

이 임계값은 기술보다 운영에 더 가깝다. 임계값을 너무 낮추면 경보가 쏟아진다. 작은 이상도 놓치지 않을 수 있지만, 실제로는 대부분 오탐일 가능성이 크다. 반대로 임계값을 너무 높이면 경보는 조용해지지만, 정말 중요한 이상까지 놓칠 수 있다.

예를 들어 결제 사기 탐지에서 오탐이 많으면 정상 고객의 결제가 자꾸 막힌다. 고객은 짜증을 내고, 서비스 신뢰는 빠르게 무너진다. 서버 장애 감지에서 오탐이 많으면 운영팀은 밤새 알림에 시달리다가 결국 경보를 무시하게 된다. 이것을 흔히 알림 피로라고 부른다. 경보 시스템이 너무 자주 울리면, 진짜 화재가 났을 때도 아무도 놀라지 않는 상황이 오는 것이다.

이상 탐지의 핵심은 여기 있다. 좋은 모델은 점수만 잘 만드는 모델이 아니다. 사람이 실제로 믿고 행동할 수 있는 수준의 경보 체계를 만드는 모델이다.

오탐과 미탐 사이에서 무엇을 우선할 것인가

이상 탐지에는 늘 두 가지 실수가 있다. 정상인데 이상이라고 보는 오탐, 이상인데 정상이라고 놓치는 미탐이다. 둘 중 어느 쪽이 더 치명적인지는 문제마다 다르다.

금융 사기 탐지에서는 미탐의 비용이 클 수 있다. 사기를 놓치면 직접 금전 손실이 발생하기 때문이다. 하지만 병원 검사나 고객 서비스처럼 오탐의 비용이 더 큰 경우도 있다. 정상 사용자를 과도하게 차단하면 서비스 이탈이 커질 수 있다.

그래서 이상 탐지 프로젝트에서는 모델을 만들기 전에 먼저 물어야 한다. "우리는 무엇을 더 두려워하는가?" 이 질문에 답하지 않으면 임계값도 정할 수 없고, 평가 방식도 흔들린다. 결국 이상 탐지는 통계 문제이면서 동시에 의사결정 문제다.

시간의 흐름을 무시하면 이상을 잘못 본다

이상 탐지에서는 시간 정보가 특히 중요하다. 어떤 패턴은 절대값이 아니라 변화량에서 이상이 드러나기 때문이다. 오늘의 온도 80도가 이상한지 아닌지는 장비마다 다르다. 하지만 지난 10분 동안 60도에서 80도로 급격히 상승했다면 매우 중요한 신호일 수 있다.

또한 시스템은 계절성, 주기성, 이벤트 효과를 가진다. 평일과 주말의 트래픽이 다르고, 낮과 밤의 센서 값이 다르며, 할인 행사 기간의 주문 패턴은 평소와 다르다. 이런 변화를 정상에 포함하지 않으면 모델은 세상을 너무 자주 오해한다.

따라서 이상 탐지에서는 현재 값만 볼 것이 아니라 이동 평균, 변화율, 직전 상태와의 차이, 같은 시간대의 과거 패턴 같은 특성이 매우 중요해진다. 이상은 종종 "하나의 값"이 아니라 "흐름의 깨짐"으로 나타난다.

현업에서 자주 실패하는 이유

이상 탐지는 모델을 바꾸면 해결될 것처럼 보이지만, 실제 실패 원인은 의외로 단순한 곳에 있다.

  • 정상과 이상의 정의가 팀마다 다르다.

  • 경보가 발생했을 때 누가 무엇을 할지 정해져 있지 않다.

  • 데이터가 늦게 들어오거나, 센서 자체가 불안정하다.

  • 임계값을 한 번 정한 뒤 계속 방치한다.

  • 운영 중 환경이 변했는데 모델은 예전 정상만 기억한다.

즉, 이상 탐지는 예측 문제이면서 동시에 운영 체계 문제다. 모델이 "이상합니다"라고 말한 뒤에 아무도 대응하지 못한다면, 그 시스템은 반쯤 실패한 것이다. 반대로 모델이 완벽하지 않아도 경보 우선순위, 재확인 절차, 사람 검토 흐름이 잘 설계되어 있으면 충분히 유용한 시스템이 될 수 있다.

이상 탐지 시스템은 어떻게 설계해야 할까

좋은 이상 탐지 시스템은 한 번의 판단으로 모든 것을 결정하지 않는다. 보통은 단계적으로 위험을 다룬다.

가벼운 이상은 로그로만 남기고, 중간 수준의 이상은 담당자 검토 목록으로 보내고, 매우 높은 점수의 이상만 즉시 차단하거나 긴급 알림을 보낸다. 이렇게 하면 오탐의 부담을 줄이면서도 위험한 사건을 놓칠 가능성을 낮출 수 있다.

또한 경보를 개별 이벤트 단위가 아니라 묶음으로 보는 것도 중요하다. 같은 장비에서 짧은 시간 안에 비슷한 경고가 연달아 발생한다면 하나의 장애 사건으로 묶는 편이 낫다. 사용자가 1분 동안 열 번 실패한 로그인 시도를 했다면, 각각의 시도보다 전체 패턴이 더 중요하다.

결국 실무에서는 모델 하나보다 다음 질문들이 더 중요해진다. 경보는 몇 건까지 사람이 처리할 수 있는가? 어떤 이상은 즉시 차단하고, 어떤 이상은 검토로 넘길 것인가? 잘못 울린 경보를 어떻게 학습 데이터로 되돌릴 것인가? 이 질문에 답할수록 시스템은 점점 제품다워진다.

이상 탐지를 보는 올바른 시선

이상 탐지는 "희귀한 것을 맞히는 기술"이 아니다. 더 정확히 말하면, 정상의 범위를 이해하고 그 경계 밖에 있는 사건을 현실적으로 다루는 설계 기술이다. 그래서 모델 성능만으로는 충분하지 않다. 정상의 정의, 데이터의 맥락, 임계값의 설정, 경보 이후의 대응 절차가 모두 함께 맞물려야 한다.

사기 거래, 장비 장애, 품질 불량, 보안 침입은 서로 다른 문제처럼 보인다. 하지만 모두 같은 질문으로 돌아온다. "무엇을 정상이라고 볼 것인가, 얼마나 벗어나면 행동할 것인가?" 이상 탐지는 이 질문에 답하는 과정이다.

이 관점을 이해하면 앞으로 보게 될 추천 시스템이나 딥러닝, 그리고 제품 배포의 주제도 더 선명하게 연결된다. 모델은 숫자를 내놓을 뿐이다. 그 숫자에 의미를 부여하고, 행동으로 바꾸고, 시스템의 신뢰를 지키는 일은 결국 설계의 몫이다. 이상 탐지는 그 사실을 가장 또렷하게 보여 주는 분야다.

책 목록

머신러닝 설계 수업: 데이터를 모델로, 모델을 제품으로 바꾸는 실전 감각

전체 목차 보기

이 노트는 보도·비평·교육·연구 목적으로 작성되었습니다. 저작권 문의가 있으시면 에서 알려주세요.

틸노트는 사용자가 AI를 활용해 노트를 쉽게 작성하거나 편집할 수 있는 서비스입니다.

AI 스퀘어 단톡방에 함께해요

AI 활용과 틸노트 사용 팁을 나누는 오픈채팅방입니다. 입장 비밀번호는 tilnote입니다.

참여하기