Một nguồn tài nguyên tốt bao gồm so sánh các ưu và nhược điểm của các phân loại khác nhau là gì?


15

Trình phân loại 2 lớp tốt nhất là gì? Vâng, tôi đoán đó là câu hỏi đáng giá triệu đô la, và vâng, tôi biết về định lý bữa trưa miễn phí và tôi cũng đã đọc các câu hỏi trước đây:

Tuy nhiên, tôi thích đọc thêm về chủ đề này.

Một nguồn thông tin tốt bao gồm một so sánh chung về các đặc điểm, lợi thế và tính năng của các phân loại khác nhau là gì?


+ xin vui lòng tha thứ cho tôi rằng tôi không phải là người nói tiếng Anh bản địa :)
Dov

Câu trả lời:


9

Các ESL , như đã đề cập bởi Peter Flom, là một gợi ý tuyệt vời (lưu ý rằng liên kết của tôi là để trang web của tác giả mà cuốn sách có thể thu được như một pdf-file miễn phí). Hãy để tôi thêm một vài điều cụ thể hơn để tìm kiếm trong cuốn sách:

  • Bảng 10.1 (trang 351) đưa ra đánh giá của các tác giả về một số đặc điểm nhất định của các mạng thần kinh, SVM, Cây, MARS và hạt nhân k-NN, bằng cách nào đó dường như là các phương pháp mà các tác giả muốn đưa vào danh sách "ngoài luồng" kệ "phương pháp.
  • Chương 10 xử lý việc tăng cường, điều mà tôi thấy còn thiếu trong danh sách các phương pháp trong cuộc thăm dò được trích dẫn bởi OP. Tăng cường độ dốc dường như là một trong những phương pháp hoạt động tốt hơn trong một số ví dụ.
  • Chương 9 xử lý các mô hình phụ gia tổng quát (GAM), bổ sung cho mô hình hồi quy logistic (được xếp hạng hàng đầu trong cuộc thăm dò ) tính linh hoạt của các hiệu ứng phụ gia phi tuyến tính của các yếu tố dự đoán. Gams sẽ không được gần như dễ sử dụng như hồi quy logistic với tất cả các thông số làm mịn mà phải được lựa chọn nếu nó không được cho việc triển khai tốt đẹp như một trong các gói R mgcv .

Thêm vào cuốn sách Chế độ xem tác vụ học máy cho R, điều này mang lại một số ấn tượng về những gì nhiều gói học máy thực sự có thể làm, mặc dù không có so sánh thực sự. Đối với người dùng Python tôi tưởng tượng rằng scikit.learn là một nơi tốt để tìm kiếm. Phương pháp "ngoài luồng" hoặc "ngoài luồng" là bao nhiêu, được quyết định rất nhiều bởi việc triển khai xử lý tự động thích ứng với tình huống dữ liệu như thế nào so với việc điều chỉnh chi tiết cho người dùng. Trong suy nghĩ của tôi, mgcv cho R là một ví dụ điển hình giúp cho việc lắp mô hình phụ gia tổng quát hợp lý thực sự dễ dàng và về cơ bản mà không cần người dùng "điều chỉnh" bất cứ điều gì.


8

Các tài nguyên được liệt kê bởi những người khác chắc chắn rất hữu ích, nhưng tôi sẽ đồng ý và thêm vào những điều sau đây: trình phân loại "tốt nhất" có thể là bối cảnh và dữ liệu cụ thể. Trong một bước đột phá gần đây để đánh giá các phân loại nhị phân khác nhau, tôi đã tìm thấy Cây hồi quy Boosted hoạt động tốt hơn so với các phương thức khác mà tôi có quyền truy cập. Điều quan trọng đối với tôi là học cách sử dụng các công cụ khai thác dữ liệu Orange . Họ có một số tài liệu tuyệt vời để bắt đầu khám phá những phương pháp này với dữ liệu của bạn . Ví dụ, đây là một đoạn mã Python ngắn mà tôi đã viết để đánh giá chất lượng của nhiều phân loại qua nhiều thước đo độ chính xác bằng cách sử dụng xác thực chéo k-Fold.

import orange, orngTest, orngStat, orngTree , orngEnsemble, orngSVM, orngLR
import numpy as np

data = orange.ExampleTable("performance_orange_2.tab")
bayes = orange.BayesLearner(name="Naive Bayes")
svm = orngSVM.SVMLearner(name="SVM")
tree = orngTree.TreeLearner(mForPruning=2, name="Regression Tree")
bs = orngEnsemble.BoostedLearner(tree, name="Boosted Tree")
bg = orngEnsemble.BaggedLearner(tree, name="Bagged Tree")
forest = orngEnsemble.RandomForestLearner(trees=100, name="Random Forest")
learners = [bayes, svm, tree, bs, bg, forest]
results = orngTest.crossValidation(learners, data, folds=10)
cm = orngStat.computeConfusionMatrices(results,
                             classIndex=data.domain.classVar.values.index('1'))

stat = (('ClsAcc', 'CA(results)'),
        ('Sens', 'sens(cm)'),
        ('Spec', 'spec(cm)'),
        ('AUC', 'AUC(results)'),
        ('Info', 'IS(results)'),
        ('Brier', 'BrierScore(results)'))
scores = [eval("orngStat." + s[1]) for s in stat]
print "Learner        " + "".join(["%-9s" % s[0] for s in stat])
print "-----------------------------------------------------------------"
for (i, L) in enumerate(learners):
    print "%-15s " % L.name + "".join(["%5.3f   " % s[i] for s in scores])

print "\n\n"
measure = orngEnsemble.MeasureAttribute_randomForests(trees=100)
print "Random Forest Variable Importance"
print "---------------------------------"
imps = measure.importances(data)
for i,imp in enumerate(imps):
    print "%-20s %6.2f" % (data.domain.attributes[i].name, imp)

print '\n\n'
print 'Predictions on new data...'
bs_classifier = bs(data)
new_data = orange.ExampleTable('performance_orange_new.tab')
for obs in new_data:
    print bs_classifier(obs, orange.GetBoth)

Khi tôi chạy mã này trên dữ liệu của mình, tôi nhận được kết quả như

In [1]: %run binary_predict.py
Learner        ClsAcc   Sens     Spec     AUC      Info     Brier
-----------------------------------------------------------------
Naive Bayes     0.556   0.444   0.643   0.756   0.516   0.613
SVM             0.611   0.667   0.714   0.851   0.264   0.582
Regression Tree 0.736   0.778   0.786   0.836   0.945   0.527
Boosted Tree    0.778   0.778   0.857   0.911   1.074   0.444
Bagged Tree     0.653   0.667   0.786   0.816   0.564   0.547
Random Forest   0.736   0.667   0.929   0.940   0.455   0.512


Random Forest Variable Importance
---------------------------------
Mileage            2.34
Trade_Area_QI      2.82
Site_Score         8.76

Có rất nhiều điều bạn có thể làm với các đối tượng Orange để xem xét hiệu năng và so sánh. Tôi thấy gói này cực kỳ hữu ích khi viết một lượng nhỏ mã để thực sự áp dụng các phương thức cho dữ liệu của mình bằng API nhất quán và trừu tượng hóa vấn đề (nghĩa là tôi không cần sử dụng sáu gói khác nhau từ sáu tác giả khác nhau, mỗi gói có một tác giả khác cách tiếp cận để thiết kế và tài liệu API, v.v.).




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.