Hồi quy logistic trên dữ liệu lớn


9

Tôi có một bộ dữ liệu khoảng 5000 tính năng. Đối với dữ liệu đó, lần đầu tiên tôi sử dụng kiểm tra Chi Square để lựa chọn tính năng; Sau đó, tôi nhận được khoảng 1500 biến thể hiện mối quan hệ quan trọng với biến trả lời.

Bây giờ tôi cần phải phù hợp với hồi quy logistic về điều đó. Tôi đang sử dụng gói glmulti cho R (gói glmulti cung cấp lựa chọn tập hợp con hiệu quả cho vlm) nhưng nó chỉ có thể sử dụng 30 tính năng một lúc, hiệu suất của nó giảm xuống vì số lượng hàng trong bộ dữ liệu của tôi là khoảng 20000.

Có cách tiếp cận hoặc kỹ thuật nào khác để giải quyết các vấn đề trên không? Nếu tôi đi theo phương pháp trên thì sẽ mất quá nhiều thời gian để phù hợp với mô hình.


8
Nếu bạn có thể điều chỉnh tập dữ liệu của mình trong bộ nhớ của một máy, tôi sẽ không gọi đây là sự cố "Dữ liệu lớn", đặc biệt nếu bạn thực hiện việc này trong tiêu đề câu hỏi của bạn
logc

Tôi đang sử dụng sklearn's LogisticRegressionvà nó giải quyết một 4000 tính năng, 20.000 hàng vấn đề trong khoảng một phút trên máy tính xách tay của tôi.
Thomas Ahle

Câu trả lời:


13

Không phù hợp để thực hiện sàng lọc tính năng và sau đó đưa các tính năng còn sót lại vào một phương pháp không hiểu được bao nhiêu tra tấn dữ liệu đã được thực hiện trước đó. Tốt hơn là sử dụng một phương pháp có thể xử lý tất cả các tính năng tiềm năng (ví dụ: lưới đàn hồi). Những đề xuất của người khác về việc sử dụng giảm dữ liệu cũng là những ý tưởng tuyệt vời.


Có bằng chứng cho điều này? O / w có vẻ giống như một heuristic như sàng lọc tính năng.
Zubin

2
Ước tính khả năng tối đa bị phạt có tính đến bối cảnh, ví dụ, trong ước tính hệ số hồi quy của biến sẽ nhỏ hơn nếu bạn xem xét 1000 biến không được chọn so với khi bạn xem xét 100 biến không được chọn. Mặt khác, các biến được chọn theo cách thiên vị và chỉnh lại biến trong bước thứ hai làm mất bối cảnh.
Frank Harrell

Bạn có thể giải thích những gì bạn có nghĩa là thiên vị ở đây? Tôi tự hỏi, bởi vì trong một ý nghĩa tầm thường, Lasso luôn thiên vị, vì vậy bạn phải tham khảo thêm một thiên vị. Ngoài ra, có một số cách tiếp cận hai giai đoạn với các thuộc tính hợp lý, ví dụ pdfs.semanticscholar.org/d90a/ mẹo
jmb

2
Các Lasso cố những thành kiến đối với hệ số zero để ngăn chặn overfitting. Các tham số không được dẫn đến các giá trị dự đoán quá cực. Ghép các biến "được chọn" trong một mô hình chưa được mở rộng sẽ hoàn tác xu hướng lasso cần thiết , tạo ra quá nhiều giá trị dự đoán.
Frank Harrell

10

Cách tiếp cận đầu tiên là sử dụng PCA để giảm tính chiều của bộ dữ liệu. Cố gắng giữ lại ~ 97% tổng phương sai, điều này có thể giúp ích khá nhiều.

Một tùy chọn khác là sử dụng một cái gì đó như giảm độ dốc ngẫu nhiên, đây có thể là thuật toán nhanh hơn nhiều và có thể phù hợp với bộ nhớ của R.

EDIT: Một vấn đề với R là bạn chỉ có thể sử dụng RAM của mình, vì vậy nếu bạn chỉ có 8 GB bộ nhớ thì đó là những gì bạn bị giới hạn. Tôi đã gặp phải nhiều vấn đề với điều này và từ đó đã chuyển sang sử dụng scikit-learn của python, dường như xử lý các bộ dữ liệu lớn hơn tốt hơn nhiều.

Một biểu đồ rất đẹp cung cấp một số ý tưởng về các địa điểm để bắt đầu dựa trên kích thước tập dữ liệu của bạn có thể được tìm thấy ở đây: http://3.bp.blogspot.com/-dofu6J0sZ8o/UrctKb69QdI/AAAAAAAADfg/79ewPecn5XU/s1600/sc- -chart.jpg

nhập mô tả hình ảnh ở đây


8
Một mối quan tâm lớn với việc sử dụng PCA theo cách này là tất cả mối quan hệ giữa biến trả lời và các biến độc lập có thể nằm trong 3% tổng phương sai mà bạn bỏ qua. Dường như không có bất kỳ cách chung nào để xác định có bao nhiêu thành phần chính được sử dụng, bởi vì thành phần nhỏ nhất có thể tỷ lệ thuận với chính phản hồi và do đó sẽ tạo thành lựa chọn tối ưu cho các biến.
whuber

