Làm thế nào để đối phó với sự pha trộn của đầu vào nhị phân và liên tục trong các mạng thần kinh?


14

Tôi đang sử dụng gói nnet trong R để cố gắng xây dựng ANN để dự đoán giá bất động sản cho căn hộ (dự án cá nhân). Tôi chưa quen với điều này và không có nền tảng toán học, vì vậy hãy cởi trần với tôi.

Tôi có các biến đầu vào là cả nhị phân và liên tục. Ví dụ, một số biến nhị phân ban đầu có / không được chuyển đổi thành 1/0 cho mạng lưới thần kinh. Các biến khác là liên tục như thế Sqft.

Mẫu dữ liệu đầu vào

Tôi đã chuẩn hóa tất cả các giá trị theo tỷ lệ 0-1. Có lẽ BedroomsBathroomskhông nên bình thường hóa vì phạm vi của chúng chỉ là 0-4?

Những đầu vào hỗn hợp này có gây ra vấn đề cho ANN không? Tôi đã nhận được kết quả tốt, nhưng khi kiểm tra kỹ hơn các trọng số ANN đã chọn cho một số biến nhất định dường như không có ý nghĩa. Mã của tôi là dưới đây, bất kỳ đề nghị?

ANN <- nnet(Price ~ Sqft + Bedrooms + Bathrooms + Parking2 + Elevator + 
            Central.AC + Terrace + Washer.Dryer + Doorman + Exercise.Room + 
            New.York.View,data[1:700,], size=3, maxit=5000, linout=TRUE, decay=.0001)

CẬP NHẬT: Dựa trên các ý kiến ​​dưới đây liên quan đến việc chia các đầu vào nhị phân thành các trường riêng biệt cho từng lớp giá trị, mã của tôi bây giờ trông như sau:

ANN <- nnet(Price ~ Sqft + Studio + X1BR + X2BR + X3BR + X4BR + X1Bath
        + X2Bath + X3Bath + X4bath + Parking.Yes + Parking.No + Elevator.Yes + Elevator.No 
        + Central.AC.Yes + Central.AC.No + Terrace.Yes + Terrace.No + Washer.Dryer.Yes 
        + Washer.Dryer.No + Doorman.Yes + Doorman.No + Exercise.Room.Yes + Exercise.Room.No 
        + New.York.View.Yes + New.York.View.No + Healtch.Club.Yes + Health.Club.No,
    data[1:700,], size=12, maxit=50000, decay=.0001)

Các nút ẩn trong mã trên là 12, nhưng tôi đã thử một loạt các nút ẩn từ 3 đến 25 và tất cả đều cho kết quả tồi tệ hơn các tham số ban đầu tôi có ở trên trong mã gốc được đăng. Tôi cũng đã thử nó với đầu ra tuyến tính = true / false.

Tôi đoán là tôi cần cung cấp dữ liệu cho nnet theo một cách khác bởi vì nó không diễn giải đúng đầu vào nhị phân. Hoặc là, hoặc tôi cần cung cấp cho nó các tham số khác nhau.

Có ý kiến ​​gì không?


1
Cách tiêu chuẩn để sử dụng dữ liệu nhị phân hoặc phân loại làm đầu vào mạng thần kinh là mở rộng trường thành các vectơ chỉ báo. Chẳng hạn, nếu bạn có một trường có thể lấy các giá trị 1,2 hoặc 3, thì 1 sẽ được mở rộng thành [1,0,0], 2 -> [0,1,0] và 3 -> [ 0,0,1]. Đầu vào có giá trị thực thường được giữ nguyên.
dùng1149913

1
Bây giờ bạn đề cập đến điều này, tôi dường như nhớ lại việc đọc nó ở đâu đó trong quá trình tìm kiếm câu trả lời của tôi. Vì nguồn thông tin có trong tệp csv, tôi thực sự cần thêm các cột để chứa các trường mới cho mỗi đầu vào nhị phân? Chẳng hạn, nếu đầu vào phòng ngủ nằm trong khoảng từ 0-4, sử dụng ví dụ của bạn ở trên, tôi sẽ tạo thêm 4 cột (tổng số 5 vì '0' phòng ngủ có nghĩa là phòng thu) và căn hộ 3BR sẽ được biểu thị là 0,0,0,1 , 0?
ChrisArmstrong

Câu trả lời:


8

Một cách để xử lý tình huống này là hủy bỏ các yếu tố đầu vào sao cho phương sai của chúng có cùng tỷ lệ. Lời khuyên này thường được đưa ra cho mô hình hồi quy, nhưng nó thực sự áp dụng cho tất cả các tình huống mô hình hóa liên quan đến các biến được đo trên các thang đo khác nhau. Điều này là do phương sai của biến nhị phân thường khá khác với phương sai của biến liên tục. Gelman và Hill (2006) khuyên bạn nên thay đổi kích thước đầu vào liên tục theo hai độ lệch chuẩn để có được tính chẵn lẻ với đầu vào nhị phân (không chia tỷ lệ). Khuyến nghị này cũng được phản ánh trong một bài báoblog .

Một khuyến nghị cụ thể hơn cho các mạng thần kinh là sử dụng "mã hóa hiệu ứng" cho các đầu vào nhị phân (nghĩa là -1 và 1) thay vì "mã hóa giả" (0 và 1) và thực hiện thêm bước định tâm các biến liên tục. Những đề xuất này đến từ một Câu hỏi thường gặp mở rộng của Warren Sarle, đặc biệt là các phần "Tại sao không mã đầu vào nhị phân là 0 và 1?" và "Tôi có nên tiêu chuẩn hóa các biến đầu vào?" Các ý chính, mặc dù, là như nhau:

Sự đóng góp của một đầu vào sẽ phụ thuộc rất nhiều vào sự thay đổi của nó so với các đầu vào khác.

Đối với các biến phân loại không có thứ tự - bạn phải chia chúng thành các chỉ số nhị phân. Họ chỉ đơn giản là không có ý nghĩa khác.


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.