Đào tạo cây quyết định chống lại dữ liệu không cân bằng


43

Tôi mới khai thác dữ liệu và tôi đang cố gắng đào tạo một cây quyết định dựa trên tập dữ liệu rất mất cân bằng. Tuy nhiên, tôi đang gặp vấn đề với độ chính xác dự đoán kém.

Dữ liệu bao gồm các sinh viên đang học các khóa học và biến lớp là trạng thái khóa học có hai giá trị - Rút tiền hoặc Hiện tại.

  • Tuổi tác
  • Dân tộc
  • Giới tính
  • Khóa học
    ...
  • Tình trạng khóa học

Trong tập dữ liệu, có nhiều trường hợp hiện tại hơn Rút tiền. Các trường hợp rút tiền chỉ chiếm 2% trong tổng số các trường hợp.

Tôi muốn có thể xây dựng một mô hình có thể dự đoán xác suất một người sẽ rút tiền trong tương lai. Tuy nhiên khi kiểm tra mô hình dựa trên dữ liệu huấn luyện, độ chính xác của mô hình là rất tệ.

Tôi đã gặp vấn đề tương tự với các cây quyết định trong đó dữ liệu bị chi phối bởi một hoặc hai lớp.

Cách tiếp cận nào tôi có thể sử dụng để giải quyết vấn đề này và xây dựng một bộ phân loại chính xác hơn?


4
Một điều cần xem xét là thay đổi các điều khoản phạt cho các loại phân loại sai khác nhau. Bạn không nói phần mềm nào bạn đang sử dụng, nhưng tôi tin rằng tất cả các phần mềm cây tốt nên bao gồm các cách để làm điều này.
Peter Flom - Tái lập Monica

Câu trả lời:


61

Đây là một vấn đề thú vị và rất thường gặp trong phân loại - không chỉ trong các cây quyết định mà hầu như tất cả các thuật toán phân loại.

Như bạn đã tìm thấy theo kinh nghiệm, một tập huấn bao gồm số lượng đại diện khác nhau từ một trong hai lớp có thể dẫn đến một bộ phân loại thiên về lớp đa số. Khi được áp dụng cho một bộ kiểm tra bị mất cân bằng tương tự, bộ phân loại này mang lại ước tính độ chính xác tối ưu. Trong trường hợp cực đoan, trình phân loại có thể gán mọi trường hợp kiểm thử đơn cho lớp đa số, do đó đạt được độ chính xác bằng với tỷ lệ của các trường hợp kiểm thử thuộc về nhóm đa số. Đây là một hiện tượng nổi tiếng trong phân loại nhị phân (và nó mở rộng một cách tự nhiên cho các cài đặt đa lớp).

Đây là một vấn đề quan trọng, bởi vì một bộ dữ liệu mất cân bằng có thể dẫn đến ước tính hiệu suất tăng cao. Điều này đến lượt nó có thể dẫn đến kết luận sai về tầm quan trọng mà thuật toán đã thực hiện tốt hơn cơ hội.

Các tài liệu học máy về chủ đề này về cơ bản đã phát triển ba chiến lược giải pháp.

  1. Bạn có thể khôi phục dư trên tập huấn luyện bởi undersampling lớp lớn hay bởi oversampling lớp nhỏ, để ngăn chặn thiên vị từ phát sinh ở nơi đầu tiên.

  2. Ngoài ra, bạn có thể sửa đổi chi phí phân loại sai, như đã lưu ý trong phản hồi trước đó, một lần nữa để ngăn ngừa sai lệch.

  3. ϕ:=12(π++π),π+π

Độ chính xác so với độ chính xác cân bằng

Tôi khuyên bạn nên xem xét ít nhất hai trong số các cách tiếp cận trên cùng. Ví dụ, bạn có thể chồng chéo lớp thiểu số của mình để ngăn phân loại của bạn có được sự thiên vị có lợi cho lớp đa số. Theo đó, khi đánh giá hiệu suất của trình phân loại, bạn có thể thay thế độ chính xác bằng độ chính xác cân bằng. Hai cách tiếp cận là bổ sung. Khi áp dụng cùng nhau, họ sẽ giúp bạn vừa ngăn chặn vấn đề ban đầu của bạn vừa tránh kết luận sai sau đó.

Tôi sẽ rất vui khi được đăng một số tài liệu tham khảo bổ sung cho tài liệu nếu bạn muốn theo dõi về điều này.


3
Môi giới - cảm ơn thông tin chi tiết. Điều đó đã thực sự hữu ích! Ban đầu, tôi đã thử sử dụng chức năng khai thác dữ liệu trong SQL Server, tuy nhiên, theo lời khuyên của bạn, tôi đã chuyển sang sử dụng R. Tôi đã sử dụng thuật toán SMOTE để cân bằng lại tập dữ liệu và thử sử dụng cả hai cây quyết định và SVM. DT cho độ chính xác cân bằng là 81%, và thậm chí tốt hơn với SVM. Tuy nhiên, có một câu hỏi - tôi có nên kiểm tra mô hình dựa trên tập dữ liệu cũng chứa dữ liệu rebalancd không? Hoặc nó nên được kiểm tra đối với dữ liệu giống như bản gốc?
chrisb

