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

Tìm hiểu phương pháp tìm thuộc tính tối ưu nhằm tăng hiệu quả phân tích trong phân tích dữ liệu lớn

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 (799.7 KB, 52 trang )

ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

HOÀNG VĂN TRÌU

TÌM HIỂU PHƯƠNG PHÁP TÌM THUỘC TÍNH TỐI ƯU
NHẰM TĂNG HIỆU QUẢ PHÂN TÍCH TRONG PHÂN
TÍCH DỮ LIỆU LỚN

LUẬN VĂN THẠC SỸ - NGÀNH CÔNG NGHỆ THÔNG TIN


ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

HOÀNG VĂN TRÌU

TÌM HIỂU PHƯƠNG PHÁP TÌM THUỘC TÍNH TỐI
ƯU NHẰM TĂNG HIỆU QUẢ PHÂN TÍCH TRONG PHÂN
TÍCH DỮ LIỆU LỚN
Ngành: Công nghệ thông tin
Chuyên ngành: Kỹ thuật phần mềm
Mã Số: 60480103

LUẬN VĂN THẠC SỸ - NGÀNH CÔNG NGHỆ THÔNG TIN

NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS.TS. NGUYỄN HÀ NAM

HÀ NỘI - 2015



Lời cam đoan
Tôi xin cam đoan luận văn “ Tìm hiểu phương pháp tìm thuộc tính tối
ưu nhằm tăng hiệu quả phân tích trong phân tích dữ liệu lớn ” là công trình
nghiên cứu của riêng tôi. Các số liệu, kết quả được trình bày trong luận văn là
hoàn toàn trung thực. Tôi đã trích dẫn đầy đủ các tài liệu tham khảo, công trình
nghiên cứu liên quan. Ngoại trừ các tài liệu tham khảo này, luận văn hoàn toàn
là công việc của riêng tôi.
Luận văn được hoàn thành trong thời gian tôi là học viên tại Khoa Công
nghệ Thông tin, Trường Đại học Công nghệ, Đại học Quốc gia Hà Nội.
Hà Nội, ngày 31 tháng 08 năm 2015
Học viên

Hoàng Văn Trìu


Lời cảm ơn
Lời đầu tiên, tôi xin gửi lời cảm ơn và lòng biết ơn sâu sắc nhất tới
PGS.TS. Nguyễn Hà Nam đã tận tình hướng dẫn tôi trong suốt quá trình thực
hiện luận văn tốt nghiệp.
Tôi chân thành cảm ơn anh nghiên cứu sinh Hà Văn Sang và anh nghiên
cứu sinh Lữ Đăng Nhạc đã tận tình chỉ bảo trong quá trình thực hiện luận văn.
Tôi cảm ơn những người bạn trong nhóm nghiên cứu của PGS.TS Nguyễn
Hà Nam đã luôn bên tôi chia sẻ những kinh nghiệm trong học tập cũng như
trong cuộc sống.
Tôi chân thành cảm ơn các thầy, cô đã tạo cho tôi những điều kiện thuận
lợi để tôi học tập và nghiên cứu tại trường Đại học Công Nghệ.
Tôi xin gửi lời cảm ơn tới các bạn trong lớp cao học K19 đã ủng hộ,
khuyến khích tôi trong suốt quá trình học tập tại trường.
Tôi xin chân thành cảm ơn!


Hà Nội, ngày 31 tháng 08 năm 2015
Học viên

Hoàng Văn Trìu


Mục lục
Giới thiệu ........................................................................................................... 1
Chương 1. Giới thiệu Khai phá dữ liệu ............................................................... 3
1.1. Tổng quan Khai phá dữ liệu ..................................................................................... 3
1.2. Tổng quan trích chọn thuộc tính ............................................................................... 5
2.3. Kết luận ................................................................................................................... 7

Chương 2. Họ thuật toán k-Láng giềng gần nhất và Thuật toán Di truyền .......... 8
2.1. Họ thuật toán k-Láng giềng gần nhất ....................................................................... 8
2.1.1. Khái niệm .............................................................................................................. 8
2.1.2. Thuật toán Láng giềng gần nhất (NN) ................................................................... 8
2.1.3. Thuật toán k-Láng giềng gần nhất (kNN) ............................................................... 9
2.1.4. Thuật toán Đánh trọng số k-Láng giềng gần nhất (WkNN) ................................. 10
2.1.5. Thuật toán Hàm nhân k-Láng giềng gần nhất (Kernel k-NN) ............................... 15
2.2. Thuật toán Di truyền (GA)...................................................................................... 18
2.2.1. Giới thiệu ........................................................................................................... 18
2.2.2. Thuật toán Di truyền (GA) ................................................................................. 19
2.3 Kết luận .................................................................................................................. 24

Chương 3. Mô hình GA_Kernel k-NN và kết quả thực nghiệm ........................ 26
3.1. Giới thiệu ............................................................................................................... 26
3.2. Mô hình GA_Kernel k-NN ...................................................................................... 26
3.2.1. Kiến trúc GA_Kernel k-NN .................................................................................. 26
3.2.2. Môi trường thực nghiệm ...................................................................................... 29

3.2.3 Mô tả chương trình............................................................................................... 29
3.3. Kết quả thực nghiệm .............................................................................................. 32
3.3.1. Dữ liệu sử dụng .................................................................................................. 32
3.3.2. Kết quả chạy trên bộ dữ liệu Arcene .................................................................... 33
3.3.3. Kết quả chạy trên bộ dữ liệu DLBCL (Diffuse large B-cell lymphoma) ................ 37
3.4. Kết luận ................................................................................................................. 41

Kết luận....................................................................................................42
Tài liệu tham khảo............................................................................................ 43


