You are on page 1of 31

TRƯỜNG ĐẠI HỌC KINH TẾ TP.

HỒ CHÍ MINH
KHOA CÔNG NGHỆ THÔNG TIN KINH DOANH

BIG DATA VÀ ỨNG DỤNG

SỬ DỤNG PYSPARK TRONG BIG DATA


DỰ ĐOÁN KHẢ NĂNG TRỄ CHUYẾN
BAY CỦA HÃNG HÀNG KHÔNG

Giảng viên hướng dẫn: TS. Bùi Thanh Hiếu


Mã lớp học phần: 21CBIG60900701
Thành viên nhóm:
Lê Ngọc Thuận - 202118017
Trần Đăng Khoa - 202118006
Nguyễn Thị Kim Ngân - 202118010
Nguyễn Thị Quỳnh Như - 202118012

TP. Hồ Chí Minh, tháng 10 năm 2021


Sử dụng PySpark trong Big Data – Dự đoán khả năng trễ chuyến bay của hãng hàng không

Mục lục
Tóm tắt 3
1. Giới thiệu 3
2. Tìm hiểu dữ liệu và biểu diễn dữ liệu 4
2.1. Mô tả dữ liệu 4
2.2. Biểu diễn dữ liệu 8
3. Phương pháp tiếp cận 16
3.1. Databricks 16
3.2. PySpark 18
3.3. Các thuật toán 21
3.3.1. Mô hình Hồi Quy Logistic 21
3.3.2. Mô Hình Cây Quyết Định (Decision Tree) 24
3.3.3. Mô Hình Gradient Boosted Trees 25
4. Thực nghiệm và thảo luận 26
5. Kết luận 30
Tài liệu tham khảo 31

2
Sử dụng PySpark trong Big Data – Dự đoán khả năng trễ chuyến bay của hãng hàng không

Tóm tắt
Trễ chuyến bay là một sự việc xảy ra khá phổ biến ở các chuyến bay của mọi hãng hàng không
trên thế giới, nước Mỹ cũng không ngoại lệ. Việc hoãn chuyến bay gây tốn kém không ít cho
các hãng hàng không và hành khách của họ. Vì thế, mục tiêu chính của mô hình được đề xuất
trong bài báo này là dự đoán sự chậm trễ của các hãng hàng không bằng cách sử dụng khai
thác dữ liệu và thuật toán máy học có giám sát. Dữ liệu về các chuyến bay bị hoãn và hủy năm
2015 do Cục Thống kê Giao thông Vận tải (DOT) đã được trích xuất và sử dụng để huấn luyện
mô hình. Để khắc phục ảnh hưởng của dữ liệu đào tạo không cân đối, kỹ thuật lấy mẫu được
áp dụng mô hình Hồi quy Logistic, Decision Tree (cây quyết định), Gradient Boosted Trees
đã được triển khai để xây dựng các mô hình có thể dự đoán sự chậm trễ của các chuyến bay
riêng lẻ. Trong bước dự đoán, lịch bay đã được tập hợp và đưa vào mô hình được đào tạo thực
hiện phân loại nhị phân để dự đoán liệu chuyến bay theo lịch trình sẽ bị hoãn hay đúng giờ.

1. Giới thiệu
Ngày nay, dữ liệu có sẵn ở khắp mọi nơi, gần như tất cả mọi việc chúng ta làm đều để lại
dấu vết trong không gian số; chúng ta có thể gọi đó là dữ liệu lớn (Big data). Khả năng kiểm
soát và triển khai khối lượng dữ liệu ngày càng phình to đã và đang biến đổi hoàn toàn khả
năng của con người trong việc tìm hiểu thế giới trong mọi mặt đời sống xã hội và cả cách thức
kinh doanh trong các công ty. Mối quan tâm duy nhất của các công ty là làm thế nào để sử
dụng dữ liệu này để tạo ra một số loại tri thức có thể được sử dụng để ra quyết định cho hoạt
động kinh doanh đạt được hiệu quả cao hơn.
Theo số liệu có được từ năm 2002 đến 2007, trong khi số lượng chuyến bay tăng 40,7%,
số chuyến bay đến muộn hơn 15 phút đã tăng 106,4% (Cục Thống kê Giao thông Vận tải,
2009). Trong năm 2007, gần 1/4 tổng số chuyến bay bị hoãn ít nhất 15 phút (BTS, 2009).
Trong khi số lượng chuyến bay và sự chậm trễ giảm 12,9% trong giai đoạn 2007-2009 và
32,8% do suy thoái kinh tế, Cục Hàng không Liên bang (FAA) đã dự báo tăng gần 50% hoạt
động bay từ năm 2010 đến năm 2025 (FAA, 2009). Nếu không có sự nâng cấp về cơ sở hạ
tầng hàng không hoặc các cơ chế khác, chẳng hạn như giá tắc nghẽn, sự tăng trưởng này có
thể sẽ dẫn đến mức độ trễ chuyến bay cao hơn.
Đối với các hãng hàng không, việc hoãn chuyến bay dẫn đến chi phí bổ sung, chủ yếu là
chi phí cho phi hành đoàn, nhiên liệu, máy bay và bảo trì. Một nghiên cứu toàn diện gần đây
đã hoàn thành về việc trì hoãn chuyến bay của Trung tâm Nghiên cứu Hoạt động Hàng không
Quốc gia (NEXTOR) ước tính rằng việc chậm chuyến bay khiến các hãng hàng không thiệt
hại 8,3 tỷ đô la trong năm 2007. Đối với hành khách, thời gian di chuyển thêm do chậm chuyến
bay dẫn đến giảm năng suất kinh doanh và mất cơ hội cho các hoạt động giải trí. Dựa trên ước
tính về thời gian bị mất của hành khách do chuyến bay bị hoãn, chuyến bay bị hủy được
NEXTOR ước tính chi phí cho hành khách là 16,7 tỷ đô la trong năm 2007; các nghiên cứu
khác ước tính chi phí của sự chậm trễ chuyến bay bao gồm Hiệp hội Vận tải Hàng không
(ATA, 2009) và Ủy ban Kinh tế hỗn hợp Thượng viện (JEC, 2008). Trong các nghiên cứu này,

3
Sử dụng PySpark trong Big Data – Dự đoán khả năng trễ chuyến bay của hãng hàng không

