BLOG

[Techblog] 머신러닝 활용편 – Amazon SageMaker로 선박 도착 시간 예측하기
작성일: 2021-01-18

국제 선박 회의소에 따르면 전세계 상업의 90 %가 바다에서 이루어진다고 합니다. 선박은 원자재, 반제품 및 완제품을 포함하여 가능한 모든 종류의 상품을 운송하고 있어 해상 운송은 글로벌 공급망의 핵심 구성 요소입니다. 며칠 또는 몇 주 동안 항해한 귀중한 화물을 넘겨받는 제조업체, 소매 업체, 최종 소비자는 전 세계에 화물을 운송하는 수십만 척의 선박을 의존할 수 밖에 없습니다.

 

선박이 기항지에 도착하자마자 하역 작업이 시작됩니다. 선박의 종류에 따라 벌크화물, 컨테이너, 차량이 하역됩니다. 복잡한 육상 작업은 여러 행위자가 참여하는 화물 하역에 의해 시작됩니다. 터미널 운영자, 트럭 운송 회사, 철도, 세관 및 물류 서비스 제공 업체가 협력하여 특정 SLA에 따라 상품이 가장 효율적인 방법으로 수하인에게 배송되도록 합니다.

 

 

직면한 과제 

해운 회사는 선박의 항구 도착 예상 시간(estimated time of arrival=ETA)을 공개적으로 공지하고 이에 따라 다운 스트림 공급망 활동이 계획됩니다. 그러나 이는 지연이 자주 발생하며, 기술이나 날씨 관련 문제로 인해 선박의 실제 도착 시간(ATA)과 다를 수 있습니다. 이는 전체 공급망에 영향을 미치며 많은 경우 생산성을 줄이고 낭비와 비 효율성을 증가시킵니다.

 

선박이 항구에 도착하고 하역 작업을 시작하는 정확한 시간을 예측하는 것은 놀라운 과제입니다. 오늘날 대부분의 기업은 ATA를 추측하고 변동에 대처하기 위해 경험과 즉석에 의존합니다. 기계 학습(ML) 기술을 활용하여 ETA를 과학적으로 예측하고 기업이 공급망에 대한 더 나은 계획을 수립하도록 돕는 제공 업체는 거의 없습니다. 오늘은 완전관리형 서비스 Amazon SageMaker 를 사용하여 모든 개발자 및 데이터 과학자에게 ML 모델을 빠르게 구축, 교육 및 배포하여 선박의 도착 시간을 예측할 수 있는 기능을 구현하는 방법을 보여드리겠습니다.

 

 

해결 방안

선박 ETA 예측은 매우 복잡한 문제입니다. 이는 엄청난 수의 변수와 많은 불확실성을 포함하기 때문에 이와 같은 문제에 ML과 같은 기술을 적용하기로 결정한 경우 성능을 비교하고 모델이 충분한 지 이해하기 위한 기준(예 : 전문가 사용자 또는 규칙 기반 엔진)을 갖는 것이 중요합니다.

 

이 작업은 선박 ETA를 정확하게 예측하는 문제에 대한 연구입니다. 완전한 솔루션은 아니지만 데이터와 전문 지식을 기반으로 자신 만의 사운드와 완전한 모델을 구현하기 위한 참조로 볼 수 있습니다. 솔루션에는 다음과 같은 상위 수준 단계가 포함됩니다.

  1. 문제를 단일 선박 항해로 줄입니다 (선박이 특정 항구에서 출발하여 다른 항구에 도착할 때).
  2. 임시 데이터 세트를 탐색합니다.
  3. 각 선박이 보낸 체크 포인트에서 시공간적 측면을 식별합니다.
  4. 지정된 체크 포인트에서 선박이 목적지 항구에 도착하는 데 걸리는 ETA를 일 단위로 예측합니다 (주어진 선박 항해 내에서).

다음 이미지는 동일한 선박의 여러 선박 항해를 다른 색상으로 보여줍니다. 선박은 여러 번의 항해로 구성됩니다.

 

 

방법론

해상 운송 인텔리전스에 중점을 둔 AWS 고객 Vesseltracker는 매일 선박(체크 포인트) 및 항구(항만 호출)에서 수집하는 과거 데이터 샘플을 공유했습니다. 체크 포인트에는 각 선박의 주요 특성과 함께 현재 위치, 속도, 방향, 초안 등이 포함됩니다. 항구 호출은 각 선박의 도착 또는 출발 날짜와 시간입니다.

 

연속 값을 예측하기 위해 ML 모델을 학습해야 했기 때문에 XGBoost, Random Forest, MLP와 같은 회귀 알고리즘을 실험하기로 결정했습니다. 실험이 끝날 때 (초 매개 변수 최적화 포함) 더 나은 성능을 제공하는 Random Forest Regressor를 선택했습니다.

 