Danh mục hình vẽ
Hình 1.1: Quá trình phát hiện tri thức trong cơ sở dữ liệu................................... 4
Hình 1.2 : Hướng tiếp cận Filter ......................................................................... 6
Hình 1.3 : Hướng tiếp cận Wrapper.................................................................... 6
Hình 2.1: Ví dụ về thuật toán kNN ................................................................... 10
Hình 2.2: Ví dụ về thuật toán WkNN ............................................................... 14
Hình 2.3 : Các thành phần của thuật toán GA .................................................. 20
Hình 2.4 : Các toán tử của thuật toán GA ......................................................... 24
Hình 3.1:Mô hình thuật toán GA_Kernel k-NN................................................ 28
Hình 3.2: Độ chính xác GA_RF và GA_Kernel k-NN trên dữ liệu Arcene....... 34
Hình 3.3: Thuộc tính chọn GA_RF và GA_Kernel k-NN trên dữ liệu Arcene .. 35
Hình 3.4: Độ chính xác GA_Kernel k-NN và công bố khác trên Arcene .......... 37
Hình 3.5: Độ chính xác GA_RF và GA_Kernel k-NN trên dữ liệu DLBCL ..... 38
Hình 3.6: Thuộc tính chọn GA_RF và GA_Kernel k-NN trên dữ liệu DLBCL 39
Hình 3.7: Độ chính xác GA_Kernel k-NN và công bố khác trên DLBCL ........ 41


Danh mục bảng
Bảng 2.1: Các hàm trọng số tiêu biểu ............................................................... 11

Bảng 2.2: Một số hàm nhân hay được dùng...................................................... 16
Bảng 3.1: Danh sách tên hàm cài đặt thuật toán GA_Kernel k-NN................... 32
Bảng 3.2: Tổng quan các bộ dữ liệu sử dụng .................................................... 33
Bảng 3.3: Tóm tắt độ chính xác GA_Kernel k-NN và GA_RF trên Arcene...... 34
Bảng 3.4: Số thuộc tính trích trọn GA_Kernel k-NN và GA_RF trên Arcene... 35
Bảng 3.5: Độ chính xác GA_Kernel k-NN và công bố trên Arcene .................. 36
Bảng 3.6: Tóm tắt độ chính xác GA_Kernel k-NN và GA_RF trên DLBCL .... 38
Bảng 3.7: Số thuộc tính trích chọn GA_Kernel k-NN và GA_RF trên DLBCL 39
Bảng 3.8: Độ chính xác GA_Kernel k-NN và công bố trên DLBCL ................ 40


Danh mục viết tắt

STT

Thuật ngữ

Từ viết tắt

1

Nearest Neighbors

NN

2

Genetic Algorithms

GA


3

Genetic Algorithms_Kernel k-Nearest Neighbors

GA_Kernel k-NN

4

Genetic Alorithms_Random Forest

GA_RF

5

Weighted k-Nearest Neighbors

WkNN

6

k-Nearest Neighbors

kNN

7

Kernel k-Nearest Neighbor

Kernel k-NN


8

Random Forest

RF

9

Proximity Measure - Support Vector Machine

Rfprox-SVM


1

Giới thiệu
Khoa học kỹ thuật phát triển, đi cùng với nó là sự phát triển không ngừng
của dữ liệu về kích thước và chủng loại. Nhiệm vụ khai phá dữ liệu nói chung
cũng như nghiên cứu các thuật toán phân lớp nói riêng trở nên ngày càng bức
thiết và đóng vai trò trung tâm trong việc giải quyết các bài toán cụ thể. Thực tế
cho thấy, chúng ta chỉ có thể tìm ra một số thuật toán phù hợp với một số loại dữ
liệu cụ thể và bị giới hạn về kích thước dữ liệu. Kết quả của thuật toán phụ thuộc
rất nhiều vào việc xử lý dữ liệu thô. Trong khai phá dữ liệu, phương pháp trích
chọn đóng vai trò quan trọng trong tiền xử lý số liệu, đặc biệt đối với ngành tin
sinh học, xử lý dữ liệu âm thanh, hình ảnh, dữ liệu mạng xã hội... Đặc điểm
chung của những lĩnh vực này là kích thước rất lớn (hàng trăm, hàng trăm nghìn
thuộc tính) nhưng chỉ một số ít thuộc tính có giá trị dùng để phân tích. Trích
chọn thuộc tính giúp tìm ra các thuộc tính có ích, loại bỏ các thuộc tính dư thừa.
Phương pháp tác động trực tiếp đến kết quả của thuật toán như tăng tốc độ xử lý,

cải thiện dữ liệu, tăng hiệu xuất khai phá.
Thuật toán k-Láng giềng gần nhất (kNN) [10] là một trong những kỹ thuật
cơ bản, đơn giản và trực giác nhất trong lĩnh vực phân tích thống kê. Bộ phân
lớp dựa trên thuật toán kNN là một bộ học lười (lazy learner), không cần thực
hiện quá trình học cho mô hình. Nó cần sử dụng tất cả các đối tượng dữ liệu
trong tập tham chiếu để ra quyết định gán nhãn lớp cho một quan sát mới. Thực
nghiệm cho thấy, thuật toán kNN đơn giản, nhưng thường cho kết quả khá tốt.
Tuy nhiên hiệu quả của thuật toán hạn chế do nền tảng xây dựng dựa trên dữ
liệu tuyến tính. Để có thể áp dụng thuật toán này vào dữ liệu phi tuyến, đã có
nhiều nghiên cứu ứng dụng các kỹ thuật khác nhau để có thể biến đổi dữ liệu
tuyến tính thành dữ liệu phi tuyến. Hướng tiếp cận trong luận văn này là sử dụng
một phép biến đổi từ không gian ban đầu sang một không gian mới sau đó áp
dụng thuật toán kNN. Việc tính toán trên không gian phi tuyến là công việc của
thuật toán Hàm nhân – k Láng giềng gần nhất (Kernel - k Nearest Neighbor)
[12]
Thuật toán Di truyền (GA) [1] là kỹ thuật tìm kiếm tối ưu ngẫu nhiên
phỏng theo quá trình thích nghi tiến hóa của các quần thể sinh vật. Tư tưởng của
thuật toán GA là mô phỏng sự phát triển tự nhiên, kế thừa và đấu tranh sinh tồn


