คำถามติดแท็ก multi-class

การจำแนกประเภทหลายคลาสเป็นงานการจัดประเภทที่มีมากกว่าสองคลาส เรียกอีกอย่างว่าการจำแนกพหุนาม

3
คุณคำนวณความแม่นยำและเรียกคืนการจำแนกประเภทหลายคลาสโดยใช้เมตริกซ์ความสับสนได้อย่างไร
ฉันสงสัยว่าจะคำนวณความแม่นยำและเรียกคืนได้อย่างไรโดยใช้เมตริกซ์ความสับสนสำหรับปัญหาการจำแนกประเภทหลายชั้น โดยเฉพาะการสังเกตสามารถกำหนดให้กับคลาส / ฉลากที่เป็นไปได้มากที่สุดเท่านั้น ฉันต้องการคำนวณ: ความแม่นยำ = TP / (TP + FP) เรียกคืน = TP / (TP + FN) สำหรับแต่ละชั้นเรียนจากนั้นคำนวณค่า F-micro เฉลี่ย

8
วิธีคำนวณความแม่นยำ / การเรียกคืนสำหรับการจำแนกประเภทมัลติคลาส / มัลติลาเบล
ฉันสงสัยว่าจะคำนวณความแม่นยำและมาตรการการเรียกคืนสำหรับการจำแนกประเภทหลายคลาสแบบหลายป้ายกำกับได้อย่างไรเช่นการจำแนกที่มีป้ายกำกับมากกว่าสองป้ายและแต่ละกรณีสามารถมีป้ายกำกับได้หลายป้าย


3
วิธีการกำหนดคุณภาพของตัวแยกประเภทมัลติคลาส
ป.ร. ให้ไว้ ชุดข้อมูลที่มีอินสแตนซ์xผมxผมx_iพร้อมกับคลาสที่ทุกอินสแตนซ์เป็นของคลาสหนึ่งยังไม่มีข้อความยังไม่มีข้อความNxผมxผมx_iYผมYผมy_i ตัวแยกประเภทมัลติคลาส หลังจากการฝึกอบรมและการทดสอบผมโดยทั่วไปมีตารางที่มีที่จริงชั้นและคาดการณ์ระดับเช่นทุกอยู่ในชุดทดสอบ ดังนั้นทุกครั้งที่ฉันมีการแข่งขัน ( ) หรือ miss ( )YผมYผมy_ix i y i = a i y i ≠ a iaผมaผมa_ixผมxผมx_iYผม= aผมYผม=aผมy_i= a_iYผม≠ผมYผม≠aผมy_i\neq a_i ฉันจะประเมินคุณภาพของการแข่งขันได้อย่างไร ปัญหาคือบางคลาสสามารถมีสมาชิกจำนวนมากได้เช่นหลายอินสแตนซ์เป็นสมาชิก เห็นได้ชัดว่าถ้า 50% ของจุดข้อมูลทั้งหมดอยู่ในชั้นหนึ่งและตัวจําแนกสุดท้ายของฉันนั้นถูกต้อง 50% โดยรวมแล้วฉันก็ไม่ได้อะไรเลย ฉันสามารถสร้างลักษณนามเล็กน้อยที่เอาท์พุทว่าคลาสที่ใหญ่ที่สุดไม่ว่าอินพุตจะเป็นเช่นไร มีวิธีมาตรฐานในการประมาณคุณภาพของตัวจําแนกตามการทดสอบที่ทราบชุดผลลัพธ์ของการจับคู่และการเข้าชมสำหรับแต่ละคลาสหรือไม่? อาจเป็นสิ่งสำคัญยิ่งที่จะแยกแยะอัตราการจับคู่สำหรับแต่ละชั้นเรียนหรือไม่ วิธีที่ง่ายที่สุดที่ฉันคิดได้คือยกเว้นการแข่งขันที่ถูกต้องของคลาสที่ใหญ่ที่สุด มีอะไรอีกบ้าง?

