Tải bản đầy đủ (.pdf) (18 trang)

CÔNG NGHỆ THÔNG TIN và TRUYỀN THÔNG báo cáo bài tập lớn môn học máy

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.22 MB, 18 trang )

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

BÁO CÁO BÀI TẬP LỚN MÔN HỌC MÁY
ĐỀ TÀI: Dự đoán tiện nghi khách sạn

Gv hướng dẫn: ThS. Ngô Văn Linh
Sinh viên thực hiện:
1. Đào Duy Hòa - 20151589
2. Vũ Đức Anh Tuấn - 20154153
3. Nguyễn Quốc Thái - 20153353

Hà nội, 11 tháng 5, 2019


MỤC LỤC
I. Mô tả bài toán .............................................................................................................. 3
II. Phân tích bài toán ........................................................................................................ 3
1. Yêu cầu bài toán ....................................................................................................... 3
2. Hướng tiếp cận ......................................................................................................... 3
2.1. Cơ sở lý thuyết ................................................................................................... 4
2.2. Phương pháp Bag-of-Word ................................................................................ 7
2.3. Phương pháp TF-IDF ......................................................................................... 7
III Thực hiện.................................................................................................................... 9
3.1. Lấy dữ liệu trên trang hotels.com........................................................................... 9
3.2. Trích chọn đặc trưng............................................................................................ 13
3.3. Áp dụng giải thuật k-NN ..................................................................................... 14
3.4. Kết quả ................................................................................................................ 14
3.4.1 Ma trận nhầm lẫn của giải thuật KNN ............................................................ 15
3.4.2 Ma trận nhầm lẫn của giải thuật Linear SVC .................................................. 15
IV. Đánh giá .................................................................................................................. 16




I. Mô tả bài toán
Trang web hotels.com là trang web tổng hợp về dịch vụ khách sạn và là
công cụ tìm kiếm để đặt chỗ ở. Trên web sẽ có các thông tin về các khách sạn cũng
như có xếp hạng về những khách sạn đó. Những dữ liệu, thông tin về các khách
sạn trên trang hotels.com đều khá đầy đủ và chính xác. Bài toán dự đoán tiện nghi
khách sạn sẽ lấy dữ liệu trên trang web hotels.com để phân tích, huấn luyện để dự
đoán mức độ tiện nghi. Các đánh giá sẽ thuộc các mức khác nhau 1-star, 1.5-star,
2-star, 2.5-star, 3-star, 3.5-star, 4-star, 4.5-star, 5-star. Để làm giảm số lượng các
nhãn cần phân loại nên các mức 1.5, 2.5, 3.5, 4.5 sẽ được đưa về mức 1, 2, 3, 4

II. Phân tích bài toán
1. Yêu cầu bài toán
* Lấy dữ liệu trên trang hotels.com về mô tả phòng ốc, các dịch vụ của
khách sạn và xếp hạng của khách sạn.
* Trích chọn đặc trưng từ tập dữ liệu lấy được.
* Tiến hành huấn luyện tập dữ liệu
* Dự đoán mức độ tiện nghi của khách sạn mới.
2. Hướng tiếp cận
Mô hình triển khai bài toán:

Thông tin khách sạn trên trang hotels.com sẽ được lấy về bằng Scrapy
framework. Dữ liệu gồm mô tả khách sạn, dịch vụ, … và xếp hạng của khách sạn
đó.


Tập dữ liệu lấy từ trên hotels.com gồm vị trí khách sạn, các mô tả phòng ốc,
các dịch vụ. Các dữ liệu này đều là dữ liệu dạng văn bản. Để trích chọn đặc trưng,
lấy những vector đặc trưng từ tập dữ liệu, nhóm em có sử dụng phương pháp BagOf-Word, TF-IDF(Term Frequency-Inverse Document Frequency). Những phương

