Korea Digital Contents Society

Current Issue

Journal of Digital Contents Society - Vol. 25 , No. 3

[ Article ]
Journal of Digital Contents Society - Vol. 23, No. 4, pp. 753-763
Abbreviation: J. DCS
ISSN: 1598-2009 (Print) 2287-738X (Online)
Print publication date 30 Apr 2022
Received 08 Mar 2022 Revised 04 Apr 2022 Accepted 20 Apr 2022
DOI: https://doi.org/10.9728/dcs.2022.23.4.753

Spark 기반의 선박위치정보 오류 및 이상치 탐지 기법 연구
박용길1 ; 이철용2, *
1한국해양과학기술원 해양빅데이터센터 박사후연구원
2한국해양과학기술원 해양빅데이터센터 선임기술원

Study of Spark-based Vessel Location Data Error and Outlier Detection Method
Yonggil Park1 ; Cholyoung Lee2, *
1Post Doctoral Scientist, Marine Bigdata center, Korea Institute of Ocean Science & Technology, Busan, Korea
2Senior Research Specialist, Marine Bigdata center, Korea Institute of Ocean Science & Technology, Busan, Korea
Correspondence to : *Cholyoung Lee Tel: +82-(0)51-664-3783 E-mail: cylee82@kiost.ac.kr