2
จะจัดการกับความแตกต่างระหว่างการกระจายตัวของชุดทดสอบและชุดฝึกอบรมอย่างไร?
ฉันคิดว่าสมมติฐานพื้นฐานหนึ่งของการเรียนรู้ของเครื่องหรือการประมาณค่าพารามิเตอร์คือข้อมูลที่มองไม่เห็นมาจากการแจกแจงแบบเดียวกับชุดการฝึกอบรม อย่างไรก็ตามในบางกรณีการกระจายชุดทดสอบเกือบจะแตกต่างจากชุดฝึกอบรม พูดสำหรับปัญหาการจัดหมวดหมู่หลากหลายขนาดใหญ่ที่พยายามแบ่งคำอธิบายผลิตภัณฑ์ออกเป็นประมาณ 17,000 คลาส ชุดการฝึกอบรมจะมีนักบวชชั้นสูงอย่างมากบางชั้นอาจมีตัวอย่างการฝึกอบรมมากมาย แต่บางคนอาจมีเพียงไม่กี่คน สมมติว่าเราได้รับชุดทดสอบที่มีเลเบลคลาสที่ไม่รู้จักจากลูกค้า เราพยายามจัดประเภทผลิตภัณฑ์แต่ละชิ้นในชุดทดสอบเป็นหนึ่งใน 17,000 คลาสโดยใช้ตัวจําแนกที่ฝึกในชุดฝึกอบรม ชุดทดสอบอาจมีการแจกแจงแบบเบ้ แต่อาจแตกต่างจากชุดการฝึกอบรมเนื่องจากอาจเกี่ยวข้องกับธุรกิจที่แตกต่างกัน หากการแจกแจงสองระดับแตกต่างกันมากลักษณนามที่ผ่านการฝึกอบรมอาจทำงานได้ไม่ดีในชุดทดสอบ เรื่องนี้ดูเหมือนชัดเจนโดยเฉพาะกับตัวจําแนก Naive Bayes มีวิธีใดที่สามารถจัดการความแตกต่างระหว่างชุดการฝึกอบรมและชุดทดสอบที่กำหนดสำหรับตัวแยกประเภทความน่าจะเป็นหรือไม่ ฉันได้ยินเกี่ยวกับการที่ "transductive SVM" ทำสิ่งที่คล้ายกันใน SVM มีเทคนิคที่คล้ายกันในการเรียนรู้ลักษณนามที่มีประสิทธิภาพดีที่สุดในชุดการทดสอบที่กำหนดหรือไม่? จากนั้นเราสามารถฝึกตัวจําแนกใหม่สําหรับชุดการทดสอบที่แตกต่างกันตามที่ได้รับอนุญาตในสถานการณ์จริงนี้

2
วิธีการใช้ฟังก์ชั่นการตรวจสอบความถูกต้องข้ามของ Scikit-Learn กับตัวแยกประเภทหลายฉลาก
ผมทดสอบลักษณนามแตกต่างกันในชุดข้อมูลที่มี 5 ชั้นเรียนและเช่นกันสามารถอยู่ในหนึ่งหรือมากกว่าหนึ่งของการเรียนเหล่านี้ดังนั้นฉันใช้ scikit sklearn.multiclass.OneVsRestClassifierการเรียนรู้ของลักษณนามหลายป้ายโดยเฉพาะ sklearn.cross_validation.StratifiedKFoldตอนนี้ผมต้องการที่จะดำเนินการตรวจสอบข้ามใช้ สิ่งนี้ทำให้เกิดข้อผิดพลาดดังต่อไปนี้: Traceback (most recent call last): File "mlfromcsv.py", line 93, in <module> main() File "mlfromcsv.py", line 77, in main test_classifier_multilabel(svm.LinearSVC(), X, Y, 'Linear Support Vector Machine') File "mlfromcsv.py", line 44, in test_classifier_multilabel scores = cross_validation.cross_val_score(clf_ml, X, Y_list, cv=cv, score_func=metrics.precision_recall_fscore_support, n_jobs=jobs) File "/usr/lib/pymodules/python2.7/sklearn/cross_validation.py", line 1046, …

