Cách thích hợp hơn để tạo một tập hợp giữ: xóa một số đối tượng hoặc xóa một số quan sát khỏi từng đối tượng là gì?


11

Tôi có một bộ dữ liệu với 26 tính năng và 31000 hàng. Đây là bộ dữ liệu của 38 đối tượng. Đó là cho một hệ thống sinh trắc học. Vì vậy, tôi muốn có thể xác định đối tượng.

Để có một bộ thử nghiệm, tôi biết tôi phải loại bỏ một số giá trị.

Vì vậy, tốt hơn là làm gì và tại sao?

  1. (a) giữ 30 môn học làm tập huấn luyện và loại bỏ 8 môn học như tập kiểm tra

  2. (b) giữ 38 đối tượng, nhưng loại bỏ một số hàng của từng đối tượng. Vì vậy, cuối cùng tôi sẽ kết thúc với một bộ huấn luyện: 24800 hàng gồm 38 môn VÀ một bộ kiểm tra: 6200 hàng gồm 38 môn


1
Nếu bạn muốn xác định đối tượng, làm thế nào bạn có thể loại bỏ "toàn bộ" đối tượng cho một bộ thử nghiệm? Mô hình được đào tạo trên 30 đối tượng sẽ chỉ có thể xác định 30 đối tượng này, chứ không phải 8 đối tượng mà nó chưa từng thấy. Việc làm rõ của bạn về "hệ thống sinh trắc học" có thể khiến hầu hết các câu trả lời hiện tại không thể áp dụng được.
amip nói phục hồi Monica

1
Sẽ rất hữu ích khi làm rõ: (1) mục tiêu chính xác , biến kết quả mà bạn đang cố gắng dự đoán (2) dữ liệu nào bạn có và có thể (3) bạn sử dụng phương pháp nào.
Matthew Gunn

Một khi bạn đã đào tạo hệ thống, nó sẽ được triển khai như thế nào? Là mục tiêu để sử dụng nó trên những người không có trong tập huấn luyện? Dữ liệu mới sẽ từ cùng 38 đối tượng? Tôi đang cố gắng hiểu hệ thống được cho là sẽ được sử dụng như thế nào và bạn đang ở trong trường hợp (1) hay trường hợp (2) câu trả lời của @ AmiTavory.
Matthew Gunn

@amoeba Tôi không có nhiều kinh nghiệm :( Tôi đã đặt câu hỏi vì nên tách dữ liệu (đào tạo, xác nhận và kiểm tra). 1) Tôi muốn có thể xác định đối tượng. Các tính năng thuộc về ai. 2) Tôi đang sử dụng EEG (chuỗi thời gian). 3) Tôi đang sử dụng Stratified-Fold. Nhưng đó là bởi vì tôi có độ chính xác cao hơn với nó. Tôi chỉ biết đến k-Fold, phân tầng và bỏ đi. Như tôi đã luôn nghĩ rằng đó là để bù đắp sự mất cân bằng trong dữ liệu. Nhưng tôi cởi mở để đề xuất.
Aeatherac

@MatthewGunn Tôi nghĩ rằng sẽ không thể sử dụng nó với những người không có trong bộ dữ liệu. Điều đó sẽ rất khó khăn nhưng rất thú vị nếu đạt được. Vì vậy, tôi sẽ nói trường hợp 1.
Aizzaac

Câu trả lời:


9

Tôi nghĩ câu trả lời của Matthew Gunn là đúng, nhưng đối với tôi, CV "khôn ngoan" có thể bao gồm hai khái niệm khác nhau:

  1. Các bản ghi được phân vùng ngẫu nhiên thành các nếp gấp, bất kể chủ đề hay thời gian.

  2. Các bản ghi được phân vùng thành các nếp gấp dựa trên thời gian, không có nếp gấp nào được sử dụng cho đào tạo có chứa dữ liệu từ sau khi bắt đầu nếp gấp thử nghiệm.

Trong trường hợp đầu tiên, bất kỳ tính chất chuỗi thời gian nào của dữ liệu của bạn đều bị xâm phạm, vì tập huấn luyện của bạn có thể bao gồm dữ liệu từ cả trước và sau tập kiểm tra của bạn. Nguyên tắc của Train / Test là dữ liệu Đào tạo đại diện cho dữ liệu được biết đến hiện tại và Dữ liệu thử nghiệm đại diện cho dữ liệu chưa được phát hiện (có lẽ theo nghĩa đen từ tương lai).