회귀자를 훈련하기 위해 데이터를 변환하고 레이블이 될 하나의 기능을 준비해야했습니다.이 경우 선박이 목적지 포트에 도착하는 데 걸리는 일 (부동) 수입니다.

 

기능 엔지니어링의 경우 다음 단계를 강조하는 것이 중요합니다.

  1. 시간 데이터 세트에서 각 선박 항해를 식별합니다. 출발 및 도착 체크 포인트를 표시하기 위해 항구 호출에 참여하십시오.
  2. 체크 포인트 당 누적 된 시간을 목적지 포트에서 출발 포트까지 역방향으로 계산합니다.
  3. 지리적 해싱 메커니즘을 적용하여 GPS (위도, 경도)를 인코딩하고 유용한 기능으로 변환합니다.
  4. 체크 포인트에서 순차적 인 지리적 위치 쌍 사이의 대원 거리를 계산합니다 .
  5. 선박은 시간이 지남에 따라 속도를 변경하기 때문에 남은 시간을 계산하기 전에 모델이 선박 변위 (속도 및 성능)를 숙고하는 데 도움이되는 새로운 기능 (효율성)을 계산해야합니다.
  6. 모든 항해의 기록 데이터와 각 체크 포인트 사이의 대원 거리를 사용하여 각 세그먼트 (체크 포인트) 사이의 모든 경로와 거리를 보여주는 인 메모리 그래프를 만듭니다.

 

이 그래프를 사용하여 선박의 현재 위치와 목적지 항구 사이의 거리를 계산할 수 있습니다. 이 과정에서라는 새로운 기능 accum_dist또는 누적 거리가 생겼습니다. 특성 중요도 분석에서 알 수 있듯이 해당 특성은 대상과 선형 상관 관계가 높기 때문에 모델에 더 높은 중요성을 갖습니다.

 

 

Amazon SageMaker

연구의 전체 파이프 라인을 관리하기 위해 Amazon SageMaker를 선택했습니다. SageMaker는 모든 개발자 및 데이터 과학자에게 ML 모델을 빠르게 구축, 교육 및 배포 할 수있는 기능을 제공하는 완전 관리형 서비스입니다. SageMaker는 ML 프로세스의 각 단계에서 무거운 짐을 제거하여 고품질 모델을 더 쉽게 개발할 수 있도록 합니다.

 

기존 ML 개발은 전체 ML 워크 플로를 위한 통합 도구가 없기 때문에 복잡하고 비용이 많이 드는 반복 프로세스입니다. 또한 시간이 많이 걸리고 오류가 발생하기 쉬운 도구와 워크 플로를 함께 연결해야 합니다. SageMaker는 ML에 사용되는 모든 구성 요소를 단일 도구 세트로 제공하여 모델이 훨씬 적은 노력으로 더 낮은 비용으로 더 빨리 프로덕션에 들어갈 수 있도록 하여 이러한 문제를 해결합니다.

 

 

데이터 셋

다음 표는 데이터 세트를 만드는 데 사용한 데이터 샘플을 보여줍니다. 항구 호출 (첫 번째 표에 표시됨)은 선박의 몇 가지 속성, 항구 식별 및 주어진 선박의 도착 및 출발 이벤트의 타임 스탬프로 표현됩니다.

이모 도착 일 출발일 포트
0 0 2019-01-07 2019-01-08
1 0 2019-01-11 2019-01-12 나하
2 0 2019-01-12 2019-01-17 나하

 

그런 다음 선박 검문소가 있습니다. 체크 포인트는 선박 자체 및 현재 상태에 대한 정보를 포함하는 주파수 X (이 경우 약 1 일)로 각 선박이 보내는 메시지입니다. 두 테이블을 결합하여 선박 출발 및 도착에 대한 정보로 체크 포인트를 강화합니다. 이는 이 두 이벤트 사이에 전송 된 다른 모든 체크 포인트를 포함하는 데 중요합니다. 다음 표는 선박 체크 포인트 데이터의 예입니다. 표를 클릭하시면 확대하여보실 수 있습니다.

 

 

다음 표에서는 두 테이블이 결합되고 정리되며, 지리적 위치가 인코딩되고 누적된 시간과 거리가 계산됩니다. 해당 보기는 특정 선박에 대한 것으로, 주어진 선박 항해에 속하는 모든 체크 포인트를 표시합니다. 표를 클릭하시면 확대하여 보실 수 있습니다.

 

 

마지막으로 모델 학습에 사용되는 데이터 세트가 있습니다. 첫 번째 열은 모델이 회귀를 생성하려고 시도하는 레이블 또는 대상 값입니다. 나머지 열은 교육 중에 의사 결정 트리가 사용하는 기능입니다. 표를 클릭하시면 확대하여보실 수 있습니다.

 

 