pháp này sẽ đưa các từ, các câu, đoạn văn ở dạng văn bản về một vector mà mỗi
phần tử là một số.
Theo như mô hình triển khai bài toán, phạm vi của bài toán thuộc lớp bài
toán học có giám sát (supervised learing) trong học máy. Do đó, để dự đoán một
lớp chưa biết từ những thuộc tính đã cho dựa vào tập dữ liệu huấn luyện, nhóm em
chọn thuật toán K-NN.
2.1. Cơ sở lý thuyết
2.1.1. Tổng quan Thuật toán K-Nearest Neighbor
K-nearest neighbor là một trong những thuật toán supervised-learning đơn
giản. KNN là giải thuật phi tham số áp dụng cho hai loại bài toán là Phân
lớp(Classificaition) và Hồi quy(Regression)
K-NN là phương pháp để phân lớp các đối tượng dựa vào khoảng cách gần
nhất giữa đối tượng cần xếp lớp và tất cả các đối tượng trong Training Data.
Thuật toán K-NN được mô tả như sau:
1.

Xác định giá trị tham số K (số láng giềng gần nhất)

2.

Tính khoảng cách giữa đối tượng cần phân lớp (Query Point) với tất cả các
đối tượng trong training data (thường sử dụng khoảng các Euclidean)

3.

Sắp xếp khoảng cách theo thứ tự tăng dần và xác định K láng giềng gần
nhất với Query Point

4.
5.


Lấy tất cả các lớp của K láng giềng gần nhất đã xác định
Dựa vào phần lớn lớp của láng giềng gần nhất để xác định lớp cho Query
Point

Một cách ngắn gọn, K-NN là thuật toán đi tìm đầu ra của một điểm dữ liệu mới
bằng cách chỉ dựa trên thông tin của K điểm dữ liệu trong training set gần nó nhất


(K-lân cận), không quan tâm đến việc có một vài điểm dữ liệu trong những điểm
gần nhất này là nhiễu
Giải thuật K-NN cho bài toán phân lớp
*Mỗi ví dụ học x được biểu diễn bởi 2 thành phần:
- Mô tả của ví dụ: x = (x1, x2,... ,xn), trong đó xn ∈ R
- Nhãn lớp: c ∈ C, với C là tập các nhãn lớp được xác định trước
* Giai đoạn học
- Chỉ đơn giản là lưu lại các vector đặc trưng và các lớp nhãn của tập ví dụ học:
D
* Giai đoạn phân lớp: k là hằng số do người dùng chọn, các test point sẽ được
phân lớp dựa vào lớp nào chiếm đa số trong k điểm gần với nó nhất. Để phân lớp
cho một ví dụ z:
- Với mỗi ví dụ học x thuộc D, tính khoảng cách giữa x và z
- Xác định tập NB(z) - các láng giềng gần nhất của z
→ Gồm k ví dụ học trong D gần nhất với z tính theo một hàm khoảng cách d
- Phân z vào lớp chiếm số đông trong số các lớp của các ví dụ trong NB(z)
* Ví dụ :


Xét 1 láng giềng gần nhất→Gán z vào lớp c2
Xét 3 láng giềng gần nhất→Gán z vào lớp c1

Xét 5 láng giềng gần nhất→Gán z vào lớp c1
2.1.2. Các vấn đề:
- Hàm khoảng cách: Tùy vào từng bài toán sẽ có cách chọn hàm khoảng cách
riêng để phù hợp. Khoảng cách thông thường sử dụng cho kiểu dữ liệu liên tục là
khoảng cách Euclidean. Còn đối với kiểu dữ liệu rời rạc, như là phân loại dữ liệu
text, có thể sử dụng khoảng cách Hamming, overlap, …
- Chọn tham số k: Lựa chọn tốt nhất cho tham số k dựa vào dữ liệu đối với từng
bài toán. Nếu chọn k lớn sẽ giảm độ nhiễu của các điểm dữ liệu trong phân lớp,
nhưng phân cách giữa các lớp sẽ không rõ ràng. Ngược lại, với k nhỏ sẽ dễ bị ảnh
hưởng bởi các điểm dữ liệu nhiễu.