2

của sinh vật. Thực tế chỉ có những sinh vật liên tục tiến hóa để thích nghi với
hoàn cảnh sẽ tồn tại và phát triển. GA xét đến toàn bộ các lời giải bằng cách,
trước tiên chọn tập các lời giải sau đó loại bỏ những lời giải không thích hợp và
chọn những lời giải thích hợp hơn để tiến hành lai ghép và đột biến nhằm mục
đích tạo ra nhiều lời giải mới có độ thích nghi ngày càng cao. GA giúp tìm ra lời
giải tối ưu hay tốt nhất trong điều kiện thời gian và không gian cho phép.
Trong luận văn này tôi đưa ra một cách tiếp cận mới, kết hợp thuật toán
GA và Kernel k-NN theo mô hình Wrapper. GA giúp tìm ra các tập thuộc tính

và Kernel k-NN trả về kết quả của hàm mục tiêu trong GA. Hay nói một cách
khác, GA đã chọn một tập thuộc tính được coi là tốt nhất trong quần thể các
thuộc tính, tập thuộc tính tốt được hiểu trong ngữ cảnh hiện tại là các thuộc tính
được trích chọn giúp phân lớp tốt nhất dựa trên kết quả của hàm tính khoảng
cách trong thuật toán Kernel k-NN. GA đã giúp tăng độ chính xác phân lớp nhờ
việc tối ưu dữ liệu đầu vào cho thuật toán Kernel k-NN.
Nội dung của luận văn được chia thành các chương như sau:
Chương 1: Giới thiệu Khai phá dữ liệu
Chương 2: Cơ sở lý thuyết.
Chương 3: Mô hình GA_Kernel k-NN và kết quả thực nghiệm.
Kết luận: Tóm lược kết quả đạt được của luận văn.


3

Chương 1. Giới thiệu Khai phá dữ liệu
1.1. Tổng quan Khai phá dữ liệu
Khai phá dữ liệu là một khái niệm ra đời cuối những năm 80 của thế kỷ
trước. Nó bao hàm một loạt các kỹ thuật nhằm phát hiện các thông tin có giá trị
tiềm ẩn trong dữ liệu lớn.Về bản chất, khai phá dữ liệu liên quan đến việc phân
tích các dữ liệu và sử dụng các kỹ thuật để tìm ra các mẫu hình có tính chính
quy trong tập dữ liệu. Năm 1989, Fayyad, Piatestsky-Shapiro và Smyth đã
dùng khái niệm phát hiện tri thức trong cơ sở dữ liệu (Knowledge
Discovery in Database – KDD) để chỉ toàn bộ quá trình phát hiện các tri thức
có ích từ các tập dữ liệu lớn [11]. Trong đó, khai phá dữ liệu là một bước đặc
biệt trong toàn bộ quá trình, sử dụng các giải thuật đặc biệt để chiết xuất ra các
mẫu hay các mô hình từ dữ liệu.
Ở một góc độ nào đó, khái niệm khai phá dữ liệu và khai phá tri thức
nhiều khi được coi là một. Tuy nhiên, nếu xét kỹ thì khai phá dữ liệu chỉ là
một khâu quan trọng trong khai phá tri thức. Một quá trình phát hiện tri thức

trong cơ sở dữ liệu bao gồm các giai đoạn chính sau :
(1) Làm sạch dữ liệu (Data Cleaning): Khử nhiễu và các dữ liệu mâu thuẫn.
(2) Tích hợp dữ liệu (Data Integration): Kết hợp nhiều nguồn dữ liệu khác
nhau.
(3) Lựa chọn dữ liệu (Data Selection): Chắt lọc lấy những dữ liệu liên quan
đến nhiệm vụ phân tích sau này.
(4) Biến đổi dữ liệu (Data Transformation): Biến đổi dữ liệu thu được về
dạng thích hợp cho quá trình khai phá.
(5) Khai phá dữ liệu (Data Mining): Sử dụng những phương pháp thông
minh để khai thác dữ liệu nhằm thu được các mẫu mong muốn.
(6) Đánh giá kết quả (Pattern Evaluation): Sử dụng các độ đo để đánh giá
kết quả thu được.
(7) Biểu diễn tri thức (Knowledge Presentation): Sử dụng các công cụ biểu
diễn trực quan để biểu diễn những tri thức khai phá được cho người
dùng.


4

Quá trình này có thể được lặp lại nhiều lần, một hay nhiều giai đoạn trước có
thể được lặp lại dựa trên phản hồi từ kết quả của các giai đoạn sau.

Đánh giá và
trình diễn
Tri thức

Dữ liệu khái
phá
Lựa chọn và
chuyển dạng


Làm sạch và
tích hợp

Kho dữ
liệu

Mẫu
Dữ liệu
chuyển
dạng

Dữ liệu
Hình 1.1: Quá trình phát hiện tri thức trong cơ sở dữ liệu
Một số phương pháp khai phá dữ liệu tiêu biểu:
 Phân lớp (Classification) : Khai thác một hàm đã được huấn luyện
trước để phân loại một đối tượng dữ liệu vào một trong các lớp được
định nghĩa trước.
 Hồi qui (Regression) : Khai thác một hàm đã được huấn luyện trước
để ánh xạ một đối tượng dữ liệu thành một giá trị thực là kết quả dự
báo.
 Phân cụm (Clustering) : Giải quyết vấn đề tìm kiếm, phát hiện số
lượng hữu hạn các cụm mô tả một tập hợp dữ liệu ban đầu không có
nhãn. Đó là quá trình tìm cách nhóm các đối tượng đã cho vào các
cụm, sao cho các đối tượng trong cùng một cụm tương tự nhau
(similar), và các đối tượng khác cụm thì không tương tự nhau
(dissimilar).


