Chúng ta vẫn cần phải thực hiện lựa chọn tính năng trong khi sử dụng thuật toán Chính quy?


20

Tôi có một câu hỏi liên quan đến việc cần sử dụng các phương pháp lựa chọn tính năng (Rừng ngẫu nhiên có giá trị quan trọng hoặc phương pháp lựa chọn tính năng Univariate, v.v.) trước khi chạy thuật toán học thống kê.

Chúng tôi biết để tránh bị quá mức, chúng tôi có thể đưa ra hình phạt chính quy trên các vectơ trọng lượng.

Vì vậy, nếu tôi muốn thực hiện hồi quy tuyến tính, thì tôi có thể giới thiệu các tham số chính quy hóa mạng L2 hoặc L1 hoặc thậm chí đàn hồi. Để có được các giải pháp thưa thớt, hình phạt L1 giúp lựa chọn tính năng.

Sau đó, nó vẫn được yêu cầu thực hiện lựa chọn tính năng trước khi chạy hồi quy chính quy hóa L1 như Lasso?. Về mặt kỹ thuật Lasso đang giúp tôi giảm các tính năng bằng hình phạt L1 thì tại sao lựa chọn tính năng cần thiết trước khi chạy thuật toán?

Tôi đọc một bài báo nghiên cứu nói rằng làm Anova sau đó SVM cho hiệu suất tốt hơn so với chỉ sử dụng SVM. Bây giờ câu hỏi là: SVM vốn đã thực hiện chính quy hóa bằng cách sử dụng định mức L2. Để tối đa hóa lề, nó đang giảm thiểu định mức vectơ trọng lượng. Vì vậy, nó đang thực hiện chính quy trong chức năng khách quan của nó. Vậy thì các thuật toán kỹ thuật như SVM không nên bị làm phiền về các phương pháp lựa chọn tính năng?. Nhưng báo cáo vẫn cho biết thực hiện lựa chọn Tính năng Univariate trước khi SVM bình thường mạnh hơn.

Bất cứ ai có suy nghĩ?


Một câu hỏi tôi sẽ nêu ra là làm thế nào để chính quy hóa SVM hoạt động với các phương thức kernel? Reg reg L2 dựa vào các đầu vào được chuẩn hóa. Tuy nhiên, nếu bạn sử dụng hạt nhân (ví dụ: đa thức) thì các đầu vào hiệu quả của bạn (tức là các lũy thừa đa thức) không còn được chuẩn hóa nữa.
seanv507

Câu trả lời:


17

Lựa chọn tính năng đôi khi cải thiện hiệu suất của các mô hình chính quy, nhưng theo kinh nghiệm của tôi, nó thường làm cho hiệu suất khái quát hóa kém hơn. Lý do cho điều này là vì chúng ta càng có nhiều lựa chọn liên quan đến mô hình của mình (bao gồm các giá trị của tham số, lựa chọn tính năng, cài đặt siêu tham số, lựa chọn kernel ...), chúng ta càng cần nhiều dữ liệu hơn những lựa chọn đáng tin cậy Nói chung, chúng tôi thực hiện các lựa chọn này bằng cách giảm thiểu một số tiêu chí được đánh giá qua một tập hợp dữ liệu hữu hạn, điều đó có nghĩa là tiêu chí chắc chắn có phương sai khác không. Kết quả là, nếu chúng ta giảm thiểu tiêu chí quá áp lực, chúng ta có thể phù hợp với nó, tức là chúng ta có thể đưa ra các lựa chọn giảm thiểu tiêu chí vì các tính năng phụ thuộc vào mẫu cụ thể được đánh giá, thay vì vì nó sẽ tạo ra cải tiến chính hãng trong hiệu suất.

Bây giờ, SVM là một triển khai gần đúng của một ràng buộc về hiệu suất tổng quát hóa, không phụ thuộc vào chiều, vì vậy về nguyên tắc, chúng ta có thể mong đợi hiệu suất tốt mà không cần chọn tính năng, miễn là các tham số chính quy được chọn chính xác. Hầu hết các phương pháp lựa chọn tính năng không có "đảm bảo" hiệu suất như vậy.

Đối với các phương thức L1, tôi chắc chắn sẽ không bận tâm đến việc lựa chọn tính năng, vì tiêu chí L1 nói chung có hiệu quả trong việc cắt xén các tính năng. Lý do hiệu quả là vì nó tạo ra một thứ tự trong đó các tính năng nhập và rời khỏi mô hình, làm giảm số lượng lựa chọn có sẵn trong việc chọn các tính năng và do đó ít bị phù hợp hơn.