Có lẽ chuỗi thời gian tự động thỏa hiệp tùy chọn # 2. Có lẽ yếu tố thời gian của mô hình không thực sự quan trọng và vì vậy các quan sát "quá khứ" và "tương lai" có thể giống nhau. Trong những trường hợp này, không phải số 1 hay số 2 là con đường để đi.

Nếu chỉ có tính thời vụ và không theo xu hướng, có vẻ như không bao gồm "tương lai" trong đào tạo cho một số môn học để dự đoán các môn học mới (những người sẽ bị ảnh hưởng bởi cùng một mùa). Nếu có xu hướng, đào tạo về tương lai sẽ học được điều gì đó về tương lai mà bạn thực sự không biết khi sử dụng mô hình trong sản xuất.

Trong ví dụ của OP, có vẻ như chủ đề khôn ngoan là tốt. Nhưng nếu xu hướng và mối quan tâm theo chuỗi thời gian là một phần của mô hình, tôi sẽ thử sử dụng phân vùng theo chủ đề và thời gian để bạn được đào tạo về một bộ đối tượng trước một thời điểm cụ thể, sau đó thử nghiệm các đối tượng khác sau điểm cụ thể trong thời gian.


1
+1 Đó là một điểm rất quan trọng mà nếu có cấu trúc chuỗi thời gian, bạn không nên sử dụng tương lai để dự đoán quá khứ! Đây là một lỗi phổ biến và nguy hiểm trong tài chính, sử dụng thông tin không có sẵn tại thời điểm (vì nó không được biết đến trong tương lai) để dự đoán lợi nhuận, mặc định, v.v ... tại thời điểm . Với các dự án phức tạp và hàng tấn dữ liệu, có thể rất dễ mắc sai lầm và để thuật toán đào tạo của bạn đạt hiệu quả cao trong tương lai, đạt được kết quả không thể có trong thực tế. ttt
Matthew Gunn

1
Tôi muốn nói rằng ứng dụng quyết định việc chia tách chính là gì. Ví dụ, ngay cả với chuỗi thời gian, có thể dự đoán biến phụ thuộc cho các phép đo sau này của các đối tượng không xác định, điều đó có nghĩa là việc phân tách phải được thực hiện theo chủ đề cũng như theo thời gian.
cbeleites không hài lòng với SX

3
@cbeleites: Đồng ý. Đây là những gì tôi đã làm trong một dự án gần đây: chia dữ liệu thành các đối tượng đào tạo và kiểm tra và chỉ sử dụng dữ liệu trước một số ngày để đào tạo và dữ liệu sau ngày đó để thử nghiệm, vì vậy chúng tôi đã thử nghiệm trên các đối tượng mà chúng tôi chưa bao giờ đã thấy, trong một khoảng thời gian chúng ta chưa thấy. Bạn muốn xếp bộ bài chống lại bạn - mà không cần quá nhiệt tình - nếu bạn muốn thực sự biết mô hình của bạn sẽ làm tốt như thế nào trong thực tế.
Wayne

16

Một phân biệt quan trọng là bạn có muốn:

  1. [Trường hợp phổ biến nhất]: Xây dựng ước tính hiệu suất trên các đối tượng mới (được rút ra từ cùng một dân số với dữ liệu của bạn).
  2. Xây dựng ước tính hiệu suất trên các quan sát mới từ cùng một đối tượng như trong mẫu của bạn.

Trường hợp phổ biến hơn nhiều là trường hợp số (1). Ví dụ, bạn dự đoán cơn đau tim cho người sắp vào phòng cấp cứu tốt đến mức nào? Và nếu bạn ở trong trường hợp (1), bạn gần như chắc chắn nên thực hiện (a) xác thực chéo theo chủ đề thay vì (b) xác thực chéo theo kỷ lục. Thực hiện xác nhận kỷ lục trong trường hợp (1) có thể sẽ dẫn đến ước tính hiệu suất cao, không có thật về các đối tượng mới.

Tôi không hiểu chính xác những gì bạn đang cố gắng làm (và có lẽ đó là tự học nên câu hỏi không hoàn toàn thực tế). Tôi không biết bạn đang ở trường hợp nào. Nếu bạn ở trong trường hợp ít phổ biến hơn (2), ghi lại xác nhận khôn ngoan có thể ổn.

Một chủ đề chung trong thống kê là suy nghĩ cẩn thận về những gì độc lập và những gì tương quan. Nói chung, một quan sát độc lập có xu hướng là một chủ đề khác nhau. Nếu bạn muốn dự đoán hiệu suất về các môn học mới , bạn phải kiểm tra các môn học mà bạn không đào tạo!