2
ตัวชี้วัดการจำแนกหลายป้ายบน scikit
ฉันกำลังพยายามสร้างตัวแยกประเภทแบบหลายป้ายกำกับเพื่อกำหนดหัวข้อให้กับเอกสารที่มีอยู่โดยใช้ scikit ฉันกำลังประมวลผลเอกสารของฉันผ่านพวกเขาผ่านTfidfVectorizerป้ายผ่านที่MultiLabelBinarizerและสร้างOneVsRestClassifierด้วยการSGDClassifierเป็นประมาณการ อย่างไรก็ตามเมื่อทำการทดสอบลักษณนามของฉันฉันได้รับคะแนนสูงสุดเพียง. 29ซึ่งจากสิ่งที่ฉันได้อ่านนั้นค่อนข้างต่ำสำหรับปัญหาที่คล้ายกัน ฉันลองตัวเลือกหลายอย่างใน TfidfVectorizer เช่น stopwords, unigrams, stemming และไม่มีอะไรน่าจะเปลี่ยนผลลัพธ์ได้มากนัก ฉันยังเคยGridSearchCVได้รับพารามิเตอร์ที่ดีที่สุดสำหรับตัวประมาณของฉันและตอนนี้ฉันไม่มีแนวคิดว่าจะลองทำอะไรต่อไป ในเวลาเดียวกันจากสิ่งที่ฉันเข้าใจว่าฉันไม่สามารถใช้scikit.metricsกับOneVsRestClassifierดังนั้นฉันจะได้รับตัวชี้วัดบางอย่าง (F1, Precision, Recall และอื่น ๆ ) เพื่อหาว่ามีอะไรผิดปกติหรือไม่ อาจเป็นปัญหากับคลังข้อมูลของฉันหรือไม่ ปรับปรุง: ฉันยังพยายามใช้CountVectorizerและHashingVectorizerและวิธี pipeline พวกเขาไปTfidfTransformerแต่ผลที่มีลักษณะคล้ายกัน ดังนั้นฉันเดาว่าวิธีการแบบถุงคำกำลังทำดีที่สุดในโดเมนโทเค็นและส่วนที่เหลือขึ้นอยู่กับลักษณนาม ...

2
วิธีที่ดีที่สุดในการดำเนินการ SVM แบบหลายคลาส
ฉันรู้ว่า SVM เป็นตัวจําแนกไบนารี ฉันต้องการขยายไปยัง SVM แบบหลายชั้น วิธีไหนที่ดีที่สุดและอาจจะง่ายที่สุดในการดำเนินการ รหัส: ใน MATLAB u=unique(TrainLabel); N=length(u); if(N>2) itr=1; classes=0; while((classes~=1)&&(itr<=length(u))) c1=(TrainLabel==u(itr)); newClass=double(c1); tst = double((TestLabel == itr)); model = svmtrain(newClass, TrainVec, '-c 1 -g 0.00154'); [predict_label, accuracy, dec_values] = svmpredict(tst, TestVec, model); itr=itr+1; end itr=itr-1; end จะปรับปรุงได้อย่างไร?

2
multiclass perceptron ทำงานอย่างไร
ฉันไม่มีพื้นหลังในวิชาคณิตศาสตร์ แต่ฉันเข้าใจว่า Perceptron ง่าย ๆ ทำงานอย่างไรและฉันคิดว่าฉันเข้าใจแนวคิดของไฮเปอร์เพลน (ฉันจินตนาการว่ามันเป็นเรขาคณิตในระนาบในอวกาศ 3 มิติซึ่งแยกเมฆสองจุดออกเป็นเส้นแยกกัน เมฆสองจุดในพื้นที่ 2 มิติ) แต่ฉันไม่เข้าใจว่าระนาบหนึ่งเส้นหรือหนึ่งเส้นสามารถแยกเมฆจุดแตกต่างกันสามจุดในพื้นที่ 3 มิติหรือในพื้นที่ 2 มิติตามลำดับ - นี่เป็นไปไม่ได้ทางเรขาคณิตใช่ไหม? ฉันพยายามเข้าใจส่วนที่เกี่ยวข้องในบทความ Wikipediaแต่ล้มเหลวอย่างน่าสมเพชในประโยค“ ที่นี่อินพุต x และผลลัพธ์ y ถูกดึงออกมาจากชุดที่กำหนดเอง” ใครบางคนสามารถอธิบาย perceptron แบบหลายคลาสให้ฉันและมันเป็นไปตามแนวคิดของไฮเปอร์เพลนหรืออาจชี้ให้ฉันไปที่คำอธิบายที่ไม่เกี่ยวกับคณิตศาสตร์?