chi phí chậm trễ dao động từ 6,1 đến 19 tỷ USD cho các hãng hàng không và 3,3 đến 12,0 tỷ
USD cho hành khách.
Bên cạnh những thiệt hại về chi phí như các báo cáo trên, các chuyến bay bị hoãn còn ảnh
hưởng tác động đến kinh tế như giá vé máy bay tăng do chi phí hàng không tăng do các chuyến
bay bị hoãn sẽ làm thay đổi chi tiêu của người tiêu dùng cho các chuyến du lịch giải trí và các
sản phẩm và dịch vụ liên quan đến du lịch khác, chẳng hạn như khách sạn và nhà hàng. Sự lan
tỏa này sẽ ảnh hưởng đến mức sản lượng của các ngành liên quan đến du lịch cũng như việc
sử dụng các nguồn tài nguyên khan hiếm của chúng.
Từ những thiệt hại của việc trễ chuyến bay như tìm hiểu trên và bộ dữ liệu về các chuyến
bay bị hoãn và hủy năm 2015 do Cục Thống kê Giao thông Vận tải (DOT) công bố, phân loại
sự chậm trễ của các hãng hàng không thành 5 nguyên nhân chính như: hãng hàng không, thời
tiết khắc nghiệt, máy bay đến muộn và hệ thống an ninh. Bài nghiên cứu chúng tôi thực hiện
dự báo việc trễ thời gian bay vì lý do của hãng hàng không để giúp các hãng hàng không có
thể cải thiện tốt hơn dịch vụ bay của họ. Với mục đích này, chúng tôi sử dụng PYSPARK
trong xử lý Big Data các chuyến bay để dự đoán sự chậm trễ do hãng hàng không được đề
xuất trong nghiên cứu này.

2. Tìm hiểu dữ liệu và biểu diễn dữ liệu

2.1. Mô tả dữ liệu
Phần này, mô tả dữ liệu theo dõi hiệu suất đúng giờ của các chuyến bay nội địa do các hãng
hàng không lớn khai thác. Thông tin tóm tắt về số lượng các chuyến bay đúng giờ, bị hoãn,
hủy và chuyển hướng được công bố trong Báo cáo Người tiêu dùng Du lịch Hàng không hàng
tháng của DOT và trong bộ dữ liệu về các chuyến bay bị hoãn và hủy năm 2015 do Cục Thống
kê Giao thông Vận tải (DOT) của Bộ Giao thông Vận tải Hoa Kỳ thu thập và công bố.

Bảng mô tả cấu trúc và ý nghĩa dữ liệu các chuyến bay:

STT Tên trường dữ liệu Kiểu dữ liệu Ý nghĩa

string
1 YEAR Năm
(nullable = true)

string
2 MONTH Tháng
(nullable = true)

string
3 DAY Ngày
(nullable = true)

string
4 DAY_OF_WEEK Ngày trong tuần
(nullable = true)

4
Sử dụng PySpark trong Big Data – Dự đoán khả năng trễ chuyến bay của hãng hàng không

string
5 AIRLINE Hãng hàng không
(nullable = true)

string
6 FLIGHT_NUMBER Mã chuyến bay
(nullable = true)

string
7 TAIL_NUMBER Số hiệu máy bay
(nullable = true)

string
8 ORIGIN_AIRPORT Nơi xuất phát
(nullable = true)

string
9 DESTINATION_AIRPORT Điểm đến
(nullable = true)

string
10 SCHEDULED_DEPARTURE Lịch trình xuất phát
(nullable = true)

string
11 DEPARTURE_TIME Thời gian xuất phát thực tế
(nullable = true)

string
12 DEPARTURE_DELAY Thời gian xuất phát bị trễ
(nullable = true)

string
13 TAXI_OUT Thời gian taxi ra
(nullable = true)

string Thời gian lăn bánh cất


14 WHEELS_OFF
(nullable = true) cánh

string
15 SCHEDULED_TIME Thời gian theo lịch trình
(nullable = true)

string
16 ELAPSED_TIME Thời gian trôi qua
(nullable = true)

string
17 AIR_TIME Thời gian cất cánh
(nullable = true)

5
Sử dụng PySpark trong Big Data – Dự đoán khả năng trễ chuyến bay của hãng hàng không

string
18 DISTANCE Khoảng cách
(nullable = true)

string
19 WHEELS_ON Thời gian lăn bánh hạ cánh
(nullable = true)

string
20 TAXI_IN Thời gian taxi vào
(nullable = true)

string Thời gian theo lịch di


21 SCHEDULED_ARRIVAL
(nullable = true) chuyển

string
22 ARRIVAL_TIME Thời gian di chuyển
(nullable = true)

string
23 ARRIVAL_DELAY Thời gian di chuyển trễ
(nullable = true)

string
24 DIVERTED Chuyển hướng
(nullable = true)

string
25 CANCELLED Hủy chuyến
(nullable = true)

string
26 CANCELLATION_REASON Lý do hủy
(nullable = true)

string Trễ vì hệ thống hàng


27 AIR_SYSTEM_DELAY
(nullable = true) không

string
28 SECURITY_DELAY Trễ vì lý do an ninh
(nullable = true)

string
29 AIRLINE_DELAY Trễ vì lý do từ hãng
(nullable = true)

30 LATE_AIRCRAFT_DELAY string Trễ vì phi cơ

6
Sử dụng PySpark trong Big Data – Dự đoán khả năng trễ chuyến bay của hãng hàng không

(nullable = true)

string
31 WEATHER_DELAY Trễ vì thời tiết
(nullable = true)

double
32 HOUR_ARR Số h di chuyển
(nullable = true)

Bảng mô tả cấu trúc và ý nghĩa dữ liệu các hãng hàng không:

STT Tên trường dữ liệu Kiểu dữ liệu Ý nghĩa

Mã định danh hãng hàng


1 IATA_CODE string (nullable = true)
không

2 AIRLINE string (nullable = true) Tên hãng hàng không

Bảng mô tả cấu trúc và ý nghĩa dữ liệu các cảng hàng không (sân bay):

STT Tên trường dữ liệu Kiểu dữ liệu Ý nghĩa

Mã định danh cảng hàng


1 IATA_CODE string (nullable = true)
không (sân bay)

2 AIRPORT string (nullable = true) Tên tên cảng hàng không)

Thành phố sân bay trực


3 CITY string (nullable = true)
thuộc

Tên viết tắt của tiểu bang


4 STATE string (nullable = true)
sân bay trực thuộc

Tên viết tắt của quốc gia


5 COUNTRY string (nullable = true)
sân bay trực thuộc

6 LATITUDE double (nullable = true) Vĩ độ của sân bay

7 LONGITUDE double (nullable = true) Kinh độ của sân bay

7
Sử dụng PySpark trong Big Data – Dự đoán khả năng trễ chuyến bay của hãng hàng không

2.2. Biểu diễn dữ liệu


Từ bộ dữ liệu về các chuyến bay bị hoãn và hủy năm 2015 do Cục Thống kê Giao thông
Vận tải (DOT) của Bộ Giao thông Vận tải Hoa Kỳ thu thập và công bố, ta quan sát được 5 tiểu
bang có số lượt chuyến bay được xuất phát nhiều nhất trong năm. Đứng đầu số lượng lượt xuất
phát chính là bang California với 12.590 chuyến bay, đứng thứ nhì là bang Texas 11.987
chuyến bay, tiếp đến lần lượt là các bang Florida, Illinois, Georgia với lần lượt tổng số lượng
tương ứng 8.053, 7.832 và 6.165 chuyến bay.

Hình 1: Biểu đồ tổng số chuyến bay theo từng tiểu bang ở Mỹ năm 2015