Copyright ⓒ 2022 The Digital Contents Society
This is an Open Access article distributed under the terms of the Creative Commons Attribution Non-CommercialLicense(http://creativecommons.org/licenses/by-nc/3.0/) which permits unrestricted non-commercial use, distribution, and reproduction in any medium, provided the original work is properly cited.

초록

최근 해상 안전 및 관리를 위해 선박위치정보 수집 및 활용에 대한 관심이 높아지고 있다. 특히, 선박위치정보를 이용한 인공지능 기반 선박 분포 예측이나 항적 예측 연구가 국내외에서 다양한 방식으로 진행되고 있다. 그러나 연간 70억 건 이상의 대용량 데이터를 처리하기 어렵고, 표준화된 검수 방법도 제시되지 못하였다. 본 연구에서는 Spark 기반 빅데이터 처리 분석 기술을 이용하여 대용량 선박위치정보의 오류 및 이상치를 탐지 및 처리하는 표준화된 방법을 제시하는 것을 목표하였다. 실험 데이터는 2018년 10월 31일의 전국 대상 AIS 데이터이며, 선박위치정보 개수는 약 26,160,000 건이다. 선박위치 메시지 간 선박의 평균 이동속도를 계산하여 경계 값 테스트, 스파이크 테스트, 이동 IQR 테스트를 통과시킴으로써 이상치를 탐지하고 이를 오류 검수 대상으로 분류하였다. 이 때 이동 IQR 테스트의 샘플링 사이즈와 스케일 값을 조정하면서 이상치 탐지율을 비교 분석하였고, 최종적으로 연산 효율을 고려하여 유의미한 경계 값을 도출하였다. 이동 IQR 테스트의 샘플링 사이즈는 61개, 스케일은 3배수(3*IQR)로 설정하는 것이 파라미터 변화에 따른 민감도나 연산 효율 상 적절한 것으로 판단되었다.

Abstract

There has been an increasing interest in collecting and utilizing ship position information to improve maritime safety and management for the last decades. Specifically, AI-based prediction studies regarding vessel distribution and tracking are recent issues in the domestic and international maritime fields. Nevertheless, a massive amount of over 7 billion cases per year has been a barrier of process, and no standardized quality control method has been proposed yet. Thus this study proposes a standardized method to detect and process errors and outliers of the huge-amount vessel position information using big-data analysis technology based on Spark. AIS(Automatic Identification System) data for overall South Korea, having approximately 26,160,000 position-records, was tested. Outlier detection was made through boundary test, spike test, and moving IQR(Interquartile Range) test, using mean speed between message records, and they were classified as error and outlier. For a more sophisticated process, detection ratio was analyzed, varying sampling size and scale then optimal setting was determined. The optimal settings were 61 in sampling size(30 before and after) and three times of IQR in scale, considering the sensitivity to parameter change and computation efficiency.


Keywords: Vessel location data, Bigdata, Spark, Error detection, Outlier detection
키워드: 선박위치정보, 빅데이터, 오류 탐지, 이상치 탐지

Ⅰ. 서 론

최근 국제교역량의 증가에 따른 해상 교통량이 증가하면서 선박 상호간 충돌예방, 불법선박 탐지, 선박경로 예측 등 해상사고 및 안전 관련 연구가 활발히 수행되고 있다. 국내에서는 운항 및 관련 서비스의 품질향상을 통해 해상에서의 안전과 보안을 증진하고 해양환경을 보호하는 것을 목적으로 하는 e-내비게이션을 개발하고 있으며, 해외에서는 항행상황 파악에서 안전모니터링에 이르기까지 국내외 관심이 증가하고 있는 실정이다[1][2]. 이러한 해상 안전 및 관리 서비스를 제공하기 위해서는 선박위치정보의 활용이 필수적이며 이에 따라 선박위치정보의 수집 및 활용에 대한 관심이 높아지고 있다. 선박위치정보는 주로 AIS(Automatic Identification System, 선박자동식별시스템)를 통해 수집되고 있으며, 10톤 이상의 선박에 의무적으로 설치하도록 국내 어선설비기준 시행규칙으로 제정되어 있다[3].

AIS는 선박의 항해안전 및 보안 강화를 위하여 선박의 선명, 제원, 침로, 위치, 속력 등의 정보를 무선통신을 통하여 선박-선박, 선박-육상 간 자동 송수신할 수 있는 항해장비로 선박의 정확한 위치정보 수집 및 제공으로 항만관제에 활용하고 해양사고 발생 시 수색, 구조 등을 지원하는 시스템이다[3]. 국내의 AIS 운영 현황으로 13개소의 운영국과 41개소의 AIS 기지국을 해양수산부에서 운영하며, 1개소의 운영국과 3개소의 AIS 기지국을 해양경찰청에서 운영하고 있다. 그림 1은 국내 AIS 수신 기지국의 수신범위를 나타내고 있다.


Fig. 1. 
Coverage of AIS station

그러나 수집된 AIS 정보는 ARPA 레이더 등 다른 항해 장치에서 수집한 정보와 비교하였을 때 정확하지 않은 정보가 표시되는 등의 문제가 발견되고 있으며, 이를 이용한 항해 안전 관리 뿐만 아니라 선박위치정보를 활용한 연구의 신뢰도 문제를 발생시킬 수 있다[4]. 선박위치정보를 선박 안전 감시 및 예측에 활용하려 할 때, 정확하지 않은 선박위치정보는 잘못된 학습으로 인한 예측 및 학습 오류를 발생시킬 수 있기 때문에 선박위치정보에 대한 오류 검수는 반드시 수행되어야 한다.

AIS 정보의 오류를 최소화하기 위해 다양한 접근 방법의 연구가 수행되었다. 김도연 등은 실시간으로 수집되는 AIS 신호를 퍼지 추론을 적용하여 COG(Course Over Ground), SOG(Speed Over Ground)의 오류를 판단하고 값을 보정하는 알고리즘을 제시하였으며[5], 전재호, 김재원 등은 선박을 운행 중인 사람이 정보 입력 지침을 미준수하거나 잘못 입력하여 발생하는 휴먼 에러에 대한 개선방안을 제시하였다[6][7]. Harati Mokhtari 등도 선박의 고유번호인 MMSI(Maritime Mobile Service Identity), 선박 종류, 호출부호(Call sign)의 오류 등 휴먼 에러에 대한 문제점으로 인한 AIS 정보의 신뢰성 하락에 대해 개선방안을 제시하였으며[8], 특히 MMSI의 중복입력 문제에 대한 AIS 정보의 신뢰성에 대한 문제를 제기하는 보고서가 지속적으로 제출되고 있지만 현재까지도 이 문제는 해결되지 않고 있다[9][10].

과거에는 선박의 항해 및 진로에 대한 안전관리 및 사고 방지가 주요 관심사였기 때문에 선박의 고유 정보 및 선박의 침로, 방향, 속도와 관련된 오류 연구가 주로 수행되었으나, 2010년 중반부터 해상 빅데이터에 대한 관심이 증가하면서 “선박 등에 탑재된 항해통신장비로부터 발생 및 수집되는 수많은 정보”를 해상・빅데이터로 정의하고 선박의 항적 표시, 해상 교통량 분석, 비정상적인 운행패턴 등의 연구에 선박위치정보를 활용하기 시작하였다[11].

한편, 해양수산부에서는 수년간 AIS 선박위치정보를 구축하고 있으며 전국 연안을 대상으로 연간 70억 건 이상 수집되는 선박위치정보를 수년간 구축한 정보는 해상 교통량 분석, 선박 밀집도 분포 예측 등에 활용할 수 있는 빅데이터 자료이다. 그러나 빅데이터를 처리하기 위한 기술 난이도가 어렵고, 표준화된 검수 방법도 제시되지 못하였다. 본 연구에서는 Spark 기반 빅데이터 처리 분석 기술을 이용하여 대용량 선박위치정보의 오류 및 이상치(outlier)를 탐지 및 처리하는 표준화된 방법을 제시하는 것을 목표로 하였다. 선박위치정보 오류 및 이상치를 탐지하기 위한 방안을 수립하고 실제 선박위치정보 자료에 적용하여 그 결과를 고찰하였다.


Ⅱ. 연구 대상 및 범위
2-1 AIS 선박위치정보

AIS의 정보는 정적정보(Static data)와 동적정보(Dynamic data) 등 크게 2가지로 분류하고 있다. 정적정보는 선박명, 호출부호, IMO 번호, MMSI 식별부호 등의 정보와 목적지, 도착예정시간, 흘수, 항해상태 등 변동이 많지 않은 정보를 말하며 6분 간격으로 전송되는 정보이다. 동적정보는 선박의 이동에 따라 변하는 위치(위도, 경도), 속도(SOG), 침로(COG), 선수(Heding), 선회율(ROT) 등의 정보를 말하며 선박의 상태와 속력에 따라 전송주기가 다르다. 표 1은 Class-A AIS의 동적정보 전송주기를 나타내고 있다[3], [12].

Table 1. 
Reporting interval of Class-A AIS Dynamic data
Ship's Dynamic Conditions Reporting Interval
Ship at anchor or moored and not moving faster than 3 knots 3 min
Ship at anchor or moored and moving faster than 3 knots 10 s
Ship 0-14 knots 10 s
Ship 0-14 knots and changing course 3⅓ s
Ship 14-23 knots 6 s
Ship 14-23 knots and changing course 2 s
Ship > 23 knots 2 s
Ship > 23 knots and changing course 2 s

선박위치정보는 동적정보에 포함되어 있으며, 전송 시각의 선박위치, 속도, 침로 등의 정보를 저장하고 있다.

AIS 정보를 수집하는 방법은 크게 3가지로 구분할 수 있다. 첫 번째 방법은 선박에서 발신되는 AIS 신호를 직접 수신하는 방법이며 수신되는 AIS 신호를 통신프로토콜에 따라 메시지를 분석하는 과정이 필요하다.

두 번째 방법은 육상 기지국을 통해 수신되어 저장된 정보를 수집하는 것이다. 국내에서는 해양수산부의 해양안전종합정보시스템(GICOMS, General Information Center on Maritime Safety and Security)을 운영하고 있으며 육상 AIS 기지국에 수신되는 정보를 통합 데이터베이스에 구축하고 활용하고 있다.

국내의 경우 AIS 기지국을 통해 저장되는 전국 선박위치정보는 하루 평균 2,000만 건 이상이며, 1년에 70억 건 이상의 정보가 저장되고 있다[13].

세 번째 방법은 위성 AIS정보를 활용하는 방법이며, 대부분 상용 위성을 운용하는 회사로부터 직접 구입하여 수집할 수 있다. 그러나 일반적으로 상용 위성AIS 정보는 구매 비용이 높고, 주로 무역을 위한 선박 추적용도로 활용되고 있어 전송주기가 30분 간격으로 매우 길기 때문에 활용이 어려운 실정이다[14].

2-2 연구 대상 수집

본 연구에서는 선박위치정보 오류 및 이상치 탐지 방안을 적용할 자료를 수집하였으며, 기존에 구축되어 있는 2018년 10월 31일 전국의 AIS 자료를 수집하였다. 수집된 AIS 자료는 총 26,160,503 건이며 항목은 MMSI, 전송시간, 위도, 경도, 속도, 침로, 선수 항목으로 구성되어 있다.

그러나 기존에 구축되어 있는 AIS 자료는 해상 관제에 필요한 항목만 선택하여 구축된 정보이므로 한정된 정보만을 저장하고 있었다. 이를 해결하기 위해 오류 탐지 방안을 수립하기 위한 자료를 별도로 수집하였으며, 2020년 9월 24일~2020년 9월 26일의 3일간 전국의 수신 기지국에 수신된 153,289,183 건의 정보를 수집하였다. 기지국에서 수신된 데이터의 예시는 그림 3과 같으며 상세 내용은 표 2와 같다.


Fig. 3. 
Example of receiver station data

Table 2. 
Contents of AIS dynamic data column
AIS Dynamic data
$115 440******20200926215958 440611311 361-128 130 75793012 21407026 791511*29
idx Column name Length Content
1 Start Char 1 “$”
2 Target Sensor 2 “11” AIS
4 Packet ID 1 “5” (5:Dynamic data, 6:Static Data)
5 Tatget Id 12 “ 440******” MMSI number
17 Message Time 14 “20200926215958” 2020/09/26 21:59:58
31 BaseStation ID 9 “ 4406113”
40 Message Type 2 “11”
42 Message Size 3 “ 36”
45 Mode 1 “1” (0:N/A, 1~3:AIS ClassA, 4:AIS ClassB)
46 ROT 4 “-128” (-720 ~ 720degrees/min, 0:N/A=default)
50 SOG 4 “ 13” 1.3knot (1/10knot steps)
54 PosAcc 1 “0” (0:low(>=10m)=default, 1:high(<=10m))
55 Longitude 10 “ 75793012” 126.321687 degree (1/600000sec(±180degrees) default=181=N/A)
65 Latitude 9 “ 21407026” 35.678377 degree 1/600000sec(±90degrees) default=91=N/A
74 COG 4 “ 791” 79.1° Course over ground in 1/10°(0-3599)
78 Heading 3 “511” N/A Degrees(0~359), 511:N/A=default

수신된 정보는 메시지 구분 코드와 메시지 내용이 하나의 레코드로 구성되어 있으며, AIS의 동적정보 이외에도 VHF-DSC, 위성망, 레이더 및 위성AIS 정보를 포함되어 있다. AIS 동적정보를 추출하기 위해 빅데이터 플랫폼을 이용하였으며, 수집된 자료로부터 총 69,766,865 건의 AIS 선박위치정보를 수집하였다.

추출된 AIS 동적정보는 MMSI 식별부호와 함께 메시지 수신 일시, 수신 기지국 ID, AIS 신호 Mode, 위도, 경도, 선회율, 속도, 침로, 선수 등의 정보를 포함하고 있다. 속도와 침로항목은 소수점을 제거하기 위해 원본 값에 10을 곱한 값으로 제공되고 있었으며, 위도와 경도 항목은 원본 값에 600,000의 수치를 곱한 값으로 제공되고 있다.


Ⅲ. 연구 범위 및 방법
3-1 선박위치정보 오류 및 이상치 탐지 방안 수립

선박위치정보는 AIS 동적정보의 항목 중 위도, 경도로 이루어져 있으며, 따라서 위도, 경도의 오류 및 이상치를 탐지하도록 하였다. 여기서 선박위치정보의 오류는 선박이 물리적으로 있을 수 없는 위치 값을 가질 경우로 정의하였으며, 이상치는 선박의 위치정보가 오류는 아니지만 비정상적인 값으로 판단되어 실제 값을 검수할 필요가 있을 경우로 정의하였다.

오류를 탐지하기 위한 첫 번째 방법으로 대표적인 자료 검수 방법인 경계 값 테스트(boundary test)를 적용하였다. 경계 값 테스트는 입력 범위를 벗어난 값을 탐지하는 가장 기본적인 오류 탐지 방법이며, 선박위치정보의 위도와 경도 값에 적용하였다. AIS 동적정보 목록에서 확인할 수 있는 내용으로 선박의 AIS 장비는 GPS 위성과 연결되지 않았을 경우 위도 91 ˚, 경도 181 ˚의 기본 값을 전송하며, 이 값은 비정상적인 값이므로 오류로 판단하였다.

이후 다른 선박위치정보 오류를 탐지하기 위해 선박의 위치정보를 지도상에 표시하였다. 선박의 위치정보를 시간 순으로 정렬하여 이전 위치와 이후 위치를 연결하여 항적으로 나타내었으며, 그림 4는 남해안에 위치한 선박의 항적을 표시한 그림이다. 이 때, 항적을 표시하는 선의 색은 항적을 연결하는 두 선박위치의 위, 경도 값과 시간을 이용하여 계산한 두 점간의 평균이동속도를 반영하여 속도 값이 높을수록 붉은 색을 띄도록 하였다.


Fig. 4. 
Example of abnormal ship tracks in South Sea

선박의 속도가 비정상적으로 높게 나타난 일부 항적들이 붉은색으로 길게 나타나고 있었으며, 일부 항적은 육지 위에 표시된 것을 확인할 수 있었다. 이러한 항적은 모두 오류로 나타나는 항적이므로 오류 처리를 위한 방안 수립이 필요하다.

선박의 위치가 순간적으로 다른 위치로 이동한 것처럼 입력된 위치정보 값이 있음을 확인할 수 있다. 이러한 값들은 선박위치정보의 오류로 판단할 수 있으며, 구축된 선박위치정보에 대하여 선박의 속도를 이용한 경계 값 테스트를 수행한다면 오류를 탐지할 수 있다.

그림 5는 선박의 항적을 위, 경도 좌표로 표시한 그래프이며, 위치에 표시된 점의 크기는 해당 지점의 평균이동속도를 의미한다. 그래프의 특정 지점에서 점이 크게 표시되었으며, 속도가 높은 지점임을 확인하였다. 속도의 변화가 나타난 구간을 상세하게 분석하기 위해 동일한 항적에 대하여 시간과 속도의 변화를 그래프로 나타낸 결과는 그림 6과 같으며, 선박의 속도가 최대 70,000 ㎞/h를 초과하여 선박의 속도가 비정상적으로 높음을 확인할 수 있었다. 그림 7은 해당 항적을 지도상에 표시한 후 확대한 그림이다. 동일한 MMSI 번호를 가진 선박의 위치정보를 시간순으로 연결한 항적이 직선으로 보이지만 실제로는 여러 개의 항적이 겹쳐서 나타나고 있다. 시간의 흐름에 따라 선박의 위치정보가 일정한 경로를 그리며 이동해야 했으나, 특정 위치에 선박위치가 고정되어 선박의 항적이 왕복하는 것으로 나타나고 있었다.


Fig. 5. 
Example of latitude/longitude graph (Dot size: velocity)


Fig. 6. 
Example of velocity/time graph


Fig. 7. 
Example of overlapped track

이러한 오류가 발생하는 원인을 분석하기 위해 시간과 위도 그래프를 AIS Mode로 분류한 결과, 오류를 나타낸 선박위치정보가 AIS Class-A 신호와 AIS Class-B 신호가 구분되어 나타난 것을 확인할 수 있었다. 그림 8은 AIS Class-A 신호와 AIS Class-B 신호를 구분하여 표시한 그래프이다. Class-A 신호는 1과 3의 값을 발신하며 Class-B 신호는 4의 값을 발신한다. 그래프에서 확인할 수 있듯이 두 개의 신호가 동시에 입력되고 있었으며, Class-B 신호의 선박위치정보가 고정되어 오류를 발생시키고 있었다. 하나의 선박에서 2개의 AIS 신호가 발신되고 있기 때문에 신호를 구분해서 처리해야 함을 나타내고 있다.


Fig. 8. 
Example of latitude/time graph (Group by AIS Mode)

따라서 본 연구에서는 선박위치정보의 오류를 탐지하기 위한 인자로 선박의 평균이동속도를 사용하였다. 선박의 평균이동속도는 위도와 경도를 사용하여 곡면의 거리를 구할 수 있는 공식 중 빅데이터 플랫폼에서 컬럼(Column) 계산이 가능하도록 한 줄로 구현이 가능한 구면 코사인법칙을 적용하여 계산하였다. 두 점 (lat1,lon1), (lat2,lon2)이 주어졌을 때 구면상의 거리 d식 (4)와 같으며 두 점의 이동시간으로 나누어 평균이동속도를 계산하였다. 이 때 지구반지름 R은 6371 ㎞로 가정하였다.

ϕ1=lat1π180(1) 
ϕ2=lat2π180(2) 
Δλ=lon2-lon1π180(3) 
d=acossinϕ1sinϕ2+cosϕ1cosϕ2cosΔλR(4) 

현재 운행 중인 쾌속선의 최고속도는 58.1 knot(107.6 ㎞/h)이며, 일반적인 목적으로 운행하는 선박의 경우 200 ㎞/h를 초과할 수 없기 때문에 속도에 대한 경계 값으로 설정하였다[15]. 다만 200 ㎞/h가 넘는 모든 항적이 오류 항적이라고 할 수 없다. 그림 9와 같이 평균이동속도는 이전의 선박위치를 이용하여 속도를 계산되므로 점 B와 점 C는 200 ㎞/h를 초과하였지만 점 B는 오류 위치정보이며 점 C는 오류 위치정보가 아니다. 따라서 연속된 2개의 선박위치정보의 평균이동속도를 계산하여 점 B만을 오류로 탐지하는 스파이크 테스트(spike test)를 적용하였다.


Fig. 9. 
Example of spike test

상기한 바와 같이 AIS Mode에 따라 선박위치정보를 분류할 수 있음을 확인하였지만 기 구축된 AIS 자료는 AIS Mode 항목이 존재하지 않기 때문에 분류가 불가능한 경우도 있다. 지금까지 분석한 오류 이외에도 예측이 불가능한 오류가 나타나며, 정상적인 값인지 아닌지를 판단하기 위한 자료의 분석과 검수가 필요하다.

따라서 경계 값 테스트와 스파이크 테스트로 탐지된 오류를 제외한 값에 대한 이상치 분석을 수행하여 오류가 발생할 수 있는 선박위치정보를 추출하여 오류를 최소화할 수 있도록 하였다. 이상치를 탐지하기 위한 방법으로 평균이동속도에 대한 이동 IQR 테스트(moving Inter-Quartile-Range test)를 적용하여 이상치를 탐지하고 이를 오류 검수 대상으로 분류하도록 하였다.

3-2 오류 및 이상치 탐지 방안 적용

기 구축되어 있는 빅데이터의 샘플 데이터셋인 2018년 10월 31일의 AIS 자료에 대하여 선박위치정보 오류 및 이상치 탐지를 수행하였다. 선박위치정보 오류 및 이상치 탐지를 위한 순서도는 그림 10과 같다.


Fig. 10. 
Flowchart of detecting vessel location error and outlier

첫 번째로 위도와 경도 값에 대한 경계 값 테스트를 수행하였다. 위도와 경도 값은 ±90 ˚, ±180 ˚ 범위 이내의 값으로 입력되고 있으므로 이 범위를 벗어난 값을 오류로 판단하고 flag_boundary 값을 1로 입력하였다. 그림 11은 경계 값 테스트로 탐지된 선박위치정보 오류 예시이다.


Fig. 11. 
Example of boundary test

이후 스파이크 테스트를 위한 선박평균이동속도를 계산하도록 하였다. 빅데이터 플랫폼을 이용하여 전체 AIS 정보를 선박 식별 번호인 MMSI 번호를 기준으로 분류하고 분류된 선박위치정보 집합 내에서 선박위치정보를 전송시간의 오름차순으로 정렬하였다.

정렬된 현재 행으로부터 첫 번째와 두 번째 이후 행의 전송시간, 위도, 경도를 불러온 후 각 선박위치까지의 평균이동속도를 계산하여 첫 번째 지점이 스파이크 테스트 임계값을 넘었지만 두 번째 값이 임계값을 넘지 않았을 경우 첫 번째 지점을 오류로 판단하고 flag_spike 값을 1로 입력하였다. 다음 행으로 이동하여 반복 수행하여 모든 선박위치정보에 대해 스파이크 테스트를 수행하였다.

이상치를 탐지하기 위해 선박의 이동 속도를 계산하여 이상 값을 탐지하는 방법인 이동 IQR 테스트를 적용하였다. 이동 IQR 테스트는 현재 값 근처의 샘플링 사이즈 범위의 집단을 만들고 이 집단의 1분위수와 3분위수의 값 차이인 IQR의 스케일 배수만큼 벗어났을 때 이상치로 탐지한다.

IQR=Q3-Q1(5) 
upper range=Q3+IQR×scale(6) 
lower range=Q1-IQR×scale(7) 
outlier<lower range<value<upper range<outlier(8) 

이 때 최적의 샘플링 사이즈와 스케일을 분석하기 위해 다양한 조합으로 테스트를 수행하였다. 현재 값으로부터 참조할 이전-이후의 행의 크기를 나타내는 샘플링 사이즈를 10-10 구간부터 10씩 증가시켜 100-100 구간까지 테스트하였다. 이와 함께 1분위수와 3분위수 값으로부터 이상치를 판별하기 위해 사용하는 스케일을 1.5부터 0.5씩 증가하여 6까지 테스트 하였다. 이상치로 탐지된 선박위치정보의 flag_outlier 값을 1로 입력하고 탐지된 건수를 비교해 보았다.

3-3 Spark 기반 빅데이터 플랫폼 활용

선박위치정보의 오류 및 이상치 탐지를 위해 데이터 분산 처리가 가능한 Spark 기반의 빅데이터 분석 플랫폼을 활용하였다. Apache Spark는 대용량 자료의 분산 저장과 인-메모리(in-memory) 컴퓨팅을 지원하여 빠른 데이터 입출력 및 계산이 가능한 오픈소스 분산 클러스터 컴퓨팅 프레임워크이며, 행과 열로 구성된 구조적 데이터에 대해 데이터 프레임(Dataframe) 연산을 지원한다. 함수를 이용한 반복계산이 아닌 데이터프레임의 변환(Transformation)을 이용한 컬럼의 연산 방식을 결정하고 액션(Action)을 통해 컬럼 단위의 분산 처리를 수행한다.

한국해양과학기술원은 해양공간계획에 관한 정책 수립 지원, 해양경찰 경비세력 최적 배치 지원 등을 위해 해양과학 분야 빅데이터의 수집 및 처리, 분석 연구 요구 증가함에 따라 해양과학분야 빅데이터 처리 및 분석 연구지원이 가능하도록 빅데이터 분석 플랫폼을 운영하고 있다. 총 9대로 구성된 HDFS(Hadoop File System) 기반의 시스템은 고용량 데이터의 분산저장 및 병렬처리가 가능하도록 설계되었으며, 최대 72 TB(TeraByte)의 데이터를 저장하고 1.6 TB 메모리 환경에서 정보를 처리할 수 있다. Apache Spark를 적용해 Scala, Python 등 오픈소스 프로그램을 활용할 수 있는 환경을 제공하고 있으며, 빅데이터 처리를 위한 오픈소스 분산처리 플랫폼으로 대용량의 데이터를 고속으로 처리할 수 있다[16].

세부 소프트웨어 구성은 표 2와 같다.

Table 2. 
Composion of bigdata platform softwares
Category Name Version Contents
Operating System CentOS 7.3 – 1611 RedHat open source linux
SSH OpenSSH7.4p1 Secure connection solution
Bigdata
+
in-memory computing platform
JAVA JDK(Oracle) 1.8.0_181-b13 JVM Environment
Apache Hadoop 2.7.7 Distributed file system
Apache Spark 2.3.1 In-memory computing solution
PostgreSQL 10.6 Object-relational database
Data processing platform Apache Spark 2.3.1 In-memory bigdata computing tool
Python 3.6.5 Programing language
Scala 2.11.8 Programing language
Apache Zeppelin 0.8.0 Data analysis notebook
Jupyter hub 0.9.4 Data analysis notebook

선박위치정보는 7개의 항목을 가진 데이터의 집합으로 Spark 기반의 데이터프레임 분석을 수행할 수 있다. 경계 값 테스트와 스파이크 테스트를 수행하기 위해 그림 12와 같이 컬럼 표현식을 정의하여 연산을 수행하였으며, 탐지된 오류 개수를 세기 위한 액션을 수행하여 결과를 수집하였다. 이동 IQR 테스트를 수행하기 위해 샘플링 사이즈에 따라 이전 이후 행의 선박위치정보를 활용한 IQR 값을 계산할 수 있도록 SQL 표현식을 활용한 그룹 연산을 수행하였다.


Fig. 12. 
Example of dataframe calculation code


Ⅳ. 연구 결과

AIS 정보를 분석하여 오류의 원인을 분석하고 탐지할 수 있는 방안을 마련하여 선박위치정보 오류 및 이상치를 탐지하기 위한 기법을 제시하였다. 제시된 기법을 기존에 구축되어 있는 AIS 자료에 실제로 적용해보고 그 결과를 고찰하였다.

경계 값 테스트와 스파이크 테스트로 탐지된 오류 결과로 선박위치정보의 오류 탐지율을 확인하도록 하였다. 경계 값 테스트와 스파이크 테스트로 탐지된 오류는 잘못 입력된 선박위치정보로 판단할 수 있는 확실한 오류이며, 이상치에 포함되어 탐지되지 않은 오류를 제외하더라도 지금까지 정확히 알려지지 않은 선박위치정보에 대한 오류율에 대한 정보를 제공할 수 있을 것으로 판단된다.

이후 이동 IQR의 이상치를 탐지하는 기준 값인 샘플링 사이즈와 스케일 값의 변화를 실험하여 최적의 값을 선정할 수 있도록 하였다.

이동 IQR 테스트로 속도가 크게 변하는 이상치를 탐지할 수 있으나, 선박의 특성상 일정한 속도로 항해하는 경우 샘플링 사이즈가 커질수록 평균값과 IQR 값의 차이가 크지 않게 되어 이상치로 탐지되는 값이 적어지는 결과가 나타났다. 다른 인자 값인 스케일의 경우 스케일 값이 커질수록 정상 값으로 판단하는 값의 범위가 커지므로 이상치 탐지율은 낮아진다.

이동 IQR은 연산 시간을 많이 소요하며, 이상치 내에서 오류를 찾기 위한 육안검수 등 별도의 방법을 적용해야 한다. 따라서 효율적인 이상치 탐지를 위한 인자의 선정 방법이 필요하며, 변화를 통해 탐지된 이상치에 대해 직접 오류 검수를 수행해야 하는 것과 이상치 탐지를 위한 연산 시간을 고려한 최적의 샘플링 사이즈와 스케일 값을 찾도록 하였다.

4-1 오류 및 이상치 탐지 방안 적용 결과

연구대상인 기 구축된 AIS 정보는 26,160,503 건이었으며, 경계 값 테스트 및 스파이크 테스트로 검출된 오류는 총 685,150 건으로 2.62 %의 오류가 탐지되었다. 경계 값 테스트로 검출된 오류는 604,969 건으로 2.31 %의 오류가 탐지되었으며, 스파이크 테스트로 검출된 오류는 80,181 건으로 0.31 %의 오류가 탐지되었다. 탐지된 오류 값에 대해 사용자의 목적에 따라 활용이 가능하도록 선박위치정보의 오류 flag 값을 1로 저장하였다.

본 연구에서는 오류로 탐지된 선박위치정보를 제외한 25,555,534 건에 대하여 이상치를 탐지하기 위한 이동 IQR 테스트를 수행하였다. 이동 IQR 테스트를 샘플링 사이즈와 스케일을 변화시키며 이상치를 탐지하였으며, 그 결과는 표 3과 같다. 샘플링 사이즈가 증가할수록 IQR 값이 증가하기 때문에 넓은 범위의 평균을 크게 벗어난 값만 이상치로 탐지하므로 이상치 탐지 건수가 감소하는 경향을 나타냈으며, 스케일이 증가할수록 이상치 탐지 범위를 감소시키므로 이상치 탐지 건수가 감소하는 것을 확인할 수 있었다(그림 13).

Table 3. 
Result of outlier detection using moving IQR test
1.5 2 2.5 3 3.5 4 4.5 5 5.5 6
10-10 range 1,799,266 1,391,775 1,148,658 983,318 864,360 769,856 691,879 626,514 574,233 528,703
20-20 range 1,667,246 1,277,911 1,046,088 886,557 769,501 677,781 602,314 540,407 490,879 448,164
30-30 range 1,612,604 1,225,289 993,109 833,625 716,809 626,406 552,537 492,896 444,982 404,356
40-40 range 1,588,570 1,200,510 966,372 805,451 688,189 597,992 524,699 466,124 419,272 380,559
50-50 range 1,568,328 1,180,205 946,138 784,915 667,508 577,321 505,295 447,585 402,059 363,948
60-60 range 1,550,782 1,163,160 929,566 769,615 652,410 562,777 492,237 435,583 390,368 353,360
70-70 range 1,533,321 1,145,964 914,094 754,170 637,855 550,106 480,049 424,897 381,190 344,989
80-80 range 1,517,153 1,130,399 897,502 738,680 623,612 537,438 468,837 414,703 372,053 336,908
90-90 range 1,501,763 1,116,381 884,784 727,186 613,641 528,117 460,258 406,899 365,060 331,031
100-100 range 1,488,922 1,104,759 873,673 716,800 604,090 519,135 452,640 400,133 359,070 325,584


Fig. 13. 
Outlier detection result

4-2 최적 이동 IQR 테스트 인자 선정

그림 14는 샘플링 사이즈를 증가시켰을 때 검출되는 이상치의 검출량의 감소율을 나타내는 그래프이다. 샘플링 사이즈를 30에서 40으로 증가시켰을 때 이후부터는 감소율의 변화가 크게 줄어든 것을 확인할 수 있었다.


Fig. 14. 
Outlier detection reduction rate

샘플링 사이즈에 따른 연산 시간의 차이를 확인하기 위해 Spark 엔진 초기화 후 샘플링 사이즈 당 12번의 연산을 수행하고 그 시간을 측정하였다. 최댓값과 최솟값을 제외한 10개의 값의 평균으로 시간을 측정하였으며, 그림 15와 같이 샘플링 사이즈에 따라 연산시간이 선형적으로 증가하는 것을 확인할 수 있었다. 이상치 탐지를 위한 연산효율을 고려하였을 때 30-30, 40-40 구간의 샘플링 사이즈가 가장 적절한 이동 IQR 테스트 범위로 판단된다.


Fig. 15. 
Execution time(ms) by size

스케일이 값이 클수록 이상치는 정상 자료로 간주되며, 스케일의 값이 작을수록 정상 자료는 이상치로 간주되므로 적절한 스케일 값의 산정이 필요하다. 그림 14는 샘플링 사이즈가 30-30, 40-40 구간인 경우의 스케일에 따른 이상치 탐지율이다. 급격한 변곡점을 나타내지는 않았으나, 이상치 내 오류를 탐지하기 위한 목표 이상치 탐지율에 따라 적절한 스케일을 선택할 필요가 있다. 본 연구에서는 이상치 탐지를 위한 이동 IQR 테스트의 적절한 스케일로 이상치 탐지율의 기울기가 완만해지는 스케일인 3을 제시하였다.


Fig. 16. 
Error detection rate by scale

4-3 이상치로 분류된 선박위치정보 검증

이상치로 탐지된 선박위치정보가 실제 오류인지 확인하기 위해 선박의 항적을 지도에 표시했으며, 그림 1718은 이상치로 탐지된 선박위치정보의 예시를 나타내고 있다. 그림 17은 동일한 MMSI 번호를 가진 선박 오류를 나타내고 있다. 비슷한 시간에 동일한 MMSI 번호를 가진 선박이 먼 거리를 이동하며 높은 속도를 나타내고 있지만 스파이크 테스트에 탐지되지 않은 오류이다. 스파이크 테스트는 순간적으로 벗어난 하나의 값을 탐지할 수 있으나 진동하며 움직이는 항적의 경우는 탐지되지 않음을 확인할 수 있었다.


Fig. 17. 
Example of same MMSI number error


Fig. 18. 
Example of velocity error detection

그림 18은 동일한 선박의 항적이지만 속도가 급격히 변하는 경우가 이어지는 하나의 항적을 나타내고 있다. 동일한 선박에서 발신되는 선박위치정보가 주기적으로 변동하는 것으로 보아 AIS 신호의 클래스 모드별 선박위치정보가 혼합된 것으로 판단된다. 그러나 기 구축된 AIS 정보에는 AIS 클래스 신호 항목이 없으므로 해당 오류를 탐지하기는 어렵다.

이상치로 분류된 선박위치정보를 확인했을 때 많은 수의 항적이 오류로 판단되는 것을 확인하였다. 그러나 육안으로 검증하기에는 많은 수의 이상치가 분류되고 있으며, 이를 개선하기 위해 빅데이터로 구축할 선박위치정보의 항목 정의가 필요할 것으로 판단된다.


Ⅳ. 결론

본 연구에서는 선박위치정보의 검수를 위해 AIS 기지국에 수신된 AIS 동적정보를 활용하여 오류 탐지 및 이상치 탐지 방법론을 제시하였다. 이후 대용량의 선박위치정보 분석이 가능한 Spark 기반의 빅데이터 분석 플랫폼을 활용하여 기 구축되어 있는 AIS 자료에 제안된 방법론을 적용하고 그 결과를 확인하였다. 선박위치정보 오류를 탐지하기 위해 경계 값 테스트와 스파이크 테스트를 수행하였으며, 이상치 탐지를 위해 이동 IQR 테스트를 수행하였다. 26,160,503 건의 선박위치정보 중 오류 탐지 결과 2.62 %의 오류가 탐지되었고, 탐지된 오류를 제외한 25,555,534 건의 선박위치정보를 이용하여 효율적인 이동 IQR 테스트를 수행하기 위한 샘플링 사이즈와 스케일을 분석하였다. 그 결과 샘플링 사이즈는 전후 30-30개를 선택하고, 스케일을 3배수로 설정하여 이상치 탐지를 수행하는 것이 가장 효율적이라고 판단되었으며, 목표로 하는 이상치 탐지율을 달성하기 위해 스케일을 변경하여 적용할 수 있도록 하였다.

본 연구를 통해 선박위치정보에 다양한 오류가 포함되어 있음을 확인하였으며, 이상치로 분류된 많은 경우의 선박위치정보가 오류로 판단될 수 있음을 확인하였다. 그러나 구축된 AIS 정보 항목이 누락되어 오류로 탐지할 수 없는 경우 등 모든 오류를 모두 탐지하고 제거하기는 쉽지 않았다. 추후 선박위치정보의 검수 및 빅데이터로서 활용 가치를 높이기 위해 AIS 빅데이터 구축의 표준이 정의되어야 할 것으로 판단된다. 향후 이상치 탐지의 정확도를 높이기 위해 어선, 여객선, 탱크선 등 선종별로 선박의 이동 패턴이 상이한 것을 활용한 오류탐지 방법 개발 등 오류 탐지 방법론을 고도화해야 할 것이다.


Acknowledgments

본 연구는 해양경찰청 R&D 과제인 “위성연계 접경수역 선박 모니터링 및 분포 예측 체계 개발” 사업의 일환으로 수행되었습니다.


References
1. D. Pokrajac, R. Filjar and S. Desic, "Provision of generalais functionalities in internet AIS," IEEE Intelligent Transportation Systems, Vienna, Austria, pp. 846-850, September 2005.
2. S. J. Cho, H. J. Choi, “Recent Trends and Their Implications of Marine Activities Mapping for Marine Spatial Planning,” Journal of the Korean Society for Marine Environment & Energy, Vol. 21, No. 4, pp. 270-280, November 2018.
3. IMO, Resolution MSC.74(69), Annex 3, Recommendation on performance standards for an universal shipboard automatic identification system(AIS), pp. 13-16, 1998.
4. R. Bošnjak, L. Šimunović and Z. Kavran, “Automatic Identification System in Maritime Traffic and Error Analysis,” Transactions on Maritime Sciencem, Vol. 1, No. 2, pp. 77-84, October 2012.
5. D. Y. Kim, T. H. Hong, J. S. Jeong and S. J. Lee, “Building an Algorithm for Compensating AIS Error Data,” Journal of Korean Institute of Intelligent Systems, Vol. 24, No. 3, pp. 310-315, June 2014.
6. J. H. Jeon and T. G. Jeong, “Studies on the Improvement and Analysis of Data Entry Error to the AIS System for the Traffic Ships in the Korean Coastal Area,” Journal of fisheries and marine sciences education, Vol. 28, No. 6, pp.1812-1821, 2016.
7. J. W. Kim and M. Jung, “Basic Study on Improving the Reliability of AIS data : Focused on Vessel Traffic Service Operators,” Journal of Korean Maritime Police Science, Vol.11, No.4, pp.49-68, November 2011.
8. A. Harati-Mokhtari, A. Wall, P. Brooks and J. Wang, “Automatic Identification System (AIS): Data Reliability and Human Error Implications,” Journal of Navigation, Vol. 60, No. 3, pp. 373-389, August 2007.
9. The Nautical Institute (2005c) AIS Inaccuracies, International Marine Accident Reporting Scheme (MARS) MARS 200552. Seaways, the International Journal of the Nautical Institute, November, pp. 19-20
10. HELCOM, Inaccuracies in AIS data – Effects on usability, Helsinki Commission (HELCOM) Expert Working Group for Mutual Exchange and Deliveries of AIS data. Document code: 9/1, Helsinki: HELCOM, 4, 2008.
11. H. G. Hwang, B. S. Kim, I. S. Shin, S. K. Song and G. T. Nam, “A Development of Analysis System for Vessel Traffic Display and Statistics based on Maritime-BigData,” Journal of the Korea Institute of Information and Communication Engineering, Vol. 20, No. 6, pp. 1195-1202. June 2016.
12. B. O. Kim, “A Study on the reporting intervals of shipborne AIS dynamic data,” Proceedings of the Korean Institute of Information and Communication Sciences Conference, pp.305-308, October 2014.
13. Y.H. Ryu, K. G. Park and H. Y. Kim, “A Study on the Advancement Structure Model of Maritime Safety Information System(GICOMS) using FSM,” Journal of Korean Institute of Intelligent Systems, Vol. 24, No. 3, pp.337-342, June 2014.
14. EN. de Souza, K. Boerder, S. Matwin and B. Worm, “Improving Fishing Pattern Detection from Satellite AIS Using Data Mining and Machine Learning,” PLoS ONE, Vol. 11, No. 7, e0158248, July 2016.
15. Marine Insight, The World’s Fastest Ship – Built in Tasmania is Christened by Argentina’s President [Internet]. Available: https://www.marineinsight.com/shipping-news/worlds-fastest-ship-built-tasmania-christened-argentinas-president/.
16. C. Y. Lee and H. W. Choi, “A Study on Design and Building of Bigdata Analytic Platform for Ocean Science," Proceeding of 2020 Digital Contents Society Conference, Gwang-Ju, Korea, pp.246-247, 2020.

저자소개

박용길(Yonggil Park)

2011년 : 인하대학교 대학원 (공학석사)

2020년 : 인하대학교 대학원 (공학박사-공간정보공학)

2020년~현 재: 한국해양과학기술원 해양빅데이터센터 박사후 연구원 선임기술원

※관심분야:해양빅데이터 분석, 공간분석, GIS DB 설계/구축 등

이철용(Cholyoung Lee)

2007년 : 인하대학교 대학원 (공학석사)

2018년 : 인하대학교 대학원 (공학박사-공간정보공학)

2014년~2016년: ㈜환경정보연구원 대표

2016년~현 재: 한국해양과학기술원 해양빅데이터센터 선임기술원

※관심분야:해양빅데이터 분석/기획, 공간분석, GIS DB 설계/구축 등