Làm thế nào để mã hóa một lớp với 24.000 danh mục?


10

Tôi hiện đang làm việc trên một mô hình hồi quy logistic cho bộ gen. Một trong những trường đầu vào tôi muốn đưa vào dưới dạng đồng biến là genes. Có khoảng 24.000 gen được biết đến. Có nhiều tính năng với mức độ biến đổi này trong sinh học tính toán và cần hàng trăm ngàn mẫu.

  • Nếu tôi là LabelEncoder()những gen 24K
  • và sau đó OneHotEncoder()họ ...

Là 24.000 cột sẽ làm cho thời gian đào tạo máy ảnh của tôi không hợp lý cho CPU i7 lõi ​​tứ 2,2 GHz?

Nếu vậy, có một cách tiếp cận khác để mã hóa mà tôi có thể thực hiện với điều này?

Tôi có nên bằng cách nào đó cố gắng dành một lớp mô hình của tôi cho tính năng này?

Điều này có nghĩa là tôi cần các nút đầu vào 24K?


Tại sao không học đại diện bằng VAE? Tôi nghĩ rằng trong trình tự gen học việc biểu diễn (giống như được thực hiện trong NLP) sẽ có nhiều ý nghĩa so với chỉ một PCA đơn giản ...
n1tk

Câu trả lời:


10

Có, sử dụng mã hóa một nóng trên các tính năng 24k yêu cầu các nút đầu vào 24k. Tuy nhiên, đây không phải là một vấn đề đối với Keras (hoặc bất kỳ thư viện học sâu nào khác). Xử lý ngôn ngữ tự nhiên thường sử dụng mã hóa một lần nóng cho các từ có kích thước từ vựng trong cùng một sân bóng.

Nếu bạn đang sử dụng mô hình "sâu", một trong các lớp ẩn của bạn sẽ đảm nhiệm việc giảm tính chiều của dữ liệu của bạn. Một bước tiền xử lý riêng thường không cần thiết.

Thời gian đào tạo không nên vô lý.


Cảm ơn bạn đã kiểm tra sự tỉnh táo.
HashRocketSyntax

Tôi nhận thấy bạn đã đề cập đến một lớp, không phải PCA trong sklearn. Bạn có muốn giới thiệu bộ tự động như một hình thức giảm kích thước không?
HashRocketSyntax

2
Bạn đã đề cập đến việc bạn sử dụng Keras, vì vậy bạn đang sử dụng một loại mạng thần kinh nào đó phải không? Nếu ở đâu đó trong mạng của bạn, bạn có một lớp có số lượng nút nhỏ hơn đầu vào của bạn, thì mạng sẽ tự động thực hiện giảm kích thước. Tôi giả sử bạn chỉ có một (hoặc một số lượng nhỏ) đầu ra hồi quy. Vì vậy, một cách đơn giản là có lớp đầu vào (d = 24k), một hoặc nhiều lớp trung gian (d = 1k hoặc đại loại như thế) và lớp đầu ra của bạn (d = 1).
C. Yduqoli

Mặc dù các lớp kích thước tương tự là phổ biến trong NLP, nhưng nhìn chung việc đào tạo các mô hình NLP hiện đại trên CPU là không hợp lý, GPU thực sự là cổ phần trong NLP cho bất kỳ thứ gì ngoài các mô hình 'đồ chơi' nhỏ. Mặt khác, nó không phải là một rào cản lớn, vì cả GPU vật lý và GPU đám mây đều có sẵn khá dễ dàng.
Peteris

6

Thực thể nhúng cho các biến phân loại ( máy nhắn tin gốc ) sẽ là một cách tiếp cận rất phù hợp ở đây. Đọc trên đây , hoặc ở đây . Tôi thực sự đã đặt các đoạn mã từ đây và ở đó và thực hiện chạy hoàn chỉnh, xem git repo này. Điều này dễ dàng xử lý các biến phân loại hồng y rất cao bằng cách sử dụng các mạng thần kinh. Tôi sẽ không liệt kê ưu và nhược điểm của OHE, bạn chỉ Google nó, nhưng một trong những nhược điểm chính của nó là đặc biệt. khi có một biến phân loại hồng y rất cao thì nó sẽ tăng mạnh không gian tính năng của bạn một cách không cần thiết, theo tôi không phải là lý tưởng. Và quan trọng hơn là OHE, theo hiểu biết của tôi, không tính đến mối quan hệ ngữ nghĩa giữa các danh mục nếu tồn tại một mối quan hệ như vậy! Tuy nhiên, Entity Nhúng là một khái niệm cho Word Nhúng trong NLP, các trọng số đang được học để mã hóa các danh mục có thể có khả năng nắm bắt các mối quan hệ nội bộ.


3

Nói chung, số lượng gen đó nên được giảm xuống thành tập hợp các tính năng có ý nghĩa nhỏ hơn nhiều. Sau đó, bộ tính năng giảm có thể được sử dụng trong mô hình. Ví dụ, Phân tích thành phần chính (PCA) là một trong những kỹ thuật khử phổ biến nhất và đã được sử dụng cho dữ liệu biểu hiện gen .

" Học máy để tích hợp dữ liệu trong sinh học và y học: Nguyên tắc, thực hành và cơ hội" của Zitnika et al. bao gồm một loạt các kỹ thuật kỹ thuật tính năng cho gen.


Cảm ơn bạn có ý nghĩa. Giảm không gian tính năng xuống số lượng gen có liên quan (và các khu vực quy định trong wss).
HashRocketSyntax

Có quá nhiều câu hỏi không để hỏi về loại giảm kích thước nào bạn muốn giới thiệu không?: PCA, đa tạp, phân cụm / mật độ, một số loại mạng lưới thần kinh?
HashRocketSyntax
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.