Lý do tốt nhất để lựa chọn tính năng là tìm ra các tính năng có liên quan / quan trọng. Lý do tồi tệ nhất để lựa chọn tính năng là để cải thiện hiệu suất, đối với các mô hình chính quy, nói chung nó làm cho mọi thứ tồi tệ hơn. Tuy nhiên, đối với một số bộ dữ liệu, nó có thể tạo ra sự khác biệt lớn, do đó, điều tốt nhất cần làm là thử nó và sử dụng sơ đồ đánh giá hiệu suất mạnh mẽ, không thiên vị (ví dụ: xác thực chéo) để tìm hiểu xem liệu bạn có phải là một trong những bộ dữ liệu đó không.


Bạn có ý nghĩa gì khi định giá chéo lồng nhau? Nó có áp dụng xác nhận chéo k lần N không?
yasin.yazici

5

jβ^j=.0001β^j=0

Tuy nhiên, vẫn có những lý do để loại bỏ hoàn toàn một biến.

  1. Đôi khi mục tiêu không phải là dự đoán chính xác mà là giải thích về một hiện tượng thế giới. Đôi khi bạn muốn biết những gì biến làm và không ảnh hưởng đến một biến phụ thuộc nhất định. Trong các loại tình huống này, một mô hình tuyệt vời là một cách ưa thích để hiểu và giải thích
  2. β^j
  3. Lý do tính toán - một mô hình có ít biến hơn thường chạy nhanh hơn và bạn không phải lưu trữ dữ liệu cho các biến không liên quan đó.

2
Xin chào TrynnaDoStat, tôi hoàn toàn đồng ý với quan điểm 1 và 3. Nhưng đối số 2 không thực sự đạt được mục đích. Nếu bạn thực hiện lựa chọn tính năng với cùng một bộ dữ liệu, bạn cũng có nguy cơ chọn sai bộ tính năng. Bởi vì một biến ngẫu nhiên có vẻ tương quan tốt với biến mục tiêu trong dữ liệu.
gstar2002

β^j

0

Tôi không nghĩ rằng quá mức là lý do mà chúng ta cần lựa chọn tính năng ở nơi đầu tiên. Trên thực tế, quá mức là điều xảy ra nếu chúng ta không cung cấp cho mô hình của mình đủ dữ liệu và việc lựa chọn tính năng sẽ làm giảm thêm lượng dữ liệu mà chúng ta vượt qua thuật toán của mình.

Thay vào đó, tôi muốn nói rằng lựa chọn tính năng là cần thiết như một bước tiền xử lý cho các mô hình không có khả năng tự xác định tầm quan trọng của các tính năng hoặc đối với các thuật toán kém hiệu quả hơn nếu chúng phải tự thực hiện trọng số này .

Ví dụ, một thuật toán lân cận k gần nhất đơn giản dựa trên khoảng cách Euclide. Nó sẽ luôn xem tất cả các tính năng có cùng trọng lượng hoặc tầm quan trọng đối với phân loại cuối cùng. Vì vậy, nếu bạn cung cấp cho nó 100 tính năng nhưng chỉ có ba trong số các tính năng này phù hợp với vấn đề phân loại của bạn, thì tất cả tiếng ồn từ các tính năng bổ sung này sẽ hoàn toàn loại bỏ thông tin từ ba tính năng quan trọng và bạn sẽ không nhận được bất kỳ dự đoán hữu ích nào. Thay vào đó, nếu bạn xác định các tính năng quan trọng trước đó và chỉ chuyển các tính năng đó cho trình phân loại, nó sẽ hoạt động tốt hơn nhiều (chưa kể là nhanh hơn nhiều).

Mặt khác, nhìn vào một phân loại rừng ngẫu nhiên. Trong khi đào tạo, nó sẽ tự động xác định các tính năng nào hữu ích nhất bằng cách tìm sự phân chia tối ưu bằng cách chọn từ một tập hợp con của tất cả các tính năng. Do đó, nó sẽ làm tốt hơn nhiều trong việc sàng lọc 97 tính năng vô dụng để tìm ra ba tính năng tốt. Tất nhiên, nó vẫn sẽ chạy nhanh hơn nếu bạn thực hiện lựa chọn trước, nhưng sức mạnh phân loại của nó thường sẽ không bị ảnh hưởng nhiều bằng cách cung cấp cho nó rất nhiều tính năng bổ sung, ngay cả khi chúng không liên quan.