Trong năm 2015, chúng ta thống kê được các thành phố có số lượng chuyến bay đến nhiều
nhất trong năm như:
● Thành phố Chicago có 6.157 lượt bay đến, trong đó 5 hãng hàng không chiếm số
lượng lớn chuyến bay như American Airlines Inc. (AA), American Eagle Airlines
Inc. (MQ), United Air Lines Inc. (UA), Atlantic Southeast Airlines (EV), Skywest
Airlines Inc. (OO).
● Thành phố Atlanta có 5.922 lượt bay đến, và hãng hàng không Delta Air Lines Inc.
(DL) chiếm số lượng chuyến bay đến nhiều nhất với 3.731 chuyến.
● Thành phố Dallas-Fort Worth có 5.365 chuyến bay, trong đó hãng hàng không
American Airlines Inc. (AA) chiếm gần 50% chuyến bay với 2.401.
Theo biểu đồ So sánh số lượng chuyến bay theo từng tháng giữa các hãng hàng không, ta
thấy được rằng:
● Hãng hàng không Southwest Airlines Co. (WN) có số lượng chuyến bay nhiều nhất
trong tất cả các hãng, đỉnh điểm là tháng 7 với 1.934 chuyến bay, tháng 2 thấp nhất
cũng có đến 1.627 chuyến bay.

8
Sử dụng PySpark trong Big Data – Dự đoán khả năng trễ chuyến bay của hãng hàng không

● Đứng thứ nhì là hãng hàng không Delta Air Lines Inc. (DL), với số lượng chuyến
bay cao nhất vào tháng 8 với 1.435 và thấp nhất 1.034 cũng vào tháng 2.
● Đặc biệt nhất là hãng American Airlines Inc. (AA), nửa tháng đầu năm hãng có số
lượng chuyến bay không quá cao như tháng cao nhất cũng chỉ đạt 790 chuyến bay
(tháng 6), nhưng 6 tháng cuối năm có số lượng chuyến bay tăng cao vượt bậc như
tháng 7 có số lượng cao gần gấp đôi tháng 6 lên đến 1.350 chuyến bay.

Hình 2: Biểu đồ thống kê các điểm bay đến nhiều nhất và số lượng chuyến bay của các hãng
hàng không tại Mỹ năm 2015

Ở biểu đồ Tổng số chuyến bay và số chuyến bị hoãn bay của từng hãng hàng không, cung
cấp cho chúng ta thông tin như:
● Hãng hàng không Southwest Airlines Co. (WN) có số lượng chuyến bay nhiều nhất
lên đến 21.771 chuyến bay, vì vậy cũng có số chuyến bay bị hoãn cao nhất với 2.420
chuyến.
● Sếp sau đó lần lượt là các hãng Delta Air Lines Inc. (DL) với 15.044 chuyến bay và
1.128 chuyến bị hoãn American Airlines Inc. (AA) có 12.371 chuyến bay và 1.180
chuyến bị hoãn.
● Trong đó 3 hãng bay có số lượng chuyến bay thấp nhất gồm: Frontier Airlines Inc.
(F9) với 1.594 chuyến bay và 210 chuyến bị hoãn, Hawaiian Airlines Inc. (HA) với
1.327 chuyến bay và 118 chuyến bị hoãn, thấp nhất là hãng hàng không Virgin
America (VX) với 1.129 chuyến bay và 82 chuyến bị hoãn.
Ta thấy số lượng chuyến bay của hãng hàng không lớn nhất Southwest Airlines Co. (WN)
so với hãng bay có số chuyến thấp nhất Virgin America (VX) cao gần gấp 20 lần, một sự cách
biệt rất lớn giữa 2 hãng hàng không này.

9
Sử dụng PySpark trong Big Data – Dự đoán khả năng trễ chuyến bay của hãng hàng không

Với 100.000 lịch bay năm 2015 thì trong đó 6.916 chuyến bay được thực hiện hoàn toàn
đúng giờ, chiếm 6,91% trên tổng chuyến bay. Đồng thời, ba lý do có số lượng chuyến bay bị
hoãn nhiều nhất lần lượt như:
● Trễ vì hệ thống bay (air_system_delay): 9.823 chuyến
● Trễ vì hãng hàng không (airline_delay): 9.822 chuyến
● Trễ vì phi cơ (late_aircraft_delay): 9.729 chuyến
Ngoài ra, còn hai lý do có số lượng hoãn chuyến bay không đáng kể như:
● Trễ vì thời tiết (weather_delay): 1.083 chuyến
● Trễ vì lý do an ninh (security_delay): 58 chuyến.

Hình 3: Biểu đồ thể hiện tổng số chuyến bay và tổng thời gian theo từng lý do hoãn bay

Về tổng lượng thời gian bị trễ chuyến bay theo từng tháng trong năm 2015 thì:
● Trễ vì phi cơ (late_aircraft_delay) nhiều nhất là vào tháng 6 lên đến 53.863 giờ và
ít nhất vào tháng 9 với 18.197 giờ
● Trễ vì hãng hàng không (airline_delay) nhiều nhất 40.059 giờ vào tháng 6 và ít nhất
18.958 giờ vào tháng 10
● Trễ vì hệ thống bay (air_system_delay) nhiều nhất 27.107 giờ vào tháng 6 và ít nhất
13.600 giờ vào tháng 9
● Trễ vì thời tiết (weather_delay) nhiều nhất 6.127 giờ cũng vào tháng 6 và ít nhất
1.832 giờ vào tháng 10
● Trễ vì lý do an ninh (security_delay) tổng thời gian trễ vì lý do này không nhiều,
nhưng đặc biệt nhất là vào tháng 10 thì hoàn toàn không bị trễ vì lý do an ninh.

10
Sử dụng PySpark trong Big Data – Dự đoán khả năng trễ chuyến bay của hãng hàng không

Từ đó, chúng ta thấy rằng tháng 6 là tháng mà bị trễ thời gian bay nhiều nhất, cần tìm hiểu
và khắc phục lý do bị trễ từ tháng nổi bật này. Bên cạnh đó tháng 9 và tháng 10 là những tháng
có thời gian trễ chuyến bay ít nhất trong năm.
Về tổng thời gian bị trễ chuyến bay theo các ngày trong tuần thì chúng ta thấy được rằng
ngày chủ nhật và ngày thứ tư hàng tuần. Ngày thứ 6 hàng tuần là ngày có thời gian trễ chuyến
bay là thấp nhất trong tuần.

Hình 4: Biểu đồ tổng số lần trễ chuyến bay vì hãng hàng không theo ngày trong tháng, ngày
trong tuần, tháng trong năm

Nói về lý do trễ chuyến bay của các hàng hàng không thì chúng ta thống kê được số lần trễ
của tháng trong năm như sau:
● Những tháng giữa năm có số lượt trễ nhiều nhất như tháng 6 là 1.123 chuyến bay
và tháng 7 là 1.031 chuyến bay.
● Những tháng gần cuối năm lại có số lượt trễ ít nhất như tháng 9 là 565 chuyến bay,
tháng 10 là 530 chuyến bay và tháng 11 là 630 chuyến bay.
Trong tháng có số chuyến bay trễ nhiều nhất thì những ngày có số lượng trễ nhiều như
ngày 11, 12, 16, 18, 25 đều có số chuyến bay bị trễ nhiều hơn 45 chuyến. Và ngày có chuyến