Tại sao xác thực chéo chủ đề khôn ngoan hơn là ghi lại khôn ngoan?

Trong cài đặt điển hình, các quan sát lặp đi lặp lại của cùng một cá nhân có tương quan với nhau ngay cả sau khi điều chỉnh các tính năng. Do đó với xác thực chéo khôn ngoan, bộ kiểm tra của bạn không độc lập với tập huấn luyện của bạn! Trong trường hợp cực đoan của mối tương quan hoàn hảo, bạn sẽ có những quan sát chính xác giống nhau trong tập huấn luyện và tập kiểm tra! Bạn sẽ được đào tạo về bộ thử nghiệm! Hiệu suất được đo trong xác nhận chéo sẽ không thể dự đoán hiệu suất trên các đối tượng mới.

Ví dụ, bài báo gần đây gọi xác nhận chéo thông minh kỷ lục, '`Voodoo Machine Learning."

Phải làm gì với rất ít môn học ...

Có lẽ một số người bình luận có nhiều kinh nghiệm với xác nhận chéo hơn tôi có thể tham gia, nhưng với tôi, đây có vẻ là một ứng cử viên khả thi cho k=n

Để tối đa hóa dữ liệu cho đào tạo, điều bạn có thể làm là bỏ qua một chủ đề để xác thực chéo. Mỗi lần lặp, kiểm tra về một chủ đề khác nhau và đào tạo về tất cả những người khác.

n=38


Tôi biết bộ dữ liệu phải được chia thành 3: đào tạo, xác nhận và thử nghiệm. Trong xác nhận chéo "đào tạo và xác nhận" được sử dụng. Bộ giữ ngoài là "thử nghiệm". Vì vậy, bạn có gợi ý: để đào tạo và xác nhận sử dụng 37 môn học và kiểm tra trong 1 môn học? Và rằng tôi có thể thực hiện bất kỳ loại xác thực chéo nào: k-Fold, phân tầng, v.v?
Aeatherac

1
OP đã thực hiện một chỉnh sửa nói rằng "Nó dành cho một hệ thống sinh trắc học. Vì vậy, tôi muốn có thể xác định các đối tượng". Nếu tôi hiểu chính xác ý nghĩa của nó, điều đó có nghĩa là chỉ CV thông minh có ý nghĩa vì mục tiêu là dự đoán id chủ đề dựa trên một mẫu.
amip nói rằng Phục hồi lại

@amoeba Chỉ khi dữ liệu mới sẽ đến từ 38 đối tượng tương tự . Ví dụ. nếu hệ thống được cho là có dấu vân tay khớp hay không khớp và nó sẽ được triển khai ở cửa trước nhà tôi (nghĩa là phải xác định người lạ là người lạ), việc đào tạo và kiểm tra trên cùng một đối tượng sẽ gặp vấn đề (bạn muốn biết mức độ thường xuyên cấp cho những người mà nó chưa từng thấy trước đây, chưa từng được đào tạo). Mặc dù vậy, tôi đồng ý rằng "Nó dành cho hệ thống sinh trắc học" đặt ra câu hỏi ...
Matthew Gunn

3

Nó thực sự phụ thuộc vào cách bạn hình dung ra các thiết lập mà bạn muốn mô phỏng với phân tách thử nghiệm / xe lửa. Để làm cho mọi thứ cụ thể, giả sử mỗi hàng mô tả chất lượng giấc ngủ của một đối tượng trong một đêm.

  1. Có thể, trong tương lai, mỗi đối tượng sẽ lần đầu tiên đến phòng thí nghiệm ngủ và cung cấp cho bạn chất lượng giấc ngủ trong một vài đêm. Theo đó, bạn sẽ cần dự đoán chất lượng giấc ngủ đêm trong tương lai cho những đối tượng này . Trong trường hợp này, bạn sẽ sử dụng tùy chọn của mình b). Trong sklearn, bạn có thể sử dụngsklearn.model_selection.StratifiedShuffleSplit

  2. Có thể, trong tương lai, một vài đối tượng sẽ lần đầu tiên đến phòng thí nghiệm ngủ và cung cấp cho bạn chất lượng giấc ngủ trong vài đêm. Theo đó, bạn sẽ dự đoán chất lượng giấc ngủ đêm trong tương lai cho các đối tượng khác . Trong trường hợp này, bạn sẽ sử dụng tùy chọn của mình a). Trong sklearn, bạn có thể sử dụngsklearn.cross_validation.LeavePLabelOut