2
การทำนายเป้าหมายหรือคลาสหลายอัน?
สมมติว่าฉันกำลังสร้างแบบจำลองการทำนายที่ฉันพยายามทำนายเหตุการณ์หลาย ๆ เหตุการณ์ (ตัวอย่างเช่นทั้งการตายและการโยนเหรียญ) อัลกอริทึมส่วนใหญ่ที่ฉันคุ้นเคยกับการทำงานกับเป้าหมายเดียวเท่านั้นดังนั้นฉันสงสัยว่ามีวิธีการมาตรฐานสำหรับสิ่งนี้ ฉันเห็นสองตัวเลือกที่เป็นไปได้ บางทีวิธีที่ไร้เดียงสาที่สุดก็คือการปฏิบัติต่อพวกเขาเป็นสองปัญหาที่แตกต่างกันแล้วรวมผลลัพธ์ อย่างไรก็ตามนั่นมีข้อเสียอย่างร้ายแรงเมื่อเป้าหมายทั้งสองนั้นไม่ได้เป็นอิสระ (และในหลาย ๆ กรณีพวกเขาอาจต้องพึ่งพาอย่างมาก ) แนวทางที่เหมาะสมกว่าสำหรับฉันคือการสร้างแอตทริบิวต์เป้าหมายแบบรวม ดังนั้นในกรณีของการตายและเหรียญเราจะมีสถานะ ( , ฯลฯ ) อย่างไรก็ตามสิ่งนี้สามารถนำไปสู่จำนวนของรัฐ / คลาสในเป้าหมายคอมโพสิตที่ค่อนข้างใหญ่ได้อย่างรวดเร็ว (ถ้าเรามี 2 ลูกเต๋าเป็นต้น) นอกจากนี้ดูเหมือนว่าจะแปลกในกรณีที่คุณลักษณะหนึ่งเป็นหมวดหมู่ในขณะที่คนอื่นเป็นตัวเลข (ตัวอย่างเช่นถ้าทำนายอุณหภูมิและประเภทของการเร่งรัด)6⋅2=126⋅2=126\cdot 2=12(1,H),(1,T),(2,H)(1,H),(1,T),(2,H)(1, H), (1, T), (2, H) มีวิธีมาตรฐานในการจัดเรียงของสิ่งนี้หรือไม่? นอกจากนี้ยังมีอัลกอริทึมการเรียนรู้ที่ออกแบบมาเพื่อจัดการกับสิ่งนี้โดยเฉพาะหรือไม่?

3
จะสร้างเมทริกซ์ความสับสนสำหรับตัวแยกประเภทมัลติคลาสได้อย่างไร?
ฉันมีปัญหากับ 6 คลาส ดังนั้นฉันจึงสร้างตัวแยกประเภทมัลติคลาสดังนี้สำหรับแต่ละคลาสฉันมีลักษณนามลอจิสติกการถดถอยหนึ่งตัวโดยใช้ One vs. All ซึ่งหมายความว่าฉันมี 6 ลักษณนามที่แตกต่างกัน ฉันสามารถรายงานเมทริกซ์ความสับสนสำหรับตัวแยกประเภทแต่ละคนของฉัน แต่ฉันต้องการรายงานความสับสนของตัวแยกประเภททั้งหมดดังที่ฉันเห็นในตัวอย่างมากมายที่นี่ ฉันจะทำมันได้อย่างไร ฉันต้องเปลี่ยนกลยุทธ์การจัดหมวดหมู่ของฉันโดยใช้อัลกอริทึม One vs. One แทน One vs. All หรือไม่ เพราะในการฝึกอบรมความสับสนเหล่านี้รายงานกล่าวว่าผลบวกปลอมสำหรับแต่ละชั้นเรียน ตัวอย่างของเมทริกซ์ความสับสนหลายระดับ ฉันต้องการค้นหาจำนวนรายการที่ไม่ถูกจำแนก ในแถวแรกมี 137 ตัวอย่างของชั้นที่ 1 ที่ได้รับการจัดเป็นชั้นที่ 1 และ 13 ตัวอย่างของชั้นที่ 1 ที่ได้รับการจัดเป็นระดับ 2 วิธีรับหมายเลขนี้

