Bối cảnh và vấn đề nghiên cứu

Trong bối cảnh kinh tế hiện đại, du lịch phát triển thành ngành kinh tế mũi nhọn và mang lại nguồn lợi nhuận lớn cho các địa phương. Nhu cầu khám phá những vùng đất mới kéo theo sự gia nhập mạnh mẽ của các doanh nghiệp du lịch, dẫn đến mức độ cạnh tranh cao trên thị trường lữ hành. Nhóm tác giả Phạm Thị Bích Ngân và Trần Mai Ngọc Thiệu (ngành Hệ thống Thông tin, Trường Đại học Công nghệ Thông tin – Đại học Quốc gia TP.HCM) chỉ ra rằng các công ty du lịch bắt buộc phải áp dụng các chiến lược bán tour trực tuyến thông qua hệ thống website để tiếp cận khách hàng với chi phí thấp.

Thực tế quản lý tại nhiều đơn vị vẫn dựa trên các công cụ văn phòng thủ công như Microsoft Excel hoặc Word. Phương thức này đòi hỏi nhiều nhân lực, tiêu tốn thời gian và công sức, đồng thời hiệu quả và độ chính xác không cao. Khối lượng dữ liệu lưu trữ đồ sộ dễ dẫn đến thất lạc, tốn kém chi phí bảo quản và hạn chế năng lực quảng bá thương hiệu. Do đó, việc ứng dụng công nghệ thông tin để tin học hóa quy trình quản lý và hỗ trợ người dùng tìm kiếm thông tin, đặt tour trực tuyến trở thành nhu cầu cấp thiết.

Khóa luận xác định ba mục tiêu nghiên cứu cụ thể:

  1. Tìm hiểu nhu cầu người dùng dựa trên các website sẵn có và các tài liệu liên quan đến du lịch.
  2. Phân tích yêu cầu, xác định các chức năng cần có cho hệ thống và tiến hành thiết kế cơ sở dữ liệu cho đề tài.
  3. Xây dựng chức năng gợi ý địa điểm và tour du lịch cho website bằng cách áp dụng thuật toán k láng giềng gần nhất.

Đối tượng và phạm vi nghiên cứu được xác định rõ:

  • Đối tượng nghiên cứu: Khách du lịch, cán bộ quản lý và nhân viên của công ty du lịch; các thực thể nghiệp vụ gồm địa điểm, tour, khách sạn, đặt tour, đánh giá, bình luận; các thuật toán gợi ý trong khai thác dữ liệu.
  • Phạm vi nghiên cứu: Hệ thống website du lịch mang tên "Travel For You", tập trung vào thông tin địa điểm, tour, khách sạn, quản lý tương tác (đánh giá, bình luận) và module gợi ý điểm đến. Hệ thống chưa tích hợp thanh toán qua thẻ ngân hàng, chưa cung cấp dịch vụ ăn uống và dịch vụ thuê xe.
  • Phạm vi công nghệ: Ngôn ngữ JavaScript, PHP, HTML5, CSS; framework ReactJS; thư viện giao diện Ant Design, Bootstrap; hệ quản trị cơ sở dữ liệu MySQL.

Cơ sở lý thuyết và phương pháp

Khóa luận kế thừa các cơ sở lý thuyết về hệ thống gợi ý (Recommender Systems – RS) từ các nghiên cứu của tác giả Nguyễn Thái Nghe (Hệ thống gợi ý: Kỹ thuật và ứng dụng, Một tiếp cận trong xây dựng hệ thống gợi ý theo ngữ cảnh). Hệ thống gợi ý được định nghĩa là dạng hệ thống lọc thông tin nhằm dự đoán sở thích hoặc mức xếp hạng của người dùng đối với các mục tin chưa từng tiếp cận trong quá khứ, dựa trên ba thành phần cốt lõi: người dùng (user), mục tin (item) và phản hồi của người dùng (feedback).

