본문 바로가기
Microsoft/Azure ML

Azure ML에서 날씨정보를 이용하여 비행 지연 예측 Flight delay prediction

by AttractiveS 2020. 5. 13.

 

 

오늘은 Azure ML에서 제공하는 비행기 데이터와 날씨 데이터를 통해 비행 지연 여부 또는 정시 운행 여부를 두 가지 클래스로 예측할 것입니다.

 

비행이 지연된 경우 두 클래스는 1로, 비행 시간이 0이면 0으로 표시됩니다.

Azure ML Studio에서 실험을 빌드하는 데 5 가지 기본 단계가 있습니다.

모델 만들기

모델 훈련

모델 점수 및 테스트


데이터

미국 교통국의 TranStats 데이터 수집에서 얻은 여객 비행 정시 성능 데이터 .

데이터 집합에는 2013 년 4 월 -10 월 기간의 비행 지연 데이터가 포함됩니다. 데이터를 Azure ML Studio에 업로드하기 전에 다음과 같이 데이터를 사전 처리했습니다.

  • 미국 대륙에서 70 개의 가장 바쁜 공항 만 포함하도록 필터링되었습니다.
  • 취소 된 항공편의 경우 15 분 이상 지연된 것으로 레이블이 재 지정되었습니다.
  • 전환 된 항공편을 걸러 냈습니다.

데이터 세트에서 Year , Month , DayofMonth , DayOfWeek , Carrier , OriginAirportID , DestAirportID , CRSDepTime , DepDelay , DepDel15 , CRSArrTime , ArrDelay , ArrDel15  Canceled 열을 선택했습니다 .

이 열에는 다음 정보가 포함됩니다.
캐리어 -IATA에서 할당하고 일반적으로 캐리어를 식별하는 데 사용되는 코드입니다.
OriginAirportID- 고유 공항 (비행 출발지)을 식별하기 위해 US DOT에서 할당 한 식별 번호입니다.
DestAirportID- 고유 공항 (비행 목적지)을 식별하기 위해 US DOT에서 할당 한 식별 번호입니다.
CRSDepTime- 현지 시간의 CRS 출발 시간 (hhmm)
DepDelay- 예정된 출발 시간과 실제 출발 시간의 차이 (분)입니다. 조기 출발에는 음수가 표시됩니다.
DepDel15- 출발이 15 분 이상 지연되었는지 여부를 나타내는 부울 값 (1 = 출발 지연)
CRSArrTime-현지 시간 (hhmm)의 CRS 도착 시간
ArrDelay- 예약 된 시간과 실제 도착 시간의 차이 (분)입니다. 일찍 도착하면 음수가 표시됩니다.
ArrDel15- 도착이 15 분 이상 지연되었는지 여부를 나타내는 부울 값 (1 = 도착 지연)
취소됨 - 도착 비행이 취소되었는지 여부를 나타내는 부울 값 (1 = 항공편이 취소됨)

우리는 또한 기상 관측 세트를 사용했다 : NOAA의 시간별 육상 기반 기상 관측 .

날씨 데이터는 2013 년 4 월에서 10 월까지의 기간 동안 공항 기상 관측소의 관측치를 나타냅니다. Azure ML Studio에 업로드하기 전에 다음과 같이 데이터를 처리했습니다.

  • 기상 관측소 ID는 해당 공항 ID에 매핑되었습니다.
  • 가장 바쁜 70 개의 공항과 관련이없는 기상 관측소가 걸러졌습니다.
  • 날짜 : 열은 별도의 컬럼으로 분리 된 연도 ,    .

날씨 데이터에서 다음 26 열이 선택되었다 : AirportID ,  ,  ,  , 시간 , 시간대 , SkyCondition , 가시성 , WeatherType , DryBulbFarenheit , DryBulbCelsius , WetBulbFarenheit , WetBulbCelsius , DewPointFarenheit , DewPointCelsius , RelativeHumidity , 풍속 , WindDirection , ValueForWindCharacter을 , 역 압력, PressureTendency , PressureChange , SeaLevelPressure , RecordType , HourlyPrecip , 고도계

