You are on page 1of 22

CHƯƠNG 3: Ý TƯỞNG MINH HỌA ỨNG DỤNG MÔ HÌNH K-

NEAREST NEIGHBORS
3.1 Tệp dữ liệu, môi trường và phần cứng
Tệp dữ liệu:
Bộ dữ liệu “Airline Passenger Satisfaction” [5] được lấy trên Kaggle là
một cuộc khảo sát về sự hài lòng của hành khách đi máy bay, gồm có
129880 hàng và 24 cột. Mỗi dòng tương ứng với một khách hàng và mỗi
cột tương ứng với một đặc trưng cụ thể khác nhau như là “Giới tính”,
“Loại khách hàng”, “Độ tuổi”,...
Môi trường:
Project được chạy trên phiên bản Python 3.11.8.
File source code dưới dạng Notebook (.ipynb)
Visual Studio Code phiên bản 1.85
3.2 Đọc dữ liệu
Để đọc dữ liệu từ tệp, trước tiên chúng ta cần nhập các thư viện cần thiết
cho việc phân tích dự án như: numpy, matplotlib, pandas, seaborn,
sklearn, imblearn.
Với lệnh “ warnings.filterwarnings( “ignore”) sẽ loại bỏ tất cả các thông
báo cảnh báo, không hiển thị chúng ra console để code trong gọn gàng
hơn.

Sau khi import các thư viện cần thiết, ta tiến hành đọc file dữ liệu và xem
qua 5 hàng đầu tiên của tệp dữ liệu
Hình ảnh xem qua 5 hàng đầu tiên của tệp dữ liệu
Việc xem 5 hàng đầu tiên của dữ liệu giúp ta nhận được cái nhìn tổng
quan về tập dữ liệu.
Hiển thị thông tin tổng quan về dữ liệu
Sau khi xem tổng quan, ta tiến hành xem chi tiết thông tin của tệp dữ liệu:
3.3 Tiền xử lý dữ liệu
Ta tiến hành tính các giá trị còn thiếu

Khi này, ta phát hiện ra:


Cột tương ứng với đặc trưng Độ trễ thời gian (Arrival Delay ) có 393 giá
trị bị thiếu.
Tính toán tỉ lệ % giá trị bị thiếu
Tính toán và hiển thị tỷ lệ phần trăm của giá trị thiếu trong tập dữ liệu
giúp đánh giá mức độ thiếu sót dữ liệu trong tập dữ liệu từ đó đưa ra các
quyết định về việc xử lý dữ liệu.
Vì tỷ lệ giá trị bị thiếu thấp (0.3%) nên chúng ta có thể loại bỏ các hàng
chứa giá trị bị thiếu mà không gây ảnh hưởng đáng kể đến dữ liệu.

Hiển thị lại thông tin tổng quan về dữ liệu

Từ hình ảnh tổng quan cho thấy tập dữ liệu đã được xử lý để loại bỏ các
hàng chứa giá trị thiếu bằng cách sử dụng hàm df.dropna(inplace=True).
Như vậy sau khi đọc dữ liệu, lọc ra những dữ liệu không cần thiết ta có:
INPUT: 23 đặc trưng từ 0 -> 22 là các thuộc tính đầu vào của chúng ta
OUTPUT: Đặc trưng thứ 24 “ Satisfaction” sẽ là đầu ra cho mô hình này.
Kiểm tra dữ liệu trùng lặp
Từ kết quả cho thấy không có dữ liệu trùng lặp cần xử lý
Xử lý các đặc trưng danh mục
Phân loại các cột trong DataFrame