1
ขยายโมเดล 2 ระดับไปสู่ปัญหาหลายระดับ
บทความเกี่ยวกับ Adaboostนี้จะให้คำแนะนำและรหัส (หน้า 17) สำหรับการขยายโมเดล 2-class ไปสู่ปัญหา K-class ฉันต้องการที่จะพูดคุยรหัสนี้เพื่อที่ฉันสามารถเสียบรุ่น 2 ระดับที่แตกต่างกันได้อย่างง่ายดายและเปรียบเทียบผลลัพธ์ เนื่องจากโมเดลการจำแนกประเภทส่วนใหญ่มีอินเตอร์เฟสสูตรและpredictวิธีการบางอย่างนี้จึงค่อนข้างง่าย น่าเสียดายที่ฉันไม่พบวิธีการแยกความน่าจะเป็นแบบคลาสจากแบบจำลอง 2 ระดับดังนั้นแต่ละรุ่นจะต้องใช้รหัสที่กำหนดเอง นี่คือฟังก์ชั่นที่ฉันเขียนเพื่อแบ่งปัญหา K-class ออกเป็นปัญหา 2 ระดับและคืน K โมเดล: oneVsAll <- function(X,Y,FUN,...) { models <- lapply(unique(Y), function(x) { name <- as.character(x) .Target <- factor(ifelse(Y==name,name,'other'), levels=c(name, 'other')) dat <- data.frame(.Target, X) model <- FUN(.Target~., data=dat, ...) return(model) }) …

2
เอาต์พุตของ Scikit SVM ในการจัดประเภทแบบหลายคลาสจะให้ฉลากเหมือนกันเสมอ
ฉันกำลังใช้ Scikit เรียนรู้ด้วยรหัสต่อไปนี้: clf = svm.SVC(C=1.0, tol=1e-10, cache_size=600, kernel='rbf', gamma=0.0, class_weight='auto') จากนั้นจัดทำและคาดการณ์ชุดข้อมูลที่มีป้ายกำกับ 7 รายการที่แตกต่างกัน ฉันได้ผลลัพธ์ที่แปลก ไม่ว่าจะใช้เทคนิคการตรวจสอบความถูกต้องแบบไขว้ใดฉันใช้ป้ายกำกับที่คาดการณ์ไว้ในชุดการตรวจสอบความถูกต้องจะเป็นป้ายกำกับ 7 ฉันพยายามที่พารามิเตอร์อื่น ๆ บางคนรวมทั้งคนเริ่มต้นเล่ม ( svm.SVC()) แต่ตราบใดที่การใช้วิธีการที่ฉันเคอร์เนลrbfแทนpolyหรือlinearมันก็จะไม่ทำงานในขณะที่มันทำงานจริงๆดีสำหรับการและpolylinear นอกจากนี้ฉันได้ลองทำนายข้อมูลรถไฟแทนข้อมูลการตรวจสอบแล้วและมันก็พอดี ไม่มีใครเห็นปัญหาแบบนี้มาก่อนและรู้ว่าเกิดอะไรขึ้นที่นี่? ฉันไม่เคยดูรายละเอียดชั้นเรียนของฉัน แต่ฉันรู้ว่ามันควรจะประมาณ 30% ของพวกเขาคือ 7, 14% คือ 4 ฉันลองใช้การปรับใช้ 1-vs-rest ด้วยตนเองและยังไม่เป็นประโยชน์

3
จะใช้ Softmax เป็นฟังก์ชั่น Activation ใน Multi-layer Perceptron ใน scikit-Learn ได้อย่างไร? [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามดังนั้นจึงเป็นหัวข้อสำหรับการตรวจสอบข้าม ปิดให้บริการในวันที่ 11 เดือนที่ผ่านมา ฉันจำเป็นต้องใช้ฟังก์ชั่นการเปิดใช้งาน Softmax กับ Perceptron หลายเลเยอร์ใน scikit Scikit documantationในหัวข้อของ Neural network models (ภายใต้การดูแล) กล่าวว่า"MLPClassifier รองรับการจำแนกประเภทหลายคลาสโดยใช้ Softmax เป็นฟังก์ชันเอาต์พุต" คำถามคือวิธีการใช้ฟังก์ชั่น? ในโค้ด snip ด้านล่างเมื่อฉันเพิ่ม Softmax ภายใต้พารามิเตอร์การเปิดใช้งานมันไม่ยอมรับ MLPClassifier(activation='Softmax', alpha=1e-05, batch_size='auto', beta_1=0.9, beta_2=0.999, early_stopping=False, epsilon=1e-08, hidden_layer_sizes=(15,), learning_rate='constant', learning_rate_init=0.001, max_iter=200, momentum=0.9, nesterovs_momentum=True, power_t=0.5, random_state=1, shuffle=True, solver='lbfgs', tol=0.0001, validation_fraction=0.1, verbose=False, …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.