1
Tôi nghĩ rằng thực sự nếu bạn có thể tải tập dữ liệu vào bộ nhớ chính (mà tôi giả sử là trường hợp xem xét những gì bạn giải thích), thì việc giảm độ dốc ngẫu nhiên là bước đầu tiên bạn nên thực hiện trước khi thử các kỹ thuật giảm kích thước. Với Scikit-learn trên python (hoặc R, nhưng tôi không phải là người sử dụng ngôn ngữ này), điều này sẽ hoạt động tốt.
Bertrand R

Tôi nghĩ rằng đây là một câu trả lời hữu ích, nhưng tôi nghĩ OP đang hỏi về hồi quy logistic chứ không phải giảm tính năng. Có lẽ bạn có thể giải quyết một phần của câu hỏi trong một phiên bản?
đăng nhập

Tôi không chắc PCA hữu ích như thế nào đối với các vấn đề hồi quy. Vấn đề là ở đây: PCA giữ các giá trị số ít nhất của ma trận đầu vào, nhưng nghịch đảo của ma trận sẽ đảo ngược các giá trị số ít, vì vậy bạn thực sự muốn giữ giá trị nhỏ nhất của các giá trị ban đầu. Có thể tốt hơn nếu chỉ phác thảo dữ liệu: arxiv.org/abs/1411.4357
Thomas Ahle

4

Như @Frank Harrell đã đề cập, sử dụng mạng đàn hồi hoặc LASSO để thực hiện hồi quy bị phạt với tất cả 5000 tính năng ( p ) sẽ là khởi đầu tốt cho lựa chọn tính năng (người ta không thể loại bỏ 3500 biến vì chúng không "có ý nghĩa thống kê" với biến phụ thuộc của lãi suất). Một trong hai phương pháp này có thể được thực hiện bằng gói R , glmnet.

Để tính đến các mối quan hệ được chia sẻ giữa các biến dự đoán tiềm năng ( p = 5000), tôi khuyên bạn nên chạy một rừng ngẫu nhiên bằng cách sử dụng randomForestgói và / hoặc tăng cường độ dốc bằng cách sử dụng gbmgói để đánh giá tầm quan trọng tương đối của các biến dự báo tiềm năng liên quan đến kết quả nhị phân. Với thông tin này, bạn sẽ chuẩn bị nhiều hơn để xây dựng mô hình hồi quy logistic kỹ lưỡng hơn.


3
Y

1

Tôi cho rằng bạn không bị giới hạn ở R, vì đây là vấn đề dữ liệu lớn mà bạn có lẽ không nên làm. Bạn có thể thử MLlib , thư viện máy học có thể mở rộng của Apache Spark.

Ngược lại, Apache Spark là một công cụ nhanh và chung để xử lý dữ liệu quy mô lớn trong bộ nhớ. Chúng hoạt động trên khung Hadoop cho phép xử lý phân tán các tập dữ liệu lớn trên các cụm máy tính bằng các mô hình lập trình đơn giản. Nó được thiết kế để mở rộng quy mô từ các máy chủ đơn lẻ đến hàng ngàn máy, mỗi máy cung cấp tính toán và lưu trữ cục bộ.

Lưu ý rằng 'hàng ngàn máy' là tùy chọn (!), Bạn cũng có thể thiết lập nó trên máy tính để bàn tại nhà / nơi làm việc tại nhà.

Quay trở lại MLlib, nó đi kèm với các thuật toán dưới đây:

  • K-nghĩa là phân cụm với K-nghĩa | | khởi tạo.
  • Hồi quy tuyến tính chính quy L1- và L2.
  • Hồi quy logistic thường xuyên L1- và L2.
  • Thay thế lọc bình phương tối thiểu xen kẽ, với xếp hạng rõ ràng hoặc phản hồi ngầm.
  • Phân loại đa dạng Naive Bayes.
  • Giảm dần độ dốc ngẫu nhiên.

Nếu bạn thường xuyên làm việc với dữ liệu lớn, bạn có thể cần áp dụng giải pháp Hadoop.


0

Bạn có thể thử Vowpal Wợi: Vowpal Wợi . Nó hoạt động tốt với các bộ dữ liệu rất lớn và số lượng tính năng rất lớn.

theo trang web:

Đây là một dự án bắt đầu tại Yahoo! Nghiên cứu và tiếp tục tại Microsoft Research để thiết kế một thuật toán học tập nhanh, có thể mở rộng, hữu ích. VW là bản chất của tốc độ trong học máy, có thể học từ các bộ dữ liệu terafeature một cách dễ dàng. Thông qua học song song, nó có thể vượt quá thông lượng của bất kỳ giao diện mạng máy đơn lẻ nào khi thực hiện học tuyến tính, lần đầu tiên trong số các thuật toán họ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.