Ở tập dữ liệu trên chúng ta cần xử lý 2 loại giá trị là các giá trị số liệu và
giá trị phân loại vậy nên chúng ta sẽ tách dataframe thành 2 cột là cột số
liệu (numerical) và cột danh mục (categorical)
Chọn cột có dữ liệu phân loại (categorical):
Sử dụng phương thức select_dtypes(include=['object']) để chọn các cột có
dữ liệu thuộc loại 'object', tức là dữ liệu phân loại, chuyển đổi kết quả
thành danh sách các cột bằng list()
Chọn cột có dữ liệu số liệu (numerical):
Sử dụng phương thức select_dtypes(include=['float', 'int']) để chọn các
cột có dữ liệu số liệu, bao gồm cả số nguyên và số thực, chuyển đổi kết
quả thành danh sách các cột bằng list()
Đếm số lượng cột phân loại và số liệu:
Sử dụng phương thức select_dtypes(include=['object']) để chọn các cột và
sử dụng hàm len() để đếm số lượng cột.
Tiến hành phân tích Numerical columns

Xem qua mô tả các giá trị của các cột số liệu


Nguồn: Tác giả tự tổng hợp
Tạo ra một bảng thống kê tóm tắt về các đặc điểm thống kê của các cột
numericals. Bằng cách này, chúng ta có thể hiểu được phân phối, giá trị
trung bình, độ lệch chuẩn và các thông tin thống kê khác của các biến số
trong tập dữ liệu. Điều này giúp ta có cái nhìn tổng quan về tính chất của
dữ liệu số và có thể tiếp tục phân tích chi tiết hơn nếu cần thiết.
Tiến hành phân tích Categoricals
Từ kết quả phân tích dữ liệu categoricals cho thấy:
Trong tập dữ liệu này, có nhiều khách hàng là nữ hơn nam và cũng có
nhiều khách hàng quay lại hơn khách hàng mới. Đa số hồ sơ du lịch dành
cho khách đi công tác và hạng thương gia, trong khi phần lớn khách hàng
cho biết họ cảm thấy trung lập hoặc không hài lòng với trải nghiệm du
lịch của mình.
Với tỷ lệ phần trăm tần suất của hành khách trung lập hoặc không hài
lòng lên đến 56%, tập dữ liệu này được coi là mất cân bằng.
Kiểm tra các giá trị ngoại lai

Từ kết quả mô hình trên cho thấy các cột `Flight Distance`, `Departure
Delay`, `Arrival Delay`, and `Check-in Service` có giá trị ngoại lai.
Hiển thị các giá trị duy nhất của từng cột phân loại trong DataFrame.
Điều này giúp ta hiểu được phạm vi và đa dạng của dữ liệu phân loại,
cũng như kiểm tra tính chính xác của dữ liệu.

Mã hóa các biến phân loại trong DataFrame "df" bằng phương pháp one-
hot encoding. Cụ thể, các cột "Gender", "Customer Type", "Type of
Travel", và "Class" sẽ được mã hóa thành các biến giả (dummy
variables).

Chuyển đổi cột "Satisfaction" trong DataFrame "df_encoded" thành một


biến nhị phân. Cụ thể, các giá trị trong cột này sẽ được chuyển đổi thành
0 nếu hài lòng ('Satisfied') và 1 nếu không hài lòng ('Neutral' hoặc
'Dissatisfied').

Sắp xếp lại các cột trong DataFrame "df_encoded" theo thứ tự cụ thể đã
được chỉ định. Điều này có thể giúp trong việc quản lý và trực quan hóa
dữ liệu một cách dễ dàng hơn.
Hiển thị 3 hàng đầu tiên của DataFrame "df_encoded" và kiểm tra dữ liệu
Phân tích biểu đồ tròn

