Accuracy, Precision, Recall

어떤 문제가 True, False인지를 예측할 때, 얼마나 정확하게 예측하는지의 척도로써 사용되는 3가지입니다. 먼저 Accuracy는 다음과 같습니다.

다음은 Precision입니다.

다음은 Recall입니다.

위의 공식에서 언급된 TP, FP, FN, FN은 다음과 같습니다. 정답이 참인지 거짓인지에 따라 T(True), F(False)로 표기하고 추정이 참인지 거짓인지에 따라 P(Positive), N(Negative)로 표기한 것입니다.

정리하면 Accuracy는 전체 예측에 대해 옳바르게 예측한 비율이고, Precision은 True라고 예측한 것 중에서 실제로 True인 것에 대한 비율입니다. Recall은 실제 True인 것 중에서 True라고 예측한 것에 대한 비율입니다.

감기 예측 모델을 예로 들면 Accuracy는 전체 예측에 대해 얼마나 올바르게 예측했는지에 대한 지표이고, Precision은 얼마나 정확하게 감기라고 예측하는지에 대한 지표이며, Recall은 실제 감기인 사람에 대해서 얼마나 정확하게 감기라고 예측하는지에 대한 지표입니다.

[Python] 알파벳을 인덱스로 구성하기

먼저 다음과 같은 문장이 있다고 하자.

sample = 'I will go.'

위의 문장을 구성하는 알파벳 중에서 중복되지 않는 고유한 알파벳만을 추출하면..

uniq_chars = set(sample) # {'w', ' ', 'o', 'i', 'l', '.', 'g', 'I'}

위의 추출된 결과는 set이므로 이를 list로 만들면..

idx2char = list(uniq_chars) # ['w', ' ', 'o', 'i', 'l', '.', 'g', 'I']

인덱스 값을 Value로, 해당 인덱스의 알파벳을 Key로 구성된 데이터는 다음처럼 얻을 수 있다.

char2idx = {c: i for i, c in enumerate(idx2char)} # {'w': 0, ' ': 1, 'o': 2, 'i': 3, 'l': 4, '.': 5, 'g': 6, 'I': 7}

이제 처음 문장(sample 변수)을 인덱스 값으로 구성된 list는 다음과 같다.

sample_idx = [char2idx[c] for c in sample] # [7, 1, 0, 3, 4, 4, 1, 6, 2, 5]