Tác giả phân tích hai nhóm giải thuật gợi ý chính:

  • Lọc trên nội dung (Content-based Filtering): Đề xuất mục tin dựa trên hồ sơ người dùng hoặc đặc tính/thuộc tính của các mục tin tương tự mục tin người dùng từng chọn trong quá khứ.
  • Lọc cộng tác (Collaborative Filtering): Đề xuất mục tin dựa trên độ tương tự giữa người dùng hoặc mục tin. Kỹ thuật dựa trên bộ nhớ (Neighborhood-based) bao gồm lọc cộng tác dựa trên người dùng (User_kNN) và lọc cộng tác dựa trên mục tin (Item_kNN).

Đề tài áp dụng kỹ thuật lọc cộng tác theo mô hình k láng giềng dựa trên người dùng (User_kNN). Độ tương tự giữa hai người dùng $u$ và $u'$ được đo lường bằng hàm Cosine:

$$\text{sim}(u, u') = \frac{\sum_{i \in I_{uu'}} r_{u,i} \cdot r_{u',i}}{\sqrt{\sum_{i \in I_{uu'}} r_{u,i}^2} \cdot \sqrt{\sum_{i \in I_{uu'}} r_{u',i}^2}}$$

Trong đó $r_{u,i}$ và $r_{u',i}$ lần lượt là đánh giá của người dùng $u$ và $u'$ trên mục tin $i$; $I_{uu'}$ là tập các mục tin được đánh giá bởi cả hai người dùng. Điểm đánh giá ước lượng của người dùng $u$ đối với mục tin $i$ được tính theo công thức:

$$\hat{r}{u,i} = \bar{r}u + \frac{\sum{u' \in K_u} \text{sim}(u, u') \cdot (r{u',i} - \bar{r}{u'})}{\sum{u' \in K_u} |\text{sim}(u, u')|}$$

Với $K_u$ là tập $k$ người dùng láng giềng có độ tương tự cao nhất với $u$; $\bar{r}u$ và $\bar{r}{u'}$ là giá trị đánh giá trung bình trên tất cả các mục tin của người dùng tương ứng.

Phương pháp nghiên cứu bao gồm:

  • Khảo sát và phân tích thực tế ba hệ thống website du lịch: iVIVU, Du Lịch Việt (dulichviet.vn) và Travel.vn (Vietravel).
  • Thu thập dữ liệu địa điểm và khách sạn từ website Booking.
  • Phương pháp phân tích và thiết kế hệ thống hướng đối tượng qua ngôn ngữ mô hình hóa thống nhất (UML).
  • Phương pháp đánh giá thực nghiệm mô hình gợi ý thông qua độ đo sai số toàn phương trung bình RMSE (Root Mean Squared Error).

Thiết kế và triển khai

Hệ thống "Travel For You" được thiết kế theo mô hình kiến trúc phân tầng web động, phân tách giữa giao diện phía máy khách và dịch vụ xử lý phía máy chủ:

  • Client-Side: Sử dụng thư viện ReactJS, tận dụng cấu trúc Component để chia nhỏ giao diện, áp dụng cú pháp JSX, cơ chế Props và State để truyền dữ liệu và cập nhật giao diện trong thời gian thực. Giao diện được định hình bằng thư viện Ant Design và Bootstrap.
  • Server-Side: Sử dụng ngôn ngữ PHP xây dựng các API nhận yêu cầu từ client, xử lý logic nghiệp vụ và truy vấn cơ sở dữ liệu.
  • Cơ sở dữ liệu: Khóa luận khảo sát và so sánh ba hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) trước khi lựa chọn công nghệ lưu trữ.
Tiêu chí SQL Server MySQL Oracle
Khả năng tương thích Chủ yếu sử dụng cho các dự án chạy trên nền tảng Windows Hoạt động trên cả nền tảng Windows, Linux và nhiều nền tảng khác Tương thích đa nền tảng tương tự MySQL
Cơ chế lưu trữ Sử dụng công cụ lưu trữ phi giao dịch do Microsoft phát triển Sử dụng các công cụ lưu trữ khác nhau cho từng bảng dựa trên tốc độ, tính năng và độ tin cậy Cơ sở dữ liệu được chia sẻ giữa tất cả các lược đồ và người dùng
Bảo mật Đạt tiêu chuẩn EC2 và trang bị các tính năng bảo mật tiên tiến của Microsoft Đạt tiêu chuẩn EC2 Áp dụng giải pháp "Defense in Depth" (mã hóa, che giấu dữ liệu, theo dõi truy cập)
Chi phí bản quyền Cần mua giấy phép khi vận hành cơ sở dữ liệu Sử dụng giấy phép công cộng chung (mã nguồn mở, miễn phí) Cần mua giấy phép thương mại

Nhóm tác giả quyết định chọn MySQL nhờ ưu thế mã nguồn mở, miễn phí và khả năng hoạt động ổn định trên môi trường internet. Cơ sở dữ liệu của hệ thống được chuẩn hóa thành 20 bảng: Nhân viên, Khách du lịch, Tài khoản, Miền, Địa điểm du lịch, Địa điểm tour, Tour, Tour ngày khởi hành, Tour lịch trình, Đặt vé tour, Đánh giá địa điểm, Đánh giá tour, Bình luận, Thông báo, Liên hệ, Khách sạn, Khuyến mãi, Hoạt động nhân viên, Phòng khách sạn, Đặt phòng.

Quy trình triển khai thuật toán k láng giềng gần nhất cho bài toán gợi ý địa điểm và tour:

  1. Xây dựng ma trận đánh giá ban đầu giữa khách du lịch và địa điểm/tour ($User \times Item$).
  2. Tính độ tương tự Cosine giữa khách du lịch mục tiêu với toàn bộ người dùng khác.
  3. Sắp xếp danh sách độ tương tự giảm dần và chọn ra $k$ khách du lịch có độ tương đồng cao nhất.
  4. Dự đoán điểm đánh giá của khách du lịch mục tiêu lên các địa điểm/tour chưa được đánh giá.
  5. Sắp xếp kết quả dự đoán và trích xuất danh sách $M$ mục tin có điểm cao nhất để hiển thị khuyến nghị.
  6. Đánh giá sai số thuật toán: Tách dữ liệu thành hai phần huấn luyện (train) và kiểm thử (test) để tính toán độ đo RMSE, từ đó xác định giá trị $k$ láng giềng tối ưu.

Quá trình kiểm thử tập trung vào kiểm tra chức năng (Functional Testing) của các ca sử dụng chính, bao gồm kiểm tra tính hợp lệ của việc đặt tour, kiểm tra ràng buộc hủy tour (chỉ chấp nhận hủy trước ngày khởi hành tối thiểu 3 ngày) và xác nhận trạng thái thanh toán.

Nội dung chính theo từng chương

Chương 1. Tổng quan đề tài

Chương 1 trình bày bối cảnh chung của ngành du lịch trong nền kinh tế và đặt vấn đề về sự cần thiết của việc số hóa nghiệp vụ du lịch lữ hành. Tác giả tiến hành khảo sát ba website du lịch điển hình: iVIVU, Du Lịch Việt và Travel.vn; qua đó rút ra nhận xét về giao diện thân thiện, khả năng tương thích đa thiết bị và sự đa dạng của các dịch vụ bổ trợ. Từ kết quả khảo sát, chương xác lập mục tiêu nghiên cứu, nêu rõ ý nghĩa thực tiễn đối với doanh nghiệp và khách hàng, xác định ý nghĩa khoa học của việc tích hợp thuật toán gợi ý, đồng thời giới hạn cụ thể đối tượng, phạm vi và phương pháp thực hiện đề tài.

Chương 2. Cơ sở lý thuyết

Chương 2 tập trung trình bày nền tảng lý thuyết về hệ thống gợi ý và công nghệ phát triển phần mềm. Tác giả phân tích ưu điểm, nhược điểm của lọc theo nội dung và lọc cộng tác; đi sâu vào hai phương pháp lọc cộng tác láng giềng (User_kNN và Item_kNN) kèm công thức tính độ tương tự Cosine và công thức ước lượng điểm đánh giá. Phần tiếp theo so sánh kỹ thuật giữa ba hệ quản trị cơ sở dữ liệu quan hệ (SQL Server, MySQL, Oracle) và lý giải căn cứ chọn MySQL. Chương kết thúc bằng việc trình bày đặc điểm, ưu điểm, khuyết điểm của ngôn ngữ lập trình PHP và thư viện giao diện ReactJS cùng bộ thành phần Ant Design.

Chương 3. Phân tích thiết kế hệ thống

Chương 3 phân tích chi tiết yêu cầu phần mềm và mô hình hóa hệ thống bằng UML. Tác giả xác định ba tác nhân chính: Quản lý (thực hiện 11 nhóm chức năng như quản lý tài khoản, nhân sự, tour, khách sạn, doanh thu), Nhân viên công ty (thực hiện 9 nhóm chức năng quản lý khách hàng, địa điểm, tour, đặt tour, hủy tour, xác nhận thanh toán) và Khách du lịch (thực hiện 9 nhóm chức năng bao gồm đăng ký, đăng nhập, tìm kiếm, đặt tour, đánh giá, bình luận và nhận gợi ý).

Chương cung cấp bảng đặc tả Use case, sơ đồ hoạt động (Activity Diagram) và sơ đồ tuần tự (Sequence Diagram) cho các nghiệp vụ: quản lý đặt tour, đặt tour du lịch, hủy tour, xác nhận thanh toán, đánh giá tour, bình luận, liên hệ đặt khách sạn, thống kê doanh thu, tìm kiếm và cập nhật thông tin khách du lịch. Phần cuối chương trình bày cấu trúc 20 bảng dữ liệu và thiết kế giao diện chi tiết cho các màn hình của người dùng và nhà quản trị.

Chương 4. Cài đặt và kiểm thử

Chương 4 mô tả quy trình hiện thực hóa giải thuật và triển khai ứng dụng. Tác giả trình bày các bước cài đặt thuật toán lọc cộng tác k láng giềng dựa trên người dùng để xây dựng danh sách gợi ý địa điểm và tour. Quy trình lựa chọn tham số $k$ được thực nghiệm thông qua việc chia tách dữ liệu thành tập train và tập test, sau đó tính toán sai số RMSE. Chương tổng hợp các công cụ lập trình được sử dụng, mô tả quá trình cài đặt hệ thống trên môi trường máy chủ và lập bảng mô tả kết quả kiểm thử chức năng cho các luồng nghiệp vụ chính.

Chương 5. Kết luận và hướng phát triển

Chương 5 tổng kết toàn bộ kết quả đạt được của khóa luận sau quá trình nghiên cứu và cài đặt. Tác giả chỉ ra các ưu điểm vận hành của website, đánh giá mức độ hoàn thành so với mục tiêu ban đầu, đồng thời thẳng thắn chỉ ra các hạn chế về mặt chức năng và công nghệ, từ đó đề ra các định hướng nghiên cứu và hoàn thiện trong tương lai.

Kết quả và đóng góp

Khóa luận đạt được các kết quả cụ thể:

  • Thiết kế và triển khai hoàn chỉnh website gợi ý điểm du lịch "Travel For You" với đầy đủ các phân hệ chức năng dành cho Quản lý, Nhân viên và Khách du lịch.
  • Cài đặt thành công module gợi ý địa điểm và tour du lịch áp dụng thuật toán lọc cộng tác k láng giềng gần nhất (User_kNN) dựa trên độ tương tự Cosine, cho phép dự đoán sở thích của người dùng từ dữ liệu đánh giá quá khứ.
  • Xây dựng quy trình thực nghiệm chọn tham số $k$ láng giềng tối ưu bằng cách phân tách tập dữ liệu kiểm thử và áp dụng độ đo sai số toàn phương trung bình RMSE.
  • Hoàn thiện mô hình cơ sở dữ liệu quan hệ gồm 20 bảng được chuẩn hóa, giải quyết bài toán lưu trữ và quản lý tập trung thông tin du lịch, khách sạn, tour và giao dịch đặt vé.

Đóng góp của khóa luận thể hiện ở hai khía cạnh:

  • Đóng góp thực tiễn: Thay thế quy trình quản lý văn phòng thủ công (Excel, Word) bằng hệ thống phần mềm web trực tuyến, giúp doanh nghiệp tiết kiệm nhân lực, chi phí quản lý, hạn chế thất lạc dữ liệu và hỗ trợ thống kê doanh thu qua danh sách hoặc biểu đồ; cung cấp công cụ tra cứu và đặt tour tiện lợi cho du khách.
  • Đóng góp khoa học: Hiện thực hóa mô hình toán học của hệ thống gợi ý lọc cộng tác vào một ứng dụng web thực tế trong lĩnh vực du lịch; cụ thể hóa quy trình tiền xử lý ma trận người dùng - mục tin và đánh giá sai số thuật toán trên dữ liệu thực nghiệm.

Hạn chế và hướng nghiên cứu tiếp

Khóa luận ghi nhận các hạn chế cụ thể tồn tại trong hệ thống:

  • Hệ thống chưa hỗ trợ thanh toán trực tuyến qua các cổng thẻ ngân hàng; nghiệp vụ xác nhận thanh toán vẫn cần nhân viên hoặc quản lý cập nhật thủ công trên hệ thống sau khi kiểm tra.
  • Các dịch vụ bổ trợ phục vụ chuyến đi như dịch vụ ăn uống và dịch vụ thuê xe chưa được tích hợp vào nền tảng.
  • Về mặt thuật toán, phương pháp lọc cộng tác kNN gặp hiện tượng dữ liệu thưa (sparsity) khi số lượng người dùng và địa điểm tăng cao nhưng số lượt đánh giá ít, làm giảm tính bao quát của khuyến nghị khi các lân cận không có cùng đánh giá trên các mục tin.

Các hướng phát triển tiếp theo được nhóm tác giả đề xuất:

  • Tích hợp cổng thanh toán trực tuyến liên kết ngân hàng nhằm tự động hóa hoàn toàn quy trình đặt tour và thanh toán vé.
  • Bổ sung và mở rộng các module dịch vụ đi kèm như đặt nhà hàng ăn uống, thuê xe du lịch nhằm cung cấp gói dịch vụ khép kín.
  • Nghiên cứu kết hợp các kỹ thuật lọc nâng cao (như lọc dựa trên mô hình – Model-based sử dụng phân rã ma trận Matrix Factorization) hoặc kết hợp lọc nội dung để khắc phục vấn đề dữ liệu thưa và cải thiện độ chính xác gợi ý.

Giá trị tham khảo

Báo cáo khóa luận là tài liệu tham khảo phù hợp cho:

  • Sinh viên chuyên ngành Hệ thống Thông tin, Công nghệ Thông tin hoặc Kỹ thuật Phần mềm đang thực hiện đồ án tốt nghiệp về xây dựng hệ thống thương mại điện tử, ứng dụng web quản lý dịch vụ và du lịch.
  • Người nghiên cứu muốn tìm hiểu quy trình áp dụng thuật toán học máy cơ bản, cụ thể là thuật toán k láng giềng (kNN) và hệ thống lọc cộng tác (Collaborative Filtering) vào ứng dụng web thực tế bằng ngôn ngữ PHP và ReactJS.

Nội dung có giá trị tham khảo cao nhất trong khóa luận bao gồm:

  • Quy trình phân tích thiết kế hệ thống theo chuẩn UML với hệ thống ca sử dụng, sơ đồ hoạt động và sơ đồ tuần tự chi tiết cho các nghiệp vụ lữ hành.
  • Cấu trúc thiết kế 20 bảng cơ sở dữ liệu quan hệ cho nghiệp vụ quản lý tour, địa điểm, lịch trình khởi hành và tương tác khách hàng.
  • Phương pháp tính toán độ tương tự Cosine và quy trình phân tách dữ liệu huấn luyện/kiểm thử để đo lường RMSE khi tinh chỉnh tham số láng giềng $k$.

Câu hỏi thường gặp

1. Khóa luận sử dụng kỹ thuật lọc cộng tác nào để xây dựng hệ thống gợi ý?
Khóa luận áp dụng kỹ thuật lọc cộng tác theo mô hình k láng giềng dựa trên người dùng (User_kNN). Kỹ thuật này đo lường độ tương tự giữa các người dùng thông qua hàm Cosine dựa trên các đánh giá trong quá khứ, chọn ra $k$ người dùng có độ tương đồng cao nhất, sau đó ước lượng điểm đánh giá của người dùng mục tiêu lên các địa điểm và tour chưa tiếp cận để đưa ra danh sách đề xuất.

2. Hệ thống website "Travel For You" được xây dựng bằng những công nghệ nào?
Hệ thống sử dụng ReactJS kết hợp Ant Design và Bootstrap để phát triển giao diện phía máy khách (Client-Side). Phía máy chủ (Server-Side) sử dụng ngôn ngữ lập trình PHP để xử lý logic và cung cấp API. Dữ liệu hệ thống được quản trị trên hệ quản trị cơ sở dữ liệu quan hệ MySQL.

3. Tại sao nhóm tác giả lựa chọn MySQL làm hệ quản trị cơ sở dữ liệu thay vì SQL Server hay Oracle?
Nhóm tác giả chọn MySQL dựa trên bốn tiêu chí so sánh: tính phổ biến và quen thuộc trong cộng đồng lập trình web, khả năng tương thích linh hoạt trên nhiều hệ điều hành (Windows, Linux, Unix), cơ chế quản lý lưu trữ đa dạng cho từng bảng, và tính chất miễn phí theo giấy phép công cộng chung, giúp tiết kiệm chi phí bản quyền so với SQL Server hay Oracle.

4. Ràng buộc nghiệp vụ đối với chức năng hủy tour của khách hàng được quy định ra sao?
Trong sơ đồ hoạt động và đặc tả Use case hủy tour, hệ thống quy định kiểm tra ràng buộc thời gian: yêu cầu hủy tour chỉ được chấp nhận nếu thời điểm hủy thực hiện trước ngày khởi hành tour tối thiểu 3 ngày. Nếu vi phạm ràng buộc này, hệ thống sẽ thông báo lỗi và không lưu lại trạng thái hủy.

5. Nhóm tác giả sử dụng phương pháp nào để xác định số lượng điểm lân cận $k$ tối ưu cho thuật toán gợi ý?
Nhóm tác giả chia bộ dữ liệu đánh giá thành hai phần: tập huấn luyện (train) và tập kiểm thử (test). Bằng cách áp dụng công thức sai số toàn phương trung bình RMSE (Root Mean Squared Error) trên các giá trị $k$ khác nhau, hệ thống xác định được giá trị $k$ mang lại chỉ số RMSE thấp nhất để đưa vào cấu hình thực tế.

Kết luận

Khóa luận của sinh viên Phạm Thị Bích Ngân và Trần Mai Ngọc Thiệu đã hoàn thành mục tiêu xây dựng website du lịch "Travel For You", giải quyết các yêu cầu quản lý nghiệp vụ lữ hành và đặt tour trực tuyến thay thế các phương thức thủ công. Điểm nhấn kỹ thuật của đề tài là việc hiện thực hóa thuật toán lọc cộng tác k láng giềng gần nhất (User_kNN) dựa trên độ tương tự Cosine và đánh giá sai số qua RMSE để cá nhân hóa gợi ý điểm đến cho du khách. Tài liệu cung cấp bản phân tích thiết kế hệ thống chi tiết theo UML và lược đồ cơ sở dữ liệu hoàn chỉnh, tạo nền tảng vững chắc cho các nghiên cứu mở rộng về thanh toán trực tuyến và tối ưu hóa giải thuật khuyến nghị trong tương lai.