2.2. Phương pháp Bag-of-Word
Bag of word model (BoW) là mô hình được sử dụng trong xử lí ngôn ngữ tự
nhiên giúp chúng ta lọc và tìm kiếm các từ quan trọng trong một đoạn văn bản bất
kì, từ đó có thể đưa ra đặc trưng và giá trị của nó trong đoạn văn bản đó.
Mỗi từ được tương ứng với 1 chiều trong không gian dữ liệu, mỗi văn bản sẽ
trở thành một vector nhiều chiều, mỗi chiều có giá trị không âm. Giá trị của mỗi từ
được tính bằng tần suất xuất hiện của từ đó trong văn bản.
Xét tập n văn bản D = {d1, d2, ..., dn} và tập T = {t1, t2,
..., tn} là tập các từ riêng biệt được trích ra từ tập văn bản D. Mỗi văn bản được
biểu diễn thành một vector m chiều:
td = (tf(d, t1), tf(d, t2), ... tf(d, tm))
trong đó tf(d,ti) là tần suất xuất hiện của ti trong văn bản d.
* Các vấn đề của Bag-Of-Word:
- Với bài toán này, từ điền có nhiều hơn 10 từ rất nhiều,, như vậy vector đặc
trưng thu được sẽ rất dài. Một văn bản mô tả đều được biểu diễn bằng các vector
có số chiều rất lớn.
- Những từ hiếm đôi khi lại mang những thông tin qua trọng nhất mà chỉ loại
văn bản đó có. Đây là một nhược điểm của BoW. Có một phương pháp cải tiến

khác giúp khắc phục nhược điểm này có tên là Term Frequency-Inverse Document
Frequency (TF-IDF) dùng để xác định tầm quan trọng của một từ trong một văn
bản dựa trên toàn bộ văn bản trong cơ sở dữ liệu
2.3. Phương pháp TF-IDF
TF-IDF (Term frequency – inverse document frequency): Giúp thống kê
các từ các đoạn từ trọng đoạn văn bản (hay trong các trường của dữ liệu trong dữ
liệu của bài này).
Term frequency (TF) là tần số xuất hiện của một từ. Số lần xuất hiện của từ
đó so với số lần của từ xuất hiện nhiều nhất, giá trị trong khoảng từ [0,1]
Công thức tính:


f (t,d): Số lần xuât hiện của từ t trong đoạn d
: Số lần xuất hiện nhiều nhất của 1 từ bất kì trong văn
bản
Inverse document frequency (IDF): Tấn số nghịch của 1 từ trong tập văn
bản
Công thức tính:

|D|: Tổng số văn bản trong tập D
|d ∈ D : t ∈ d|: Số văn bản chứa từ nhất định, với điều kiện t xuất
hiện trong văn bản d (tf(t, d) khác 0)

Giá trị IF-TDF = tf(t,d) x idf(t, D)
 Những từ xuất hiện nhiều trong vản bản này ( tf(t,d) cao ) và ít trong văn
bản khác (idf(t, D) cao ) (những từ có giá trị nhất của văn bản) thì giá trị
IF-TDF sẽ cao.


III Thực hiện

3.1. Lấy dữ liệu trên trang hotels.com
3.1.1. Mô hình cơ bản của một Scrapy project gồm các phần sau:

 Scrapy engine:
Chịu tránh nhiệm điều khiển các thành phần khác và kích hoạt sự kiện khi có
một hành động cụ thể xảy ra
 Scheduler:
Nhận requests từ Scrapy engine và đẩy vào queue và gọi chúng lại khi mà
engine cần request chúng.
 Download:
Download trang web về theo requests nhận được chứa trong Scheduler.


 Spiders:
Phân tích các thành phần trong trang web được tải về từ phần Download có
thể tiếp tục gửi requests cho engine hoặc kết thúc bằng việc lấy được các items.
 Item pipeline:
Xử lí dữ liệu sau khi đã được Spiders trích xuất ra (như lưu trữ trong cơ sở
dữ liệu hay in ra file).

Luồng dữ liệu trong Scrapy (The data flow)
1. Engine mở một tên miền, chỉ định Spider xử lí tên miền này và hỏi Spider URL
sẽ dùng để lấy dữ liệu
2. Engine lấy URL đầu tiên từ Spider và đặt lịch trình cho chúng tại Scheduler
3. Engine hỏi Scheduler URL tiếp theo để lấy dữ liệu
4. Scheduler trả về URL tiếp theo và Engine sends URL này tới Download
5. Tải trang được trang về qua Download và gửi về Engine
6. Engine nhận dữ liệu tải về và đẩy vào Spider để xử lí
7. Spider xử lí và gửi tài nguyên có được vào Item Pipeline hoặc gửi yêu cầu tiếp
tới Engine

8. Tiếp tục lại bước 2 nếu Spider gửi tiếp dữ liệu

3.1.2. Các thông tin về khách sạn chúng ta lấy được trên trang hotels.com gồm
có như sau:
Thông tin cơ bản của khách sạn


