paint-brush
Ứng dụng Flighty hiện có thể dự đoán sự chậm trễ của chuyến bay: Đây là cách bạn cũng có thể thực hiện bằng cách sử dụng máy họctừ tác giả@kisican
388 lượt đọc
388 lượt đọc

Ứng dụng Flighty hiện có thể dự đoán sự chậm trễ của chuyến bay: Đây là cách bạn cũng có thể thực hiện bằng cách sử dụng máy học

từ tác giả Can Kisi6m2024/08/13
Read on Terminal Reader

dài quá đọc không nổi

Flighty hiện có thể xác định chính xác lý do đằng sau sự chậm trễ. Nó có thể xác định hai nguyên nhân lớn nhất gây ra sự chậm trễ: máy bay đến muộn và các vấn đề về không phận. Nó cũng sẽ cung cấp cho người dùng cảnh báo trước về sự chậm trễ trước các hãng hàng không. Các mô hình dự đoán như vậy có thể quan trọng trong việc giúp các hãng hàng không tối ưu hóa hoạt động, cải thiện sự hài lòng của hành khách và giảm chi phí hoạt động.
featured image - Ứng dụng Flighty hiện có thể dự đoán sự chậm trễ của chuyến bay: Đây là cách bạn cũng có thể thực hiện bằng cách sử dụng máy học
Can Kisi HackerNoon profile picture
0-item
1-item

Ứng dụng theo dõi chuyến bay hàng đầu, Flighty, đang sử dụng máy học cũng như dữ liệu từ các cơ quan hàng không để hiện cung cấp các tín hiệu cảnh báo sớm về sự chậm trễ và xác định chính xác lý do đằng sau sự chậm trễ. Với bản phát hành mới nhất này, ứng dụng hiện có khả năng xác định hai nguyên nhân lớn nhất gây ra sự chậm trễ—máy bay đến muộn và các vấn đề về không phận—cung cấp cho người dùng cảnh báo trước về sự chậm trễ trước khi các hãng hàng không thực hiện việc đó. Ý tưởng đằng sau bản cập nhật là giúp bạn đưa ra quyết định sáng suốt hơn về kế hoạch du lịch của mình bằng cách cung cấp cho bạn thông tin mà các hãng hàng không thường không cung cấp.


Ví dụ, một hãng hàng không có thể hoãn chuyến bay của bạn nửa giờ, rồi một giờ, v.v. Flighty có thể cảnh báo bạn trước rằng chuyến bay của bạn có khả năng bị hoãn ít nhất năm giờ do một lý do nào đó như dừng mặt đất chính thức tại sân bay của bạn hoặc các vấn đề về thời tiết. Bạn có thể muốn thực hiện các bước như đặt lại chuyến bay hoặc đợi lâu hơn một chút để ra sân bay.


Chúng tôi sẽ đi sâu vào cơ chế đằng sau tính năng mới của Flighty và hướng dẫn bạn cách thêm tính năng mạnh mẽ này vào dự án của mình: dự đoán sự chậm trễ của chuyến bay bằng LSTM.

Giới thiệu về Dự đoán sự chậm trễ của chuyến bay

Dự đoán sự chậm trễ của chuyến bay có thể rất khó khăn do có nhiều yếu tố có thể trở thành nguyên nhân gây ra sự chậm trễ, chủ yếu liên quan đến thời tiết, lưu lượng không khí và các vấn đề kỹ thuật. Các mô hình dự đoán như vậy có thể quan trọng trong việc giúp các hãng hàng không tối ưu hóa hoạt động, cải thiện sự hài lòng của hành khách và giảm chi phí hoạt động.

Các tính năng chính trong Dự đoán sự chậm trễ của chuyến bay

Để xây dựng một mô hình dự đoán chuyến bay bị chậm hiệu quả, điều cần thiết là phải sử dụng nhiều tính năng có thể ảnh hưởng đến sự chậm trễ. Trong bài viết này, chúng tôi sẽ sử dụng các tính năng sau:


  • FL_DATE : Ngày bay.
  • DEP_DELAY : Độ trễ khởi hành tính bằng phút.
  • ORIGIN_CITY_NAME : Thành phố nơi chuyến bay khởi hành.
  • DEST_CITY_NAME : Thành phố đích.
  • CRS_DEP_TIME : Thời gian khởi hành theo lịch trình.
  • DISTANCE : Khoảng cách của chuyến bay tính bằng dặm.