Tiến hành vẽ biểu đồ phân phối của "Satisfaction" trong DataFrame. Biểu
đồ này sẽ cho biết phân phối của các mức độ hài lòng trong tập dữ liệu.
Từ kết quả đưa ra cho thấy phân phối hướng tới Neutral or Dissatisfied
(56.6%). Điều này cho thấy tập dữ liệu này có độ mất cân bằng nhẹ.
Phân tích bản đồ nhiệt tương quan
Sau khi phân tích Correlation Heatmap (các tính năng đã được mã hóa),
ta nhận thấy Departure Delay và Arrival Delay có mức tương quan cao
với nhau. Mức tương quan 0.97 thể hiện một mối tương quan tích cực
mạnh, điều này có nghĩa là khi độ trễ xuất phát tăng, có xu hướng rất
mạnh mẽ cho độ trễ đến cũng tăng theo. Nói cách khác, các chuyến bay
gặp phải độ trễ xuất phát lâu hơn có khả năng đến muộn hơn so với
những chuyến bay gặp độ trễ xuất phát ít hơn.
Trong mọi trường hợp, mối tương quan mạnh mẽ này làm nổi bật sự quan
trọng của việc quản lý độ trễ xuất phát để giảm thiểu tác động đến thời
gian đến và cải thiện hiệu suất tổng thể của hãng hàng không.
Sự phân tán giữa “Departure Delay” và “Arrival Delay”
Biểu đồ thể hiện sự tương quan của các đặc trưng
Nguồn: Tác giả tự tổng hợp
Mối liên hệ giữa “Departure Delay” và “Arrival Delay” gần như là một
đường thẳng tuyến tính. Nếu chuyến bay của khách hàng của hãng hàng
không bị chậm một khoảng thời gian nhất định lúc khởi hành thì chuyến
bay đó sẽ bị chậm một khoảng thời gian tương tự lúc hạ cánh (với điều
kiện là máy bay không tăng tốc trong chuyến bay để bù lại thời gian đã
mất).
Tạo ra biểu đồ cột thể hiện số lượng cá nhân hài lòng và không hài
lòng trong mỗi nhóm tuổi và nhóm người lớn khác nhau.
Biểu đồ 1 (Theo Nhóm Tuổi): Đầu tiên, chúng ta chia dữ liệu thành các
nhóm tuổi (Child, Adolescent, Adult, Elderly) và tính toán số lượng cá
nhân hài lòng và không hài lòng trong mỗi nhóm tuổi. Biểu đồ này giúp
chúng ta nhận biết sự phân phối của sự hài lòng theo độ tuổi của hành
khách.
Biểu đồ 2 (Theo Nhóm Người Lớn (Adult)): Tiếp theo, chúng ta chia dữ
liệu thành các nhóm người lớn khác nhau (20s, 30s, 40s, 50s) và tính toán
số lượng cá nhân hài lòng và không hài lòng trong mỗi nhóm người lớn.
Biểu đồ này giúp chúng ta nhận biết mối quan hệ giữa độ tuổi và sự hài
lòng của hành khách, đặc biệt là trong nhóm người lớn.
Cả hai biểu đồ đều giúp chúng ta hiểu rõ hơn về phân phối và mối quan
hệ giữa tuổi tác và sự hài lòng của hành khách, từ đó giúp điều chỉnh các
chiến lược quản lý và cải thiện trải nghiệm của hành khách.
Tổng quan:
Tất cả các nhóm tuổi hầu hết đều trung lập hoặc không hài lòng.
Hầu hết hành khách là người lớn ở độ tuổi 20-60, chiếm ưu thế ở độ tuổi
40.
Ở hạng hành khách người lớn, hành khách càng lớn tuổi thì tổng số hành
khách trung lập hoặc không hài lòng càng giảm.
Hành khách hài lòng nhất là hành khách ở độ tuổi 40
Biểu đồ cột thể hiện số lượng cá nhân hài lòng và không hài lòng
trong từng nhóm thời gian trễ xuất phát.
Trực quan hóa số lượng khách hàng hài lòng và không hài lòng dựa trên
thời gian chờ. Biểu đồ giúp hiểu rõ hơn về mối quan hệ giữa thời gian
chờ và sự hài lòng của khách hàng từ đó có thể đưa ra những quyết định
hoặc cải thiện trong dịch vụ của doanh nghiệp để nâng cao sự hài lòng
của khách hàng.
Dựa trên bản đồ nhiệt tương quan, độ trễ khởi hành và độ trễ đến có mối
tương quan chặt chẽ với nhau nên khi độ trễ khởi hành tăng thì độ trễ đến
cũng sẽ tăng. Như có thể thấy trên biểu đồ, tổng số hành khách là như
nhau cho mỗi lần khởi hành và đến trễ.
Đa phần hãng hàng không gặp tình trạng chậm trễ dưới 15 phút.
Sự hài lòng của hành khách giảm khi thời gian trì hoãn tăng lên.
1. Hành khách có cảm xúc Neutral or Dissatisfied chiếm ưu thế trong tất
cả các danh mục.
2. Cả hai giới tính đều chủ yếu Neutral or Dissatisfied. Hệ số tương quan
chỉ số 0.01 và -0.01 cho satisfaction. Điều này cho thấy không có mối
quan hệ gần như nào giữa gender và satisfaction. Điều này có nghĩa là
giới tính không phải là một yếu tố dự đoán mạnh mẽ về sự hài lòng của
khách hàng trong tập dữ liệu này.
3. Khách hàng quay lại chiếm ưu thế trong các danh mục hài lòng nhưng
hầu hết họ đều ở trạng thái Neutral or Dissatisfied. Hệ số tương quan của
khách hàng lần đầu tiên là -0.19 với sự hài lòng và 0.19 với khách hàng
quay lại cho thấy có một mối quan hệ yếu giữa customer loyalty và
satisfaction. Điều này có nghĩa là khách hàng đã bay với hãng hàng
không trước đây có xu hướng cảm thấy hài lòng hơn với trải nghiệm của
họ so với những người đang bay với hãng hàng không lần đầu tiên.
4. Hành khách có nhu cầu công việc thường hài lòng. Hệ số tương quan
chỉ số mối quan hệ tích cực trung bình cho nhu cầu kinh doanh và mối
quan hệ tiêu cực trung bình cho nhu cầu cá nhân. Điều này có nghĩa là
khách hàng đi công việc có xu hướng cảm thấy hài lòng hơn với trải
nghiệm của họ so với những người đi du lịch cá nhân.
5. Hành khách trong hạng ghế thương gia thường hài lòng hơn so với
hạng ghế phổ thông. Từ biểu đồ đếm và heatmap tương quan cho thấy khi
hạng ghế của chuyến bay di chuyển từ phổ thông đến các hạng cao hơn,
có xu hướng hài lòng tăng lên. Nói cách khác, hành khách đi trong các
hạng cao hơn nói chung cảm thấy hài lòng hơn so với những người đi
trong hạng phổ thông.
6. Mặc dù hành khách thường hài lòng với Departure and Arrival Time
Convenience, nhưng tổng thể họ chủ yếu là Neutral or Dissatisfied. Hệ số
tương quan là -0.05, điều này có nghĩa là Departure and Arrival Time
Convenience không phải là một yếu tố dự đoán mạnh mẽ về sự hài lòng
của khách hàng trong tập dữ liệu này.
7. Hành khách chủ yếu là trung lập hoặc không hài lòng với sự thuận tiện
của việc đặt vé trực tuyến. Điều này có nghĩa là đối với hầu hết họ, việc
đặt vé trực tuyến vẫn phức tạp hoặc khó khăn. Một hệ số tương quan là
0.17 cho thấy một mối quan hệ yếu giữa sự Thuận Tiện của Online
Booking và Satisfaction, vì vậy nó không phải là một dự đoán mạnh mẽ
về sự hài lòng của khách hàng.
8. Hành khách chủ yếu là trung lập đến hài lòng với check-in service.
Một hệ số tương quan là 0.24 cho thấy một mối quan hệ tích cực yếu giữa
hai biến số. Điều này có nghĩa là khi sự hài lòng với check-in service, có
một xu hướng nhỏ cho sự hài lòng của hành khách nói chung cũng tăng.
9. Hành khách chủ yếu hài lòng với việc online boarding, nhưng những
hành khách trung lập hoặc không hài lòng với việc lên máy bay trực
tuyến cũng cảm thấy trung lập hoặc không hài lòng với dịch vụ hàng
không tổng thể. Hệ số tương quan là 0.50 cho thấy mối quan hệ tích cực
vừa phải. Điều này có nghĩa là khi sự hài lòng với quy trình đặt vé trực
tuyến tăng, có xu hướng sự hài lòng của hành khách tổng thể cũng tăng.
10. Hành khách chủ yếu là trung lập đến hài lòng với Gate Location của
hãng hàng không. Từ heatmap, không có mối quan hệ nào với sự hài lòng
tổng thể, vì vậy Gate Location không phải là một yếu tố quan trọng đối
với sự hài lòng của hành khách.
11. Hành khách hài lòng với On-board Service, Seat Comfort, Leg Room
Service, Cleanliness, Food & Drink, In-Flight Services, In-Flight
Entertainment, and Baggage Handling. Nhưng đối với hành khách không
hài lòng với các dịch vụ này cũng có khả năng không hài lòng với dịch vụ
hàng không tổng thể. Heatmap tương quan cho thấy mối quan hệ tích cực
giữa sự hài lòng và các dịch vụ này, có nghĩa là khi các dịch vụ này tăng,
sự hài lòng của hành khách cũng tăng, đặc biệt là đối với In-Flight
Entertainment.
12. In-flight Wifi Service chủ yếu bị các hành khách cảm thấy trung lập
hoặc không hài lòng. Heatmap tương quan cho thấy mối quan hệ tích cực
giữa sự hài lòng và dịch vụ Wifi trên chuyến bay. Điều này có nghĩa là
khi In-flight Wifi Service cải thiện, có xu hướng có một sự tăng tương
ứng trong sự hài lòng của hành khách với hãng hàng không.