5


 Tổng hợp (Summarization) : Quá trình bao gồm các phương pháp để
tìm một mô tả xúc tích cho một tập (hoặc một tập con) dữ liệu.
 Mô hình hóa ràng buộc (Dependency Modeling) : Tìm một mô hình
cục bộ mô tả các ràng buộc quan trọng giữa các biến hoặc giữa các giá
trị của một đặc trưng trong một tập dữ liệu hoặc trong một phần của
tập dữ liệu
 Phát hiện biến đổi và độ lệch (Change and Deviation Detection):
Khai phá những biến đổi quan trọng nhất trong tập dữ liệu.
Trong giai đoạn tiền xử lý số liệu, việc trích chọn thuộc tính đóng vai trò quan
trọng.

1.2. Tổng quan trích chọn thuộc tính
Về cơ bản việc trích chọn thuộc tính có ích sẽ bao gồm hai công đoạn cơ
bản gồm công đoạn xây dựng dữ liệu và công đoạn trích chọn thuộc tính. Xây
dựng dữ liệu là tạo ra bộ các thuộc tính, một công việc rất quan trọng trong việc
phân tích số liệu. Yêu cầu đặt ra phải đảm bảo không để mất quá nhiều thông tin
có ích đồng thời không được quá tốn kém chi phí tài nguyên và thời gian. Công
đoạn trích chọn nhằm tìm ra thuộc tính đại diện phù hợp yêu cầu phân tích, loại
bỏ thuộc tính dư thừa, thuộc tính nhiễu, tăng hiệu suất và kết quả khai phá dữ
liệu. Có rất nhiều phương pháp và các hướng tiếp cận khác nhau, tựu chung lại
đều hướng đến mục tiêu :
 Tăng tốc độ thuật toán
 Giảm không gian lưu trữ dữ liệu
 Tăng kết quả phân lớp, đoán nhận
 Giúp biểu diễn, minh họa dữ liệu dễ dàng hơn
Để đánh giá độ tốt của một tập con đặc trưng phụ thuộc vào yêu cầu cụ thể
khi phân tích dữ liệu, mọi công việc trong toàn bộ quá trình cũng đều hướng
mục tiêu đạt được yêu cầu cụ thể trên. Về cơ bản chúng ta có thể phân loại các
phương pháp trích chọn theo hai cách tiếp cận khác nhau là Filter và Wrapper

được trình bày trong các tài liệu [3, 13]. Lược đồ thực hiện [2] được giản hóa
trong hai hình vẽ dưới đây.


6

Dữ liệu

Thuật toán
phân lớp

Trích lọc tập con của danh
sách các thuộc tính

Hình 1.2 : Hướng tiếp cận Filter
Theo mô hình Filter, các thuộc tính được chọn độc lập với thuật toán khai phá
dữ liệu. Ngược lại, mô hình Wrapper các thuộc tính được chọn phụ thuộc theo
một nghĩa nào đó với thuật toán khai phá dữ liệu

Dữ liệu
huấn
luyện

Tìm kiếm thuộc tính
Tập thuộc tính
lựa chọn

Đánh giá kết quả

Dữ liệu

huấn

Tập thuộc

Thuật toán
phấn lớp
(Kiểm chứng)

tính

Đánh giá thuộc tính
Tập các thuộc
tính lựa chọn

Tính toán các
giả thiết

Thuộc tính phân lớp

Dữ liệu
kiểm tra

Thuật toán phân
lớp (Dự đoán)

Đánh giá
kết quả

Hình 1.3 : Hướng tiếp cận Wrapper
Mô hình Filter đánh giá mỗi cá thể bằng một vài tiêu chuẩn hay độ đo

nào đó, rồi chọn ra tập con các thuộc tính được đánh giá cao nhất. Nhìn
chung, Filter coi tiến trình của trích chọn thuộc tính như tiến trình thực thi
trước, sau đó mới sử dụng thuật toán để phân lớp.
Mô hình Wrapper sử dụng một thuật toán tìm kiếm để đánh giá tập con các
thuộc tính coi như là một nhóm hơn là một cá thể riêng lẻ. Cốt lõi của mô hình
Wrapper là một thuật toán máy học cụ thể. Nó đánh giá độ tốt của những tập
con đặc trưng tùy theo độ chính xác học của tập con, điều này xác định thông
qua một tiêu chí nào đó. Những thuật toán tìm kiếm cũng sử dụng hàm đánh
giá kinh nghiệm (heuristics) để hướng dẫn việc tìm kiếm tập trung vào các
đối tượng có triển vọng.
Công việc cần thực hiện trong thuật toán trích chọn bao gồm :


7

- Phương pháp để sinh ra tập thuộc tính đặc trưng : (Có thể hiểu tương ứng
với các chiến lược tìm kiếm). Đầu ra của bộ sinh sẽ xác định thuật toán trích
chọn đặc trưng. Có hai chiến lược để sinh tập con :
 Đầy đủ (Complete) : Áp dụng chiến lược tìm kiếm vét cạn để sinh
tập con. Đối với hầu hết các hệ thông máy thực, chiến lược này
không phù hợp do đỏi hỏi tài nguyên quá lớn
 Kinh nghiệm (Heuristically) : Để giảm bớt không gian tìm kiếm, kết
quả thu được ở mức chấp nhận được, chiến lược sinh tập con đặc
trưng dựa vào kinh nghiệm nào đó, có ba kỹ thuật điển hình là lựa
chọn tiến (Forward Selection), lược bỏ lùi (Backward Elimination)
và lựa chọn hai hướng (Bi – direction Selection).
- Định nghĩa hàm đánh giá : (đưa ra các tiêu chí để có thế xác định một thuộc
tính hay nhóm thuộc tính là tốt hay không tốt). Bộ đánh giá của những mô hình
thuật toán khác nhau là khác nhau. Bộ đánh giá mô hình Filter thường là các
hàm đánh giá, trong khi mô hình Wrapper là độ học chính xác đạt được bởi quá