Chuẩn bị dữ liệu

Chuẩn bị dữ liệu là một trong những bước chính trong quá trình xây dựng mô hình học máy. Chúng tôi sẽ sử dụng một số dữ liệu lịch sử về các chuyến bay và thực hiện một vài bước tiền xử lý: xử lý các giá trị bị thiếu, mã hóa các tính năng phân loại và chuẩn hóa dữ liệu.


 import pandas as pd import numpy as np import matplotlib.pyplot as plt from sklearn.preprocessing import MinMaxScaler from tensorflow.keras.models import Sequential from tensorflow.keras.layers import LSTM, Dense, Dropout # Load the flight data flights_df = pd.read_csv('path_to_your_flight_data.csv') # Convert FL_DATE to datetime and set as index flights_df['FL_DATE'] = pd.to_datetime(flights_df['FL_DATE']) flights_df.set_index('FL_DATE', inplace=True) # Select relevant columns and drop rows with NaN values features = ['DEP_DELAY', 'ORIGIN_CITY_NAME', 'DEST_CITY_NAME', 'CRS_DEP_TIME', 'DISTANCE'] flights_df = flights_df[features].dropna() # Convert categorical features to dummy variables flights_df = pd.get_dummies(flights_df, columns=['ORIGIN_CITY_NAME', 'DEST_CITY_NAME']) # Normalize the data scaler = MinMaxScaler() scaled_data = scaler.fit_transform(flights_df) 


Tạo chuỗi cho LSTM

Một loại mạng nơ-ron hồi quy là mạng bộ nhớ dài hạn ngắn hạn hoặc mạng LSTM, được thiết kế đặc biệt để tìm hiểu các mối phụ thuộc dài hạn trong dữ liệu chuỗi thời gian. Đầu tiên, cần phải tạo một chuỗi các điểm dữ liệu bằng LSTM.

 # Create sequences def create_sequences(data, seq_length): sequences = [] for i in range(len(data) - seq_length): seq = data[i:i+seq_length] target = data[i+seq_length][0] # DEP_DELAY is the target sequences.append((seq, target)) return sequences seq_length = 30 sequences = create_sequences(scaled_data, seq_length)

Phân chia Train-Test

Tiếp theo, chúng tôi chia các chuỗi thành tập huấn luyện và tập thử nghiệm để đánh giá hiệu suất của mô hình.

 # Split into train and test sets train_size = int(len(sequences) * 0.8) train_sequences = sequences[:train_size] test_sequences = sequences[train_size:] # Prepare the input and output X_train, y_train = zip(*train_sequences) X_train, y_train = np.array(X_train), np.array(y_train) X_test, y_test = zip(*test_sequences) X_test, y_test = np.array(X_test), np.array(y_test)

Xây dựng mô hình LSTM

Sau đó, chúng tôi định nghĩa và đào tạo một mô hình LSTM. Mô hình bao gồm hai lớp LSTM với các lớp bỏ qua để ngăn chặn tình trạng quá khớp và một lớp đầu ra dày đặc.

 # Build the LSTM model model = Sequential() model.add(LSTM(50, return_sequences=True, input_shape=(seq_length, X_train.shape[2]))) model.add(Dropout(0.2)) model.add(LSTM(50)) model.add(Dropout(0.2)) model.add(Dense(1)) model.compile(optimizer='adam', loss='mean_squared_error') # Train the model model.fit(X_train, y_train, epochs=20, batch_size=32, validation_data=(X_test, y_test)) 


Đưa ra dự đoán

