複数の事象が同時に起きる確率
simultaneous probability もしくは joint probability という。
P(X, Y)と表記
P(A∩B) = P(A,B) = P(A)P(B)
事象Bが起きた時に事象Aが発生する条件付き確率は
P(A|B) = P(A∩B)/P(B)
機械学習モデルの正確性を表現するには、適合率(Precision), 再現率(Recall)、F値などの指標が使われる
scikit learn
Model evaluation: quantifying the quality of predictions
混合行列(confusion matrix)とは
クラス分類問題の結果を「実際のクラス」と「予想したクラス」を軸にまとめたもの
– TP(Treu Positive)
– TN(True Negative)
– FP(False Positive)
– FN(False Negative)
陽性(Positive)と陰性(Negative)は自分で決められる
from sklearn.metrics import confusion_matrix y_true = [0, 0, 0, 0, 0, 1, 1, 1, 1, 1] y_pred = [1, 0, 1, 1, 1, 0, 0, 0, 1, 1] cm = confusion_matrix(y_true, y_pred) print(cm)
[vagrant@localhost python]$ python app.py
[[1 4]
[3 2]]
なるほど、陽性、陰性は0,1の二進数で表すのね。
TN, FP, FN, TPはそのまま、flatten()で取り出せば良い。
で、正解率(accuracy)は、全てのサンプルのうち、正解したサンプル
$$
\text{accuracy} = \frac{TP + TN}{TP + TN + FP + FN}
$$
from sklearn.metrics import accuracy_score y_true = [0, 0, 0, 0, 0, 1, 1, 1, 1, 1] y_pred = [1, 0, 1, 1, 1, 0, 0, 0, 1, 1] print(accuracy_score(y_true, y_pred))
[vagrant@localhost python]$ python app.py
0.3
陽性と予想したうち、正解したのを適合率
pricision_scoreで示す
TP / TP+FP
再現率(recall)は実際に陽性のサンプルのうち正解したサンプルの割合
TP / TP+FN
F1値は、適合率と再現率の平均調和
つまり、予想に対して正解が高ければ、F1値は1に近づくし、モデルとして優れているということか。。