trình thực thi thuật toán học máy điều khiển trên hệ thống học.
 Hàm đánh giá : hàm đánh giá thường dùng như xấp xỉ chất lượng
(Approxination Quality), độ quan trọng (Feature Importance), trọng
số của thuộc tính (Feature Weight)
 Học chính xác : mô hình Wrapper, dữ liệu chia ngẫu nhiên thành hai
tập, tập huấn luyện và tập kiểm tra. Độ chính xác đạt được trong
trường hợp này là giá trị ngẫu nhiên. Để tăng cường độ ổn định mô
hình Wrapper chúng ta thường sử dụng kỹ thuật kiểm tra chéo (Cross
Validation)
- Ước lượng hàm đánh giá đó : kiểm chứng lại xem hàm đánh giá có thực sự
phù hợp và hiệu quả với bộ dữ liệu không

2.3. Kết luận
Trích chọn thuộc tính giúp tìm ra những đặc trưng tốt nhất, đồng thời loại
bỏ nhiễu, giảm bớt chiều trong dữ liệu. Hai mô hình phổ biến trong phương
pháp trích chọn thuộc tính đặc trưng là Filter và Wrapper. Mỗi mô hình đều có
những ưu điểm và nhược điểm riêng. Tùy từng yêu cầu và trường hợp cụ thể mà
ta có thể áp dụng một trong hai mô hình này.


8

Chương 2. Họ thuật toán k-Láng giềng gần nhất và Thuật
toán Di truyền
2.1. Họ thuật toán k-Láng giềng gần nhất
2.1.1. Khái niệm
Nếu không có cái ngẫu nhiên đi cùng với cái tất nhiên, khoa học thống kê
sẽ không ra đời. Một trong những nhiệm vụ cơ bản của thống kê là đi ước lượng
cái chắc chắn tương đối trong cái không chắc chắn (bất định). Để làm việc với
cái không chắc chắn này, thống kê chủ yếu dựa vào khái niệm về khoảng cách.

Từ việc tính toán khoảng cách các điểm, tính độ lệch chuẩn, phương sai của biến
ngẫu nhiên cho đến các công cụ xa hơn là các công cụ phân tích tương quan,
phương sai, phân tích các yếu tố (tạm dịch từ factor analysis), phân tích các
thành phần trọng yếu (tạm dịch từ principal component analysis), phân tích cụm
(tạm dịch từ cluster analysis)… đều dựa trên khái niệm khoảng cách.
Ngoài ra khoảng cách cũng không chỉ đơn giản là độ dài đường nối điểm
này tới điểm kia, là sự xa và gần như thông thường vẫn dùng, khoảng cách còn
có khoảng cách giàu nghèo, khoảng cách học vấn ... nhìn chung khoảng cách
còn nên được hiểu rộng hơn như là sự khác biệt (difference), đôi khi còn được
xem là lỗi (error). Sự khác biệt ấy thể hiện cũng không giống nhau tùy theo đơn
vị đo, không gian, cách thức đo, tính định lượng hay ước lượng thống kê. Theo
tôi, khoảng cách là khái niệm có thể xem là cốt lõi của nhiều chủ đề như tìm
kiếm, phân loại, nhận dạng ...

2.1.2. Thuật toán Láng giềng gần nhất (NN)
Thuật toán Láng giềng gần nhất (NN) là một trong những thuật toán đầu
tiên được dùng để tìm lời giải cho bài toán người báng hàng. Bài toán được đưa
ra đầu tiên năm 1930 và là một trong những bài toán được nghiên cứu sâu nhất
trong tối ưu hóa (tiếng anh : Travelling salesman problem). Bài toán được phát
biểu như sau : Cho trước một danh sách các thành phố và khoảng cách giữa
chúng, tìm chu trình ngắn nhất thăm mỗi thành phố đúng một lần. Trong khoa
học máy tính, bài toán người bán hàng là một vấn đề cơ bản và có rất nhiều ứng
dụng, phương pháp trực tiếp nhằm tìm ra lời giải phổ biến là kiểm tra tất cả các


9

tổ hợp. Tuy nhiên, trên thực tế phương pháp này không khả thi bởi, nếu lấy mẫu
chỉ gồm 20 thành phố thì sẽ có gần 60,8 triệu tỉ phép so sánh để tìm ra hành
trình có lợi nhất.Thuật toán NN thường cho kết quả chênh lệch trong phạm vi

20% so với đường đi tối ưu.
Các bước của thuật toán :
Bước 1 : Chọn một nút bất kỳ làm nút xuất phát và đây là nút hiện hành
Bước 2 : Đánh dấu nút hiện hành đã được đi qua
Bước 3 : Tìm một nút chưa đi qua có khoảng cách đến nút hiện hành là
ngắn nhất, đánh dấu nút này là nút hiện hành mới.
Bước 4 : Nếu chưa đi qua tất cả các nút thì quay lại bước 2
Thứ tự mà các nút được đi qua chính là kết quả của thuật toán. Điều dễ
nhận thấy, một quan sát (observation) sẽ gán nhãn lớp một đối tượng quan sát
trong tập tham chiếu có nét tương đồng (khoảng cách gần nhất) với đối tượng
đó. Độ tương tự giữa các đối tượng dữ liệu được quyết định dựa vào một hàm
đo khoảng cách.

