[ML-05] Chúng ta nên dùng số liệu nào để đo lường mô hình (model) và các vấn đề phân loại gặp phải như thế nào? (Phần 1)
Trong 2 bài viết trước chúng ta đã cùng nhau tìm hiểu về "tấm bia" - nơi ta đánh giá mô hình của mình tốt xấu ra sao. Hôm nay chúng ta tiếp tục bàn về "thước đo", cụ thể hơn là "thước đo" cho mô hình giải quyết những vấn đề phân lớp. 1. Accuracy (Độ chính xác): Đây là cách đơn giản nhất để đánh ...
Trong 2 bài viết trước chúng ta đã cùng nhau tìm hiểu về "tấm bia" - nơi ta đánh giá mô hình của mình tốt xấu ra sao. Hôm nay chúng ta tiếp tục bàn về "thước đo", cụ thể hơn là "thước đo" cho mô hình giải quyết những vấn đề phân lớp.
1. Accuracy (Độ chính xác):
Đây là cách đơn giản nhất để đánh giá mô hình của ta tốt xấu ra sao. Trong bài toán phân lớp "accuracy" hay "độ chính xác" được tính như sau:
accuracy=number of right predictionnumber of dataaccuracy = frac{mathbf{number} space of space mathbf{right space prediction}}{mathbf{number} space of space mathbf{data}} accuracy=number of datanumber of right prediction
Chẳng hạn ta thử nghiệm trên 1000 dữ liệu, số lần mô hình dự đoán đúng trên 1000 dữ liệu kia là 912 thì có nghĩa là độ chính xác của mô hình trên tập dữ liệu đó là
accuracy=9121000=91,2%accuracy = frac{912}{1000} = 91,2 \% accuracy=1000912=91,2%
Tuy nhiên accuracy trong một vài trường hợp, accuracy lại có những nhược điểm chết người. Để ý một chút rằng thay vì tính số lần dự đúng của mô hình, ta tính số lần dự đoán đúng trên từng nhãn. Chẳng hạn với ví dụ sau:
- Data: Số lượng data đưa vào test là 1000, có 4 loại nhãn {0,1,2,3}
- Nhãn 0: dự đoán đúng 250, số lượng nhãn 0: 300 chiếm 30% data
- Nhãn 1: dự đoán đúng 0, số lượng nhãn 1: 100 chiếm 10% data
- Nhãn 2: dự đoán đúng 150, số lượng nhãn 2: 200 chiếm 20% data
- Nhãn 3: dự đoán đúng 300, số lượng nhãn 3: 400 chiếm 40% data Theo công thức trên thì accuracy sẽ là:
accuracy=250+0+150+300300+100+200+400=7001000=70%accuracy = frac{250 + 0 + 150 + 300}{300 + 100 + 200 + 400} = frac{700}{1000} = 70\% accuracy=300+100+200+400250+0+150+300=1000700=70%
Bên cạnh đó accuracy xét riêng lẻ trên từng nhãn:
accuracy(label 0)=250300=83.33%accuracy(label space 0) = frac{250}{300} = 83.33\% accuracy(label 0)=300250=83.33%
accuracy(label 1)=0100=0%accuracy(label space 1) = frac{0}{100} = 0\% accuracy(label 1)=1000=0%
accuracy(label 2)=150200=75%accuracy(label space 2) = frac{150}{200} = 75\% accuracy(label 2)=200150=75%
accuracy(label 3)=300400=75%accuracy(label space 3) = frac{300}{400} = 75\% accuracy(label 3)=400300=75%
Accuracy trên từng nhãn ảnh hưởng tới accuracy của tất cả theo số lượng data mà nhãn đó chiếm trong cả tập. Chẳng hạn nhãn 0, chiếm 30% lượng data và có độ chính xác là 83.33% nên nó sẽ góp vào độ chính xác chung là 83.33% * 30% = 25%. Nói cách khác:
accuracy(from label 0)=number of right prediction label 0number of label 0∗number of label 0number of dataaccuracy(from space label space 0) = frac{number space of space right space prediction space label space 0}{number space of space label space 0} * frac{number space of space label space 0}{number space of space data} accuracy(from label 0)=number of label 0number of right prediction label 0∗number of datanumber of label 0
Hay
accuracy(from label 0)=number of right prediction label 0number of dataaccuracy(from space label space 0) = frac{number space of space right space prediction space label space 0}{number space of space data} accuracy(from label 0)=number of datanumber of right prediction label 0
Thử lại với toàn bộ nhãn xem ta có ra được accuracy ban đầu không!
accuracy=83.33%∗30%+0%∗10%+75%∗20%+75%∗40%=70%accuracy = 83.33\% * 30\% + 0\% * 10\% + 75\% * 20\% + 75\% * 40\% = 70\% accuracy=83.33%∗30%+0%∗10%+75%∗20%+75%∗40%=70%
Điều này có nghĩa là "độ chính xác" ta có được trên từng nhãn, được tổng hợp lại thành 1 độ chính xác duy nhất đã bị ảnh hưởng bởi lượng phân bố dữ liệu trên các nhãn của tập dữ liệu test này. Hay nói cách khác, khi ta thay đổi tập dữ liệu test này với phân bố dữ liệu trên các nhãn một cách phù hợp, ta có thể đạt được nhiều độ chính xác rất khác nhau