1
Trên thực tế, câu hỏi gần như chắc chắn là trường hợp của bạn (2) và tùy chọn (a), tức là xác thực chéo theo chủ đề, là những gì phù hợp.
Matthew Gunn

1
@MatthewGunn Bạn nói đúng. Trường hợp 2 là phổ biến hơn nhiều. Tôi phải nói rằng tôi đã gặp phải các trường hợp thực tế trong đó 1 là lựa chọn đúng đắn.
Ami Tavory

1
Hấp dẫn. Tôi có thể thấy (1) là đúng để dự đoán các quan sát mới cho một số cơ sở khách hàng lớn, được thành lập. Điểm lấy. Có lẽ tôi đang phản ứng rất mạnh mẽ bởi vì gần đây tôi đã đọc bài báo này về việc lạm dụng rộng rãi việc xác nhận chéo thông minh trong lĩnh vực y tế.
Matthew Gunn

Bạn nghĩ gì về điều này: Tôi sử dụng 38 đối tượng với bất kỳ loại xác nhận chéo nào; và để kiểm tra xem mô hình của tôi có thể được sử dụng với các đối tượng khác nhau hay không; Tôi sử dụng một tập dữ liệu trực tuyến? Tôi nghĩ ý tưởng của một bộ được tổ chức là có một bộ dữ liệu "mới" để thử nghiệm mô hình.
Aeatherac

3

Để hòa nhập, tôi cho rằng ứng dụng này là để dự đoán các đối tượng chưa biết. Điều đó có nghĩa là (bất kể bạn có chuỗi thời gian hay các phép đo lặp lại không có thứ tự) mà việc phân tách cần phải được thực hiện sao cho các đối tượng không xác định được kiểm tra => tách a)

Tuy nhiên, xem xét rằng bạn chỉ có 38 đối tượng, bạn nên suy nghĩ lại về việc xác nhận lại mẫu. Từ kinh nghiệm của tôi khi làm việc với các cỡ mẫu nhỏ tương tự (mặc dù nhiều tính năng hơn), đây là một số khuyến nghị tóm tắt:

  • Sử dụng xác thực chéo khởi động hoặc xác thực chéo theo chủ đề. Chúng cho phép đánh giá tính ổn định của các mô hình của bạn, điều rất quan trọng trong các vấn đề cỡ mẫu nhỏ. Các kết quả thậm chí có thể được sử dụng cho một mô hình tổng hợp trong trường hợp không ổn định là một vấn đề.

  • Đừng không làm nghỉ-one-môn-out. Nó không cho phép đo lường sự ổn định của mô hình, cũng như không làm giảm nó. Ngoài ra, có những tình huống nó có xu hướng bi quan lớn vì kích thước mẫu nhỏ (trái ngược với xu hướng bi quan tối thiểu dự kiến).

  • Nếu bạn đang sử dụng các số liệu phân loại điển hình của công đức như độ chính xác, độ nhạy, độ đặc hiệu, v.v. và nhiệm vụ là phân loại chính xác các đối tượng: hãy cẩn thận rằng vấn đề quan trọng là đo lường hiệu suất vì độ không đảm bảo của kết quả kiểm tra phụ thuộc vào số tuyệt đối của các trường hợp thử nghiệm. Ví dụ, quan sát 17 dự đoán chính xác trong số 17 đối tượng thực sự tích cực tương ứng với khoảng tin cậy 95% cho độ nhạy dao động từ khoảng 80% đến 100%.
    Nói cách khác, bạn sẽ không thể thực hiện tối ưu hóa mô hình dựa trên dữ liệu dựa trên điều đó.

  • Điều này cũng có nghĩa là bạn không cần thiết lập chia tách ba bộ (xác thực chéo lồng nhau), vì bạn lãng phí tài nguyên vào các so sánh vô nghĩa về mặt thống kê ở đây - tối ưu hóa của bạn gần như được đảm bảo thất bại (mặc dù bạn có thể không nhận thấy rằng nếu bạn không kiểm tra sự ổn định).

  • Cách tính tương tự cho khoảng tin cậy nhị thức cho các đối tượng kiểm tra / tối ưu hóa / xác nhận 5 (3) được đề xuất mang lại 95% ci cho tất cả các mức chính xác xuống tới 50% (30%) vì vậy dựa trên kết quả kiểm tra hoàn hảo, khoảng tin cậy của bạn vẫn sẽ bao gồm 50 / 50 đoán!

Một số bài báo chúng tôi đã viết về những chủ đề này:

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.