2.1.3. Thuật toán k-Láng giềng gần nhất (kNN)
Thuật toán k-Láng giếng gần nhất (kNN) [10] là một mở rộng đầu tiên của
phương pháp trên, và thường được sử dụng rộng rãi trong thực tế. Ở đây không
chỉ tham chiếu đến một làng giềng gần nhất mà xét đến k láng giềng gần nhất
trong tập tham chiếu của đối tượng cần gán nhãn. Điều này giúp tránh trường
hợp một đối tượng quan sát kỳ dị (nhiễu) trong tập tham chiếu quyết định nhãn
lớp. Tham số k do người dùng lựa chọn. Nhãn lớp được gán cho đối tượng là lớp
chiếm đại đa số trong tập k láng giềng vừa xác định.
Mức độ cục bộ của phương pháp này phụ thuộc vào tham số k. Với k = 1,
ứng với thuật toán Láng giềng gần nhất cơ bản, cho mức độ cục bộ tối đa. Với k
>1, kéo theo một kết quả gán nhãn duy nhất cho mọi đối tượng quan sát mới,
nhãn lớp xuất hiện nhiều nhất trong tập tham chiếu sẽ luôn được chọn.
Bộ phân lớp dựa trên thuật toán k láng giếng gần nhất là một bộ học lười
(lazy learner), không cần thực hiện quá trình học cho mô hình. Nó cần sử dụng
tất cả các đối tượng dữ liệu trong tập tham chiếu để ra quyết định gán nhãn lớp
cho một quan sát mới. Để tính toán khoảng cách, chúng ta thường sử dụng một



10

trong các hàm tính khoảng
ảng cách sau : hàm Euclidean, hàm Minkowski và hàm
Mahalanobis
Ví dụ
ụ minh họa thuật toán kNN : trong một không gian quan sát k=5, cần
gán nhãn cho đối tượng
ợng x (hình tròn ?), xét các đối tượng
ợng thuộc hai lớp
lớp, minh
họa lớp dương (+) là hình tròn có dấu
d cộng và lớp âm làà hình tròn có ddấu trừ (-).

Hình 2.1: Ví d
dụ về thuật toán kNN

Trong 5 láng giếng
ếng gần nhất của đối ttượng cần phân lớp x có ba đối
đ tượng quan
sát thuộc lớp âm (-), và hai đối tượng quan sát thuộc lớp dương
ương (+). Như vậy
v x
sẽ được gán nhãn là lớp
ớp âm (-).

2.1.4. Thuật toán Đánh trọng
tr
số k-Láng giềng

ềng gần nhất (WkNN)
Thuật toán Đánh trọng
ọng số k-Láng giềng gần nhất (WkNN) [7] cải tiến thuật
toán kNN theo ý tưởng : các láng giềng
gi
ở gần đối tượng
ợng quan sát mới x phải có
vai trò quan trọng hơn
ơn so v
với
ới các láng giềng ở xa trong việc quyết định nh
nhãn lớp
của x. Trong thuật toán kNN
NN thì cả k láng giềng gần nhất của x đều
ều có vai tr
trò ảnh
hưởng như nhau, dù độ tương
ương tự
t giữa từng thành
ành viên trong chúng so với
v x có
thểể khác xa nhau. Để phản ánh độ quan trọng khác nhau của các láng giềng gần
nhất của x, các giá trịị khoảng cách từ chúng đến x cần được
ợc biến đổi thành
th
các
trọng
ọng số. Theo đó, mỗi láng giềng của x sẽ được
ợc gán cho một giá trị trọng số, giá
trị này sẽ được dùng trực

ực tiếp để quyết định nhãn
nh lớp cho x.


11

- Chiến lược đánh trọng số cho các láng giềng
Việc biến đổi từ giá trị khoảng cách sang giá trị trọng số được thực hiện
thông qua một hàm trọng số f(.). Hàm f(.) là hàm của biến khoảng cách d, nhận
đầu vào là giá trị khoảng cách d, đầu ra là giá trị trọng số w = f(d).
Hàm f(d) phải thỏa mãn các tính chất sau:
 f(d) ≥ 0 ∀

∈ R.

 f(d) đạt giá trị cực đại khi d = 0.
 f(d) là hàm giảm nghiêm ngặt với d → ±∞. Tức f(d1) ≤ f(d2) ∀
Một số hàm trọng số tiêu biểu được mô tả trong Bảng 2.1 dưới đây:
Tên hàm

Công thức tương ứng
15
(1 −
16

Biweight

( )=

Cosine


( )=

Epanechnikov

3
( ) = (1 −
4

Gauss

( )=

Inversion

( )=

Rectangular

( )=

Triangular

( )=1−| |

Triweight

( )=

4


)

(| | ≤ 1)
(| | ≤ 1)

2

1
√2

)

exp −

(| | ≤ 1)

2

1
| |
1
2

35
(1 −
32

(| | ≤ 1)
)


(| | ≤ 1)

Bảng 2.1: Các hàm trọng số tiêu biểu




12

Các hàm trọng số trong Bảng 2.1 đều có tập xác định là [0, 1], và để tránh
trường hợp giá trị trọng số của một láng giềng nào đó bằng 0 (khi d = 1), tức
láng giềng đó hoàn toàn không có vai trò gì trong việc quyết định nhãn lớp của
đối tượng quan sát x, thì giá trị của d cần được chuẩn hóa để xác định trong
khoảng [0, 1]. WkNN thực hiện điều này bằng cách sử dụng giá trị khoảng cách
của láng giềng gần nhất thứ (k+1) khi chuẩn hóa các khoảng cách của k láng
giềng đã chọn.
Ta dùng công thức sau để chuẩn hóa khoảng cách của k láng giềng gần
nhất:
,
,

Trong đó:
,

()

()
(


=

,
,

(

()
)

với

+

= 1, … ,

(2.1)

là khoảng cách từ láng giềng thứ i đến x.
)

là khoảng cách từ láng giềng thứ k+1 đến x.

> 0 là một hằng số có giá trị rất nhỏ được dùng để đảm bảo
,

()

< 1. Nếu không dùng


thì trong trường hợp một trong số k láng

giềng gần nhất của x có khoảng cách đến x bằng với láng giềng gần nhất thứ
(k+1) thì khoảng cách sau khi chuẩn hóa của nó sẽ bằng 1. Dẫn đến trọng số của
nó sẽ bằng 0 nếu dùng với một số hàm trọng số trong Bảng 2.1 ở trên.
,

