Boosting là kỹ thuật dùng để tăng độ chính xác cho các thuật toán học. Boosting có nguồn gốc cơ sở lý thuyết dựa trên mơ hình PAC (Probably Approximately Correct). Boosting ra đời như một câu trả lời cho câu hỏi của Kearns: “Liệu có thể xây dựng một học viên mạnh từ một tập hợp các học viên yếu? ”. Nguyên lý cơ bản của nó là kết hợp các bộ phân loại thành một bộ phân loại mạnh. Trong đó, bộ phân loại yếu là các bộ phân loại đơn giản chỉ cần có độ chính xác trên 50%, các bộ phân loại yếu này thì tốt hơn so với việc dự đoán một cách ngẫu nhiên. Bằng cách này, chúng ta nói bộ phân loại đã được “boost”.
Ví dụ 2.1: Một người cá cược đua ngựa với hy vọng tối ưu hóa chiến thắng
đã quyết định tạo ra một chương trình máy tính có thể dự đốn một cách chính xác con ngựa thắng cuộc trong một cuộc đua với những thông tin thông thường như: số trận thắng của mỗi con ngựa, tỉ lệ đặt cược của mỗi con… Để tạo một chương trình như vậy, anh ta yêu cầu một chuyên gia cá cược rất thành công giải thích chiến lược đặt cược của mình. Tất nhiên, người chun gia khơng thể đưa ra rõ
ràng một tập hợp lớn gồm những nguyên tắc để chọn một con ngựa. Mặt khác, khi được giới thiệu tập dữ liệu cụ thể của các cuộc đua, người chuyên gia khơng ngần ngại đưa ra “ngun tắc ngón tay cái” cho tập dữ liệu này, chẳng hạng: đặt cược cho con ngựa thắng hầu hết các cuộc đua gần đây, hay đặt cho con ngựa có tỉ lệ cược tốt nhất… Hiển nhiên, bản thân “nguyên tắc ngón tay cái” vốn rất thô và khơng chính xác, nhưng nó vẫn đưa ra những dự đốn một cách hợp lý và ít nhất nó cũng tốt hơn việc dự đoán ngẫu nhiên. Hơn nữa, bằng cách hỏi đi hỏi lại ý kiến của người chuyên gia đối với những tập hợp khác nhau, người cá cược đã có thể rút trích được nhiều “ngun tắc ngón tay cái”.
Nhưng để sử dụng những “nguyên tắc ngón tay cái” này có hiệu quả nhất, người cá cược phải đối mặt với hai vấn đề. Đầu tiên, anh ta phải chọn những tập dữ liệu như thế nào để khi giới thiệu với người chuyên gia, anh ta có thể rút ra những nguyên tắc hữu dụng nhất. Thứ hai, một khi anh ta đã thu thập được nhiều nguyên tắc, anh ta phải kết hợp chúng lại như thế nào để tạo ra một luật dự đốn đơn lẻ và chính xác cao.
Boosting là một phương pháp hiệu quả để đưa ra một nguyên tắc dự báo chính xác bằng cách kết hợp những ngun tắc thơ và thiếu chính xác trong một khía cạnh nào đó, tương tự với ví dụ 2.1.
Tiến trình của Boosting như sau: cung cấp cho “booster” một tập huấn luyện được dán nhãn gồm các mẫu ( ,x y1 1),..., (xN,yN), với mỗi yi là một nhãn tương ứng cho xi; trở lại ví dụ cá cược đua ngựa ở trên, xi có thể xem là dữ liệu quan sát được từ mỗi cuộc đua cụ thể và yi sẽ là con ngựa thắng cuộc ở mỗi cuộc đua. Với mỗi vòng lặp t = 1,2,…,T “booster” sẽ thiết lập một phân phối Dt trên tập hợp các mẫu và yêu cầu (từ một sự chỉ dẫn nào đó) một giả thuyết yếu hay nguyên tắc ngón tay cái ht với một sai số thấp t đối với Dt. Do đó, phân phối
t
Tvịng lặp, “booster” phải kết hợp những giả thuyết yếu thành một luật dự đốn đơn lẻ.
Ví dụ 2.2: Xét một bài tốn phân loại hai lớp với D là tập huấn luyện gồm
có n mẫu. Trước tiên, chúng ta sẽ chọn ngẫu nhiên ra n1 mẫu từ tập D (n1<n) để
tạo tập D1. Sau đó, chúng ta sẽ xây dựng bộ phân loại yếu đầu tiên C1 từ tập D1.
Tiếp theo, chúng ta xây dựng tập D2 để huấn luyện bộ phân loại C2. D2 sẽ được
xây dựng sao cho một nửa số mẫu của nó được phân loại đúng bởi C1 và nửa còn
lại bị phân loại sai bởi C1. Bằng cách này, D2 chứa đựng những thông tin bổ sung
cho C1. Bây giờ chúng ta sẽ xây huấn luyện C2 từ D2. Tiếp theo, chúng ta sẽ xây dựng tập D3 từ những mẫu không được phân loại tốt bởi sự kết hợp giữa C1 và C2: những mẫu còn lại trong D mà C1 và C2 cho kết quả khác nhau. Như vậy, D3 sẽ gồm những mẫu mà C1 và C2 hoạt động không hiệu quả. Sau cùng, chúng ta sẽ
huấn luyện bộ phân loại C3 từ D3. Bây giờ chúng ta đã có một bộ phân loại mạnh là sự kết hợp C1, C2 và C3. Khi tiến hành nhận dạng một mẫu X, kết quả sẽ được
quyết định bởi sự thỏa thuận của ba bộ C1, C2 và C3. Nếu cả C1 và C2 đều phân X vào cùng một lớp thì lớp này chính là kết quả phân loại của X. Ngược lại, nếu C1
và C2 phân X vào 2 lớp khác nhau, C3 sẽ quyết định X thuộc về lớp nào, hình 2.7. Có nhiều thuật tốn boosting và cải tiến của nó được đưa ra điển hình như: Boosting by majority, AdaBoost, LPBoost, TotalBoost, BrownBoost, MadaBoost, LogitBoost,… Trong số đó, AdaBoost phổ biến nhất và có tầm ảnh hưởng to lớn trong sự phát triển của thuật tốn boosting.
2.2.3 AdaBoost
• Giới thiệu về AdaBoost
Adaboost là một cải tiến của tiếp cận Boosting được Freund và Schapire đưa ra vào năm 1995. Adaboost là phương pháp nhằm để tăng độ chính xác cho các thuật tốn học, AdaBoost cũng hoạt động trên nguyên tắc kết hợp tuyến tính các bộ phân loại yếu để có một bộ phân loại mạnh. Có hai lý do chính để giải thích
cho sự thành cơng của AdaBoost: một là tính đơn giản của AdaBoost, hai là một đặc điểm của AdaBoost mà các thuật tốn Boosting trước nó đều thiếu: tính thích nghi.
Là một cải tiến của tiếp cận Boosting, Adaboost sử dụng thêm khái niệm trọng số để đánh dấu các mẫu khó nhận dạng. Trong q trình huấn luyện, cứ mỗi bộ phân loại yếu được xây dựng, thuật toán sẽ tiến hành cập nhật lại trọng số để chuẩn bị cho việc xây dựng bộ phân loại yếu kế tiếp: tăng trọng số của các mẫu bị nhận dạng sai và giảm trọng số của các mẫu được nhận dạng đúng bởi bộ phân loại yếu vừa xây dựng. Bằng cách này, các bộ phân loại yếu được xây dựng ở bước sau có thể tập trung vào các mẫu mà các bộ phân loại yếu trước nó chưa làm tốt. Sau cùng, các bộ phân loại yếu sẽ được kết hợp tùy theo mức độ “tốt” của chúng để tạo dựng nên một bộ phân loại mạnh , hình 2.8.
• Thuật toán AdaBoost Đầu vào:
1. Cho một tập huấn luyện gồm N mẫu có đánh dấu (x1, y1), (x2, y2),...,