Đây có phải là một thực hành tốt của kỹ thuật tính năng?


10

Tôi có một câu hỏi thực tế về kỹ thuật tính năng ... nói rằng tôi muốn dự đoán giá nhà bằng cách sử dụng hồi quy logistic và sử dụng một loạt các tính năng bao gồm mã zip. Sau đó, bằng cách kiểm tra mức độ quan trọng của tính năng, tôi nhận thấy zip là một tính năng khá tốt, vì vậy tôi quyết định thêm một số tính năng dựa trên zip - ví dụ: tôi đến văn phòng điều tra dân số và nhận thu nhập trung bình, dân số, số trường và số của bệnh viện của mỗi zip. Với bốn tính năng mới này, tôi thấy các mô hình biểu diễn tốt hơn bây giờ. Vì vậy, tôi thêm nhiều tính năng liên quan đến zip hơn nữa ... Và chu trình này cứ lặp đi lặp lại. Cuối cùng, mô hình sẽ bị chi phối bởi các tính năng liên quan đến zip, phải không?

Những câu hỏi của tôi:

  1. Liệu nó có ý nghĩa làm những điều này ở nơi đầu tiên?
  2. Nếu có, làm thế nào để tôi biết khi nào là thời điểm tốt để dừng chu kỳ này?
  3. Nếu không, tai sao không?

Câu trả lời:


6

Nếu bạn có thể tiếp tục thêm dữ liệu mới (dựa trên một khái niệm chính như khu vực tức là mã ZIP) hiệu suất của mô hình của bạn được cải thiện, thì tất nhiên là được phép ... giả sử bạn chỉ quan tâm đến kết quả cuối cùng.

Có những số liệu sẽ cố gắng hướng dẫn bạn điều này, chẳng hạn như Tiêu chí Thông tin Akaike (AIC) hoặc Tiêu chí Thông tin Bayes (BIC) có thể so sánh được . Những điều này về cơ bản giúp chọn một mô hình dựa trên hiệu suất của nó, bị trừng phạt cho tất cả các tham số bổ sung được giới thiệu và phải được ước tính. AIC trông như thế này:

MộtTôiC= =2k-2ln(L^)

kL^k

Các tiêu chí này có thể giúp cho bạn biết khi nào nên dừng lại, vì bạn có thể thử các mô hình có càng nhiều tham số và chỉ cần lấy mô hình có giá trị AIC hoặc BIC tốt nhất.

Nếu bạn vẫn có các tính năng khác trong mô hình, không liên quan đến ZIP, chúng có thể có khả năng bị quá tải - điều đó phụ thuộc vào mô hình bạn sử dụng. Tuy nhiên, họ cũng có thể giải thích những điều về bộ dữ liệu mà đơn giản là không thể chứa trong thông tin ZIP, chẳng hạn như diện tích sàn của một ngôi nhà (giả sử điều này tương đối độc lập với mã ZIP).

Trong trường hợp này, bạn có thể so sánh chúng với một cái gì đó như Phân tích thành phần chính, trong đó một tập hợp các tính năng giải thích một sự thay đổi của phương sai trong tập dữ liệu, trong khi các tính năng khác giải thích một chiều khác. Vì vậy, cho dù bạn có bao nhiêu tính năng liên quan đến ZIP, bạn có thể không bao giờ giải thích tầm quan trọng của diện tích sàn.


7

1) Vâng, nó có ý nghĩa. Cố gắng tạo các tính năng theo cách thủ công sẽ giúp người học (ví dụ như các mô hình) nắm được nhiều thông tin hơn từ dữ liệu thô vì dữ liệu thô không phải lúc nào cũng có thể học được, nhưng bạn luôn có thể xây dựng các tính năng từ đó. Tính năng bạn đang thêm dựa trên một tính năng. Điều này là phổ biến. Tuy nhiên, người học của bạn, hồi quy logistic, rất nhạy cảm với đa cộng tuyến. Bạn cần cẩn thận về tính năng nào và thêm bao nhiêu tính năng. Nếu không, mô hình của bạn có thể quá phù hợp.

2) Vì bạn đang sử dụng hồi quy logistic, bạn luôn có thể sử dụng AIC hoặc thực hiện kiểm tra ý nghĩa thống kê, như kiểm tra chi bình phương (kiểm tra mức độ phù hợp) trước khi thêm cấu trúc mới, để quyết định xem phân phối của phản hồi có thực sự khác biệt không có và không có cấu trúc này. Điều này đặc biệt hữu ích khi dữ liệu của bạn khan hiếm. Một cách khác là thêm thời hạn phạt cho mô hình của bạn. Ví dụ, hồi quy logistic lasso.