Với cách chuẩn hóa như trên thì ta sẽ đảm bảo

()

[0, 1) ∀ . Và

như vậy ta có thể sử dụng được bất kỳ hàm trọng số nào trong Bảng 2.1
Sau khi xác định các độ đo tương tự cho các quan sát trong tập tham chiếu,
mỗi đối tượng quan sát mới x sẽ được phân vào lớp r có tổng các trọng số lớn
nhất:

,

Trong đó: (

)=

1,
0,

()

()


=
=

=

(2.2)


13

Có thể coi hai thuật toán kNN và NN là các trường hợp đặc biệt của thuật
toán WkNN. Ta có kết quả của thuật toán kNN nếu chọn sử dụng hàm trọng số
Rectangular. Và có kết quả của thuật toán NN nếu chọn k = 1, với mọi lựa chọn
của hàm trọng số.
Mục đích chính của phương pháp này là xây dựng được một kỹ thuật trong
đó đạt tới một cấp độ tương đối độc lập với việc lựa chọn giá trị tham số k, với
kNN thì việc chọn sai giá trị của k sẽ dẫn đến tỉ lệ phân lớp sai lớn. Số lượng các
láng giềng gần nhất hoàn toàn được ẩn đi với việc sử dụng các trọng số: nếu k có
giá trị quá lớn, nó sẽ tự động được điều chỉnh xuống một giá trị thấp hơn. Trong
trường hợp này, một số nhỏ các láng giềng có trọng số lớn sẽ lấn át các láng
giềng khác.
- Thuật toán WkNN được mô tả tổng quan ở dưới đây:
Bước 1: Đặt L = {(yi, xi), i = 1,…, nL } là tập tham chiếu chứa các đối
tượng quan sát xi với nhãn lớp tương ứng yi. Giả sử ta cần phán
đoán nhãn lớp y của một đối tượng quan sát mới x.
Bước 2: Tìm k+1 láng giềng gần nhất của x dựa vào một hàm khoảng cách
d(x, xi). Ở đây dùng hàm khoảng cách Minkowski:

,


=



(2.3)

Bước 3: Sử dụng công thức (2.1) để chuẩn hóa khoảng cách từ x đến k láng
giềng gần nhất của nó.
Bước 4: Sử dụng một trong số các hàm trọng số để biến đổi các khoảng
cách chuẩn

()

thành các giá trị trọng số:
()

=

()

Bước 5: Chọn lớp có tổng các trọng số lớn nhất để gán nhãn cho x:

(2.4)


14

=


()

()

=

(2.5)

Nhìn chung có thểể coi các ph
phương pháp WkNN và kNN là các phương
pháp bầu
ầu cử nhóm: một số bộ phân lớp tiềm năng (các láng giềng gần nhất)
được kết hợp lại và thực
ực hiện một cuộc bầu cử đa số thắng, v
và kết
ết quả này
n được
dùng để thực hiện gán nhãn
nhãn.
Ví dụ
ụ minh họa thuật toá
toán WkNN : giống như ví dụ
ụ minh họa của thuật
toán kNN, nhưng bổ
ổ xung thêm
th
tham sốố thể hiện giá trị khoảng cách từ đối
tượng cần gán nhãn
ãn x (hình tròn ?) đến các đôi tượng thuộc lớp dương
ương ((+) và các

đối tượng âm (-)) trong m
một không gian quan sát k=5. Điều dễ nhận thấy đối
tượng nào càng gần đối tư
ượng cần gán nhãn thì giá trịị tham số của đối tượng
t
đó
càng lớn và ngược lại

Hình 2.2: Ví dụ
d về thuật toán WkNN

Trong Hình
ình 2.2 trên ta thấy
thấy các láng giềng gần nhất của đối ttượng quan
sát cần phán đoán lớp x thu
thuộc về hai lớp: lớp dương (+), và lớp
ớp âm ((-). Giả sử
sau khi tính toán khoảng
ảng cách ta ttìm được
ợc 5 láng giềng gần nhất của x như trên,
trong đó có 3 đối tượng
ợng thuộc về lớp âm (-) và 2 đối tượng
ợng thuộc về lớp ddương
(+). Giảả sử các trọng số của từng láng giềng
giề có giá trị tính được
ợc nh
như trên hình
vẽ.
Ta có:
Tổng

ổng trọng số của lớp dương
d
là: 0.73 + 0.71 = 1.44


15

Tổng trọng số của lớp âm là: 0.33 + 0.34 + 0.35 = 1.02
Như vậy x sẽ được phán đoán thuộc về lớp dương (+) vì lớp này có tổng
trọng số lớn nhất.
Qua ví dụ này ta thấy có sự khác biệt rõ ràng trong kết quả phán đoán của
WkNN và kNN. Nếu sử dụng bộ phân lớp kNN thì x sẽ được phán đoán thuộc về
lớp âm (-) vì đây là lớp chiếm đại đa số trong 5 láng giềng gần nhất của x.
Nếu sử dụng bộ phân lớp WkNN thì x có kết quả ngược lại.

2.1.5. Thuật toán Hàm nhân k-Láng giềng gần nhất (Kernel k-NN)
- Tổng quan
Thuật toán kNN đã cho kết quả tốt trong nhiều bài toán thực tế. Tuy nhiên,
với các bài toán chạy trên dữ liệu phi tuyến phức tạp, nơi dữ liệu phân bố tương
đối tùy ý, nó thường cho kết quả khá tồi. Từ thực trạng đó, năm 2002, nhóm tác
giả Kai Yu, Liang Ji, và Xuegong Zhang, tiếp cận theo hướng sử dụng hàm nhân
(Kernel) để cải tiến độ chính xác của thuật toán kNN trên không gian phi tuyến
[12]. Về bản chất, Kernel k-NN dùng một hàm phi tuyến ánh xạ các mẫu dữ liệu
trong không gian ban đầu sang một không gian đặc trưng mới, rồi thực hiện
thuật toán kNN trên không gian đặc trưng mới đó. Điểm mấu chốt của phương
pháp này là dựa vào việc sử dụng một hàm nhân để tính phép nhân trong (inner
product) của các vectơ là ảnh của các mẫu dữ liệu ban đầu qua phép ánh xạ. Nếu
chọn được một hàm nhân phù hợp thì hiệu quả của thuật toán kNN có thể được
cải thiện đáng kể.
Ta xét trường hợp ánh xạ một không gian n-chiều sang một không gian đặc

trưng m-chiều như sau:
= ( ,…,
Trong đó
m-chiều.

á

ạ đặ

ư

) ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯

( )=

( ), …

( ) ,



, ( )∈

là không gian n-chiều ban đầu và là không gian đặc trưng mới có
là một vectơ tùy ý trong , ( ) là vectơ tương ứng trong . là

một ánh xạ phi tuyến tùy ý từ không gian ban đầu sang không gian
1…m) là các hàm ánh xạ đặc trưng.
Ta định nghĩa một hàm nhân K sao cho với mọi