Các thuộc tính của khách sạn sẽ được lấy từ các phần dưới đây của trang.
Mỗi một thuộc tính sẽ được liệt kê trong một cột trong excel từ đó sẽ được tính
điểm qua TF-IDF để trở thành một chiều trong giải thuật k-NN.



3.2. Trích chọn đặc trưng
Dữ liệu thu về được 4187 khách sạn từ các thành phố lớn trên thế giới như Hà nội,
London, New York, Paris, TP HCM, trong đó có:
-

88 khách sạn 1-star
993 khách sạn 2-star
2209 khách sạn 3-star
810 khách sạn 4-star
87 khách sạn 5-star

Các cột trong dữ liệu sẽ bao gồm:
-

Tên khách sạn
Địa chỉ
Số sao

Số phòng
Pets and Children
Tiện nghi
Các địa điểm nổi tiếng gần đó

Thuộc tính số phòng sẽ được chuẩn hóa về [0,1] bằng cách chia số phòng cho số
phòng của khách sạn có số phòng lớn nhất.
Các thuộc tính Pets and Children, Tiện nghi, các địa điểm nổi tiếng sẽ được tiền xử
lý và đưa về các vector nhiều chiều nhờ phương pháp TF-IDF và Bag of words
Tiền xử lý:
- Các từ được đưa về dạng chữ thường
- Các từ phủ định như not sẽ được nối liền với từ tiếp theo nó: ví dụ Pets not
allowed sẽ được chuyển thành pets not_allowed
- Loại bỏ các ký tự không mong muốn như * , (, ), -,...
- Các giá trị trong cột các địa điểm nổi tiếng sẽ được nối liền lại
Ví dụ: Lotte Center Hanoi => lotte_center_hanoi (các giá trị khoảng cách bị
xóa đi)


3.3. Áp dụng giải thuật k-NN
Việc chọn k cho bài toán phân lớp của k-NN cũng là một vấn đề quan trọng.
Sử dụng phương pháp Cross Validation chia tập dữ liệu thành 5 phần bằng nhau,
không giao nhau. Trong đó 4 phần data để training và 1 phần để test.
Với tập dữ liệu n = 4186 bản ghi, căn bậc 2 của n là 65, ta tiến hành tìm k mà tại
đó hàm đạt cực đại.

Nhận thấy với k = 31 thì hàm có cực đại với độ chính xác là 0.68
3.4. Kết quả
Kết quả đánh giá trên k vừa tìm được k=31



3.4.1 Ma trận nhầm lẫn của giải thuật KNN

3.4.2 Ma trận nhầm lẫn của giải thuật Linear SVC
Ngoài ra, nhóm em có cài đặt thử thêm thuật toán Linear SVC để so sánh kết quả
với thuật toán K-NN


Độ chính xác của thuật toán Linear SVC là 0.61

IV. Đánh giá
Ưu điểm:
- Chi phí thấp cho quá trình huấn luyện (chỉ việc lưu lại các ví dụ học)
- Hoạt động tốt với các bài toán phân loại gồm nhiều lớp → Không cần phải học
c bộ phân loại cho c lớp
- Về mặt lý thuyết thì k-NN có thể đạt khả năng phán đoán tối ưu khi gặp một số
điều kiện.
- Rất Linh động trong việc chọn hàm khoảng cách.
→ Có thể dùng độ tương tự (similarity): cosine


→ Có thể dùng độ đo khác, chẳng hạn Kullback-Leibler divergence, Bregman
divergence, …
Nhược điểm: Trong quá trình k-NN hoạt động, nó phải tính toán "khoảng cách" từ
dữ liệu cần xác định loại đến tất cả các dữ liệu trong tập huấn luyện (training set)
==> nếu tập huấn luyện quá lớn, điều đó sẽ làm cho thời gian chạy của chương
trình sẽ rất lâu. Ngoài ra, việc lưu toàn bộ dữ liệu trong bộ nhớ cũng ảnh hưởng tới
hiệu năng của K-NN



TÀI LIỆU THAM KHẢO

1. />2. Các thư viện sử dụng: sklearn.neighbors.KneighborsClassifier
sklearn.svm.LinearSVC,
sklearn.feature_extraction.text.CountVectorizer, tfidfvectorizer
3. />


×