11
Sử dụng PySpark trong Big Data – Dự đoán khả năng trễ chuyến bay của hãng hàng không

bay bị trễ ít nhất là ngày 6 với 10 chuyến bay bị trễ. Nhưng số lượng chuyến bay bị trễ giờ vì
hãng hàng không phân bổ khá đều ở các ngày trong tháng, không có sự chênh lệch qua nhiều
giữa các ngày với nhau
Với ngày trong tuần của năm 2015 thì chúng ta thấy rằng ngày thứ 4 trong tuần có số lượng
chuyến bay bị trễ nhiều nhất 1.572 chuyến và ngày thứ 6 trong tuần có số lượng chuyến bay
bị trễ ít nhất 1.080 chuyến. Như vậy các ngày trong tuần cũng không có sự chênh lệch về mật
độ số lượng chuyến bay bị trễ quá lớn với nhau.
Theo số liệu thống kê năm 2015 tại Mỹ thì chúng ta thấy rằng số lượng chuyến bay bị hủy
chiếm 1,6% so với kế hoạch bay, trong đó nguyên nhân bị hủy nhiều nhất chính là Hủy bay vì
thời tiết (weather_cancel) 0,89% và nguyên nhân thấp nhất là Hủy bay vì an ninh chiếm 0,27%.
Bên cạnh đó, so sánh giữa các tháng trong năm thì cho chúng ta kết quả tháng 2 chính là
tháng mà thời tiết ảnh hưởng chuyến nhiều nhất với 282 chuyến bay bị hủy, những tháng ít bị
hủy chuyến bay vì thời tiết nhất là vào khoảng thời gian từ giữa cho đến gần cưới năm như
tháng 7 đến tháng 10.

Hình 5: Biểu đồ thể hiện số chuyến bay bị hủy trong năm 2015

12
Sử dụng PySpark trong Big Data – Dự đoán khả năng trễ chuyến bay của hãng hàng không

Nói về số lượng hủy chuyến bay của các hãng hàng không thì hàng có số lượng chuyến
bay bị hủy nhiều nhất trong năm chính là Southwest Airlines Co. (WN) 328 chuyến hủy, tiếp
sau đó lần lượt là American Eagle Airline Inc. (MQ), Atlantic Southeast Airlines (EV),
American Airlines Inc. (AA) với 286, 249, 198 chuyến hủy. Những hãng bay ít bị hủy chuyến
nhất như Hawaiian Airlines Inc. (HA) 2 chuyến hủy, và các hãng hàng không Frontier Airlines
Inc. (F9), Virgin America (VX), Alaska Airlines Inc. (AS) lần lượt là 7, 9, 13 chuyến hủy.
Và hầu như tất cả các hãng hàng không bị hủy chuyến bay thì lý do vì thời tiết luôn chiếm
tỷ lệ lớn nhất trong các lý do còn lại.

Hình 6: Biểu đồ thể hiện top 10 điểm xuất phát và điểm đến bị hủy chuyến bay nhiều nhất
năm 2015

Chúng ta quan sát thấy được rằng điếm ORD có số lượng chuyến bay xuất phát và bay đến
đều bị hủy nhiều nhất với 153 và 190 chuyến hủy, xếp sau đó là DFW với 109 và 143 chuyến
hủy. Và cả 2 địa điểm trên bị hủy chuyến bay chủ yếu là vì thời tiết, ta có thể nhận định rằng
thời tiết của 2 vị trí này thường xuyên không được đẹp và dễ dẫn đến hủy chuyến bay, các
hãng hàng không cần phải lưu ý những địa điểm như thế này để khai thác chuyến bay tốt hơn.

13
Sử dụng PySpark trong Big Data – Dự đoán khả năng trễ chuyến bay của hãng hàng không

Hình 7: Biểu đồ thống kê thời gian cất cánh và hạ cánh nhanh nhất của các máy bay

Với thống kê máy bay có thời gian cất cánh và hạ cánh nhanh nhất chúng ta có thể thấy
được rằng 3 máy bay có khả năng cất và hạ cánh nhanh nhất thuộc về 3 hãng hàng không Delta
Air Lines Inc. (DL), American Eagle Airlines Inc. (MQ), Atlantic Southeast Airlines (EV).
Tuy nhiên, hãng hàng không có số lượng máy bay cất và hạ cánh nhiều nhất lại là American
Airlines Inc. (AA).

14
Sử dụng PySpark trong Big Data – Dự đoán khả năng trễ chuyến bay của hãng hàng không

Hình 8: Biểu đồ thống kê thời gian cất cánh và hạ cánh chậm nhất của các máy bay

Từ bảng thống kê thời gian cất cánh và hạ cánh chậm nhất cho thấy rằng hãng hàng không
Hawaiian Airlines Inc. (HA) có nhiều máy bay cất và hạ cánh chậm nhất trong tất cả các hãng
hàng không, hãng bay này cần nên xem xét lại chất lượng máy bay để phục vụ hàng khách
được tốt hơn.
Qua những thông tin mà dữ liệu cung cấp, chúng ta có thể thấy các hãng hàng không bị trễ
thời gian bay còn khá cao, ngoài những yếu tố khách quan như con người, thời tiết thì chất
lượng chuyến bay và nhất là việc đúng thời gian bay rất quan trọng đối với dịch vụ hàng không.
Chính vì vậy, bài nghiên cứu này chúng ta sẽ thực hiện dự đoán hành khách có khả năng trễ
chuyến bay vì lý do từ hãng hàng không để các hàng bay sẽ có được những giải pháp tốt hơn
trong việc quản lý thời gian bay và phục vụ khách hàng.

15
Sử dụng PySpark trong Big Data – Dự đoán khả năng trễ chuyến bay của hãng hàng không

3. Phương pháp tiếp cận


3.1. Databricks
Là kho dữ liệu tốt nhất đáp ứng tốt nhất các hồ sơ dữ liệu, cung cấp một nền tảng mở và
thống nhất cho dữ liệu và AI.
Nói một cách đơn giản, Databricks là:
● Một nơi duy nhất cho tất cả dữ liệu
● Nền tảng cơ bản cho mọi khối lượng công việc - từ BI đến AI
● Một nền tảng duy nhất chạy ở mọi nơi
● Một nền tảng duy nhất mang mọi thứ lại với nhau - Lakehouse
● Sổ ghi chép cộng tác - cho phép DE và DS làm việc cùng nhau
● Kỹ thuật dữ liệu đáng tin cậy
● Phân tích SQL trên tất cả dữ liệu của bạn
Ví dụ điển hình:
 Azure Databricks

Hình 9: Azure Databricks integration with other services


