Thực hiện chuẩn hóa tính năng trước hoặc trong xác nhận mô hình?


52

Một thực tiễn tốt phổ biến trong Machine Learning là thực hiện tính năng chuẩn hóa hoặc chuẩn hóa dữ liệu của các biến dự đoán, đó là, tập trung vào dữ liệu trừ giá trị trung bình và chuẩn hóa nó chia cho phương sai (hoặc độ lệch chuẩn). Để tự ngăn chặn và theo sự hiểu biết của tôi, chúng tôi làm điều này để đạt được hai điều chính:

  1. Tránh trọng lượng mô hình nhỏ thêm cho mục đích ổn định số.
  2. Đảm bảo sự hội tụ nhanh chóng của các thuật toán tối ưu hóa, ví dụ như Conjugate Gradient sao cho độ lớn của một kích thước dự đoán sẽ không dẫn đến sự hội tụ chậm.

Chúng tôi thường chia dữ liệu thành các bộ đào tạo, xác nhận và thử nghiệm. Trong tài liệu chúng ta thường thấy rằng để thực hiện tính năng chuẩn hóa, chúng lấy giá trị trung bình và phương sai (hoặc độ lệch chuẩn) trên toàn bộ tập hợp các biến dự đoán. Lỗ hổng lớn tôi thấy ở đây là nếu bạn làm điều đó, trên thực tế bạn đang giới thiệu thông tin trong tương lai vào các biến dự đoán đào tạo, cụ thể là thông tin tương lai chứa trong giá trị trung bình và phương sai.

Do đó, tôi thực hiện tính năng chuẩn hóa trên dữ liệu huấn luyện và lưu giá trị trung bình và phương sai. Sau đó, tôi áp dụng chuẩn hóa tính năng cho các biến dự đoán của các bộ dữ liệu kiểm tra và xác thực bằng cách sử dụng giá trị trung bình và phương sai huấn luyện. Có bất kỳ sai sót cơ bản với điều này? bất cứ ai có thể đề nghị một sự thay thế tốt hơn?


Câu trả lời:


46

Cách tiếp cận của bạn là hoàn toàn chính xác. Mặc dù các phép biến đổi dữ liệu thường được đánh giá thấp là "tiền xử lý", người ta không thể nhấn mạnh đủ rằng các phép biến đổi để tối ưu hóa hiệu suất mô hình có thể và nên được coi là một phần của quá trình xây dựng mô hình.

Lý do: Một mô hình sẽ được áp dụng trên dữ liệu chưa nhìn thấy, nói chung không có sẵn tại thời điểm mô hình được xây dựng. Quá trình xác nhận (bao gồm phân tách dữ liệu) mô phỏng điều này. Vì vậy, để có được ước tính tốt về chất lượng mô hình (và sức mạnh tổng quát), người ta cần hạn chế tính toán các tham số chuẩn hóa (trung bình và phương sai) cho tập huấn luyện.

Tôi chỉ có thể đoán tại sao điều này không phải lúc nào cũng được thực hiện trong văn học. Một lập luận có thể là, việc tính toán trung bình và phương sai không nhạy cảm với các biến thể dữ liệu nhỏ (nhưng ngay cả điều này chỉ đúng nếu kích thước mẫu cơ bản đủ lớn và dữ liệu được phân phối bình thường mà không có các ngoại lệ cực đoan).


Tôi thấy điều này hơi khó hiểu. OP cho biết ông đang thực hiện chuẩn hóa tính năng trên các bộ dữ liệu kiểm tra và xác thực. Trả lời của bạn đầu tiên nói rằng cách tiếp cận của ông là chính xác. Sau đó, bạn nói "người ta cần hạn chế việc tính toán các tham số chuẩn hóa cho tập huấn luyện", đó không phải là điều anh ta đang làm. Vì vậy, phản ứng của bạn mâu thuẫn với chính nó bằng cách nói với anh ấy những gì anh ấy đang làm là chính xác và sau đó đề nghị khác. Tôi đang thiếu gì ở đây?
mahonya

4
Những gì OP làm được mô tả trong đoạn cuối của anh ấy và đây chính xác là những gì tôi đã nói. Tất nhiên chuẩn hóa được áp dụng cho tập kiểm tra / xác nhận hợp lệ nếu nó đã được áp dụng cho tập huấn luyện. Điểm quan trọng là, các tham số của chuẩn hóa này đã được tính toán trên dữ liệu huấn luyện chứ không phải trên toàn bộ tập hợp. Hi vọng điêu nay co ich.
steffen

À, cảm ơn rất nhiều. Tôi đã hiểu nhầm câu trả lời của bạn. Tôi mặc dù bạn chỉ đề xuất 'ứng dụng' chuẩn hóa cho tập huấn luyện, đây rõ ràng không phải là những gì bạn đã đề xuất.
mahonya

2

Chuẩn hóa tính năng là tạo các tính năng khác nhau trong cùng một tỷ lệ. Việc chia tỷ lệ tăng tốc độ giảm độ dốc bằng cách tránh nhiều lần lặp lại được yêu cầu khi một hoặc nhiều tính năng có giá trị lớn hơn nhiều so với phần còn lại (Không chia tỷ lệ, hàm chi phí được hiển thị sẽ hiển thị sự bất đối xứng tuyệt vời).

Tôi nghĩ rằng nó có ý nghĩa rằng sử dụng giá trị trung bình và var từ tập huấn luyện khi dữ liệu kiểm tra đến. Tuy nhiên, nếu kích thước dữ liệu là rất lớn, cả hai tập huấn luyện và xác nhận có thể được xem xấp xỉ là phân phối bình thường, do đó chúng có chung giá trị trung bình và var.


1
Lý do tại sao chuẩn hóa dữ liệu có thể tăng tốc độ giảm độ dốc, tôi đoán, là do không chuẩn hóa, rss có các đường viền hình elip, do đó với tốc độ học tập cố định, nó có thể cần nhiều lần lặp hơn để giảm độ dốc để hội tụ. Trong khi với tỷ lệ, rss có các đường viền vòng tròn (đối xứng), do đó độ dốc giảm dần hội tụ nhanh. Tôi có đúng không

1

Phương pháp bạn đã mô tả là âm thanh như những người khác đã nói. Bạn nên thực hiện chuyển đổi chính xác tương tự trên các tính năng của bộ kiểm tra như bạn thực hiện trên các tính năng từ bộ đào tạo của mình.

Tôi nghĩ rằng đáng để thêm rằng một lý do khác để chuẩn hóa tính năng là để tăng cường hiệu suất của các quy trình nhất định nhạy cảm với sự khác biệt đối với quy mô của các biến nhất định. Ví dụ, phân tích thành phần chính (PCA) nhằm mục đích nắm bắt tỷ lệ phương sai lớn nhất và kết quả là sẽ tăng thêm trọng lượng cho các biến thể hiện phương sai lớn nhất nếu việc chuẩn hóa tính năng không được thực hiện ban đầu.


Điểm rất tốt! cảm ơn bạn đã mang nó vào. Tôi nhớ lại từ các nghiên cứu của tôi luôn bình thường hóa ma trận đầu vào trước khi tính toán PCA.
SkyWalker
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.