공항 코드 데이터 세트

실험에 사용 된 최종 데이터 세트에는 공항 ID 번호, 공항 이름, 도시 및 주 (열 : * airport_id *, city , state , name )를 포함하여 미국 공항마다 하나의 행이 포함 됩니다.

전처리 데이터

데이터 세트는 일반적으로 분석하기 전에 사전 처리가 필요합니다.

비행 데이터 전처리

먼저, 프로젝트 열 모듈을 사용하여 가능한 대상 누수 인 데이터 세트 열에서 제외합니다 : DepDelay , DepDel15 , ArrDelay , Canceled , Year . 

Carrier , OriginAirportID  DestAirportID  은 범주 속성을 나타냅니다. 그러나 정수이기 때문에 처음에는 연속 숫자로 구문 분석됩니다. 따라서 메타 데이터 편집기 모듈을 사용하여 카테고리로 변환했습니다.

예정된 출발 시간을 조인 키 중 하나로 사용하여 시간별 날씨 기록과 비행 기록을 결합해야합니다. 이렇게하려면 CSRDepTime 열을 수학 연산 적용 모듈 의 연속 된 두 인스턴스를 사용하여 가장 가까운 시간으로 내림해야합니다 . 

기상 데이터 전처리

결 측값이 많은   프로젝트 열 모듈을 사용하여 제외됩니다 . 여기에는 모든 문자열 값 열 ( ValueForWindCharacter , WetBulbFarenheit , WetBulbCelsius , PressureTendency , PressureChange , SeaLevelPressure  StationPressure)이 포함 됩니다.

면도 분실 데이터 모듈은 누락 된 데이터 열을 제거하기 위해 나머지 컬럼에 적용된다.

기상 관측 시간은 가장 가까운 전체 시간으로 반올림되므로 열이 예정된 비행 출발 시간과 동일하게 결합 될 수 있습니다. 예정된 비행 시간과 날씨 관측 시간은 반대 방향으로 반올림됩니다. 이는 모형이 비행 시간을 기준으로 과거에 발생한 날씨 관측 만 사용하도록하기 위해 수행됩니다. 날씨 데이터는 현지 시간으로보고되지만 출발지와 목적지는 시간대가 다를 수 있습니다. 따라서 예정된 출발 시간 ( CRSDepTime ) 및 날씨 관측 시간 ( Time ) 에서 시간대 열을 빼서 시간대 차이를 조정해야합니다 . 이 작업은 R 스크립트 실행 모듈을 사용하여 수행됩니다 .

결과 열은 Year , AdjustedMonth , AdjustedDay , AirportID , AdjustedHour , 시간대 , 가시성 , DryBulbFarenheit , DryBulbCelsius , DewPointFarenheit , DewPointCelsius , RelativeHumidity , WindSpeed , Altimeter 입니다.

데이터 세트 가입

비행 기록은 Join 모듈 을 사용하여 비행 출발지 ( OriginAirportID ) 의 날씨 데이터와 결합됩니다 .

비행 기록은 비행 목적지 ( DestAirportID )를 사용하여 날씨 데이터와 결합됩니다 .

교육 및 검증 샘플 준비

학습 및 유효성 검증 샘플은 데이터를 학습용 4 월 -9 월 레코드와 유효성 검증 용 10 월 레코드로 나누기 위해 Split 모듈을 사용하여 작성됩니다 .

프로젝트 열 모듈을 사용하여 연도 및 월 열이 교육 데이터 세트에서 제거됩니다 . 그런 다음 훈련 데이터를 Quantize Data 모듈을 사용하여 같은 높이의 빈으로 분리 하고 동일한 비닝 방법을 유효성 검사 데이터에 적용했습니다. 

훈련 데이터는 훈련 데이터 세트와 선택적 유효성 검사 데이터 세트로 다시 한 번 분할됩니다.

기능 정의