Đối với data pipeline lớn, dữ liệu (thô hoặc có cấu trúc) được nhập vào Azure thông qua
Azure Data Factory theo lô hoặc được truyền trực tuyến gần thời gian thực bằng Apache Kafka,
Event Hub hoặc IoT Hub. Dữ liệu này được đưa vào một hồ dữ liệu để lưu trữ lâu dài liên tục,
trong Azure Blob Storage hoặc Azure Data Lake Storage. Azure Databricks đọc dữ liệu từ
nhiều nguồn dữ liệu như Azure Blob Storage, Azure Data Lake Storage, Azure Cosmos DB
hoặc Azure SQL Data Warehouse và biến nó thành những thông tin chi tiết đột phá bằng
Spark.

16
Sử dụng PySpark trong Big Data – Dự đoán khả năng trễ chuyến bay của hãng hàng không

Hình 10: Databricks pipeline

 Nền tảng phân tích Apache Spark


Databricks Data Science & Engineering bao gồm các công nghệ và khả năng của cụm
Apache Spark mã nguồn mở hoàn chỉnh. Mỗi một tính toán trên Spark sẽ được thực hiện trên
một cluster được quản lý bởi một máy chủ (master). Máy chủ sẽ thực hiện 2 nhiệm vụ chính
đó là: Phân chia vùng dữ liệu tính toán về các nodes được phụ trách bởi các máy con (workers)
để thực hiện xử lý dữ liệu. Sau khi các máy con hoàn thành nhiệm vụ, master sẽ tổng hợp lại
các kết quả từ các máy con và trả về client kết quả cuối cùng.
Spark trong Databricks Data Science & Engineering bao gồm các thành phần sau:

Hình 11: Apache Spark trong Azure Databricks

Spark SQL và DataFrames: Spark SQL là mô-đun Spark để làm việc với dữ liệu có cấu
trúc. DataFrame là một tập hợp dữ liệu phân tán được tổ chức thành các cột được đặt tên. Về
mặt khái niệm, nó tương đương với một bảng trong cơ sở dữ liệu quan hệ hoặc một khung dữ
liệu trong R / Python.
Streaming: Xử lý và phân tích dữ liệu thời gian thực cho các ứng dụng phân tích và tương
tác. Tích hợp với HDFS, Flume và Kafka.
17
Sử dụng PySpark trong Big Data – Dự đoán khả năng trễ chuyến bay của hãng hàng không

MLlib: Thư viện Machine Learning bao gồm các thuật toán và tiện ích học tập phổ biến,
bao gồm phân loại, hồi quy, phân cụm, lọc cộng tác, giảm kích thước, cũng như các nguyên
tắc tối ưu hóa cơ bản.
GraphX: Đồ thị và tính toán đồ thị cho nhiều trường hợp sử dụng từ phân tích nhận thức
đến khám phá dữ liệu.
Spark Core API: Bao gồm hỗ trợ cho R, SQL, Python, Scala và Java.

3.2. PySpark
PySpark là một giao diện cho Apache Spark bằng Python. Nó không chỉ cho phép bạn viết
các ứng dụng Spark bằng cách sử dụng các API Python mà còn cung cấp trình bao PySpark
để phân tích tương tác dữ liệu của bạn trong môi trường phân tán. PySpark hỗ trợ hầu hết các
tính năng của Spark như Spark SQL, DataFrame, Streaming, MLlib (Machine Learning) và
Spark Core. Điều tốt khi sử dụng PySpark là tất cả sự phức tạp của phân vùng dữ liệu và quản
lý tác vụ được xử lý tự động ở phía sau và lập trình viên có thể tập trung vào phân tích cụ thể
hoặc công việc học máy.
PySpark cho phép các lập trình viên Python giao diện với khung công tác Spark và học
cách thao tác dữ liệu trên quy mô lớn và làm việc với các đối tượng và thuật toán trên hệ thống
tệp phân tán.

Hình 12: PySpark Component

● Spark SQL và DataFrame


Spark SQL là một mô-đun Spark để xử lý dữ liệu có cấu trúc. Nó cung cấp một
chương trình trừu tượng gọi là DataFrame và cũng có thể hoạt động như một công
cụ truy vấn SQL phân tán.

18
Sử dụng PySpark trong Big Data – Dự đoán khả năng trễ chuyến bay của hãng hàng không

● Streaming
Chạy trên Spark, tính năng phát trực tuyến trong Apache Spark cho phép các ứng
dụng tương tác và phân tích mạnh mẽ trên cả dữ liệu lịch sử và truyền trực tuyến,
đồng thời kế thừa các đặc tính dễ sử dụng và khả năng chịu lỗi của Spark.
● MLlib
Được xây dựng dựa trên Spark, MLlib là một thư viện học máy có thể mở rộng cung
cấp một bộ API cấp cao thống nhất giúp người dùng tạo và điều chỉnh các đường
ống học máy thực tế.
● Spark Core
Spark Core là công cụ thực thi chung cơ bản cho nền tảng Spark mà tất cả các chức
năng khác đều được xây dựng trên đó. Nó cung cấp một RDD (Tập dữ liệu phân tán
có khả năng phục hồi) và khả năng tính toán trong bộ nhớ.

 Spark sử dụng Mô hình MapReduce để Xử lý Phân tán:


Ý tưởng cơ bản của xử lý phân tán là chia các khối dữ liệu thành các phần nhỏ có thể quản
lý được (bao gồm một số lọc và sắp xếp), đưa tính toán gần với dữ liệu tức là sử dụng các nút
nhỏ của một cụm lớn cho các công việc cụ thể và sau đó kết hợp lại chúng trở lại. Phần phân
chia được gọi là hành động Map và phần kết hợp lại được gọi là hành động Reduce. Cùng
nhau, họ tạo nên mô hình 'MapReduce' nổi tiếng, được Google giới thiệu vào khoảng năm
2004.
Ví dụ: Nếu một tệp có 100 bản ghi cần được xử lý, 100 người lập bản đồ có thể chạy cùng
nhau để xử lý một bản ghi. Hoặc có thể 50 người lập bản đồ có thể chạy cùng nhau để xử lý
hai bản ghi. Sau khi tất cả các trình lập bản đồ hoàn tất quá trình xử lý, khung làm việc xáo
trộn và sắp xếp các kết quả trước khi chuyển chúng cho các trình giảm bớt. Một trình giảm tốc
không thể bắt đầu trong khi trình ánh xạ vẫn đang được tiến hành. Tất cả các giá trị đầu ra của
bản đồ có cùng một khóa được gán cho một bộ giảm thiểu duy nhất, sau đó tổng hợp các giá
trị cho khóa đó.

 RDD và SparkContext:
Nhiều chương trình Spark xoay quanh khái niệm về tập dữ liệu phân tán có khả năng phục
hồi (RDD), là một tập hợp các phần tử có khả năng chịu lỗi có thể hoạt động song song.
SparkContext nằm trong chương trình Trình điều khiển và quản lý dữ liệu được phân phối qua
các node worker thông qua trình quản lý cluster.

19
Sử dụng PySpark trong Big Data – Dự đoán khả năng trễ chuyến bay của hãng hàng không

Hình 13: Cluster Overview

