데이터 분석가:Applied Data Analytics

왜 이상치(Outlier)가 위험한가? - "반 평균"의 함정

데이터분석 2025. 6. 14. 01:46
320x100
728x90

왜 이상치(Outlier)가 위험한가? - "반 평균"의 함정

학생 5명의 수학 점수를 예로 들어보겠습니다. 이 5명의 점수가 데이터입니다.

  • 정상적인 경우:
    • 학생 A: 85점
    • 학생 B: 90점
    • 학생 C: 80점
    • 학생 D: 95점
    • 학생 E: 88점

이 반의 평균 점수는 (85 + 90 + 80 + 95 + 88) / 5 = 87.6점 입니다. 이 87.6점이라는 평균은 "이 반 학생들은 대체로 80점대 후반의 점수를 받았다"라고 말할 수 있는 좋은 대표값입니다.


  • 이상치가 포함된 경우: 그런데 학생 E의 점수를 컴퓨터에 입력하다가 실수로 '88점'이 아닌 '1000점'을 입력했다고 가정해봅시다.
    • 학생 A: 85점
    • 학생 B: 90점
    • 학생 C: 80점
    • 학생 D: 95점
    • 학생 E: 1000점 (이상치!)

이 때, 새로운 평균 점수는 (85 + 90 + 80 + 95 + 1000) / 5 = 290점 이 됩니다.

어떤가요? 이 290점이라는 평균은 반의 상태를 전혀 설명하지 못합니다.

아무도 290점을 받지 않았고, 이 값을 보고 "이 반 학생들은 공부를 아주 잘하는구나" 라고 생각하면 완전히 잘못된 결론에 이르게 됩니다.

단 하나의 잘못된 값(1000점)이 전체 데이터를 대표하는 평균값을 완전히 왜곡시킨 것입니다.

 

이 값을 그대로 두면,  평균 값이 실제보다 훨씬 높게 계산되고, 다른 변수와의 관계를 분석할 때도 말도 안 되는 관계를 학습하게 되어 분석 전체를 망가뜨립니다.

어떻게 문제를 해결하나요? - "상식적인 추리"

그래서 우리는 이 '1000점'이라는 이상치를 상식적으로 처리해야 합니다.

  • 1단계: 현실적인 상한선으로 제한 (Capping)
    • 생각 : "수학 점수는 100점이 만점인데 1000점은 말이 안 돼. 이건 명백한 오류다."
    • 실행 : 우리는 이 1000점이라는 값을 "알 수 없는 값(오류)"으로 인지합니다. 코드에서는 이 값을 NaN (Not a Number, 숫자가 아님)으로 바꿔버립니다. 어떤 데이터에서 값이 특정 값 이상은 거의 불가능하다"는 상식을 이용해 특정값 넘는 값을 모두 NaN으로 바꾸는 것입니다.
  • 2단계: 선형 보간법으로 수정 (Linear Interpolation)
    • 생각 : "학생 E의 점수는 오류라 비워뒀는데, 그래도 평균을 내려면 뭔가 값을 채워 넣어야 하지 않을까? 바로 앞 학생 D가 95점이고, 이 학생은 평소 80점대 후반을 받았으니 대략 그 근처 점수일 거야."
    • 실행 (더 쉬운 시계열 예시) : 온도계가 1분마다 온도를 잰다고 상상해봅시다.
      • 오후 1:00 -> 40.5도 (정상)
      • 오후 1:01 -> 1000도 (센서 오류!)
      • 오후 1:02 -> 41.5도 (정상)
      오류가 난 1:01분의 온도는 몇 도라고 추측하는 게 가장 합리적일까요?
      바로 양옆의 정상적인 값, 40.5도와 41.5도의 정중앙인 41.0도라고 추리하는 것이 가장 상식적입니다.
    • 이것이 바로 선형 보간(interpolate)의 원리입니다. 양옆의 가장 가까운 정상적인 값들을 보고 그 사이를 부드러운 직선으로 이어주어 비어있는 값을 자연스럽게 채워 넣는 것입니다. 이렇게 하면 전체 데이터의 흐름을 왜곡하지 않으면서도 문제를 해결할 수 있습니다.

결론적으로, 이상치를 그대로 두는 것은 "반 평균을 290점으로 만드는 것"과 같고, 이를 처리하는 것은 "상식적인 추리를 통해 데이터를 복원하는 과정"이라고 할 수 있습니다.