Sau khi đào tạo mô hình, chúng ta có thể sử dụng nó để đưa ra dự đoán về dữ liệu thử nghiệm và trực quan hóa kết quả.

 # Make predictions predictions = model.predict(X_test) predictions = scaler.inverse_transform(np.concatenate((predictions, np.zeros((predictions.shape[0], scaled_data.shape[1] - 1))), axis=1))[:, 0] from sklearn.preprocessing import MinMaxScaler future_flight_data = { 'DEP_DELAY': 0, 'ORIGIN_CITY_NAME': 'San Francisco, CA', 'DEST_CITY_NAME': 'New York, NY', 'CRS_DEP_TIME': 1230, 'DISTANCE': 2904 } future_flight_df = pd.DataFrame([future_flight_data]) future_flight_df = pd.get_dummies(future_flight_df, columns=['ORIGIN_CITY_NAME', 'DEST_CITY_NAME']) scaler_columns = list(scaler.feature_names_in_) for col in scaler_columns: if col not in future_flight_df.columns: future_flight_df[col] = 0 future_flight_df = future_flight_df[scaler_columns] # Normalize the data using the fitted scaler scaled_future_flight = scaler.transform(future_flight_df) seq_length = 30 # Repeat the future flight data to create a sequence future_sequence = np.array([scaled_future_flight] * seq_length) future_sequence = future_sequence.reshape(1, seq_length, future_sequence.shape[2]) predicted_delay = model.predict(future_sequence) predicted_delay = scaler.inverse_transform( np.concatenate( (predicted_delay, np.zeros((predicted_delay.shape[0], scaled_future_flight.shape[1] - 1))), axis=1 ) )[:, 0] print(f"Predicted delay for the specific future flight: {predicted_delay[0]:.2f} minutes")


 Predicted delay for the specific future flight: 4.10 minutes

Diễn giải kết quả

Biểu đồ trên cho thấy độ trễ thực tế và dự đoán. Nếu hai đường cho thấy độ lệch rất ít, thì mô hình đang làm tốt công việc dự đoán độ trễ. Tuy nhiên, luôn có chỗ để cải thiện mô hình bằng cách tinh chỉnh siêu tham số hoặc bằng cách thêm nhiều tính năng hơn hoặc sử dụng kiến trúc tiên tiến hơn.

Thách thức và cân nhắc

Mặc dù có nhiều lợi ích, vẫn có một số thách thức và cân nhắc:

  • Chất lượng dữ liệu : Chất lượng và tính đầy đủ của dữ liệu ảnh hưởng rất lớn đến độ chính xác của dự đoán.
  • Lựa chọn tính năng : Lựa chọn các tính năng chính xác để xây dựng một mô hình hiệu quả.
  • Độ phức tạp của mô hình : Độ phức tạp của mô hình càng cao thì càng tốn nhiều tài nguyên tính toán và khó diễn giải.

Phần kết luận

Nhìn chung, học máy trong dự đoán sự chậm trễ của chuyến bay là một công cụ rất mạnh mẽ; nó có thể giúp mang lại hiệu quả to lớn cho các hãng hàng không trong hoạt động của họ và cung cấp trải nghiệm du lịch tốt hơn cho hành khách. Hãy xem qua các ví dụ được đưa ra trong bài viết này để triển khai mô hình dự đoán sự chậm trễ của chuyến bay của riêng bạn và cảm nhận sức mạnh của học máy trong lĩnh vực này.


Đây chỉ là một trong những tính năng mới hơn từ Flighty, nêu bật những gì có thể với máy học để giải quyết các vấn đề trong thế giới thực. Trong quá trình tiến bộ của khoa học dữ liệu và công nghệ, loại mô hình này sẽ tiếp tục cải thiện độ chính xác và các loại vấn đề mà nó có thể được áp dụng, mở đường cho du lịch hàng không thông minh hơn và hiệu quả hơn.



Các bước tiếp theo

Đối với những ai quan tâm đến việc cải thiện mô hình của mình hơn nữa, hãy cân nhắc những điều sau:

  • Điều chỉnh siêu tham số : Sử dụng tìm kiếm dạng lưới hoặc tìm kiếm ngẫu nhiên để tìm ra siêu tham số tối ưu cho mô hình của bạn.
  • Kỹ thuật tính năng : Khám phá các tính năng khác ảnh hưởng đến sự chậm trễ của chuyến bay, như điều kiện thời tiết, dữ liệu không lưu và loại máy bay.
  • Kiến trúc nâng cao : Thiết kế các thử nghiệm với kiến trúc sâu, LSTM hai chiều hoặc GRU có cơ chế chú ý để nắm bắt các mẫu phức tạp hơn trong dữ liệu này.


Thông qua quá trình lặp lại và cải tiến liên tục, có thể đạt được độ chính xác cao hơn để đưa ra những dự đoán đáng tin cậy hơn, do đó, chuyến bay sẽ suôn sẻ và hiệu quả hơn.