모델 및 결과

데이터를 준비한 후 모델을 학습할 차례입니다. 우리는 k-폴드(접기) 교차 검증이라는 기술을 사용하여 훈련 및 검증 데이터의 6 가지 조합(약 80 % 및 20 %)을 생성하여 데이터의 변동을 가능한 한 많이 탐색했습니다. SageMaker 에서 Scikit-learn에 대한 기본 지원을 통해 교육 코드로 Python 스크립트를 생성하고 SageMaker Python 라이브러리로 준비된 SageMaker Estimator와 공유하기 만하면되었습니다. 다음 코드를 참고해 주시기 바랍니다.

 

model = RandomForestRegressor(

        n_estimators=est, verbose=0, n_jobs=4, criterion=’mse’,

        max_leaf_nodes=1500, max_depth=depth, random_state=0

    )

 

모델을 학습한 후 R2라는 메트릭을 사용하여 모델 성능을 평가했습니다. R2는 독립 변수에서 예측할 수 있는 종속 변수의 분산 비율을 측정합니다. 불량 모델은 R2가 낮고 유용한 모델은 R2가 1.0 (또는 100 %)에 최대한 가깝습니다.

 

이 경우 테스트 데이터와 높은 상관 관계가 있는 값을 예측하는 모델을 예상했습니다. 데이터 준비, 알고리즘 선택, 하이퍼 파라미터 최적화 및 교차 검증의 이러한 조합을 통해 우리 모델은 0.9473의 R2 점수를 달성했습니다.

 

이 결과가 나쁘지는 않지만 솔루션을 개선 할 수 없다는 의미는 아닙니다. 데이터 세트에 중요한 기능을 추가하여 모델에 의한 누적 오차를 최소화 할 수 있습니다. 이러한 기능은 모델이 지연을 유발할 수 있는 각 체크 포인트의 모든 낮은 수준의 뉘앙스와 조건을 더 잘 이해하는 데 도움이 될 수 있습니다. 몇 가지 예에는 선박의 지리적 위치, 항구 상태, 사고, 특별한 사건, 계절성 및 항구 국가의 휴일에 따른 기상 조건이 포함됩니다.

 

그런 다음 기능 중요성이 있습니다 (다음 그래프에 표시됨). 데이터 세트의 특정 기능이 예측 자체에 대해 얼마나 강력하거나 중요한지 측정합니다. 각 기능은 중요도가 다르므로 데이터 세트의 모델에 영향을 주는 기능 만 유지하려고 합니다.

 

 

그래프는 누적된 거리가 가장 중요한 특징(목표물과의 높은 상관 관계를 고려할 때 예상 됨)과 효율성(시간 경과에 따른 선박 변위의 영향을 숙고하기 위해 만든 인공적 특징)이 뒤 따르는 것을 보여줍니다. 세 번째로 인코딩된 지리적 위치에 더 가까운 목적지 포트가 있습니다.

 

이 실험을 위해 생성된 노트북을 다운로드하여 구현에 대한 모든 세부 정보를 볼 수 있습니다. 아래 링크를 클릭하여 얻으십시오.

이러한 노트북을 실행하려면 Amazon SageMaker가 필요하므로 AWS 계정에서 SageMaker Studio 도메인 을 생성 하고 노트북을 새 환경에 업로드하고 자체 실험을 실행하십시오!

 

 

글을 마치며…

선박 도착 시간을 예측하는 데 ML을 사용하면 업계에서 널리 사용되는 기존의 수동 추정 방법론에 비해 육상 운영 계획 및 구현의 정확성을 크게 높일 수 있습니다. 우리는 모델의 정확성을 개선하고 기타 관련 기능을 추가하기 위해 운송 회사와 협력하고 있습니다. 귀사가 당사 모델 및 사용 방법에 대해 자세히 알아보고 싶다면 msancric@amazon.com으로 운송 및 물류 담당 세계적인 기술 책임자인 Michele Sancricca에게 문의해 주시기 바랍니다.

원문URL: https://aws.amazon.com/ko/blogs/machine-learning/using-machine-learning-to-predict-vessel-time-of-arrival-with-amazon-sagemaker/

 

메가존 클라우드 TechBlog는 AWS BLOG 영문 게재 글이나 관련 기사 중에서 한국 사용자들에게 유용한 정보 및 콘텐츠를 우선적으로 번역하여 내부 엔지니어 검수를 받아 정기적으로 게재하고 있습니다. 추가로 번역 및 게재를 희망하는 글에 대해서 관리자에게 메일 또는 SNS 페이지에 댓글을 남겨주시면, 우선적으로 번역해서 전달해드리도록 하겠습니다.