So sánh nén predictor và stac năm 2024
Trong
4 tồn tại định lý “không có bữa trưa miễn phí” (
5), tức là không tồn tại một thuật toán mà luôn tốt cho mọi ứng dụng và mọi tập dữ liệu, vì các thuật toán
6 thường dựa trên một tập các tham số (
8 của mình có thể các bạn sẽ cần nhiều thời gian để
9 các thuật toán khác nhau. Rồi từ đó thực hiện hiệu chỉnh các tham số (
Một cách khác có thể sử dụng để tăng độ chính xác trên tập
8 của bạn là kết hợp (
3. Ý tưởng của việc
2 các mô hình khác nhau xuất phát từ một suy nghĩ hợp lý là: các mô hình khác nhau có khả năng khác nhau, có thể thực hiện tốt nhất các loại công việc khác nhau (
5), khi kết hợp các mô hình này với nhau một cách hợp lý thì sẽ tạo thành một mô hình kết hợp (
Các phương pháp
8 được chia thành 3 loại sau đây:
Trong post này, trước hết tôi sẽ giới thiệu 3 kỹ thuật
2 kể trên, sau đó là cách sử dụng thư viện
3 và
4 trong
5 để triển khai chúng và áp dụng vào bài toán cụ thể. Để cài đặt 2 thư viện này ta dùng lệnh
6 với tham số đầu vào là tên thư viện muốn cài:
Đôi nét về thư viện caret: Ngôn ngữ
5 khác biệt bởi số lượng rất lớn các
8 chuyên dụng khác nhau cho phép xây dựng các mô hình dự đoán. Tuy nhiên đây cũng chính là khuyết điểm, khi có quá nhiều các gói triển khai
9 dưới dạng các hàm
0 đòi hỏi ta cần nhiều thời gian để tìm kiếm và nắm vững những đặc trưng về cú pháp cũng như cách sử dụng của từng hàm. Để giải quyết vấn đề này Max Kuhn đã xây dựng một giao diện phổ quát cho phép truy cập và sử dụng các
9 từ cái gói khác nhau được triển khai trên ngôn ngữ
5. Kết quả chính là package caret (viết tắt từ Classification and Regression Training), được công bố đầu tiên vào năm 2008 tại tạp chí phần mềm thống kê Journal of Statistical Software. Gói
3 giúp chúng ta tiết kiệm được rất nhiều thời gian trong quá trình phân tích và xây dựng các
4. Dưới đây là một số đặc trưng cơ bản của gói
3:
1. Phân biệt 3 kỹ thuật boosting, baggig và statcking Bagging xây dựng một lượng lớn các
4 (thường là
2 khác nhau từ tập
3 một cách song song nhằm đưa ra dự đoán tốt hơn. Boosting xây dựng một lượng lớn các
4 (thường là
1). Tuy nhiên quá trình huấn luyện trong phương pháp này diễn ra tuần tự theo chuỗi (sequence). Trong chuỗi này mỗi
6 sau sẽ học cách sửa những
7 của
6 trước (hay nói cách khác là dữ liệu mà
6 trước dự đoán sai). Stacking xây dựng một số
4 (thường là
2, mô hình này sẽ học cách kết hợp kết quả dự báo của một số mô hình một cách tốt nhất. 2. Thực hành Nạp các thư viện cần dùng vào phiên làm việc của
5 để thực hành:
Kiểm tra số lượng các machine learning algorithms trong R được hỗ trợ bởi
3:
2.1 Dữ liệu để thực hành Để thực hành tôi lựa chọn bài toán phân loại nhị phân (
6. Trong bài toán này chúng ta cần dự đoán xem cao tần trả vể từ năng lượng của các hạt trong khí quyển có cấu trúc hay là không. Để tìm hiểu thêm về bài toán này các bạn có thể đọc ở đây. Load dữ liệu từ gói
7:
2.1.1 Thống kê mô tả (descriptive statistics) Kiểm tra kích thước tập dữ liệu:
Kiểm tra cấu trúc của tập dữ liệu:
Hiển thị
8 hàng dữ liệu đầu tiên:
0 Kiểm tra
9 trong dữ liệu:
1
2 Kiểm tra phân phối của từng thuộc tính:
3
4 Thuộc tính thứ
00 chỉ có 1 giá trị là
01 nên có thể loại bỏ:
5 Chuyển thuộc tính
02 từ
03 sang
04:
6 Kiểm tra mức độ tương quan (
7
8 2.1.2 Trực quan hóa dữ liệu (
06) Do số lượng thuộc tính nhiều nên tôi chỉ thực hiện
06 đối 12 thuộc tính đầu của tập dữ liệu.
08 cho 12 thuộc tính đầu:
9
09 cho 12 thuộc tính đầu:
0 Trong bước này nếu phát hiện trong các thuộc tính có nhiều giá trị ngoại lai (
10 trong dữ liệu cho
4 bằng các phương pháp thống kê tại đây. 2.1.3 Tiền xử lý dữ liệu (
13) Xác định và Loại bỏ các thuộc tính tương quan với nhau cao (>0.75)
1
2 Ở đây không có các thuộc tính tương quan cao với nhau, tuy nhiên nếu có thì các bạn có thể loại bỏ chúng như sau:
3 Chuẩn hóa giá trị của các thuộc tính (
15:
4 Vậy là dữ liệu của chúng ta đã sẵn sàng để
9 các thuật toán
2 rồi. 2.2. Thuật toán Boosting Trong phạm vi post này tôi sẽ test hai thuật toán
18 khá phổ biến là:
19 và
20 Dưới đây là ví dụ huấn luyện hai mô hình này trên
5 với các tham số mặc định:
5 So sánh kết quả hai mô hình:
6
7
8 Từ kết quả so sánh ta thấy thuật toán
19 cho kết quả chính xác hơn so với
20 trong bài toán này (với độ chính xác là
24) 2.3 Thuật toán Bagging Chúng ta cùng test hai thuật toán thuộc kỹ thuật
9 là:
26 và
27 Dưới đây là ví dụ huấn luyện hai mô hình này trên
5 với các tham số mặc định:
9 So sánh kết quả hai mô hình:
0
1
2 Từ kết quả so sánh ta thấy thuật toán
27 cho kết quả chính xác hơn so với
30 trong bài toán này (với độ chính xác là
31). Tuy nhiên cả hai thuật toán
9 đều có độ chính xác nhỏ hơn so với 2 thuật toán
0 trước. 2.4. Thuật toán Stacking Để kết hợp các mô hình
4 khác nhau trong
5 chúng ta sử dụng thư viện caretEnsemble. Với danh sách các
36, hàm
37 của gói này có thể sự dụng để chỉ định mô hình bậc cao hơn, từ đó sẽ học cách tìm sự kết hợp tốt nhất những
38 với nhau. Ở ví dụ này, tôi sẽ sử dụng 5
38 sau cho tập dữ liệu
40:
Dưới đây là ví dụ huấn luyện 5 mô hình này trên
5 với các tham số mặc định:
3 So sánh kết quả các mô hình:
4
5
6 Ta thấy trong các mô hình này thì
45 cho kết quả chính xác nhất (
48). Giờ chúng ta hãy thử dùng kỹ thuật
49 để xem có thể cải thiện được độ chính xác không.
50: Khi các bạn muốn kết hợp các mô hình với nhau sử dụng kỹ thuật
49, thì các bạn cần kiểm chứng rằng kết quả dự báo từ các mô hình này tương quan với nhau thấp. Nếu kết quả dự báo của các
38 tương quan cao với nhau (> 0.75) thì có nghĩa là chúng sẽ cho kết quả dự báo tương tự nhau, điều này sẽ làm giảm hiệu quả khi ta kết hợp các mô hình này với nhau. Kiểm tra độ tương quan giữa các
38:
7
8
9 Nhìn vào kết quả ta có thể thấy các
54 cho kết quả dự báo tương quan với nhau thấp theo từng cặp. Cặp tương quan với nhau nhất là
45 và
44 với độ tương quan
57, cũng vẫn nhỏ hơn mức quy địn là cao (
58). Nào chúng ta hãy thử kết hợp
59 của các
38 sử dụng mô hình
61:
0
1 Độ chính xác cải thiện lên
62 so với chỉ sử dụng
63 là
48, tuy nhiên cũng chưa có độ chênh lệnh nhiều. |