Khắc phục những tồn tại của Hadoop MapReduce, Spark đưa ra một khái niệm mới RDD
(Resilient Distributed Dataset )đóng vai trò như 1 cấu trúc dữ liệu cơ bản trong Spark, RDD
được định nghĩa là trừu tượng cho một tập hợp các phần tử bất biến (bản chất là được lưu trên
các ô nhớ read-only), được phân vùng có thể được chia sẻ, tác động song song. Qua đó, input
data từ storage system chỉ cần load 1 lần duy nhất, các step thực hiện biến đổi, xử lý input data
được lên kế hoạch, optimize và thực hiện một cách liên tục cho đến khi output được trả khi
kết thúc công việc. Toàn bộ quá trình đó được diễn ra trên bộ nhớ RAM (khi hết RAM sẽ được
chuyển sang xử lý trên Disk) tận dụng được hiệu suất I/O cao từ đó có thể giảm thời gian thực
thi nhỏ hơn 10-100 lần Hadoop MapReduce.

Hình 14: Apache Spark RDD

20
Sử dụng PySpark trong Big Data – Dự đoán khả năng trễ chuyến bay của hãng hàng không

3.3. Các thuật toán

3.3.1. Mô hình Hồi Quy Logistic

a) Giới thiệu
Hồi quy Logistic (Logistic Regression) là một mô hình Máy học (Machine Learning) dùng
để giải quyết những bài toán Phân loại (Classification). Đây là một mô hình thông dụng,
thường được dùng cho các biến mục tiêu theo dạng phân loại.

Hình 15:

Có 3 loại mô hình hồi quy Logistic:


● Hồi quy Logistic Nhị thức (Binomial Logistic Regression):
Khi biến mục tiêu chỉ có hai giá trị. Ví dụ: Yes / No, True / False, Go / Not Go
● Hồi quy logistic Thứ bậc (Ordinal Logistic Regression)
Khi biến mục tiêu theo dạng thứ bậc. Ví dụ: Positive / Neutral / Negative
● Hồi quy logistic Đa thức (Multinomial logistic regression)
Khi biến mục tiêu chỉ có nhiều hơn hai giá trị nhưng không phải theo dạng thứ bậc.
Ví dụ, movie genres: Action / Fiction / Drama.

21
Sử dụng PySpark trong Big Data – Dự đoán khả năng trễ chuyến bay của hãng hàng không

b) So sánh Hồi quy Tuyến tính (Linear Regression) và Hồi quy Logistic
Giống như mô hình Hồi quy Tuyến tính (Linear Regression), mô hình hồi quy Logistic
cũng có các giá trị đầu vào là các biến độc lập. Từ các biến độc lập này, mô hình sẽ dự đoán
được đầu ra là một biến phụ thuộc.

Hình 16:

Điểm khác biệt cơ bản giữa hồi quy Tuyến tính và hồi quy Logistic là:

Đặc điểm Hồi quy Tuyến tính Hồi quy Logistic

Bài toán Hồi quy (Regression) Phân loại (Classification)

Biến mục tiêu Biến liên tục (Continuous var) Biến phân loại (Categorical var)

Mối quan hệ giữa Quan hệ tuyến tính. Được biểu Quan hệ không tuyến tính. Được
biến độc lập và diễn dưới dạng một đường biểu diễn dưới dạng S-shaped
biến phụ thuộc thẳng.

Ước lượng tham số Sử dụng phương pháp ‘least Sử dụng phương pháp
square’ Maximum Likelihood

c) Phương trình Hồi quy Logistic

 Dạng đơn biến

22
Sử dụng PySpark trong Big Data – Dự đoán khả năng trễ chuyến bay của hãng hàng không

Trong đó:
P: là xác suất biến mục tiêu y = 1, với 0 <= P <= 1
x: biến độc lập, đầu vào của mô hình
β: các tham số của mô hình

 Dạng đa biến

d) Maximum Likelihood Estimation


Bởi vì hồi quy logistic hoạt động về một biến phân loại, phương pháp của bình phương
nhỏ nhất (ordinary least squares – OLS) là không thể sử dụng (nó giả định một biến phụ thuộc
được phân phối chuẩn). Do vậy, một phương pháp ước lược chung hơn được sử dụng để phát
hiện giá trị phù hợp tốt của các tham số. Điều này được gọi là “ước lượng hợp lí cực đại”
(Maximum likelihood estimation - MLE).
MLE là phương pháp dự đoán tham số của một mô hình thống kê dựa trên những “quan
sát” có sẵn, bằng cách tìm bộ tham số sao cho có thể tối đa hoá khả năng mà mô hình với bộ
tham số đó sinh ra các “quan sát” có sẵn.
Với một mô hình được mô tả bởi bộ tham số , các quan sát (hay điểm dữ liệu) là x1,x2,..xN.
Khi đó chúng ta cần tìm:
𝜃 = 𝑎𝑟𝑔𝑚𝑎𝑥 { 𝑃(𝑥1 , 𝑥2 , . . 𝑥𝑁 | 𝜃 ) }(1)
Trong đó: P(x1,x2,..xN | ) là xác suất để các sự kiện x1,x2,..xN xảy ra đồng thời với giá trị
tham số , được gọi là likelihood.
Thông thường, người ta thường giả định các quan sát này là độc lập với nhau và đồng thời
quy đổi bài toán về dạng Log để dễ tính toán. Khi đó biểu thức (1) được biến đổi như sau:
𝜃 = 𝑎𝑟𝑔𝑚𝑎𝑥 { 𝛴 𝑙𝑜𝑔 (𝑃(𝑥𝑁 | 𝜃) }

e) Các giả thiết


Các giả thiết cơ bản cần được đáp ứng khi sử dụng hồi quy logistic bao gồm:
● Loại biến mục tiêu: Biến mục tiêu của mô hình hồi quy Logistic phải là biến nhị
phân, hoặc đa thức hoặc thứ bậc.
● Sự tuyến tính giữa các biến độc lập và log(odds): Mô hình giả định mối quan hệ
giữa giá trị log của kết quả và các biến độc lập là tuyến tính với nhau.
● Không bị outlier chi phối mạnh mẽ

23
Sử dụng PySpark trong Big Data – Dự đoán khả năng trễ chuyến bay của hãng hàng không

● Không bị hiện tượng Đa cộng tuyến: Các biến độc lập không tương quan cao với
nhau.
Tính độc lập của các quan sát: Tức là sự xuất hiện của quan sát này không liên quan đến
sự xuất hiện của quan sát kia.

3.3.2. Mô Hình Cây Quyết Định (Decision Tree)

a) Giới thiệu
Cây quyết định (Decision Tree) là một cây phân cấp có cấu trúc được dùng để phân lớp
các đối tượng dựa vào dãy các luật. Các thuộc tính của đối tượng có thể thuộc các kiểu dữ liệu
khác nhau như Nhị phân (Binary) , Định danh (Nominal), Thứ tự (Ordinal), Số lượng
(Quantitative) trong khi đó thuộc tính phân lớp phải có kiểu dữ liệu là Binary hoặc Ordinal.
Tóm lại, cho dữ liệu về các đối tượng gồm các thuộc tính cùng với lớp (classes) của nó,
cây quyết định sẽ sinh ra các luật để dự đoán lớp của các dữ liệu chưa biết.
b) Chuyển đổi từ dạng bảng sang dạng cây

