Bootstrapping bằng thư viện số
ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHAI PHÁ DỮ LIỆU
Bootstrapping Phân Lớp Văn Bản
bằng Nguồn Tài Nguyên Thư Viện Số
Giảng viên hướng dẫn
PGS.TS. Đỗ Phúc
Học viên: Huỳnh Lê Quốc Vương MHV: CH1101158
Bootstrapping bằng thư viện số
11 – 2012
ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHAI PHÁ DỮ LIỆU
Bootstrapping Phân Lớp Văn Bản
bằng Nguồn Tài Nguyên Thư Viện Số
Giáng viên hướng dẫn
PGS.TS. Đỗ Phúc
Học viên: Huỳnh Lê Quốc Vương MHV: CH1101158
Bootstrapping bằng thư viện số
11 – 2012
MỤC LỤC
Bootstrapping bằng thư viện số
LỜI MỞ ĐẦU
Automatic Text Classification (ATC) hay Categorization là quá trình tự
động gán các tài liệu văn bản thuộc ngôn ngữ tự nhiên vào một hay nhiều
mục/lớp tương ứng với nội dung của chúng. ATC là một lĩnh vực con của
Information Retrieval (IR). Biết được chủ đề của các văn bản tài liệu có thể
nâng cao hiệu năng cho các hệ thống IR trong độ chính xác và tốc độ. Ngoài
ra, phân lớp văn bản còn tác động đến các phương pháp tìm kiếm dựa trên
keyword mà ở đó chúng trả về một khối kết quả lớn mà người dùng phải lọc
một cách thủ công. Hơn nữa, các tài liệu được phân lớp theo một cơ chế phân
lớp chuẩn cho phép người sử dụng duyệt theo chủ đề. Với sự phát triển cực kỳ
nhanh của các tài liệu điện tử và các lợi ích của việc phân lớp tài liệu, sự phát
triển của các hệ thống ATC và các ứng dụng của chúng như đã nói ở trên đã
thu hút các nhà nghiên cứu từ các cộng đồng machine learning, information
retrieval, và data management. Một số ví dụ của việc phân lớp tài liệu như
phân lớp các webpage, sắp xếp email, các bài báo, tin tức hay cho các mục
đích nào đó của người sử dụng.
Các thuật toán Machine Learning (ML) đã trở thành cách tiếp cận phổ biến
nhất cho ATC từ những năm 1990 cho đến nay. Thực tế, các hệ thống ATC
dựa trên ML đã chứng minh cho sự thành công to lớn trong phần lớn các ứng
dụng với phân lớp văn bản chẳng hạn như lọc spam, phân mục tin tức, bài báo,
và phân loại các webpage. Tuy nhiên, các hệ thống này cần phải có một lượng
lớn các tài liệu, văn bản được phân lớp trước cho mỗi chủ đề/mục/lớp để huấn
luyện cho các thuật toán ML, và phần lớn các trường hợp này thì các dữ liệu
huấn luyện không có sẵn. Trong các tình huống này, người ta thường nhờ
Bootstrapping bằng thư viện số
những người chuyên gia để phân loại, lập mục để tạo ra một tập dữ liệu huấn
luyện được gán nhãn. Tuy nhiên, quá trình này thì quá tốn kém tiền bạc cũng
như thời gian và không thực tế trong nhiều trường hợp. Chẳng hạn, một một cơ
chế phân lớp với kích cỡ trung bình là 1000 lớp, số lượng tài liệu cần được gán
nhãn để huấn luyện là 100 cho mỗi lớp. Thì người phân loại sẽ phán gán nhãn
cho 100,000 tài liệu. Ngoài ra, cơ chế phân lớp có thể bị thay đổi và dữ liệu
huấn luyện lúc đầu có thể không sử dụng được nữa do lỗi thời (chẳng hạn các
khái niệm nào đó thay đổi theo thời gian). Các vấn đề này đòi hỏi phải thực
hiện lại quá trình gán nhãn thủ công tốn kém để giữ cho tập dữ liệu huấn luyện
được cập nhật và chính xác.
Bài thu hoạch này sẽ giới thiệu tổng quan về phân lớp văn bản tự động, như
lịch sử, thảo luận về các khía cạnh khác nhau của các hệ thống ATC như các
ứng dụng, các phương pháp theo Machine Learning (ML), các phương pháp để
biểu diễn/mô hình văn bản, các kỹ thuật chọn và giảm các đặc trưng, các độ đo
hiệu năng, và các tập dữ liệu kiểm chuẩn. Tiếp theo, là giới thiệu một phương
pháp bootstrapping cho các hệ thống phân lớp dựa trên nguồn tài nguyên thư
viện điện tử để giải quyết vấn đề tốn kém khi gán nhãn văn bản bằng tay hoặc
không có dữ liệu chuẩn để huấn luyện bộ phân lớp. Sau cùng là phần hiện thực
phương pháp đó cũng như đánh giá kết quả thử nghiệm.
Lời cảm ơn, em chân thành xin dành cho thầy Phúc vì những kiến thức của
Thầy mang lại để giúp em có được cũng như hoàn thành tốt bài thu hoạch này.
Bootstrapping bằng thư viện số
I. Phân Lớp Văn Bản Tự Động
1. Giới Thiệu
Trong phần này ta sẽ giới thiệu một cách tổng quan về lĩnh vực Automatic
Text Classification/Categorisation (ATC) và thảo luận về các khía cạnh khác
nhau của các hệ thống ATC như các ứng dụng, các phương pháp theo Machine
Learning (ML), các phương pháp để biểu diễn/mô hình văn bản, các kỹ thuật
chọn và giảm các đặc trưng, các độ đo hiệu năng, và các tập dữ liệu kiểm
chuẩn.
ATC là quá trình tự động gán các tài liệu văn bản ngôn ngữ tự nhiên vào
một hay nhiều mục/lớp tương ứng với nội dung của chúng. Nó có thể được
chia thành ba loại như sau:
- Binary classification: ở đây chỉ có hai mục/lớp duy nhất, và một văn bản
chưa được gán nhãn sẽ chỉ thuộc về một một trong hai lớp đó. Một ví dụ
thường thấy của kiểu này là các hệ thống lọc spam, nội dung của một email
sẽ được phân loại thành spam hay không spam.
- Multi class classification: ở đây có nhiều hơn hai mục/lớp, nhưng một văn
bản chỉ có thể thuộc về một lớp.
- Multi label classification: ở đây có nhiều hơn hai mục/lớp, và một văn bản
có thể thuộc về nhiều lớp.
Phụ thuộc vào ứng dụng, một hệ thống ATC có thể được yêu cầu thực hiện
phân lớp “cứng” hoặc phân lớp “mềm”. Phân lớp cứng cung cấp một giá trị
chân trị {True, False} để chỉ sự thuộc về hay không thuộc về của một văn bản
đối với một mục/lớp nào đó. Phân lớp cứng được sử dụng phần lớp trong các
Bootstrapping bằng thư viện số
bộ phân lớp hoàn toàn “tự trị”, có nghĩa là các kết quả không cần được xác
nhận lại bởi những chuyên gia phân loại như trong giai đoạn cuối. Ngược lại,
phân lớp mềm cung cấp một con số thực giữa 0.0 và 1.0 để chỉ mức độ phụ
thuộc của một văn bản đối với một mục/lớp nào đó. Điều này hữu ích cho các
hệ thống ATC mà việc phân lớp các tài liệu cuối cùng được quyết định bởi
những người phân lớp bằng cách sử dụng các đề nghị bởi các hệ thống phân
lớp tự động.
ATC xuất hiện vào những năm đầu 1960. Tuy nhiên, qua hai thập kỷ, do sự
phát triển bùng nổ của các tài liệu điện tử trên Internet, intranet, và các thư
viện số. Do đó, đã nảy sinh nhu cầu cần phải có các hệ thống tự động có khả
năng quản lý các khối dữ liệu lớn, ATC đã thu hút một lượng lớn các nhà
nghiên cứu làm việc trong nhiều lĩnh vực như: khai khá dữ liệu, truy hồi thông
tin, quản lý dữ liệu, máy học, xử lý ngôn ngữ tự nhiên, và các thư viện số.
Cho đến cuối những năm 1980, Knowledge Engineering (KE) là cách tiếp
cận phổ biến nhất để hiện thực các hệ thống ATC. Nói chung, các tiếp cận này
đòi hỏi việc định nghĩa bằng tay một tập luật để mã hóa các kiến thức của
chuyên gia về việc làm thế nào để phân lớp văn bản theo các mục/lớp đã cho.
Ví dụ nổi tiếng nhất của cách tiếp cận này là hệ thống Construe. Trong những
năm 1990, với sự tiến bộ trong lĩnh vực máy học và sự phát triển của phần
cứng với khả năng xử lý hàng ngàn tài liệu trong một thời gian ngắn hợp lý,
các thuật toán máy học được chấp nhận rộng rãi trong ATC và thay thế đi các
phương pháp dựa trên luật. Trong cách tiếp cận sau này, các thuật toán máy
học đóng vai trò các kỹ sư kiến thức tương ứng với các hệ thống dựa trên luật
và tự động học các đặc tính phân biệt cho từng lớp bằng cách phân tích một tập
tài liệu mẫu được phân lớp trước cho từng lớp. Ưu điểm của cách tiếp cận này
là:
Bootstrapping bằng thư viện số
- Tập trung kỹ thuật vào việc xây dựng một bộ xây dựng tự động các bộ phân
lớp (người học) thay vì xây dựng từng bộ phân lớp riêng lẻ. Do đó, nếu tập
các mục/lớp bị cập nhật hay nếu hệ thống bị chuyển sang lĩnh vực khác, tất
cả điều cần là một tập tài liệu được phân lớp khác để học.
- Các hệ thống dựa vào máy học yêu cầu hiểu rõ lĩnh vực cho việc gán nhãn,
trái ngược với việc thông thạo kỹ thuật xây dựng tri thức trong trường hợp
cho các hệ thống dựa trên luật.
- Đôi khi các tài liệu được phân lớp đã có sẵn, điều này giảm một phần lớn
chi phí và thời gian cho việc xây dựng tập dữ liệu huấn luyện cho các
chuyên gia để phát triển một hệ thống ATC dựa vào máy học. Ví dụ như
phát triển một hệ thống ATC để tự động phân lớp các tài liệu nghiên cứu
liên quan đến khoa học máy tính giống như ACM Computing Classification
System (ACM-CCS). Trong trường hợp này, có sẵn một số lượng lớn các
bài báo nghiên cứu trong thư viện số ACM tại
những bài báo này được phân lớp bằng tay theo ACM-CSS và có thể được
sử dụng cho việc huấn luyện một bộ phân lớp dựa vào máy học.
2. Các ứng dụng ATC
Dưới đây sẽ mô tả các ứng dụng ATC phổ biến nhất:
- Tổ chức tài liệu: tự động lập chủ đề cho các bài báo, tạp chí, các bài báo hội
nghị, quảng cáo, …
- Tổ chức các thư viện số: các thư viện số quy mô lớn chứa hàng ngàn hạng
mục và do đó yêu cầu triển khai các kỹ thuật truy hồi thông tin và vấn tin
linh hoạt để cho phép người sử dụng dễ dàng tìm thấy những mục mà họ
mong muốn. Để cung cấp những kết quả tìm kiếm với độ chính xác cao, ta
Bootstrapping bằng thư viện số
cần phải vượt qua các kỹ thuật tìm kiếm truyền thống dựa vào keyword, mà
ở đó chúng trả về một khối lượng lớn các kết quả mà không đánh giá nội
dung. Việc phân lớp các tài liệu trong một thư viện số dựa trên một cơ chế
được định nghĩa trước sẽ nâng cao độ chính xác trong việc truy vấn thông
tin đáng kể và cho phép người sử dụng duyệt tập hợp theo chủ đề.
- Phân lớp các webpage: phân lớp nội dung văn bản của webpage thực chất
là các công việc như: crawling, bán tự động xây dựng thư mục web, và
phân tích cấu trúc chủ đề web. Phân lớp webpage có thể giúp cho việc nâng
cao chất lượng tìm kiếm web.
- Lọc spam: trong hình thức đơn giản, thì lọc spam có thể được xem như là
một tác vụ phân loại văn bản mà chỉ có hai lớp là spam và không spam, hợp
lệ. Nhiều thuật toán máy học có giám sát đã thành công khi áp dụng vào
việc lọc spam email.
- Nhận dạng thể loại văn bản tự động: thể loại trên văn bản có các đặc điểm
khác hơn so với các nội dung chủ đề thông thường. Thể loại văn bản hay
kiểu của văn bản thì được xem như là đặc trưng cho mục đích của văn bản
được viết. Ví dụ cho các thể loại là: bài báo nghiên cứu, tiểu thuyết, thơ, tin
tức, quảng cáo, … Các ứng dụng dựa trên văn bản ngày càng có nhiều thể
loại khác nhau, do đó phân loại theo thể loại rất hữu ích cho nhiều mục
đích.
- Lọc web: các request tới các web nào đó sẽ được lọc và nội dung của các
web trả về sẽ được phân tích để chặn nội dung không mong muốn. Lọc web
có hai ứng dụng chính sau:
Bootstrapping bằng thư viện số
o Bảo vệ chống lại nội dung không thích hợp: Internet đã trở thành một
nguồn thông tin vô cùng quan trọng. Tuy nhiên, nó cũng nơi chứa hàng
loạt nội dung không thích hợp, cụ thể là cho trẻ em. Lọc web có thể
được sử dụng để ngăn chặn các truy cập đến các trang web mà được dựa
vào một chính sách, luật định trước.
o Ngăn chặn chống lại sự lạm dụng tài nguyên mạng: mục đích chính ở
đây là để ngăn chặn sự lạm dụng tài nguyên trong một tổ chức nào đó.
Một vấn đề thường thấy trong nhiều tổ chức là cung cấp truy cập
Internet cho nhân viên mà phần lớn tài nguyên mạng được sử dụng cho
các ứng dụng như chat, game, download video, audio. Việc lạm dụng
như thế sẽ giảm năng suất, hiệu năng tải trên toàn bộ mạng và do đó, sẽ
làm trở ngại cho các hoạt động chính đáng.
3. Các phương pháp máy học cho ATC
3.1. Naïve Bayes (NB)
Định lý cơ sở cho thuật toán phân lớp văn bản Naïve Bayes là luật Bayes,
cho thấy sự quan hệ giữa một xác suất có điều kiện và hình thức đảo ngược của
nó. Nó được biểu diễn như sau:
trong đó,
- là xác suất tiên nhiệm hay xác suất biên của một sự kiện cho trước. Nó là
“tiên nghiệm” theo nghĩa rằng nó không quan tâm đến bất kỳ thông tin nào
về B.
- là xác suất có điều kiện của , biết Nó còn được gọi là xác suất hậu nhiệm
bởi vì nó được suy ra từ hay phụ thuộc vào giá trị của .
Bootstrapping bằng thư viện số
- là xác suất có điều kiện của biết . Nó còn được gọi là khả năng
(likelihood).
- là xác suất tiên nhiệm hay xác suất biên của , và giữ nhiệm vụ như là một
hằng số chuẩn hóa.
Luật Bayes trong hình thức này cho thấy một biểu diễn toán học của việc
xác suất có điều kiện của sự kiện biết thì liên quan đến xác suất có điều kiện
nghịch đảo của biết . Khi áp dụng đến phân lớp văn bản, công thức trên có thể
được viết lại như sau:
Như trên luật được sử dụng để tính xác suất của mỗi lớp đối với , và Class
với xác suất cao nhất sẽ được phân cho . Trong công thức trên, là hằng số chia,
chung cho mỗi lần tính và do đó có thể bỏ đi khỏi công thức.
Trong mô hình này mỗi tài liệu được biểu diễn bằng một vector gồm các từ
(vector Euclidean) trong không gian n chiều, mỗi chiều tương ứng với một từ
riêng biệt và khoảng cách dọc theo chiều đó là số lần mà từ đó xảy ra trong tài
liệu. Trong một thiết lập phổ biến, một tập tài liệu để huấn luyện được phân
lớp bằng tay thì được sử dụng cho tham số xác suất tiên nhiệm và xác suất (từ)
có điều kiện . Xác suất có điều kiện của từ trong lớp được tính như sau:
ở đây là số lần của từ xuất hiện trong các tài liệu huấn luyện mà thuộc về , n là
tổng số từ trong các tài liệu huấn luyện thuộc về , và Vocabulary là một tập
hợp các từ phân biệt mà xuất hiện trong tất cả các tài liệu huấn luyện. Xác suất
tiên nhiệm có thể được tính bằng cách đem chia số lượng tài liệu thuộc cho
tổng số lượng tài liệu huấn luyện. Và nếu một tài liệu được phân loại đến lớp
thích hợp nhất thì cho tài liệu đó được xác định như sau:
Bootstrapping bằng thư viện số
ở đây S là một tập hợp tất cả các lớp đích có khả năng và là tần số của từ k
trong tài liệu kiểm thử.
Nhân một lượng lớn các xác suất, với giá trị xác suất là giữa 0 và 1 thì kết
quả có thể bị tràn dưới dấu chấm động. Để tránh điều này, ta lấy tổng logarit
các xác suất thay vì nhân:
Cuối cùng, lớp với xác suất cao nhất được chọn là lớp đích cho tài liệu.
Có hai phương pháp khác nhau được sử dụng cho việc mô hình hóa dữ liệu
văn bản cho thuật toán NB. Mô hình phổ biến hơn là Multinomial Naïve Bayes
(MNB), sử dụng một Bag Of Words (BOW), túi từ để biểu diễn văn bản. Sử
dụng cách biểu diễn BOW, một văn bản chẳng hạn như một tài liệu sẽ được
chuyển thành một tập các từ không có thứ tự và số lần mỗi từ xuất hiện trong
tài liệu đó. Để tạo một tập dữ liệu cho việc huấn luyện thuật toán NB mà sử
dụng mô hình này, thì tất cả tài liệu mà thuộc về cùng một lớp sẽ được nối với
nhau để tạo ra một tài liệu lớn. Có một cách tiếp cận khác ít phổ biến hơn để
mô hình hóa dữ liệu cho thuật toán NB là mô hình Multi-Variate Bernoulli
(MVB). Trong mô hình này tần số xuất hiện của từ không được quan tâm đến
và giá trị của mỗi đặc trưng (từ) là 0 hay 1 (mô hình nhị phân). McCallum và
đồng nghiệp [1] đã so sánh hiệu năng của mô hình MVB với mô hình
Multinomial và kết luận rằng mô hình Multinomial thì hiệu quả hơn trong phần
lớn các trường hợp. Tuy nhiên, một nghiên cứu gần đây bởi Schneider chứng
tỏ rằng MNB không vượt trội hơn MVB [2].
Thuật toán Naïve Bayes đã trở thành “bao cát tập đấm” trong các thuật toán
phân lớp, nó thường xuyên được đặt cuối hay gần cuối trong nhiều nghiên cứu
để so sánh độ chính xác của các thuật toán ATC khác dựa vào máy học. Nó
Bootstrapping bằng thư viện số
thường xuyên được sử dụng trong các hệ thống ATC bởi vì tốc độ của nó và dễ
dàng cài đặt. Vấn đề lớn nhất với thuật toán NB là giả định “naïve” rằng các từ
thì độc lập với nhau và sự nằm kề nhau giữa chúng thì không liên quan. Có
một số nghiên cứu (xem ví dụ trong [3]) đã thảo luận về các lý do tại sao kết
quả đạt độ chính xác cao đáng ngạc nhiên của NB bất chấp các vấn đề về
phương pháp của nó chẳng hạn như là giả định các từ độc lập nhau. Một
nghiên cứu gần đây của Wolf và các đồng nghiệp [4], đã điều tra bản chất
thông tin con người sử dụng để phân lớp tài liệu, cho thấy con người có thể đạt
được độ chính xác tương tự nhau mặc dù có hay không có thông tin về cú
pháp. Hơn nữa, cần lưu ý rằng các thuật toán ATC theo máy học khác với mục
tiêu mô hình văn bản chính xác hơn và xem xét đến thông tin cú pháp dẫn đến
trở nên chậm hơn và phức tạp hơn. Một nghiên cứu gần đây bởi Hand [5] đã
cho thấy các đặc tính ưu việt của các thuật toán phân lớp phức tạp dựa trên
máy học không đáng kể để khẳng định sự hữu ích của chúng trong nhiều
trường hợp và các kết quả tốt về các đặc tính của các thuật toán đó trong cài
đặt thử nghiệm thì không đạt được kết quả tốt trong các ứng dụng thực tế. Các
tranh luận này cho ta thấy lý do tại sao mà các thuật toán NB được sử dụng
rộng rãi trong các ứng dụng thực, mặc dù độ chính xác của các thuật toán phức
tạp khác được báo cáo trong các tài liệu. Nhiều phiên bản sửa đổi của các thuật
toán NB đã được báo cáo trong tài liệu và chúng cho thấy những cải tiến hơn
phiên bản đầu, xem ví dụ trong [6-7]. Trong số các phiên bản cải tiến, những
sự thay đổi được đề xuất bởi Rennie và đồng nghiệp [6] thì được chấp nhận
rộng rãi nhất. Trong một thử nghiệm của Arash Joorabchi [19], đã cài đặt
những sự thay đổi theo đề xuất bởi Rennie và các đồng nghiệp thì đạt được kết
quả tương tự. Nó xứng đáng là đối thủ của các thuật toán ATC theo máy học
tiên tiến nhất chẳng hạn như SVM.
Bootstrapping bằng thư viện số
3.2. Support Vector Machine (SVM)
SVM được biết đến như là thuật toán tiên tiến nhất cho phân lớp văn bản tự
động. Nó được áp dụng lần đầu tiên cho vấn đề phân lớp văn bản bởi Joachims
vào năm 1998. SVM là một phương pháp máy học dựa trên không gian vector,
mục đích là để tìm một ranh giới giữa hai lớp sao cho khoảng cách từ bất kỳ
điểm nào trong tập dữ liệu huấn luyện tới ranh giới là xa nhất có thể. Để hiểu
khái niệm cơ bản của SVM, trước hết ta sẽ nói về perceptron, cũng là một máy
phân lớp tuyến tính và có vài điểm giống nhau với SVM.
Perceptron được đề xuất bởi Frank Rosenblatt vào năm 1956. Nó là một
máy phân lớp tuyến tính, ánh xạ đầu vào x, một vector số thực, đến một đầu ra
f(x), là một giá trị nhị phân:
với w là một vector của các trọng số số thực, w.x là tích của trọng số và các
vector đầu vào, và b là hệ số dịch chuyển, một hằng số không phụ thuộc vào
bất kỳ giá trị đầu vào nào. Trong suốt quá trình huấn luyện, cho một tập huấn
luyện có thể tách rời tuyến tính S:
và một tỷ số học , vector trọng số và hệ số dịch chuyển được cập nhật sau mỗi
đầu vào theo thuật toán sau:
Bootstrapping bằng thư viện số
Thủ tục này đảm bảo hội tụ với điều kiện là tồn tại một siêu phẳng tuyến
tính để mà phân loại đúng dữ liệu huấn luyện. Nếu dữ liệu không tách rời
tuyến tính, thì vòng lặp sẽ lặp vô tận và thủ tục sẽ không bao giờ hội tụ. Do đó,
perceptron tuyến tính chỉ có thể được áp dụng khi dữ liệu đảm bảo được tách
rời tuyến tính. Các ví dụ về dữ liệu tách rời tuyến tính và không thể tách rời
trong như hình dưới đây (a-b).
Bootstrapping bằng thư viện số
Như trong hình (c) perceptron có vô số siêu phẳng tuyến tính. Nhưng bằng
trực giác siêu phẳng tốt nhất có giới hạn lớn nhất với các điểm dữ liệu như
trong hình (d). SVM nhắm vào hai vấn đề này. Nó có thể triển khai phân lớp
các tập dữ liệu mà không thể tách rời tuyến tính và cũng có thể tìm w và b tối
ưu, như thế siêu phẳng phân chia có lề lớn nhất với các điểm dữ liệu và do đó,
có khả năng cao nhất để phân lớp chính xác dữ liệu không thấy trước.
Bootstrapping bằng thư viện số
Ở đây, ta sẽ xem xét trước về việc như thế nào SVM tìm siêu phẳng phân chia
tốt nhất với lề lớn nhất và sau đó mô tả cách tiếp cận SVM trong việc giải
quyết các vấn đề phân lớp không tuyến tính bằng cách sử dụng kỹ thuật ranh
giới mềm và mẹo kernel.
Như đã nói ở trên siêu phẳng tốt nhất có lề lớn nhất với các điểm dữ liệu và
do đó, có xác suất lỗi là tối thiểu. Siêu phẳng phân chia là một đường thẳng
trong n chiều. Các điểm gần nhất với siêu phẳng phân chia được gọi là các
vector hỗ trợ. Các đường mà các vector hỗ trợ tạo ra trên mỗi mặt của siêu
phẳng phân chia được gọi là siêu phẳng chính tắc.
Siêu phẳng phân chia tốt nhất
Bootstrapping bằng thư viện số
Trong một không gian với chiều tùy ý, một siêu phẳng phân chia có thể được
viết như sau:
w.x + b = 0
w là vector trọng số, x là vector đầu vào, và b là hệ số dịch chuyển. Ta sẽ xem
xét một hàm quyết định sau:
Hàm sign ở trên chỉ ảnh hưởng bởi dấu của w.x + b. Do đó, các siêu phẳng ấy
có thể xác định bằng:
w.x + b = -1 và
w.x + b =1
Bằng cách lấy phương trình một siêu phẳng trừ đi cái khác:
(w.x + b = -1) – (w.x + b = 1) = w.( (1)
ta nhận được hai vector hỗ trợ trên mỗi mặt của siêu phẳng.
Lề sẽ được xác định bằng phép chiếu vector lên trên vector pháp tuyến đến
siêu phẳng phân chia
Margin (lề) =
Ta có thể xem minh họa hình sau:
Bootstrapping bằng thư viện số
Lề của siêu phẳng phân chia
Chia đồng thời về vế của biểu thức (1) cho ||w|| sẽ cho ta phương trình cho
siêu phẳng phân chia:
Mục tiêu của ta là tối đa hóa lề tương đương với tối tiểu hóa ||w||.
Do đó tối đa hóa lề tương đương tối thiếu hóa hàm:
phụ thuộc vào ràng buộc:
Bootstrapping bằng thư viện số
Dạng ban đầu
Bài toán tối ưu ở mục trên tương đối khó giải vì hàm mục tiêu phụ thuộc vào ||
w||, là một hàm có khai căn. Tuy nhiên có thể thay ||w|| bằng hàm mục tiêu (hệ
số 1/2 để tiện cho các biến đổi toán học sau này) mà không làm thay đổi lời
giải (lời giải của bài toán mới và bài toán ban đầu có cùng w và b). Đây là một
bài toán quy hoạch toàn phương. Cụ thể hơn:
Cực tiểu hóa (theo w, b)
với điều kiện (với mọi i = 1, …, n)
Bằng cách thêm các nhân tử Lagrange , bài toán trên trở thành
nghĩa là ta cần tìm một điểm yên ngựa. Khi đó, tất cả các điểm không nằm trên
lề, nghĩa là đều không ảnh hưởng đến giá trị hàm mục tiêu vì ta có thể chọn
bằng không.
Có thể giải bài toán này bằng các kĩ thuật thông thường cho quy hoạch toàn
phương. Theo điều kiện Karush–Kuhn–Tucker, lời giải có thể được viết dưới
dạng tổ hợp tuyến tính của các vectơ luyện tập
Bootstrapping bằng thư viện số
Chỉ có một vài nhận giá trị lớn hơn 0. Các điểm tương ứng là các vectơ hỗ trợ
nằm trên lề và thỏa mãn = . Từ điều kiện này, ta nhận thấy
từ đó ta suy ra được giá trị . Trên thực tế, một cách thức tốt hơn để tính là
tính giá trị trung bình từ tất cả vectơ hỗ trợ:
Dạng đối ngẫu
Nếu viết điều kiện phân loại dưới dạng đối ngẫu không điều kiện thì sẽ dễ dàng
nhận thấy siêu phẳng với lề lớn nhất, và do đó nhiệm vụ phân loại, chỉ phụ
thuộc vào các điểm luyện tập nằm trên lề, còn gọi là các vectơ hỗ trợ.
Vì và , ta nhận thấy bài toán đối ngẫu của SVM là chính là bài toán tối ưu hóa
sau:
Cực đại hóa (theo )
với điều kiện (với mọi i = 1, …, n)
Bootstrapping bằng thư viện số
và điều kiện sau ứng với việc cực tiểu hóa theo
Ở đây hàm hạt nhân được định nghĩa là
Sau khi giải xong, có thể tính w từ các giá trị tìm được như sau:
Trong tình huống một tập huấn luyện không tách rời tuyến tính, cách tiếp
cận chuẩn là cho phép lề có một vài lỗi (ví dụ vài điểm bất thường hay nhiễu
thì nằm trong hay ngoài nhầm bên của lề). Thậm chí trong tình huống dữ liệu
tách rời tuyến tính ta có thể ưu tiên một giải pháp mà phân chia lượng lớn dữ
liệu bằng cách làm cho lề lớn hơn trong khi lờ đi một vài dữ liệu nhiễu. Sau đó
ta sẽ trả một cái giá cho mỗi ví dụ phân lớp nhầm, điều này phụ thuộc vào bao
xa đến lề trong biểu thức (2). Để thực hiện điều này, ta sử dụng biến bù . Một
giá trị khác 0 của cho phép không gặp yêu cầu của lề với một chi phí tỷ lệ với
giá trị của . Công thức vấn đề tối ưu SVM với biến bù là:
với điều kiện
SVM cũng sử dụng mẹo kernel để phân lớp tập dữ liệu mà không có thể
tách rời tuyến tính. Ý tưởng cơ bản là ánh xạ không gian đặc trưng gốc đến vài
không gian đặc trưng nhiều chiều hơn mà tập huấn luyện có thể tách rời. Dĩ
nhiên, ta muốn thực hiện trong những cách nào mà vẫn giữ được quan hệ các
Bootstrapping bằng thư viện số
chiều là những gì liên quan giữa các điểm dữ liệu, để mà kết quả bộ phân lớp
vẫn khát quát hóa đúng. Ví dụ, các điểm dữ liệu trong hình (a) dưới đây không
tách rời tuyến tính trong không gian đặc trưng 2 chiều. Lúc này nếu ta ánh xạ
dữ liệu thành không gian 3 chiều bằng cách:
sau đó ta có thể tách rời tuyến tính dữ liệu ánh xạ bằng cách sử dụng một siêu
phẳng trong : .
Mẹo kernel làm dữ liệu tách rời tuyến tính
3.3. K-Nearest Neighbour (k-NN)
Thuật toán k-NN là thuật toán khá nổi tiếng theo hướng tiếp cận thống kê
đã được nghiên cứu trong nhiều năm qua. K-NN được đánh giá là một trong
Bootstrapping bằng thư viện số
những phương pháp tốt nhất được sử dụng từ những thời kỳ đầu trong nghiên
cứu về phân loại văn bản.
Ý tưởng của phương pháp này là khi cần phân loại một văn bản mới, thuật
toán sẽ xác định khoảng cách (có thể áp dụng các công thức về khoảng cách
như Euclide, Cosine, Manhattan, …) của tất cả các văn bản trong tập huấn
luyện đến văn bản này để tìm ra k văn bản gần nhất, gọi là k láng giềng gần
nhất, sau đó dùng các khoảng cách này đánh trọng số cho tất cả các lớp. Khi
đó, trọng số của một lớp chính là tổng tất cả các khoảng cách ở trên của các
văn bản trong k láng giềng có cùng lớp, lớp nào không xuất hiện trong k láng
giềng sẽ có trọng số bằng 0. Sau đó các lớp sẽ được sắp xếp theo giá trị trọng
số giảm dần và lớp có trọng số cao sẽ được chọn là lớp cho văn bản cần phân
loại.
Trọng số của lớp đối với văn bản x được tính như sau:
trong đó:
thuộc {0,1}, với:
y = 0: văn bản không thuộc về chủ đề
y = 1: văn bản thuộc về chủ đề
sim(: độ tương tự giữa văn bản cần phải phân loại x và văn bản . Chúng ta có
thể sử dụng độ đo cosine để tính khoảng cách:
sim(
là ngưỡng phân loại của lớp được tự động học sử dụng một tập văn bản hợp lệ
được chọn ra từ tập huấn luyện.
Bootstrapping bằng thư viện số
4. Biểu diễn văn bản
Tài liệu văn bản, bởi vì chúng không thể được “hiểu” bởi các thuật toán
phân lớp. Do đó cần phải có một thủ tục để mà ánh xạ văn bản thành một cách
biểu diễn gọn gàng, cô đọng. Chọn lựa một cách biểu diễn cho văn bản phụ
thuộc vào cách người ta quan tâm đến như ý nghĩa văn bản (vấn đề ngữ nghĩa
của từ vựng) và các luật ngôn ngữ tự nhiên (vấn đề ngữ nghĩa hợp thành).
Trong đúng cách của truy hồi thông tin, mỗi tài liệu thông thường được biểu
diễn bằng một vector n chiều của các mục từ có trọng số mà xuất hiện trong tài
liệu. Sự khác nhau giữa những cách tiếp cận khác nhau để biểu diễn nội dung
văn bản là:
- Cách hiểu một mục từ là gì
- Cách đánh trọng số mục từ
Một sự chọn lựa thông thường cho vấn đề đầu tiên là xem mỗi từ trong tài
liệu như là một mục từ. Điều này gọi là cách tiếp cận Bag-Of-Words (BOW)
để biểu diễn tài liệu. Mô hình BOW trong hình thức đơn giản nhất của nó là
chuyển một tài liệu văn bản ngôn ngữ tự nhiên thành một vector n chiều, với
mỗi từ trong tài liệu được biểu diễn như là một chiều, và tần số của từ đó trong
tài liệu là trọng số/độ dài của chiều đó. Mô hình BOW hoàn toàn không để ý
đến trình tự của các từ trong tài liệu. Có nhiều mô hình phức tạp hơn được đề
xuất với mục tiêu để biểu diễn tài liệu văn bản chính xác hơn. Các mô hình này
cố gắng tìm ra nhiều đơn vị tinh vi, phức tạp, giàu ngữ nghĩa trong văn bản.
Các đơn vị như thế có thể được chia thành ba nhóm:
- Các cụm từ theo thống kê: các cụm từ mà không có ngữ pháp, nhưng
bao gồm một tập/chuỗi từ mà xảy ra liên tục kế nhau với tần số cao
trong tập dữ liệu.