Mạng thần kinh cho hồi quy đa đầu ra


21

Tôi có một bộ dữ liệu chứa 34 cột đầu vào và 8 cột đầu ra.

Một cách để giải quyết vấn đề là lấy 34 đầu vào và xây dựng mô hình hồi quy riêng cho từng cột đầu ra.

Tôi tự hỏi liệu vấn đề này có thể được giải quyết chỉ bằng một mô hình đặc biệt là sử dụng Mạng thần kinh.

Tôi đã sử dụng Perceptionron đa lớp nhưng cần nhiều mô hình giống như hồi quy tuyến tính. Sequence to Sequence có thể là một lựa chọn khả thi không?

Tôi đang sử dụng TensorFlow. Tôi có mã nhưng tôi nghĩ điều quan trọng hơn là phải hiểu những gì tôi đang bỏ lỡ về mặt lý thuyết perceptionron đa lớp.

Tôi hiểu rằng trong MLP nếu bạn có một nút đầu ra, nó sẽ cung cấp một đầu ra. Nếu bạn có 10 nút đầu ra thì đó là một vấn đề đa lớp. Bạn chọn lớp có xác suất cao nhất trong số 10 đầu ra. Nhưng trong trường hợp của tôi, chắc chắn sẽ có 8 đầu ra cho cùng một đầu vào.

Hãy nói rằng, đối với một tập hợp các đầu vào, bạn sẽ có tọa độ 3D của một cái gì đó (X, Y, Z). Giống như, Đầu vào = {1,10,5,7} Đầu ra = {1,2,1}. Vì vậy, với cùng một đầu vào {1,10,5,7} tôi cần tạo các mô hình cho giá trị X giá trị Y và Z. Một giải pháp là có 3 mô hình khác nhau sử dụng MLP. Nhưng tôi muốn xem nếu tôi có thể có một mô hình. Vì vậy, tôi nghĩ về việc sử dụng seq2seq. Bởi vì bộ mã hóa lấy một loạt đầu vào và bộ giải mã cung cấp một loạt đầu ra. Nhưng có vẻ như seq2seq trong tenorflow không thể xử lý các giá trị float. Tôi có thể sai về điều này mặc dù.


Bạn dường như có một số vấn đề trong việc hiểu mô hình NN perceptron đa lớp, và cả TensorFlow - những tuyên bố của bạn về những điều này là không chính xác. Tuy nhiên, không rõ tại sao bạn có sự hiểu lầm đó, điều đó có nghĩa là một câu trả lời không thể giúp bạn khắc phục điều này. Dự đoán ví dụ 8 đầu ra hồi quy trong một mô hình NN đơn giản là dễ dàng trong hầu hết các khung NN, không cần trình tự trong trường hợp của bạn. Vì vậy, tôi nghĩ rằng có thể rất quan trọng để xem đoạn cuối của bạn dựa trên điều gì để giúp bạn - bạn có thể thêm một số chi tiết về những gì bạn đã thấy hoặc đã cố gắng để đi đến những suy nghĩ đó không?
Neil Slater

Bạn có thể cung cấp câu trả lời làm thế nào để có được 8 đầu ra hồi quy bằng một mô hình NN không? Cảm ơn.
sjishan

Có lẽ, nếu bạn giải thích một vài điều bằng cách chỉnh sửa câu hỏi của bạn: 1) Trong khuôn khổ nào? 2) Mã của bạn (hoặc thiết kế là gì, nếu bạn không có mã) cho đến nay? 3) Điều gì ngăn cản bạn làm điều này bản thân? Tôi cần 1 và 2 để trả lời những thứ bạn có thể sử dụng. Tôi cần 3 để hiểu vấn đề của bạn là gì và giải thích giải pháp.
Neil Slater

