컨테이너

이상치 탐지를 위한 사분범위(InterQuartile Range, IQR) 본문

Research/Math

이상치 탐지를 위한 사분범위(InterQuartile Range, IQR)

어항 2022. 2. 16. 16:03
반응형

 

작년부터 BLE에서 발생하는 스푸핑 공격 탐지 시스템의 개발을 위해 관련된 논문이나 정보들을 찾아 읽어보기 시작했습니다. 저는 단순히 스푸핑 공격을 감지하는 것이 아닌 사용자와 공격자를 확실히 구분할 수 있는 시스템을 만들고 싶었습니다. 가장 처음 실험해본 아이디어는 BLE 기기가 전송하는 광고 패킷 (비콘 메시지)의 RSSI (Received Signal Strength Indicator)를 사용하는 방법이었죠.

 

광고 패킷의 RSSI는 패킷을 수신받는 기기(Anchor Point, AP)와 패킷을 송신하는 기기(Tag)의 대략적인 거리를 나타내는 지표로 사용될 수 있습니다. 따라서 사용자와 공격자는 서로 다른 위치에 있어 수신한 RSSI는 다를 것이라 생각했어요. 결과적으로 사용자와 공격자가 어느 정도 멀리 있을 땐 스푸핑 공격을 감지하고 공격자를 특정할 수 있었지만, 둘의 거리가 가까울 땐 공격자를 특정하긴커녕 스푸핑 공격도 감지하지 못했죠.

 

그때 RSSI의 이상치 (이상값)을 탐지하기 위해 사용했던 것이 사분범위 (InterQuartile Range, IQR)인데요, 개념이 매우 쉬움에도 불구하고 이상치를 탐지하는 정확도는 나름 만족스러웠던 기억이 납니다. 이상치를 탐지하는 방법을 연구하시거나 비교해보시는 분들은 아래를 참고하시면 좋을 것 같습니다.

 

 

 


 

 

사분범위 (InterQuartile Range, IQR)

 

사분범위는 중앙값 (Median)을 기준으로 데이터들의 흩어진 정도를 뜻합니다. 지속적으로 수신되거나 분포되는 데이터에서 이상치를 찾는 데 효과적일 수 있습니다 [1]. 다음으로 아래 그림과 식을 보며 IQR에 대해 알아봅시다.

 

 

 

IQR은 Q3과 Q1의 차로 구하며 식은 아래와 같습니다.

 

 

$$ IQR = Q3 - Q1 $$

 

 

Q3은 3사분위 수로 전체 데이터의 75% 값을 의미하며, Q1은 1사분위 수로 전체 데이터의 25% 값입니다. 위 식에서 계산된 IQR은 정상 데이터 범위의 최솟값과 최댓값이 계산되며 식은 아래와 같습니다.

 

 

$$ Minimum = Q1 - (IQR * 1.5) $$

$$ Maximum = Q3 + (IQR * 1.5) $$

 

 

위 식을 이용하여, 만약 새로 수신되거나 입력된 데이터가 Minimum보다 작거나 Maximum보다 크다면 그 데이터를 이상치로 판단할 수 있고, Minimum보다 크거나 Maximum보다 작으면 정상 데이터로 판단할 수 있겠습니다.

 

 

Reference

[1] H. Vinutha, B. Poornima, and B. Sagar, “Detection of outliers using interquartile range technique from intrusion dataset,” in Information and Decision Sciences. Springer, 2018, pp. 511–518.

 

 

반응형
Comments