Mục lục:
- Trước tiên, bạn cẩn thận phân chia dữ liệu của bạn thành các tập huấn, xác nhận và thử nghiệm. Trước khi thuật toán học được từ dữ liệu, bạn phải đánh giá sự tốt đẹp của các tham số của bạn: kiến trúc (số lớp và các nút trong chúng); chức năng kích hoạt; tham số học tập; và số lần lặp. Đặc biệt, kiến trúc cung cấp những cơ hội tuyệt vời để tạo ra các mô hình tiên đoán mạnh mẽ có nguy cơ bị overfitting cao. Tham số học tập kiểm soát tốc độ mạng học được từ dữ liệu, nhưng nó có thể không đủ để ngăn ngừa việc overfitting dữ liệu huấn luyện.
- thư viện (mạng thần kinh)
Video: 16. Learning: Support Vector Machines 2025
Với cấu trúc mạng nơron, bạn có thể tưởng tượng thuật toán có thể học hầu như bất cứ điều gì từ dữ liệu một cách dễ dàng, đặc biệt nếu bạn thêm vào quá nhiều lớp. Trên thực tế, thuật toán thực hiện tốt các dự đoán của nó thường bị ảnh hưởng bởi một biến thể ước lượng cao được gọi là overfitting. Việc sử dụng quá mức làm cho mạng nơ ron học được mọi chi tiết của các ví dụ huấn luyện, làm cho nó có thể lặp lại chúng trong giai đoạn dự đoán. Nhưng ngoài bộ đào tạo, nó sẽ không bao giờ chính xác dự đoán bất cứ điều gì khác nhau.
Trước tiên, bạn cẩn thận phân chia dữ liệu của bạn thành các tập huấn, xác nhận và thử nghiệm. Trước khi thuật toán học được từ dữ liệu, bạn phải đánh giá sự tốt đẹp của các tham số của bạn: kiến trúc (số lớp và các nút trong chúng); chức năng kích hoạt; tham số học tập; và số lần lặp. Đặc biệt, kiến trúc cung cấp những cơ hội tuyệt vời để tạo ra các mô hình tiên đoán mạnh mẽ có nguy cơ bị overfitting cao. Tham số học tập kiểm soát tốc độ mạng học được từ dữ liệu, nhưng nó có thể không đủ để ngăn ngừa việc overfitting dữ liệu huấn luyện.
Giải pháp đầu tiên là
regularisation, như trong hồi quy tuyến tính và hậu cần. Bạn có thể tổng hợp tất cả các hệ số kết nối, bình phương hoặc giá trị tuyệt đối, để phạt các mô hình có quá nhiều hệ số với các giá trị cao (đạt được bằng cách lập biểu L2) hoặc với các giá trị khác với số không (đạt được bằng cách định chuẩn L1).
- Giải pháp thứ hai cũng hiệu quả vì nó kiểm soát khi quá tải. Nó được gọi là early-stop và hoạt động bằng cách kiểm tra chức năng chi phí trên bộ xác nhận khi thuật toán học được từ tập huấn luyện.
-
R cung cấp cho các thư viện ít phức tạp hơn và dễ tiếp cận hơn, chẳng hạn như nnet, AMORE, và neuralnet. Các ví dụ ngắn gọn trong R thể hiện cách đào tạo cả mạng phân loại (trên bộ dữ liệu Iris) và mạng hồi quy (trên bộ dữ liệu của Boston). Bắt đầu từ phân loại, đoạn mã sau nạp bộ dữ liệu và chia thành tập huấn luyện và kiểm tra:
thư viện (mạng thần kinh)
mục tiêu <- mô hình. matrix (~ Species & # x00A0; - 1, data = iris)
colnames (target) <- c (setosa, versicolor, virginica). hạt giống (101)
chỉ số <- mẫu (1: nrow (iris), 100)
train_predictors <- iris [index, 1: 4]
test_predictors <- iris [-index, 1: 4]
Bởi vì các mạng nơ-ron dựa vào gradient xuôi, bạn cần chuẩn hóa hoặc chuẩn hóa các đầu vào. Bình thường hóa tốt hơn để tối thiểu là 0 và tối đa là một cho mỗi tính năng. Đương nhiên, bạn học làm thế nào để thực hiện chuyển đổi số bằng cách sử dụng tập huấn luyện chỉ để tránh bất kỳ cơ hội sử dụng thông tin từ bài kiểm tra ngoài mẫu.
min_vector <- áp dụng (train_predictors, 2, min)
range_vector <- áp dụng (train_predictors, 2, max) -
apply (train_predictors, 2, min)
train_scaled <- cbind (scale ((
min_vector, range_vector),
min_vector, range_vector),
target [chỉ mục,])
test_scaled <- cbind (quy mô (test_predictors,
min_vector, range_vector),
mục tiêu [-index] summary (train_scaled)
Khi tập huấn luyện đã sẵn sàng, bạn có thể huấn luyện mô hình để đoán ba biến nhị phân, với mỗi biến thể đại diện cho một lớp học. Đầu ra là một giá trị cho mỗi loại tỷ lệ với xác suất của nó là lớp thực. Bạn chọn một dự đoán bằng cách lấy giá trị cao nhất. Bạn cũng có thể hình dung mạng lưới bằng cách sử dụng lô nội bộ và do đó nhìn thấy kiến trúc mạng thần kinh và trọng lượng được giao.
thiết lập. Hạt giống (102)
nn_iris <- Mạng lưới thần kinh (setosa + versicolor + virginica ~ Sepal) + Chiều dài + cánh hoa rộng dữ liệu = train_scaled, hidden = c (9)>
tuyến tính
tuyến tính
dự đoán <- tính toán (nn_iris, test_scaled [1: 4])
y_predicted <- áp dụng (dự đoán $ net. kết quả, 1, tối đa)
y_true <- áp dụng (test_scaled [5: 7], 1, tối đa)
confusion_matrix <- bảng (y_true, y_predicted)
chính xác <- tổng (
print (confusion_matrix)
print (paste ("Độ chính xác:", độ chính xác))
Bạn có thể vẽ một mạng nơron được huấn luyện.
Ví dụ sau minh họa cách dự đoán giá trị của nhà ở Boston, sử dụng bộ dữ liệu Boston. Thủ tục cũng giống như trong phân loại trước, nhưng ở đây bạn có một đơn vị đầu ra duy nhất. Mã cũng vẽ kết quả dự đoán của bộ test với các giá trị thực để xác minh sự phù hợp tốt của mô hình.
các thành phần <- nrow (Boston)
<- colnames (Boston)
. (9)>
, 2, min)
range_vector <- áp dụng (đào tạo, 2, tối đa) - áp dụng (đào tạo, 2, phút)
scaled_train <- scale (tàu, min_vector, range_vector)
công thức = dán ("medv ~", dán (các tính năng [1: 13],
collapse = '&';))
nn_boston <- neuralnet (công thức, dữ liệu = hidden = c (5, 3), tuyến tính = = 999 dự đoán <- tính (nn_boston, scaled_test [1: 13])
predicted_values <- (dự đoán $ net. kết quả *
range_vector [14]) + min_vector [14]
RMSE <- sqrt (trung bình ((kiểm tra [14] - predicted_values) ^ 2))
in (dán ("RMSE: RMSE))
lô (test [14], predicted_values, cex = 1. 5)
abline (0, 1, lwd = 1)
![ĐấU tranh với Overfitting trong Học máy - núm vú ĐấU tranh với Overfitting trong Học máy - núm vú](https://i.howtospotfake.org/img/programming-2018/struggling-with-overfitting-in-machine-learning.jpg)