2
nghe điều đó thật tuyệt. Về câu hỏi của bạn: bạn không muốn cân bằng dữ liệu kiểm tra của mình. Điều này sẽ thiên vị đánh giá hiệu suất của bạn, vì bạn sẽ kiểm tra một số ví dụ hai lần (trong trường hợp quá khổ) hoặc bỏ qua một số ví dụ từ kiểm tra (trong trường hợp lấy mẫu thấp). Tóm lại, bạn muốn cân bằng tập huấn luyện của mình (riêng trong mỗi lần xác thực chéo), nhưng sau đó kiểm tra dữ liệu kiểm tra chưa được sửa đổi (có khả năng mất cân bằng).
Kay Broderen

Cảm ơn môi giới. Làm điều đó đặt một bức tranh khác nhau trên mọi thứ. Độ chính xác cân bằng giảm xuống khoảng 56%. Độ nhạy giảm xuống 17% trên mô hình tốt nhất của tôi (tương ứng với lớp tôi cần để có được dự đoán tốt hơn). Tôi cho rằng điều này có ý nghĩa bởi vì lớp quá khổ là lớp đó nên những ví dụ đó sẽ được tính nhiều lần. Tôi sẽ thử tăng cân bằng bộ dữ liệu huấn luyện để xem điều này có khác biệt gì không.
chrisb

Hiện đã thử nghiệm nó với các tỷ lệ khác nhau của dữ liệu cân bằng, độ chính xác cân bằng tốt nhất tôi có thể nhận được là với Ada Boost với 60%. Tôi đang vật lộn để xác định cái gì là "tốt". Mục đích chính của tôi là dự đoán những sinh viên có thể rút khỏi khóa học của họ. Với Rút tiền là lớp tích cực của tôi, tôi đã cố gắng tối đa hóa số lượng tích cực thực sự của mình (tức là tăng độ nhạy). Cân bằng lại dữ liệu thực hiện điều này để làm giảm số lượng âm tính giả. 60% dường như không tốt hơn nhiều so với ngẫu nhiên đối với tôi - nhưng tôi không có cơ sở nào cho điều gì là "tốt" trong trường hợp này.
chrisb

2
@chrisb, Đây là một nhận xét muộn (!). Trên một tiếp tuyến, bạn có thể thử hồi quy Cox Proportional Hazards ( cran.r-project.org/doc/contrib/Fox-Compmate/, ) để mô hình hóa sự sống còn của học sinh. Bạn có thể không cần xuống hoặc lấy mẫu quá mức.
Zhubarb

8

Bốn ý tưởng sau đây có thể giúp bạn giải quyết vấn đề này.

  1. 2PrecisionRecallPrecision+Recall

  2. Sử dụng tham số 'trước' trong Cây quyết định để thông báo thuật toán về tần suất trước của các lớp trong tập dữ liệu, nghĩa là nếu có 1.000 số dương trong bộ dữ liệu 1.000.0000 prior = c(0.001, 0.999)(tính bằng R).

  3. Sử dụng đối số 'trọng số' trong hàm phân loại bạn sử dụng để xử phạt nghiêm khắc thuật toán phân loại sai các trường hợp dương tính hiếm gặp

  4. Sử dụng đối số 'chi phí' trong một số thuật toán phân loại - ví dụ như rparttrong R-- để xác định chi phí tương đối cho việc phân loại sai các mặt tích cực thực và phủ định thực. Bạn tự nhiên nên đặt chi phí cao cho việc phân loại sai của lớp hiếm.

Tôi không ủng hộ việc quá khổ, vì nó đưa ra các quan sát phụ thuộc trong bộ dữ liệu và điều này vi phạm các giả định về tính độc lập được thực hiện cả trong Thống kê và Học máy.


2

Tôi đã đưa ra một câu trả lời trong chủ đề gần đây :

Những gì chúng tôi làm là chọn một mẫu với tỷ lệ khác nhau. Trong ví dụ đã nói ở trên, đó sẽ là 1000 trường hợp "CÓ" và, ví dụ, 9000 trường hợp "KHÔNG". Cách tiếp cận này cho các mô hình ổn định hơn. Tuy nhiên, nó phải được thử nghiệm trên một mẫu thực (có 1.000.000 hàng).

Không chỉ cung cấp cho cách tiếp cận ổn định hơn, mà các mô hình thường tốt hơn, liên quan đến các biện pháp nâng.

Bạn có thể tìm kiếm nó dưới dạng "oversampling trong thống kê", kết quả đầu tiên khá tốt: http://www.statssa.gov.za/isi2009/SellectificProgramme/IPMS/1621.pdf


1

Thêm vào câu trả lời của @Kay Chiến lược giải pháp thứ nhất: Quá trình lấy mẫu thiểu số tổng hợp ( SMOTE ) thường làm tốt hơn so với việc lấy mẫu dưới hoặc vượt quá kinh nghiệm của tôi vì tôi nghĩ rằng nó tạo ra sự thỏa hiệp giữa cả hai. Nó tạo các mẫu tổng hợp của lớp thiểu số bằng cách sử dụng các điểm dữ liệu được vẽ trên không gian dự đoán đa biến và ít nhiều lấy điểm giữa các điểm liền kề trên không gian đó để tạo các điểm tổng hợp mới và do đó cân bằng cả hai kích thước lớp. (không chắc chắn về điểm giữa, chi tiết của thuật toá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.