,



ta có:

, và

(i =


16

( , ) = 〈 ( ), ( )〉

(2.6)

Trong đó 〈 ( ), ( )〉 biểu diễn phép nhân trong của ( ) và ( ), ( , ) là
một hàm của x và y.
Việc định nghĩa một hàm nhân như công thức (2.6) ở trên dẫn đến phép
nhân trong trong không gian đặc trưng mới có thể được tính mà không cần thực
sự thực hiện phép ánh xạ . Ba hàm nhân được mô tả trong Bảng 2.2 dưới đây
thường được sử dụng rộng rãi:
Tên hàm

Công thức tương ứng

Polynomial

( , ) = (1 + 〈 , 〉)


Radial Basis

( , ) = exp −

Sigmoid

( , ) = tanh( 〈 , 〉 + )

‖ − ‖

Bảng 2.2: Một số hàm nhân hay được dùng
Trong đó , , ,

là các tham số có thể điều chỉnh được.

- Nguyên lý hoạt động
Trong thuật toán kNN truyền thống, một hàm đo khoảng cách chuẩn như
khoảng cách Euclidean thường được sử dụng. Bằng cách định nghĩa lại hàm đo,
ta có thể sử dụng phương pháp hàm nhân để áp dụng vào thuật toán kNN.
Phương pháp sử dụng hàm nhân dựa trên một thực tế là ta cần phải tính phép
nhân trong giữa các vectơ là ảnh của các mẫu dữ liệu ban đầu qua phép ánh xạ.
Do phép nhân trong chỉ tính được trong không gian Hilbert, nên ta chỉ quan tâm
đến các hàm đo khoảng cách chuẩn trong không gian Hilbert. Không gian
Hilbert một dạng tổng quát hóa của không gian Euclidean mà không bị giới hạn
về vấn đề hữu hạn chiều. Đó là một không gian có tích vô hướng, nghĩa là trong
đó có khái niệm về khoảng cách và góc.
Khoảng cách chuẩn ( , ) giữa 2 vectơ x và y là:



17

( , )=‖ − ‖

(2.7)

Để sử dụng thuật toán kNN trong không gian đặc trưng mới, ta cần tính
khoảng cách chuẩn trong không gian đó. Sử dụng (2.6) và (2.7) ta có:
( ), ( ) = ‖ ( ) − ( )‖
= 〈 ( ), ( )〉 − 2〈 ( ), ( )〉 + 〈 ( ), ( )〉
=

( , )−2 ( , )+ ( , )

(2.8)

Như vậy khoảng cách chuẩn trong không gian đặc trưng mới có thể được
tính bằng cách sử dụng một hàm nhân và các vectơ dữ liệu trong không gian
mẫu ban đầu mà không cần xác định và thực hiện phép ánh xạ . Sau khi xác
định được hàm đo khoảng cách ở công thức (2.8), ta có thể dễ dàng thực hiện
thuật toán kNN trên không gian đặc trưng mới.
- Dữ liệu và việc tính phép nhân trong (inner product)
Con người mô tả thế giới dưới dạng thông tin, thông tin cần được lưu trữ
và xử lý để đem lại tri thức. Bản chất thông tin là nhiều chiều nên vector và ma
trận ra đời để hỗ trợ cho quá trình tiếp nhận, trao đổi thông tin của con người. Ví
dụ : để mô tả vị trí một điểm trên một đường thẳng, ta chỉ cần một giá trị khoảng
cách của điểm đó đến một điểm được chọn làm gốc, lúc này ta chỉ cần một
vector có một phần tử. Nếu điểm đó nằm trên một mặt phẳng, ta cần có một hệ
trục tọa độ (gồm hai trục x và y) và vị trí điểm đã cho được xác định dựa trên
khoảng cách của nó đến hai trục tọa độ đó. Lúc này ta cần một vector hai chiều

(có hai phần tử) để mô tả vị trí một điểm trên một mặt phẳng. Mở rộng, để mô tả
một điểm trong không gian ta cần một vector ba chiều (có ba phần tử). Suy rộng
ra, giả sử ta muốn mô tả một con người, ta cần rất nhiều thông tin như giới tính,
tuổi, tên, chiều cao, cân nặng, ngày tháng năm sinh…Các thông tin này có thể
được lưu trữ dưới dạng một vector có số chiều ứng với số thông số cần mô tả
cho con người đó. Do đó, có thể xem vector là một đại lượng có nhiều phần tử
dùng để chứa thông tin nhiều chiều theo nhu cầu thực tế đặt ra.
Ma trận có thể được coi là một dãy gồm nhiều “hàng” vector nối tiếp nhau
trong đó mỗi hàng đại diện cho một đối tượng nào đó. Theo ví dụ trên có thể là
nhiều người khác nhau. Do đó một ma trận có thể chứa thông tin của nhiều


×