3) Tiếp tục thêm các tính năng mới không phải lúc nào cũng là một ý tưởng tốt. Hãy cẩn thận với lời nguyền của chiều cao. Khi thêm tính năng mới, bạn thực sự đang thêm một chiều mới trên dữ liệu của mình. Ngây thơ, người ta có thể nghĩ rằng việc thu thập nhiều tính năng không bao giờ gây tổn thương, vì tệ nhất là họ không cung cấp thông tin mới về lớp học. Nhưng trên thực tế, lợi ích của chúng có thể vượt trội hơn bởi lời nguyền của chiều. Tôi hy vọng những điều hữu ích cần biết về buổi học máy 6 có thể giúp ích.


Có phải @ user3768495 đang đánh giá hiệu năng của mẫu ngoài mẫu bằng cách sử dụng xác thực chéo? Nếu vậy, đa cộng đồng không phải là một vấn đề và anh ta không nên lo lắng về việc quá mức vì anh ta sẽ nhận được một dấu hiệu của việc quá mức thông qua hiệu suất xác nhận giảm.
rinspy

@rinspy thừa có nhiều mặt. Liên quan đến một bộ xác nhận có thể giúp tránh quá mức nhưng không thể giải quyết vấn đề. Ví dụ: phân phối không nhất quán giữa dữ liệu đào tạo (được chia thành tập huấn luyện và tập xác thực) và dân số thực. Ngay cả mô hình thực hiện tốt trong dữ liệu đào tạo, nó có thể không được khái quát cho tình hình thế giới thực. Các tài liệu tham khảo từ câu trả lời của tôi cũng nói về quá mức.
Fansly

Đúng, nhưng tránh đa cộng đồng sẽ không giúp ích gì cho 'quá mức' phát sinh từ các ca làm việc đồng biến. Tôi chỉ nói rằng tính đa hướng có thể không phải là vấn đề nếu anh ta quan tâm đến việc xây dựng một mô hình dự đoán (và không phải là mô tả).
rinspy

Khái niệm của tôi về việc cung cấp quá mức là về khi một mô hình không thể khái quát hóa cho một tập dữ liệu mới, chứ không phải là dữ liệu đào tạo. Xin vui lòng xem điều này
Fansly

4

Thông thường, các tính năng càng phong phú càng tốt.

Tuy nhiên, một điều cần lưu ý, nói chung, hồi quy, nói chung, không hoạt động tốt với dữ liệu có tương quan cao (đa cộng tuyến). Khi bạn mở rộng các tính năng của mình theo cách này, đó là điều bạn có thể muốn ghi nhớ.

Có rất nhiều thông tin về chính chủ đề này (và các cách tiềm năng để giảm thiểu), chỉ cần hồi quy google và đa cộng đồng.

Nói ngắn gọn,

  1. Đúng. Chắc chắn nhất.
  2. @ n1k31t4 có một số gợi ý hay. Hãy thoải mái tạo ra những tính năng mà bạn nghĩ sẽ cải thiện mô hình của mình, sau đó bạn có thể sử dụng các kỹ thuật như PCA và các kỹ thuật chọn tính năng khác để giới hạn bản thân với những gì quan trọng.
  3. Điều khác cần xem xét là nó thực tế như thế nào trong nỗ lực so với kết quả.

0

Các tính năng là thông tin của mô hình của bạn. Càng nhiều thông tin, nó sẽ có thể thực hiện và dự đoán tốt hơn. Càng ít, nó càng khó dự đoán giá trị. Vì vậy, naser ngắn là có. Nó luôn luôn có giá trị để có càng nhiều tính năng càng tốt. Luôn có giới hạn cho việc này mặc dù quá tải thông tin có thể làm hỏng bộ xử lý của bạn, vì vậy hãy cẩn thận với bao nhiêu tính năng đang được thiết kế. Ngoài ra, các tính năng không cần thiết chỉ thêm vào sự kiệt sức, vì vậy, luôn luôn thực hành tốt để dọn sạch các tính năng nhất định. Toàn bộ giai đoạn tiền xử lý dữ liệu là về điều đó.

Câu trả lời đầu tiên có một số chi tiết tốt về nó. Liên quan đến việc dừng một chu kỳ, có một số biện pháp và yếu tố mà bạn cần lưu ý để kiểm tra xem mô hình của bạn đã ngừng hoạt động tốt hơn ở đâu và đó là những biện pháp như RMSE. Một ví dụ đơn giản sẽ sử dụng xgboosthồi quy trên dữ liệu của bạn và chỉ định số chu kỳ. Chạy mô hình và bạn sẽ nhận được RMSE cho mỗi chu kỳ. Nó sẽ giảm đến một giới hạn mà sau đó bạn sẽ có thể suy luận rằng mô hình đã bị hạ thấp sau một chu kỳ nhất định. Đây là cách điều chỉnh mô hình và tối ưu hóa hoạt động.

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.