1. Dòng chảy. 2. Tôi có mã nhưng tôi nghĩ điều quan trọng hơn là phải hiểu những gì tôi đang bỏ lỡ về mặt lý thuyết perceptionron đa lớp. Tôi hiểu rằng trong MLP nếu bạn có một nút đầu ra, nó sẽ cung cấp một đầu ra. Nếu bạn có 10 nút đầu ra thì đó là một vấn đề đa lớp. Bạn chọn lớp có xác suất cao nhất trong số 10 đầu ra. Nhưng trong trường hợp của tôi, chắc chắn sẽ có 8 đầu ra cho cùng một đầu vào. Hãy để tôi chỉ ra một ví dụ khác, Hãy nói, đối với một tập hợp các đầu vào, bạn sẽ có tọa độ 3D của một cái gì đó (X, Y, Z). Giống như, Đầu vào = {1,10,5,7} Đầu ra = {1,2,1}
sjishan

Vì vậy, với cùng một đầu vào {1,10,5,7} tôi cần tạo các mô hình cho giá trị X giá trị Y và Z. Một giải pháp là có 3 mô hình khác nhau sử dụng MLP. Nhưng tôi muốn xem nếu tôi có thể có một mô hình. Vì vậy, tôi nghĩ về việc sử dụng seq2seq. Bởi vì bộ mã hóa lấy một loạt đầu vào và bộ giải mã cung cấp một loạt đầu ra. Nhưng có vẻ như seq2seq trong tenorflow không thể xử lý các giá trị float. Tôi có thể sai về điều này mặc dù.
sjishan

Câu trả lời:


14

Những gì bạn đang mô tả là một hồi quy tuyến tính đa chiều bình thường. Loại vấn đề này thường được giải quyết với một mạng tiếp liệu, MLP hoặc bất kỳ kiến ​​trúc nào khác phù hợp với bản chất của vấn đề.

Bất kỳ khung mạng thần kinh đều có thể làm một cái gì đó như thế.

Chìa khóa để làm điều đó là hãy nhớ rằng lớp cuối cùng phải có kích hoạt tuyến tính (tức là không có kích hoạt nào cả).

Theo yêu cầu của bạn, hình dạng của lớp đầu vào sẽ là một vectơ (34,) và đầu ra (8,).

Cập nhật: hàm mất thông thường được sử dụng cho các vấn đề hồi quy có nghĩa là lỗi bình phương (MSE). Đây là một ví dụ về hồi quy đa chiều bằng cách sử dụng Keras ; mạng không phải là MLP nhưng nó sẽ ổn để minh họa ý tưởng.


1
Có lẽ đáng để thêm một dòng về hàm chi phí thông thường cho hồi quy (lỗi bình phương trung bình) và chỉ ra ví dụ hồi quy TensorFlow - mặc dù tôi chỉ mất 10 phút để tìm kiếm một cái và không thấy gì. . . (ví dụ bỏ qua từ hồi quy tuyến tính đến phân loại MNIST, nhưng không có mô hình hồi quy MLP cơ bản).
Neil Slater

3

Bạn có thể thực hiện điều này rất đơn giản trong Python.
X của bạn sẽ là tập hợp các tọa độ x, y, z.
Y của bạn sẽ là tập hợp các tọa độ x, y, z thử nghiệm.

from sklearn import cross_validation                     
from sklearn.neural_network import MLPRegressor   

model = MLPRegressor(solver='lbfgs',alpha=0.001,hidden_layer_sizes=(150,))
cross_validation.cross_val_score(model, X, Y,scoring='mean_squared_error')

0

Điều này dễ dàng hơn nhiều so với bạn nghĩ - bạn có thể chỉ cần đặt lớp đầu ra của mình thành một vectơ thay vì một vô hướng. Tất nhiên không có phép thuật nào ở đây và tôi khuyên bạn nên chuẩn bị dữ liệu của mình (thực hiện chuẩn hóa hàng loạt để tất cả các kết quả đầu ra sẽ là các giá trị trong khoảng từ 0 đến 1).

Nếu bạn đang sử dụng Keras, cách để thực hiện việc này là bằng cách thêm một lớp dày đặc làm lớp đầu ra cuối cùng: model.add(Dense(8, activation='linear'))

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.