lOMoARcPSD|39211872 TRƯỜNG ĐẠI HỌC KIẾN TRÚC HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN ĐỒ ÁN MÔN HỌC CHƯƠNG 19 Chuyên ngành: Công nghệ thông tin Giảng viên hướng dẫn: Sinh viên thực hiện: Trần Văn Trường Phạm Đức Trọng Vũ Nam Phương Lớp: 19CN4 Hà Nội, 05/2 Downloaded by mon hon (monmon1@gmail.com) lOMoARcPSD|39211872 Mục lục Chương 19: Thiết kế và phân tích thí nghiệm Máy học .2 Các yếu tố, Phản ứng và Chiến lược của Thí nghiệm. Thiết kế bề mặt phản hồi. Nguyên tắc cơ bản của thiết kế thí nghiệm (Ngẫu nhiên, lặp lại và chặn) .5 Hướng dẫn cho Thí nghiệm Học máy .6 Phương pháp Cross-Validation và Resampling .1 Phương pháp K-Fold Cross-Validation .7 Đo lường hiệu suất của bộ phân loại .9 Kiểm định giả thuyết.10 Đánh giá hiệu suất của thuật toán phân loại .1 Kiểm định nhị phân .2 Kiểm định xấp xỉ theo phân phối chuẩn .11 So sánh hai thuật toán phân loại .1 Thử nghiệm McNemar. Kiểm tra theo cặp .3 5 × 2 cv Ghép nối t thử nghiệm .4 Thử nghiệm F ghép nối 5 × 2 CV .12 So sánh nhiều thuật toán: Phân tích phương sai .13 So sánh trên nhiều bộ dữ liệu.1 So sánh hai thuật toánkiểm tra dấu hiệu .2 Nhiều thuật toán .14 Thử nghiệm đa biến.
41 Downloaded by mon hon (monmon1@gmail.1 So sánh hai thuật toán .2 So sánh nhiều thuật toán .17 Tài liệu tham khảo. 47 2 Downloaded by mon hon (monmon1@gmail.com) lOMoARcPSD|39211872 Chương 19: Thiết kế và phân tích thí nghiệm Máy học Chương này chúng ta sẽ thảo luận về việc thiết kế các thí nghiệm máy học để đánh giá và so sánh hiệu suất của các thuật toán học trong thực tế, cũng như các kiểm định thống kê để phân tích kết quả của những thí nghiệm này.1 Giới thiệu Trong các chương trước, chúng ta đã thảo luận về một số thuật toán học và thấy rằng, đối với một ứng dụng cụ thể, có nhiều thuật toán có thể áp dụng. Bây giờ, chúng ta quan tâm đến hai câu hỏi: 1. Làm thế nào chúng ta có thể đánh giá được lỗi dự kiến của một thuật toán học trên một vấn đề? Nghĩa là, ví dụ, sau khi sử dụng một thuật toán phân loại để huấn luyện một bộ phân loại trên một tập dữ liệu được rút ra từ một ứng dụng nào đó, chúng ta có thể khẳng định với đủ sự tự tin rằng khi nó được sử dụng trong thực tế, tỷ lệ lỗi dự kiến của nó sẽ nhỏ hơn, ví dụ như 2 phần trăm? 2.
Cho hai thuật toán học, làm thế nào chúng ta có thể khẳng định rằng một thuật toán có lỗi nhỏ hơn thuật toán khác đối với một ứng dụng cụ thể? Các thuật toán so sánh có thể khác nhau, ví dụ như đối với các thuật toán tham số hoặc không tham số, hoặc chúng có thể sử dụng các thiết lập siêu tham số khác nhau. Ví dụ, cho một perceptron đa tầng (chương 11) với bốn đơn vị ẩn và một perceptron khác với tám đơn vị ẩn, chúng ta muốn có thể nói rằng cái nào có lỗi dự kiến nhỏ hơn. Hoặc với bộ phân loại kế thừa gần nhất (chương 8), chúng ta muốn tìm giá trị tốt nhất của k. Chúng ta không thể nhìn vào lỗi huấn luyện và quyết định dựa trên những điều đó.
Tỷ lệ lỗi trên tập huấn luyện, theo định nghĩa, luôn nhỏ hơn tỷ lệ lỗi trên một tập thử nghiệm chứa các trường hợp chưa được nhìn thấy trong quá trình huấn luyện. Tương tự, lỗi huấn luyện không thể được sử dụng để so sánh hai thuật toán. Điều này bởi vì trên tập huấn luyện, mô hình phức tạp hơn với nhiều tham số hầu hết luôn cho ra ít lỗi hơn so với mô hình đơn giản. Như chúng ta đã thảo luận nhiều lần, chúng ta cần một tập xác thực khác với tập huấn luyện.
Ngay cả trên tập xác thực, một lần chạy có thể không đủ. Có hai lý do cho điều này: Thứ nhất, tập huấn luyện và xác thực có thể nhỏ và có thể chứa các trường hợp đặc biệt, như nhiễu và ngoại lệ, có thể đánh lừa chúng ta. Thứ hai, phương pháp học có thể phụ thuộc vào các yếu tố ngẫu nhiên khác ảnh hưởng đến tổng quát hóa. Ví dụ, với một perceptron đa tầng được huấn luyện bằng phương pháp lan truyền ngược, vì 3 Downloaded by mon hon (monmon1@gmail.com) lOMoARcPSD|39211872 gradient descent hội tụ đến điểm cực tiểu cục bộ gần nhất, các trọng số ban đầu ảnh hưởng đến trọng số cuối cùng, và với cùng một kiến trúc và tập huấn luyện cụ thể, bắt đầu từ các trọng số ban đầu khác nhau, có thể có nhiều bộ phân loại cuối cùng có tỷ lệ lỗi khác nhau trên cùng một tập xác thực.
Do đó, chúng ta muốn có nhiều lần chạy để lấy trung bình qua các nguồn ngẫu nhiên như vậy. Nếu chúng ta chỉ huấn luyện và xác thực một lần, chúng ta không thể kiểm tra tác động của những yếu tố như vậy; điều này chỉ được chấp nhận nếu phương pháp học quá tốn kém để chỉ được huấn luyện và xác thực một lần. Chúng ta sử dụng một thuật toán học trên một tập dữ liệu và tạo ra một bộ học. Nếu chúng ta huấn luyện chỉ một lần, chúng ta có một bộ học và một lỗi xác thực.
Để lấy trung bình qua sự ngẫu nhiên (trong dữ liệu huấn luyện, trọng số ban đầu, v.), chúng ta sử dụng cùng một thuật toán và tạo ra nhiều bộ học. Chúng ta kiểm tra chúng trên nhiều tập xác thực và ghi lại một mẫu của lỗi xác thực. (Tất nhiên, tất cả các tập huấn luyện và xác thực nên được lấy từ cùng một ứng dụng.) Chúng ta dựa trên phân phối này để đánh giá lỗi kỳ vọng của thuật toán học cho vấn đề đó, hoặc so sánh nó với phân phối tỷ lệ lỗi của một thuật toán học khác. Trước khi tiếp tục với cách thực hiện điều này, quan trọng để nhấn mạnh một số điểm: 1.
Chúng ta nên nhớ rằng bất kỳ kết luận nào chúng ta rút ra từ phân tích của mình đều được điều kiện bởi tập dữ liệu chúng ta được cung cấp. Chúng ta không so sánh các thuật toán học theo một cách độc lập với miền, mà chỉ trong một ứng dụng cụ thể. Chúng ta không nói gì về lỗi kỳ vọng của một thuật toán học, hoặc so sánh một thuật toán học với thuật toán học khác, nói chung. Bất kỳ kết quả nào chúng ta có chỉ đúng cho ứng dụng cụ thể đó, và chỉ trong phạm vi ứng dụng đó được đại diện trong mẫu chúng ta có.
Và dù sao, như được nêu trong Định lý No Free Lunch (Wolpert 1995), không có gì như "thuật toán học tốt nhất". Đối với bất kỳ thuật toán học nào, đều có một tập dữ liệu nơi nó rất chính xác và một tập dữ liệu khác nơi nó rất kém. Khi chúng ta nói rằng một thuật toán học là tốt, chúng ta chỉ định rõ mức độ phù hợp về mặt khái niệm của nó so với các thuộc tính của dữ liệu. Việc chia một tập dữ liệu đã cho thành một số cặp tập huấn luyện và xác thực chỉ để kiểm tra mục đích.
Khi tất cả các kiểm tra hoàn thành và chúng ta đã chọn thuật toán học tốt nhất cho ứng dụng cụ thể, chúng ta muốn huấn luyện nó bằng toàn bộ dữ liệu đã cho. Điều này chúng ta có thể làm đơn giản bằng cách gộp các tập huấn luyện và xác thực và sử dụng cùng một thuật toán học. 4 Downloaded by mon hon (monmon1@gmail. Vì chúng ta cũng sử dụng tập xác thực để kiểm tra mục đích, ví dụ như để chọn ra thuật toán học tốt hơn trong hai thuật toán, hoặc để quyết định nơi để dừng quá trình học, nó hiệu quả trở thành một phần của dữ liệu chúng ta sử dụng.
Khi sau tất cả các kiểm tra đó, chúng ta quyết định về một thuật toán cụ thể và muốn báo cáo lỗi kỳ vọng của nó, chúng ta nên sử dụng một tập dữ liệu kiểm tra riêng biệt cho mục đích này, không được sử dụng trong quá trình huấn luyện hệ thống cuối cùng này. Dữ liệu này không nên được sử dụng trước đó để huấn luyện hoặc xác thực và nên có kích thước lớn để ước lượng lỗi có ý nghĩa. Vì vậy, khi có một tập dữ liệu, chúng ta nên lấy một phần như là tập kiểm tra và sử dụng phần còn lại cho huấn luyện và xác thực. Thông thường, chúng ta có thể để một phần ba của mẫu là tập kiểm tra, sau đó sử dụng hai phần ba còn lại cho kiểm tra chéo để tạo ra nhiều cặp tập huấn luyện/xác thực, như chúng ta sẽ thấy sau đây.
Vì vậy, tập huấn luyện được sử dụng để tối ưu hóa các tham số, với một thuật toán học và cấu trúc mô hình cụ thể; tập xác thực được sử dụng để tối ưu hóa siêu tham số của thuật toán học hoặc cấu trúc mô hình; và tập kiểm tra được sử dụng ở cuối, sau khi cả hai đã được tối ưu hóa. Ví dụ, với MLP, tập huấn luyện được sử dụng để tối ưu hóa các trọng số, tập xác thực được sử dụng để quyết định số đơn vị ẩn, thời gian huấn luyện, tỷ lệ học, và v. Sau khi đã chọn cấu hình MLP tốt nhất, lỗi cuối cùng được tính trên tập kiểm tra. Với k-NN, tập huấn luyện được lưu trữ như bảng tra cứu; chúng ta tối ưu hóa phép đo khoảng cách và k trên tập xác thực và cuối cùng kiểm tra trên tập kiểm tra.
Nói chung, chúng ta so sánh các thuật toán học dựa trên tỷ lệ lỗi của chúng, nhưng cần lưu ý rằng trong thực tế, lỗi chỉ là một trong các tiêu chí ảnh hưởng đến quyết định của chúng ta. Một số tiêu chí khác bao gồm (Turney 2000): • Rủi ro khi lỗi được tổng quát hóa bằng các hàm mất mát, thay vì sử dụng hàm mất mát 0/1 (phần 3. • Thời gian huấn luyện và độ phức tạp không gian. • Thời gian kiểm tra và độ phức tạp không gian.
• Khả năng giải thích, tức là phương pháp cho phép rút trích kiến thức có thể được kiểm tra và xác nhận bởi các chuyên gia. • Khả năng lập trình dễ dàng. Tầm quan trọng tương đối của những yếu tố này thay đổi tùy thuộc vào ứng dụng cụ thể. Ví dụ, nếu việc huấn luyện chỉ được thực hiện một lần tại nhà máy, thì thời gian huấn luyện và độ phức tạp không gian không quan trọng; nếu yêu 5 Downloaded by mon hon (monmon1@gmail.com) lOMoARcPSD|39211872 cầu tính linh hoạt trong quá trình sử dụng, thì chúng trở nên quan trọng.