1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Nghiên cứu xây dựng chương trình phân loại văn bản dùng giải thuật support vector machine bằng ngôn ngữ python

12 14 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 12
Dung lượng 728,63 KB

Nội dung

====o0o==== BÁO CÁO NHẬP MƠN TRÍ TUỆ NHÂN TẠO ĐỀ TÀI 44: Nghiên cứu xây dựng chương trình phân loại văn dùng giải thuật Support Vector Machine ngôn ngữ Python Giáo viên hướng dẫn: Sinh viên thực hiện: NGUYỄN NGỌC DUY MSSV VŨ TUẤN ANH N18DCCN010 NGUYỄN PHẠM NHẬT MINH N17DCCN095 BÁ O CÁ O ĐỀ TÀ I 44 TP Hồ Chí Minh, ngày tháng năm 2021 NHẬ P MƠ N TRÍ TUỆ NHÂ N TẠ O TRANG BÁ O CÁ O ĐỀ TÀ I 44 MỤC LỤC Giới thiệu giải thuật Support Vector Machine 1.1 Các khái niệm tảng 1.1.1 Khoảng cách từ điểm tới siêu mặt phẳng 1.1.2 Bài toán phân chia hai classes 1.2 Xây dựng toán tối ưu cho SVM NHẬ P MƠ N TRÍ TUỆ NHÂ N TẠ O TRANG BÁ O CÁ O ĐỀ TÀ I 44 Nội dung công việc VŨ TUẤN ANH: NGUYỄN PHẠM NHẬT MINH: GIỚI THIỆU GIẢI THUẬT SUPPORT VECTOR MACHINE 1.1 CÁC KHÁI NIỆM NỀN TẢNG 1.1.1 Khoảng cách từ điểm tới siêu mặt phẳng Trong không gian chiều, ta biết khoảng cách từ điểm có toạ độ ( x , y ) tới đường thẳng có phương trình w x +w y +b=0 được xác định bởi: |w1 x +w y +b| √w +w 2 Trong không gian ba chiều, khoảng cách từ điểm có toạ độ ( x , y , z ) tới một mặt phẳng có phương trình w x +w y +w z +b=0 được xác định bởi: |w1 x +w y + w3 z0 + b| √w + w + w 2 2 Hơn nữa, ta bỏ dấu trị tuyệt đối tử số, xác định điểm nằm phía của đường thẳng hay mặt phẳng đang xét Những điểm làm cho biểu thức dấu giá trị tuyệt đối mang dấu dương nằm phía (phía dương của đường thẳng), điểm làm cho biểu thức dấu giá trị tuyệt đối mang dấu âm nằm phía cịn lại (phía âm) Những điểm nằm trên đường thẳng/mặt phẳng sẽ làm cho tử số có giá trị 0, tức khoảng cách Việc tổng quát lên không gian nhiều chiều: Khoảng cách từ điểm (vector) có toạ độ x 0 tới siêu mặt phẳng (hyperplane) có phương trình T w x+ b=0 được xác định bởi: |w T x 0+ b| ¿∨w ¿∨¿ ¿ Với  với d số chiều khơng gian NHẬ P MƠ N TRÍ TUỆ NHÂ N TẠ O TRANG BÁ O CÁ O ĐỀ TÀ I 44 1.1.2 Bài toán phân chia hai classes Quay lại với toán trong Perceptron Learning Algorithm (PLA) Giả sử có hai class khác mô tả điểm không gian nhiều chiều, hai classes này linearly separable, tức tồn siêu phẳng phân chia xác hai classes Hãy tìm siêu mặt phẳng phân chia hai classes đó, tức tất điểm thuộc class nằm phía siêu mặt phẳng ngược phía với tồn điểm thuộc class cịn lại Chúng ta biết rằng, thuật tốn PLA có thể làm việc cho vơ số nghiệm hình đây: Các mặt phân cách hai classes linearly separable Câu hỏi đặt là: vô số mặt phân chia đó, đâu mặt phân chia tốt nhất theo tiêu chuẩn đó? Trong ba đường thẳng minh họa hình phía trên, có hai đường thẳng khá lệch về phía class hình trịn đỏ Điều khiến cho lớp màu đỏ khơng vui lãnh thổ xem bị lấn nhiều Liệu có cách để tìm đường phân chia mà hai classes cảm thấy cơng bằng và hạnh phúc nhất hay khơng? Ta cần tìm tiêu chuẩn để đo sự hạnh phúc của class Xét hình đây: NHẬ P MƠ N TRÍ TUỆ NHÂ N TẠ O TRANG BÁ O CÁ O ĐỀ TÀ I 44 Margin hai classes lớn Nếu ta định nghĩa mức độ hạnh phúc của class tỉ lệ thuận với khoảng cách gần từ điểm class tới đường/mặt phân chia, hình bên trái, class trịn đỏ sẽ khơng hạnh phúc cho lắm vì đường phân chia gần class vng xanh nhiều Ta cần đường phân chia cho khoảng cách từ điểm gần class (các điểm khoanh tròn) tới đường phân chia nhau, mới cơng Khoảng cách gọi là margin (lề) Đã có cơng bằng rồi, cần văn minh nữa. Cơng bằng mà hai đều kém hạnh phúc nhau thì chưa phải là văn mình cho Chúng ta xét tiếp hình bên phải khoảng cách từ đường phân chia tới điểm gần class Xét hai cách phân chia đường nét liền màu đen đường nét đứt màu lục, đường làm cho hai class hạnh phúc hơn? Rõ ràng phải đường nét liền màu đen tạo một margin rộng Việc margin rộng hơn sẽ mang lại hiệu ứng phân lớp tốt vì sự phân chia hai classes là rạch ròi Việc này, sau bạn thấy, điểm quan trọng giúp Support Vector Machine mang lại kết phân loại tốt so với Neural Network với layer, tức Perceptron Learning Algorithm Bài tốn tối ưu trong Support Vector Machine (SVM) tốn tìm đường phân chia cho margin là lớn nhất. Đây lý SVM cịn gọi là Maximum Margin Classifier 1.2 XÂY DỰNG BÀI TOÁN TỐI ƯU CHO SVM Giả sử cặp liệu của training set là vector  thể hiện đầu vào của điểm liệu NHẬ P MƠ N TRÍ TUỆ NHÂ N TẠ O  với  là nhãn của điểm TRANG BÁ O CÁ O ĐỀ TÀ I 44 liệu đó. d là số chiều liệu và N là số điểm liệu. Giả sử rằng nhãn của điểm liệu xác định bởi  PLA  (class 1)  (class 2) giống Để dễ hình dung, ta xét trường hợp không gian hai chiều đây. Không gian hai chiều để dễ hình dung, phép tốn hồn tồn tổng qt lên khơng gian nhiều chiều Phân tích tốn SVM Giả sử điểm vng xanh thuộc class 1, điểm trịn đỏ thuộc class -1 mặt   là mặt phân chia hai classes Hơn nữa, class nằm về phía dương, class -1 nằm về phía âm của mặt phân chia Nếu ngược lại, ta cần đổi dấu của w và b Chú ý ta cần tìm hệ số w và b Ta quan sát thấy điểm quan trọng sau đây: với cặp liệu  khoảng cách từ điểm tới mặt phân chia là:  bất kỳ, NHẬ P MƠ N TRÍ TUỆ NHÂ N TẠ O TRANG BÁ O CÁ O ĐỀ TÀ I 44 Điều dễ nhận thấy theo giả sử trên, yn ln dấu với phía của xn Từ suy ra yn cùng dấu với  khơng âm , tử số số Với mặt phần chia trên, margin được tính khoảng cách gần từ điểm tới mặt (bất kể điểm hai classes): Bài tốn tối ưu SVM tốn tìm w và b sao cho margin này đạt giá trị lớn nhất: (1) Việc giải trực tiếp toán phức tạp, nên ta đưa tốn đơn giản Nhận xét quan trọng ta thay vector hệ số w bởi kw và b bởi kb trong đó k là số dương mặt phân chia không thay đổi, tức khoảng cách từ điểm đến mặt phân chia không đổi, tức margin không đổi Dựa tính chất này, ta giả sử: nhất như hình đây: NHẬ P MƠ N TRÍ TUỆ NHÂ N TẠ O với điểm nằm gần mặt phân chia TRANG BÁ O CÁ O ĐỀ TÀ I 44 Các điểm gần mặt phân cách hai classes khoanh trịn Như vậy, với mọi n, ta có: Vậy tốn tối ưu (1) đưa tốn tối ưu có ràng buộc sau đây: (2) Bằng biến đổi đơn giản, ta đưa toán toán đây: (3) Ở đây, lấy nghịch đảo hàm mục tiêu, bình phương để hàm khả vi, nhân với   để biểu thức đạo hàm đẹp Quan sát quan trọng: Trong toán (3), hàm mục tiêu norm, nên hàm lồi Các hàm bất đẳng thức ràng buộc hàm tuyến tính theo w và b, nên chúng hàm lồi Vậy tốn tối ưu (3) có hàm mục tiêu lồi, hàm ràng buộc lồi, nên tốn lồi Hơn nữa, một Quadratic Programming Thậm chí, hàm mục tiêu là strictly NHẬ P MƠ N TRÍ TUỆ NHÂ N TẠ O TRANG BÁ O CÁ O ĐỀ TÀ I 44 convex vì   và I là ma trận đơn vị - ma trận xác định dương Từ suy nghiệm cho SVM là duy Đến tốn giải cơng cụ hỗ trợ tìm nghiệm cho Quadratic Programing, ví dụ CVXOPT Tuy nhiên, việc giải toán trở nên phức tạp số chiều d của không gian liệu số điểm liệu N tăng lên cao Người ta thường giải bài toán đối ngẫu của tốn này. Thứ nhất, tốn đối ngẫu có tính chất thú vị khiến giải hiệu Thứ hai, trình xây dựng tốn đối ngẫu, người ta thấy SVM áp dụng cho những bài toán mà liệu không linearly separable, tức đường phân chia mặt phẳng mà mặt có hình thù phức tạp Xác định class cho điểm liệu mới: Sau tìm mặt phân cách , class điểm xác định đơn giản cách: Trong hàm sgn là hàm xác định dấu, nhận giá trị đối số không âm -1 ngược lại GIỚI THIỆU BÀI TOÁN PHÂN LOẠI VĂN BẢN GIỚI THIỆU NGƠN NGỮ LẬP TRÌNH PYTHON Python là ngơn ngữ lập trình thơng dịch (interpreted), hướng đối tượng (object-oriented), ngôn ngữ bậc cao (high-level)  ngữ nghĩa động (dynamic semantics) Python hỗ trợ module gói (packages), khuyến khích chương trình module hóa tái sử dụng mã Trình thơng dịch Python và thư viện chuẩn mở rộng có sẵn dạng mã nguồn dạng nhị phân miễn phí cho tất tảng phân phối tự NHẬ P MƠ N TRÍ TUỆ NHÂ N TẠ O TRANG BÁ O CÁ O ĐỀ TÀ I 44 Sau đặc điểm của Python:  Ngữ pháp đơn giản, dễ đọc  Vừa hướng thủ tục (procedural-oriented), vừa hướng đối tượng (objectoriented)  Hỗ trợ module hỗ trợ gói (package)  Xử lý lỗi ngoại lệ (Exception)  Kiểu liệu động mức cao  Có thư viện chuẩn module ngoài, đáp ứng tất nhu cầu lập trình  Có khả tương tác với module khác viết trên C/C+ + (Hoặc Java cho Jython, hoặc .Net cho IronPython)  Có thể nhúng vào ứng dụng giao tiếp kịch (scripting interface) Python dễ dàng kết nối với thành phần khác:  Python có thể kết nối với đối tượng COM, .NET (Ironpython, Python for net), và CORBA, Java… Python cũng hỗ trợ bởi Internet Communications Engine (ICE) và nhiều công nghệ kết nối khác  Có thể viết thư viện trên C/C++ để nhúng vào Python và ngược lại Python ngơn ngữ có khả chạy nhiều tảng  Python có cộng đồng lập trình lớn, hệ thống thư viện chuẩn, thư viện mã nguồn mở chia sẻ mạng  Python có cho hệ điều hành: Windows, Linux/Unix, OS/2, Mac, Amiga, hệ điều hành khác NHẬ P MƠ N TRÍ TUỆ NHÂ N TẠ O TRANG 10 BÁ O CÁ O ĐỀ TÀ I 44 Thậm chí có phiên chạy trên .NET, máy ảo Java, điện thoại di động (Nokia Series 60) Với mã nguồn chạy giống tảng Python ngôn ngữ mã nguồn mở  Cài đặt Python dùng giấy phép nguồn mở nên sử dụng phân tối tự do, việc thương mại Giấy phép Python được quản lý bởi Python Software Foundation NHẬ P MƠ N TRÍ TUỆ NHÂ N TẠ O TRANG 11 ... thiệu giải thuật Support Vector Machine 1.1 Các khái niệm tảng 1.1.1 Khoảng cách từ điểm tới siêu mặt phẳng 1.1.2 Bài toán phân chia hai classes 1.2 Xây dựng. .. mặt phân cách , class điểm xác định đơn giản cách: Trong hàm sgn là hàm xác định dấu, nhận giá trị đối số không âm -1 ngược lại GIỚI THIỆU BÀI TOÁN PHÂN LOẠI VĂN BẢN GIỚI THIỆU NGÔN NGỮ LẬP TRÌNH... NGỮ LẬP TRÌNH PYTHON Python là ngơn ngữ lập trình thơng dịch (interpreted), hướng đối tượng (object-oriented), ngôn ngữ bậc cao (high-level)  ngữ nghĩa động (dynamic semantics) Python hỗ trợ

Ngày đăng: 08/11/2022, 13:45

w