머신 러닝에서 피처 는 관심있는 대상의 개별 측정 가능한 속성입니다. 예측 모델을 생성하기위한 유용한 피처 집합을 찾으려면 당면한 문제에 대한 실험과 지식이 필요합니다. 일부 기능은 다른 기능보다 목표 예측에 더 좋습니다. 또한 일부 피처는 다른 피처와 강한 상관 관계가 있으므로 모델에 새로운 정보를 많이 추가하지 않고 제거 할 수 있습니다. 모델을 구축하기 위해 사용 가능한 모든 기능을 사용하거나 데이터 집합에서 기능의 하위 집합을 선택할 수 있습니다. 일반적으로 다른 기능을 선택한 다음 실험을 다시 실행하여 더 나은 결과를 얻을 수 있는지 확인할 수 있습니다.

다양한 기능은 도착 및 도착 공항의 기상 조건, 출발 및 도착 시간, 항공사, 월요일 및 요일입니다.

학습 알고리즘을 선택하고 적용하십시오.

모델 교육 및 검증

Two-Class Boosted Decision Tree 모듈을 사용하여 모델을 생성 하고 교육 데이터 세트를 사용하여 학습했습니다. 최적의 매개 변수를 결정하기 위해, 우리는의 출력 포트에 연결된 두 클래스 힘 입어 의사 결정 트리를 받는 스윕 매개 변수 모듈.

이 모델은 10 배의 랜덤 파라미터 스위프를 사용하여 최상의 AUC에 최적화되어 있습니다.

비교를 위해 2 클래스 로지스틱 회귀 분석 모듈을 사용하여 모델을 작성 하고 동일한 방식으로 최적화했습니다.

실험 결과는 예측을 위해 새로운 샘플을 채점하는 데 사용할 수있는 훈련 된 분류 모델입니다. 검증 세트를 사용하여 훈련 된 모델에서 점수를 생성 한 다음 모델 평가 모듈을 사용하여 모델 의 품질을 분석하고 비교했습니다.

새로운 데이터를 사용하여 예측

이제 모델을 학습 했으므로이 모델을 사용하여 데이터의 다른 부분 (검증을 위해 따로 설정 한 지난 달 (10 월) 레코드)에 점수를 매기고 모델이 새 데이터를 얼마나 잘 예측하고 분류하는지 확인할 수 있습니다.

스코어 모델 모듈을 실험 캔버스에 추가하고 왼쪽 입력 포트를 기차 모델 모듈 의 출력에 연결하십시오 . 올바른 입력 포트를 Split 모듈 의 유효성 검사 데이터 (오른쪽 포트)에 연결하십시오 .

실험을 실행 한 후 출력 포트를 클릭하고 시각화를 선택하여 점수 모델 모듈 의 출력을 볼 수 있습니다 . 출력에는 점수가 매겨진 레이블과 레이블의 확률이 포함됩니다.

마지막으로 결과의 품질을 테스트하려면 모델 평가 모듈을 실험 캔버스에 추가 하고 왼쪽 입력 포트를 점수 모델 모듈 의 출력에 연결하십시오 . 모듈을 사용하여 두 모델을 비교할 수 있으므로 모델 평가에 대한 두 개의 입력 포트 가 있습니다. 이 실험에서는 두 가지 다른 알고리즘의 성능을 비교합니다. 하나는 2 클래스 부스트 결정 트리를 사용하여 생성 된 것과 2 클래스 로지스틱 회귀를 사용하여 생성 된 것 입니다. 출력 포트를 클릭하고 시각화를 선택 하여 실험을 실행하고 모델 평가 모듈 의 출력을 보십시오 .

결과

승격 된 의사 결정 트리 모델의 유효성 검사 세트에서 AUC는 0.697이며 로지스틱 회귀 모델보다 AUC는 0.675입니다. 

후 처리

결과를보다 쉽게 ​​분석 할 수 있도록 airportID 필드를 사용 하여 공항 이름과 위치가 포함 된 데이터 집합에 참여했습니다.

반응형