Chuẩn bị dữ liệu huấn luyện và kiểm tra:


Dữ liệu được chia thành hai phần: tập huấn luyện và tập kiểm tra.
Tập huấn luyện (X_train, y_train) được sử dụng để huấn luyện mô hình.
Tập kiểm tra (X_test, y_test) được sử dụng để đánh giá hiệu suất của mô
hình.

Tiến hành huấn luyện mô hình phân loại trên tập dữ liệu huấn luyện và
tạo báo cáo phân loại cho mỗi mô hình dựa trên dữ liệu kiểm tra. Cuối
cùng, nó kết hợp các báo cáo này thành một bảng để so sánh hiệu suất của
các mô hình.

Cải thiện hiệu suất của mô hình phân loại KNN bằng cách sử dụng phép
chuẩn hóa dữ liệu. Đầu tiên, sử dụng phương pháp chuẩn hóa để đảm bảo
rằng các đặc trưng trong tập dữ liệu có cùng tỷ lệ và phân phối tương tự.
Sau đó, nó huấn luyện một mô hình phân loại KNN trên các đặc trưng đã
được chuẩn hóa và tạo ra một báo cáo phân loại dựa trên dữ liệu kiểm tra.
Bằng cách này, giúp cải thiện hiệu suất của mô hình KNN trên dữ liệu
mới bằng cách chuẩn hóa đầu vào trước khi áp dụng mô hình.
Kết luận
Bộ dữ liệu về mức độ hài lòng của hành khách hàng không bao gồm
129.880 hàng và 23 cột. Tập dữ liệu hơi mất cân bằng và có các ngoại lệ
ở một số tính năng. Mã hóa một lần cho các tính năng và mã hóa nhãn
cho biến mục tiêu để chuyển đổi các cột không phải số thành số. Sau quá
trình mã hóa, tập dữ liệu có 28 đặc trưng, tiến hành chia tập dữ liệu thành
80% dữ liệu huấn luyện và 20% dữ liệu kiểm tra. Vì tập dữ liệu là dữ liệu
nhiều chiều, có các giá trị ngoại lệ và biến mục tiêu là nhị phân (1: trung
lập hoặc không hài lòng, 0: hài lòng), do đó trước khi thực hiện chuẩn
hóa dữ liệu, hiệu suất KNN không thực sự tốt, Sau đó, tiến hành chia tỷ lệ
tiêu chuẩn để cải thiện hiệu suất KNN đã thấy sự tiến triển, KNN cần
chuẩn hóa dữ liệu để xử lý các ngoại lệ trước khi đạt được điểm đánh giá
tốt nhất. Đó là do hoạt động của KNN rất nhạy cảm với ngoại lệ và quy
mô của các tính năng đầu vào. Đối với ba mô hình này, tập dữ liệu hơi
mất cân bằng không ảnh hưởng quá nhiều đến hiệu suất của chúng.

You might also like