Cuối cùng, nhìn vào mạng lưới thần kinh. Một lần nữa, đây là một mô hình có khả năng bỏ qua các tính năng không liên quan và đào tạo bằng cách sao lưu thường sẽ hội tụ để sử dụng các tính năng thú vị. Tuy nhiên, người ta biết rằng thuật toán đào tạo tiêu chuẩn hội tụ nhanh hơn nhiều nếu các đầu vào được "làm trắng", nghĩa là được chia tỷ lệ thành phương sai đơn vị và với mối tương quan chéo bị loại bỏ (LeCun et al, 1998) . Do đó, mặc dù bạn không thực sự cần phải lựa chọn tính năng, nó có thể trả bằng các thuật ngữ hiệu suất thuần túy để thực hiện tiền xử lý dữ liệu đầu vào.

Vì vậy, tóm lại, tôi muốn nói rằng lựa chọn tính năng ít liên quan đến quá mức và nhiều hơn nữa với việc tăng cường sức mạnh phân loại và hiệu quả tính toán của một phương pháp học tập. Bao nhiêu là cần thiết phụ thuộc rất nhiều vào phương pháp trong câu hỏi.


3
(1) Tôi không đồng ý với đề xuất đầu tiên của bạn. Lựa chọn tính năng không làm giảm lượng dữ liệu nhưng giảm số lượng tính năng. Số lượng phiên bản (mẫu) vẫn giữ nguyên và có thể giúp vượt quá bởi vì, trình phân loại cần ít tham số hơn (nếu đó là mô hình tham số) để phù hợp với dữ liệu. Ít tham số hơn có nghĩa là sức mạnh đại diện ít hơn, do đó ít có khả năng phù hợp hơn. (2) Loại thuật toán lựa chọn tính năng bạn đã đề cập để sử dụng trước KNN là gì? Làm thế nào nó biết tính năng nào sẽ hiệu quả hơn?
yasin.yazici

@ yasin.yazici: Giả sử bạn đang thực hiện phân loại chữ số viết tay và bạn vứt bỏ tất cả trừ pixel phía trên bên trái. Không phải bạn vừa giảm lượng dữ liệu bạn có sao?
cfh

@chf Không, nó chỉ làm giảm số lượng tính năng. Bộ dữ liệu của Lest nói là MNIST có 784 tính năng cho mỗi mẫu và 60000 mẫu. Nếu bạn vứt bỏ một số tính năng của mình, bạn vẫn có 60000 mẫu.
yasin.yazici

@ yasin.yazici: Quan điểm của tôi là, số lượng mẫu không giống với lượng dữ liệu. Dữ liệu là toàn bộ ma trận của "mẫu x tính năng".
cfh

Lựa chọn tính năng có thể (và thường sẽ) phù hợp. Nếu bạn đang sử dụng những người học thường xuyên và không quan tâm đến tầm quan trọng của tính năng, thì trừ khi bạn có nhiều dữ liệu và sơ đồ xác thực mạnh mẽ, tôi không thấy sử dụng nhiều cho lựa chọn tính năng.
Firebug

0

Tôi nghĩ rằng nếu bạn không có đủ số điểm dữ liệu để tối ưu hóa mạnh mẽ các tham số bạn có thể thực hiện lựa chọn tính năng để loại bỏ một số biến. Nhưng tôi không khuyên bạn nên làm quá nhiều vì bạn có thể mất tín hiệu bạn muốn tạo mô hình.

Ngoài ra, có thể có một số tính năng nhất định mà bạn không muốn trong các mô hình của mình dựa trên hiểu biết về kinh doanh mà bạn có thể muốn xóa.


0

Trong trường hợp của Lasso, việc xử lý trước dữ liệu để loại bỏ các tính năng phiền toái thực sự khá phổ biến. Đối với một bài báo gần đây thảo luận về các cách để làm điều này, xin vui lòng xem Thử nghiệm sàng lọc của Xiang et al cho các vấn đề về Lasso . Động lực chung được đề cập trong các bài báo tôi đã thấy là giảm gánh nặng tính toán của việc tính toán giải pháp.

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.