Cách chuẩn hóa dữ liệu cho Mạng thần kinh và Rừng quyết định


10

Tôi có một bộ dữ liệu với 20000 mẫu, mỗi mẫu có 12 tính năng khác nhau. Mỗi mẫu thuộc loại 0 hoặc 1. Tôi muốn huấn luyện một mạng lưới thần kinh và một khu rừng quyết định để phân loại các mẫu để tôi có thể so sánh kết quả và cả hai kỹ thuật.

Điều đầu tiên tôi vấp phải là sự chuẩn hóa dữ liệu thích hợp. Một tính năng nằm trong phạm vi [0,106] , một tính năng khác trong [30,40] và có một tính năng chủ yếu lấy giá trị 8 và đôi khi 7. Vì vậy, khi tôi đọc trong các nguồn khác nhau, chuẩn hóa đúng dữ liệu đầu vào là rất quan trọng cho các mạng lưới thần kinh. Như tôi đã tìm ra, có nhiều cách có thể để bình thường hóa dữ liệu, ví dụ:

  1. Chuẩn hóa tối thiểu tối đa : Phạm vi đầu vào được chuyển đổi tuyến tính thành khoảng [0,1] (hoặc cách khác [1,1] , điều đó có quan trọng không?)
  2. Chuẩn hóa điểm Z : Dữ liệu được chuyển đổi thành trung bình bằng 0 và phương sai đơn vị:
    ynew=yoldmeanVar

Nên chọn chuẩn hóa nào? Là bình thường hóa cũng cần thiết cho rừng quyết định? Với chuẩn hóa Z-Score, các tính năng khác nhau của dữ liệu thử nghiệm của tôi không nằm trong cùng một phạm vi. Điều này có thể là một vấn đề? Mọi tính năng có nên được chuẩn hóa với cùng một thuật toán để tôi quyết định sử dụng Min-Max cho tất cả các tính năng hoặc Z-Score cho tất cả các tính năng không?

[1,1]

Tôi cảm thấy hơi lạc lõng vì tôi không thể tìm thấy tài liệu tham khảo trả lời những câu hỏi này.

Câu trả lời:


21

Tôi không đồng ý với các ý kiến ​​khác.

(Xxi,X>xi)

Rừng ngẫu nhiên chỉ là một bó cây quyết định, vì vậy nó không thay đổi lý do này.

Mạng lưới thần kinh là một câu chuyện khác nhau. Trước hết, về mặt dự đoán, nó không tạo ra sự khác biệt. Mạng lưới thần kinh có thể dễ dàng chống lại sự bình thường hóa của bạn vì nó chỉ chia tỷ lệ trọng lượng và thay đổi độ lệch. Vấn đề lớn là trong đào tạo.

Nếu bạn sử dụng một thuật toán như backpropagation đàn hồi để ước tính trọng số của mạng nơ ron, thì nó không có gì khác biệt. Lý do là bởi vì nó sử dụng dấu hiệu của độ dốc, chứ không phải độ lớn của nó, khi thay đổi trọng số theo hướng của bất cứ điều gì giảm thiểu lỗi của bạn. Đây là thuật toán mặc định cho neuralnetgói trong R, nhân tiện.

Khi nào nó làm cho một sự khác biệt? Khi bạn đang sử dụng phương pháp backpropagation truyền thống với các chức năng kích hoạt sigmoid, nó có thể bão hòa dẫn xuất sigmoid.

Hãy xem xét hàm sigmoid (màu xanh lá cây) và đạo hàm của nó (màu xanh):

sigmoid

s(9999)=0

X-tối thiểuXtối đaX-tối thiểuX-0,5

Việc chuẩn hóa thực tế không quan trọng lắm vì nó chỉ ảnh hưởng đến các bước lặp ban đầu của quá trình tối ưu hóa. Miễn là nó được căn giữa và hầu hết dữ liệu của bạn dưới 1, thì điều đó có nghĩa là bạn phải sử dụng ít hơn hoặc nhiều lần lặp lại để có kết quả tương tự. Nhưng kết quả sẽ giống nhau, miễn là bạn tránh được vấn đề bão hòa tôi đã đề cập.

Có một cái gì đó không được thảo luận ở đây là chính quy . Nếu bạn sử dụng chính quy trong hàm mục tiêu của mình, cách bạn bình thường hóa dữ liệu sẽ ảnh hưởng đến mô hình kết quả. Tôi cho rằng bạn đã quen với điều này. Nếu bạn biết rằng một biến dễ gây ra tình trạng thừa, thì việc chuẩn hóa dữ liệu của bạn sẽ được tính đến. Điều này tất nhiên là hoàn toàn độc lập với các mạng thần kinh đang được sử dụng.


2
  1. Không có câu trả lời rõ ràng . Những gì tôi khuyên bạn nên là chia tỷ lệ dữ liệu của mình bằng các cách tiếp cận khác nhau và sau đó sử dụng cùng một mô hình để dự đoán kết quả trên bộ nắm giữ của bạn (RF sẽ hoạt động tốt ở đây). Điều đó ít nhất sẽ cho bạn thấy cách tiếp cận mở rộng nào là tốt nhất trong vấn đề dự đoán của bạn.
  2. Bạn không cần phải chia tỷ lệ dữ liệu của mình cho Rừng ngẫu nhiên
  3. Các phạm vi riêng lẻ không phải là một vấn đề miễn là chúng luôn được thu nhỏ lại. Đây chỉ là minh họa rằng có sự khác biệt giữa các biến, chỉ ở quy mô nhỏ gọn hơn trước.
  4. - tất cả dữ liệu của bạn nên được thu nhỏ theo cùng một cách tiếp cận. Mặt khác, các giá trị trong tập dữ liệu được chuyển đổi của bạn có thể không liên quan đến chính dữ liệu, nhưng thuật toán được sử dụng để chia tỷ lệ.

Hy vọng điều này sẽ giúp.


1
Câu trả lời tuyệt vời, tôi chỉ muốn nói thêm rằng nó phụ thuộc một chút vào phân phối dữ liệu cụ thể mà bạn đang xử lý và liệu bạn có xóa các ngoại lệ hay không. Dữ liệu bình thường sẽ trông rất tốt nếu bạn chuẩn hóa nó. Tuy nhiên, phân phối đồng đều có thể trông tốt hơn nhiều với chuẩn hóa tối thiểu / tối đa. Hơn nữa, phân phối bình thường nhật ký với sigma = 10 có thể ẩn nhiều hành vi thú vị gần bằng 0 nếu bạn tối thiểu hóa / tối đa hóa nó.
AN6U5

@ AN6U5 - Điểm rất tốt. Thành thật tôi đã không nghĩ quá nhiều về tác động của việc nhân rộng lên các phân phối / ngoại lệ cơ bản khác nhau. Có thể cho nó đọc lên sáng nay!
plumbus_bouquet
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.