# Competition Tasks and Metrics
## Objective Function & Evaluation Metrics
__Objective Function__ phục vụ mô hình trong quá trình huấn luyện bởi vì nó liên quan đến quá trình tối ưu hàm lỗi
__Evalution Metrics__ phục vụ mô hình sau khi quá trình huấn luyện kết thúc bằng việc cung cấp điểm số. => ko ảnh hưởng trực tiếp nhưng giúp chọn hyperparamenter tốt nhất cho mô hình.
## Objective Function, cost function & loss function
__Loss function__ là một function được định nghĩa trên một điểm dữ liệu để tính toán giá trị phạt khi kết quả của prediction khác với ground truth. Kết quả càng khác thì phạt càng nặng.
__Cost function__ Liên quan đến toàn bộ dữ liệu trong quá trình huấn luyện bằng việc tính tổng hay trung giá trị phạt cho toàn bộ tập dữ liệu. => ảnh hưởng trực tiếp đến quá trình huấn luyện.
__Objective function__ liên quan đến quá trình tối ưu trong khi huấn luyện
## Metrics for Regression
### MSE & R squared
$MSE = \frac{1}{n}SSE = \frac{1}{n}\sum_{i=1}^{n}(\hat{y_i} - y_i)^2$
__MSE__: Mean Squared Errors
__SSE__: Sum of Squared Errors
=> Tính lỗi trung bình trên bộ dữ liệu. Là công cụ tốt để so sánh các mô hình Regression với nhau. Tuy nhiên khi so sánh trên các tập dữ liệu khác nhau thì nó không còn tốt khi không cùng độ đo. Vì vậy $R^2$ là công cụ tốt hơn.
$R^2 = \frac{SSE}{SST} = \frac{\sum_{i=1}^{n}(\hat{y_i} - y_i)^2}{\sum_{i=1}^{n}(y_i - \bar{y})^2}$
__SST__: Sum of Squared Total
=> So sánh Squared Errors của mô hình với Squared Error của mô hình đơn giản nhất. Thích hợp so sánh kết quả trên tập dữ liệu khác nhau.
### Root Mean Squared Error (RMSE)
$RMSE = \sqrt{\frac{1}{n}\sum_{i=1}^{n}(\hat{y_i}-y_i)^2}$
Giống MSE
### Root Mean Squared Log Error (RMSLE)
$RMSLE = \sqrt{\frac{1}{n}\sum_{i=1}^{n}(log(\hat{y_i} + 1) - log(y_i + 1))^2}$
=> Không phạt nặng cho sự khác lớn giữa predict và ground trusth.
=> Dùng cho bài toán regression mà scale của output lớn.=> Dùng cho bài toán regression mà scale của output lớn.
Advantages of RMSLE vs RMSE:
- Become strong against outliners
- It measure the relative error
$log(\hat{y_i} + 1) - log(y_i + 1) = log(\frac{\hat{y_i} + 1}{y_i + 1})$
Ex:
| Data | y_true=[90];y_pred=[100] | y_true=[9000];y_pred=[100000] |
| -------- | -------- | -------- |
| RMSE |10|1000|
| RMSLE |0.10426|0.1053|
- Give a big penalty to Under Estimation
Ex:
| Data | y_true=[1000];y_pred=[600] | y_true=[1000];y_pred=[1400] |
| -------- | -------- | -------- |
| RMSE |400|400|
| RMSLE |0.5101|0.3361d| RMSLE |0.5101|0.3361|
### Mean Absolute Error (MAE)
$MAE = \frac{1}{n}\sum_{i=1}^{n}| \hat{y_i} - y_i|$
=> Không nhạy cảm với dữ liệu nhiễu như MSE
=> Khi sử dụng MAE như một objective function thì nó sẽ chậm hội tụ hơn so với L2 norm.
=> Trong sklearn MAE được implementation với độ phức tạp $O(N^2)$
## Metrics for classification
Có 3 bài toán chủ yếu:
- Binary Classification
- Multi-Class
- Multi-Label
### Accuracy
$Acc = \frac{correctAnswers}{totalAnswers}$
=> Để đánh giá chung mô hình có tốt hay không. Tuy nhiên khi các lớp bị mất cân bằng thì việc đánh giá dùng accuracy không còn hữu ích nữa. Để giải quyết việc đánh giá khi dữ liệu mất cân bằng thì có thể sử dụng đến confussion matrix.
### Precision & Recall
$Precision = \frac{TP}{TP + FP}$
Tỉ lệ dự đoán positive đúng trên tổng dự đoán positive. => Cố gắng để chỉ cho mô hình dự đoán positive khi khả năng cao kết quả là positive. Nghĩa là ko đoán thì thôi chứ khi đoán là positive thì khả năng đúng là cao.
$Recall = \frac{TP}{TP + FN}$
Tỉ lệ coverage tập Possitive.
=> Sinh ra Precision/Recall Trade-off.
=> Sinh ra Precision/Recall Trade-off.
### F1 score
$F1 = 2\times\frac{precision \times recall}{precision + recall}$
Sử dụng để có thể improve cả precision và recall
=> Làm việc tốt trên dữ liệu mất cân bằng
=> F1 cao khi cả Precision và Recall đều cao.
=> Giá trị bị thay đổi khi hoán đổi lớp.
=> Coi trọng lớp Possitive
$F_\beta = \frac{(1+\beta^2)\times(precision \times recall)}{\beta^2 \times precision + recall}$
Trong đó $\beta$ mô ta recall quan trọng hơn precision thế nào. Ví dụ khi muốn recall quan trọng hơn 2 lần precision thì set $\beta = 2$.
### Log loss & ROC-AUC
$LogLoss = -\frac{1}{n}\sum_{i=1}^{n}[y_ilog(\hat{y_i}) + (1-y_i)log(1- \hat{y_i})]$
__ROC__
__True Positive Rate__: $TPR = \frac{TP}{TP+FN}$
__False Positive Rate__:$FPR = \frac{FP}{FP+TN}$
__AUC__ Area Under the Curver
$0.9<= ROC-AUC <=1$ => very good
### Matthew Correlation Coefficient (MCC)
$MCC = \frac{TP \times TN - FP \times FN}{\sqrt{(TP+FP)\times(TP+FN)\times(TN+FP)\times(TN+FN)}}$
=> sử dụng khi dữ liệu hơi mất cân bằng
=> giá trị nằm từ -1 -> 1 (inverse prediction -> perfect prediction)=> giá trị nằm từ -1 -> 1 (inverse prediction -> perfect prediction)
=> Không bị Đổi giá trị khi hoán đổi lớp.
=> Có giá trị cao khi mô hình phân lớp tốt ở tất cả các class.
## Metrics for multi-class classification
$macro = \frac{F1_{class1}+F1_{class2}+...+F1_{classN}}{N}$
$micro = F1_{class1+class2+...+classN}$
$weighted = F1_{class1} \times W_1 + F1_{class2} \times W_2 + ... + F1_{classN} \times W_N$
## Metrics for Object Detection
### IOU
### DICE
## Metrics for multi-label & recomendation
### MAP@{K}
## Optimizing evaluation metrics
### Custom metrics and custom objective functions
### Post-processing your predictions