Hình 17:

Thành phần của Cây quyết định:


● Root node: Là một node đầu tiên, trên cùng của cây
● Leaf node: Là các node cuối cùng của cây
● Các node còn lại gọi là Internal node
c) Cách thức xây dựng Cây quyết định
Để xây dựng một cây quyết định có nhiều hướng tiếp cận. Phổ biến nhất là sử dụng phương
pháp Gini impurity (dùng trong thuật toán CART - Classification and Regression Trees) và
phương pháp Entropy (dùng trong thuật toán ID3, C4.5 và C5.0)
d) Ưu - Nhược điểm
So với các công cụ hỗ trợ quyết định khác, Decision Tree có những ưu điểm sau:

24
Sử dụng PySpark trong Big Data – Dự đoán khả năng trễ chuyến bay của hãng hàng không

● Mô hình trực quan, dễ hiểu và dễ lý giải.


● Giúp người phân tích nhìn thấy được các trường hợp tốt nhất và xấu nhất
● Có thể được tích hợp cùng với các kỹ thuật khác.
Tuy nhiên, Decision Tree cũng có một số yếu điểm nhất định:
● Nó không ổn định - Một sự thay đổi trong dữ liệu có thể khiến cấu trúc của cây thay
đổi.
● Vì mô hình khá đơn giản nên khi ứng dụng vào thực tế khó mang lại độ chính xác
cao. Với cùng một bộ dữ liệu, có nhiều phương pháp khác cho kết quả tốt hơn, ví
dụ như random forest.

3.3.3. Mô Hình Gradient Boosted Trees


Ensemble Learning (Học Kết Hợp) là quá trình mà nhiều mô hình được tạo ra và kết hợp
với nhau để cùng giải quyết một vấn đề cụ thể, thay vì chỉ sử dụng một mô hình.
Mục đích của việc kết hợp các mô hình để cùng giải quyết một bài toán là để nâng cao khả
năng dự đoán của mô hình, từ đó kết quả bài toán sẽ chính xác hơn.
Ensemble Learning có ba nhóm chính:
● Bagging
● Stacking
● Boosting: Xây dựng một lượng lớn các model (thường là cùng loại). Mỗi model sau
sẽ học cách sửa những errors của model trước, để tạo thành một chuỗi các model
mà model sau sẽ tốt hơn model trước. Model cuối cùng trong chuỗi model này là
kết quả cuối cùng mà chúng ta sẽ sử dụng.
Mô hình Gradient Boosted Trees - GBT là mô hình học máy kết hợp dạng cây vì nó bao
gồm một chuỗi nhiều cây quyết định.
GBT là thuật toán ML thường được sử dụng trong những năm gần đây, có thể được sử
dụng với cả kiểu bài toán hồi quy và phân loại.
Quy trình cơ bản của một thuật toán GBT cho bài toán phân loại được diễn ra như sau:
1. Từ dataset ban đầu, ta tính log(odds) của biến mục tiêu, và tạm xem đó như là giá
trị dự đoán cho tất cả mọi các quan sát.
2. Tiếp theo, xây dựng một cây quyết định dựa trên phần sai số (Residuals) giữa giá
trị quan sát thực tế và giá trị dự đoán ở bước 1.
3. Tính giá trị đầu ra mới cho từng leaf và nhân những giá trị này với chỉ số Learning
Rate (thường bằng 0.1)
4. Tiếp theo, xây dựng cây quyết định thứ hai dựa trên phần sai số (Residuals) giữa
giá trị quan sát thực tế và giá trị đầu ra mới của từng leaf tính được ở bước 3.
5. Tính giá trị đầu ra mới cho từng leaf của cây quyết định thứ hai và nhân những giá
trị này với chỉ số Learning Rate.
6. ...

25
Sử dụng PySpark trong Big Data – Dự đoán khả năng trễ chuyến bay của hãng hàng không

Quá trình này diễn ra cho đến đạt đến số lượng cây nhất định mà người dùng yêu cầu, hoặc
khi giá trị Residuals rất nhỏ.

4. Thực nghiệm và thảo luận


Nhóm đã sử dụng Databrick phiên bản miễn phí là Community Edition. Sau đó, nhóm đã
tạo một cluster để phân tích dữ liệu trên cluster này. Mỗi cluster trên phiên bản này cũng chỉ
có một node. Tuy nhiên, về phía người dùng thì không ảnh hưởng gì vì về phía vận hành,
databrick đã đảm nhận hết và xử lý ở phía sau.

Hình 18:

Tiếp theo, nhóm đã import dữ liệu vào hệ thống quản lý dữ liệu của databrick là DBFS (Hệ
thống Tệp Databricks cho phép bạn lưu trữ dữ liệu để truy vấn bên trong Databricks),
databricks sẽ chuyển dữ liệu sang Notebook Jupiter, tại đây chúng ta sẽ xử lý phân tích, khám
phá dữ liệu bằng ngôn ngữ Python, Scala, SQL và R, ở đây nhóm đã sử dụng pySpark.
Databricks đã tích hợp sẵn Apache Spark và tạo sẵn connection SparkContext kết nối tới
cluster. Từ đây nhóm đã load dữ liệu vào một spark dataframe, tuy nhiên đây chỉ là dữ liệu lưu
trữ ở local.

Hình 19:

26
Sử dụng PySpark trong Big Data – Dự đoán khả năng trễ chuyến bay của hãng hàng không

Để đưa dữ liệu từ local lên cluster nhóm đã chuyển nó dưới dạng một temporary table
thông qua lệnh .createTempView(). Bảng này được tạo ra là tạm thời và chỉ có thể được truy
cập từ session được sử dụng để tạo ra spark DataFrame. Nhóm cũng đã thử nghiệm một vài
lệnh biến đổi dữ liệu của spark.sql().
Mục tiêu bài toán: dự đoán hành khách có khả năng trễ chuyến bay.
Thư viện pyspark cho phép xây dựng các end-to-end model mà dữ liệu truyền vào là các
raw data và kết quả trả ra là nhãn, xác suất hoặc giá trị được dự báo của model. Các end-to-
end model này được đi qua một pipeline của pyspark.ml bao gồm 2 class cơ bản là Transformer
cho phép biến đổi dữ liệu và Estimator ước lượng mô hình dự báo.
Nhóm đã xây dựng 1 pipeline cho model dự báo khả năng trễ chuyến bay dựa trên dữ liệu
đầu vào đã load vào DBFS. Do các mô hình chỉ nhận đầu vào là các biến numeric nên chúng
tôi đã xử lý dữ liệu từ biến string, boolean sang biến numeric.

Hình 20:

Do spark model sẽ chỉ chấp nhận đầu vào là một vector có một phần tử duy nhất nên nhóm
đã thực hiện các phép biến đổi dữ liệu như sau:
● Biến đổi các biến String DESTINATION_AIRPORT, AIRLINE thành
StringIndexer và OneHotEncoder.
● Hai biến đầu ra DESTINATION_FACT và AIRLINE_FACT sẽ được đưa vào
VectorAssembler. Các objects: dest_indexer, dest_onehot, airline_indexer,
airline_onehot sẽ được truyền vào pipeline theo thứ tự để thể hiện quá trình
transform dữ liệu tuần tự từ trái qua phải.

27
Sử dụng PySpark trong Big Data – Dự đoán khả năng trễ chuyến bay của hãng hàng không

Hình 21:

● Bước cuối cùng của pipeline là kết hợp toàn bộ các columns chứa các features thành
một column duy nhất. Class VectorAssembler của pyspark.ml.feature sẽ tạo ra
vector tổng hợp đại diện cho toàn bộ các chiều của quan sát đầu vào.

Hình 22:

Nhóm đã tổng hợp các biến trong inputCols thành một vector dự báo ở outputCol được lưu
dưới tên features. Nhãn của model luôn mặc định là biến label đã khởi tạo từ đầu.
Tiếp theo nhóm khởi tạo pipeline biến đổi dữ liệu cho model thông qua class Pipeline của
pyspark.ml. Các transformer biến đổi dữ liệu sẽ được sắp xếp trong 1 list và truyền vào tham
số stages như bên dưới.
28
Sử dụng PySpark trong Big Data – Dự đoán khả năng trễ chuyến bay của hãng hàng không

Hình 23:

 Huấn luyện và đánh giá mô hình:


Sau khi transform dữ liệu, chúng ta thu được vector tổng hợp (Vector Assemble) và nhãn
label ở đầu ra. Tiếp theo tại bước này sẽ thực hiện phân chia tập dữ liệu train/test theo tỷ lệ
70%/30%. Trong đó model được xây dựng trên tập Train và được đánh giá trên tập Test.

Hình 24:

Tiếp theo, nhóm tiến hành huấn luyện trên 3 mô hình là: LogisticRegression, Gradient-
boosted tree classifier, DecisionTreeClassifier. Để đánh giá mô hình, nhóm đã sử dụng các
metric như ROC, Accuracy, F1, precision hoặc recall của thư viện sklearn.metrics và sử dụng
class BinaryClassificationEvaluator trong pyspark.ml.evaluation module để tính toán các
metrics đánh giá model.

 Phân tích kết quả:


Trong phần này, nhóm trình bày kết quả đạt được với ba mô hình đã đề cập, dưới đây là
bảng mô tả độ chính xác của 3 mô hình trên tập dữ liệu chuyến bay.

Mô hình F1-Score Recall Precision Test


LogisticRegression 0.7055 0.9584 0.5582 0.6057

Gradient-boosted 0.6488 0.6411 0.6566 0.6317

DecisionTreeClassifier 0.6488 0.6411 0.6566 0.5444

29
Sử dụng PySpark trong Big Data – Dự đoán khả năng trễ chuyến bay của hãng hàng không

Chúng ta có thể nhận thấy không có sự khác biệt quá lớn về độ chính xác trong việc đánh
giá các mô hình đối với tập dữ liệu này. Mô hình Gradient-boosted cho kết quả tốt nhất trong
ba mô hình. Đây cũng chính là một trong những mô hình được xem là hoạt động chính xác
nhất trong các thuật toán machine learning hiện nay.

5. Kết luận
Từ việc chuẩn bị dữ liệu đến việc xử lý dữ liệu big data bằng pyspark trong cluster
databricks, chúng ta có thể nhận thấy việc xử lý dữ liệu lớn trong databricks thật dễ dàng.
Databricks hợp nhất hệ sinh thái dữ liệu trên một nền tảng chung, kết hợp với các thuật toán
AI để giúp chúng ta dễ dàng đạt được các mục tiêu dữ liệu của chúng ta.
Với việc giải quyết bài toán dự đoán khách hàng trễ chuyến bay trong notebook của
databricks, việc viết mã, phân tích dữ liệu và áp dụng các thuật toán machine learning thật dễ
dàng. Các mô hình nhóm sử dụng mang lại kết quả khá tốt và trong tương lai nhóm sẽ tiến
hành thử nghiệm nhiều bài toán hơn nữa trên databricks.
Tuy nhiên, do chỉ dùng phiên bản miễn phí của databricks nên nhóm cũng có một số bất
lợi về mặt tổ chức dữ liệu để tính toán. Nhóm phải chia nhỏ file để upload vào databricks và
nhóm cũng chưa kết hợp được nhiều nguồn dữ liệu để xử lý.

30
Sử dụng PySpark trong Big Data – Dự đoán khả năng trễ chuyến bay của hãng hàng không

Tài liệu tham khảo


[1] Everett B. Peterson, Kevin Neels, Nathan Barczi, and Thea Graham. (2013). The Economic
Cost of Airline Flight Delay
[2] Tatsuya Kotegawa, Daniel DeLaurentis, Kimberly Noonan and Joseph Post. (2011).
Impact of Commercial Airline Network Evolution on the U.S. Air Transportation System
[3] Java Tpoint. (n.d.). Linear Regression vs Logistic Regression. Truy cập tại
https://www.javatpoint.com/linear-regression-vs-logistic-regression-in-machine-learning
[4] Gradient Boosting. (n.d.). Tất tần tật về thuật toán mạnh mẽ nhất trong Machine Learning.
Truy cập tại https://viblo.asia/p/gradient-boosting-tat-tan-tat-ve-thuat-toan-manh-me-nhat-
trong-machine-learning-YWOZrN7vZQ0
[5] Viblo. (n.d.). Sơ lược về Maximum Likelihood Estimation. Truy cập tại
https://viblo.asia/p/so-luoc-ve-maximum-likelihood-estimation-1Je5EvrYKnL
[6] Nghiên cứu giáo dục. (n.d.). Hồi Quy Logistic Nhị Thức. Truy cập tại
https://nghiencuugiaoduc.com.vn/hoi-quy-logistic-nhi-thuc-binomial-logistic-regression/
[7] Trí tuệ nhân tạo. (n.d.). Cây Quyết Định (Decision Tree). Truy cập tại
https://trituenhantao.io/kien-thuc/decision-tree/
[8] Big Data Uni. (n.d.). Tổng quan về Logistic Regression. Truy cập tại
https://bigdatauni.com/tin-tuc/tong-quan-ve-logistic-regression-hoi-quy-logistic-phan-1.html
[9] Machine Learning Mastery. (n.d.). A Gentle Introduction to Logistic Regression With
Maximum Likelihood Estimation. Truy cập tại https://machinelearningmastery.com/logistic-
regression-with-maximum-likelihood-estimation/
[10] Databrick. (n.d.). Apache Spark™ Tutorial: Getting Started with Apache Spark on
Databricks. Truy cập tại https://databricks.com/spark/getting-started-with-apache-
spark/quick-start
[11] Analytics India Magazine. (n.d.). Beginner’s Guide To Machine Learning With Apache
Spark. Truy cập tại https://analyticsindiamag.com/beginners-guide-to-machine-learning-with-
apache-spark/

31

You might also like