11.24일 얕은복사,깊은복사 / 혼동행렬
얕은복사(shallow copy)
- 1메로리에 있던 데이터를 2로 얕은 복사를 하면 2에 복사된것은 1의 a를 가져온게아니라
a로 가는 b라는 바로가기를 만들어준것 - b = a
- b = a[:]
- b = copy.copy(a)
코드 예시
>>> import copy
a를 지정한후
>>> a = [[1,2],[3,4]]
b에 a를 카피
>>> b = copy.copy(a)
이떄 a에 5를 넣어주면
>>> a[1].append(5)
>>> a
[[1, 2], [3, 4, 5]]
b또한 함께 바뀌게된다 (a로 가는 바로가기이므로 )
>>> b
[[1, 2], [3, 4, 5]]
깊은 복사 copy.deepcopy
깊은 복사는 1메모리에 넣은 모나와라는 데이터를 2메모리에 깊은복사할시
모나와라는 데이터 자체가 새로 복제되어 배정된다
- b = copy.deepcopy(a)
코드 예시;
>>> import copy
>>> a = [[1,2],[3,4]]
b에 a를 깊은 복사하면
>>> b = copy.deepcopy(a)
a를 변경해도
>>> a[1].append(5)
>>> a
[[1, 2], [3, 4, 5]]
b는 별개로 복제된것이므로 영향 받지않는다
>>> b
[[1, 2], [3, 4]]
참고자료
12. 얕은 복사(shallow copy)와 깊은 복사(deep copy)
## 1. mutable과 immutable 객체 객체에는 mutable과 immutable 객체가 있습니다. ❈ 객체 구분 표 class 설명 구분 l…
wikidocs.net
혼동행렬
- 모델의 성능을 평가할때 사용되는 지표
- 예측값이 실제 관측값을 얼마나 정확히 예측했는지 보여주는 행렬
예상(아니오) 예상(예)
실제(아니요) | TN | FP |
실제(에) | FN | TP |
- TP(True Positive) : 참긍정,
병이 있을것이다라고 예측한 환자가
실제 병을 가진 경우
실제 True인 정답을 True라고 예측 (정답) - TN(True Negative) : 참부정,
병이 없을 것이다라고 예측한 환자가
실제로 병이 없는 경우
실제 False인 정답을 False라고 예측 (정답) - FP(False Positive) : 거짓긍정,
병이 있을것이다라고 예측한 환자가
실제로는 병이 없는 경우
실제 False인 정답을 True라고 예측 (오답) - FN(False Negative) : 거짓부정,
병이 없을 것이다라고 예측한 환자가
실제로는 병이 있는 경우
실제 True인 정답을 False라고 예측 (오답)
2. 정확도 (accuracy)
💡 accuracy(정확도) 모델이 입력된 데이터에 대해 얼마나 정확하게 예측하는지를 나타낸다.
- 예측 결과 전체 건수 중 실제 값을 올바르게 예측한 비율을 나타낸다.
- 따라서 정확도는 0에서 1사이의 값을 가진다.
- 이는 클래스별 분포가 같을 때에만 의미 있는 모델 성능 비교가 가능하다.
- 예를 들면 자신의 알고리즘이 무조건 암에 걸리지 않았다고 진단하는 잘못된 알고리즘이라고 할 떄
- 암이 걸린 사람 2명 , 암이 걸리지 않은 3,0000,000명이 있다고 가정하면
- 이를 정확도로 구한다면로서 정확도가 99프로에 가깝게 나오게 됩니다
- 이는 무조건 틀렸다고 예측해도 샘플이 불균형하기 때문에 성능이 뛰어난 것처럼 잘못 추론을 하게 됩니다
정확도 공식
예측값결과와 실제값이 동일한 건수 / 전체 데이터수
⌨️ 정확도 Python code
#metrics.accuracy_score()
from sklearn.metrics import accuracy_score
accuracy_score(df.y, pred)
정확도의 한계점
위와같이 예측했을떄 정확도는
92%의 정확도로 굉장히 높은 정확도를 보여주지만
이를 암환자만 분리해서 생각한다면 9명(2+7) 존재하는데 2명만 암환자로 예측했으로 모델 전체의 정확도는 높지만 정작 필요했던 암환자 예측은 절반도 하지못하였다
이러한 이유로 다른모델의 평가수치가 필요하다
- 참고
- [머신러닝] Accuracy (정확도) 란? https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=sw4r&logNo=221681221173
- 혼동 행렬, Confusion Matrix https://jonsyou.tistory.com/2
- 혼동행렬(confusion matrix) https://diseny.tistory.com/entry/혼동행렬confusion-matrix?category=906035
- 혼동행렬 / 정확도 / 정밀도 / 재현율 / F1 점수 https://truman.tistory.com/179
- [통계] 혼동 행렬(Confusion Matrix) + Python https://jogrammer.tistory.com/346?category=959211
3. 정밀도 (precision)
- 모델의 예측값이 얼마나 정확하게 예측됐는가를 나타내는 지표
- "예"라고 예측했을때의 정답률
정밀도
TP/(TP+FP)
정밀도가 중효한이유
실제 음성인 데이터 예측을 양성으로 잘못 판단하면 업무에 큰영향이 발생하는 경우
스팸메일
#정밀도: metrics.precision_score()
from sklearn.metrics import precision_score
precision_score(df.y, pred)
4. 재현율 (recall)
- 실제값 중에서 모델이 검출한 실제값의 비율을 나타내는 지표
- 실제로 병이 있는 전체 중 참 긍정의 비율
- 실제 암환자들이 병원에 갔을때 암환자라고 예측될 확률,조기에 정확하게 발견해서 신속하게 처방하는 것이 올바른 모델
- 재현율TP / (TP+FN)
재현율이 더 중요한 경우
실제 양성인 데이터 예측을 음성으로 잘못 판단하게 되면 업무상 큰 영향이 발생하는 경우
암 진단 금융사기 판별
#재현율: metrics.recall_score()
from sklearn.metrics import recall_score
recall_score(df.y, pred)
5. F1 점수 (F1-score)
- 정밀도와 재현율을 따로 볼 경우 상충 관계(trade-off)가 발생하여 판단하기 어려울 수 있는데,
- 이 두값 조화평균내서 하나의 수치로 나타낸 지표
- F1점수 = 2*재현율*정밀도/(재현율+정밀도)
#f1 점수: metrics.f1_score()
f1 = metrics.f1_score(y_test, y_pred)
https://mjdeeplearning.tistory.com/31
참고자료
https://truman.tistory.com/179
https://thebook.io/080246/part04/ch15/unit32/02-01/
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=sw4r&logNo=221681221173
혼동행렬
- 모델의 성능을 평가할때 사용되는 지표
- 예측값이 실제 관측값을 얼마나 정확히 예측했는지 보여주는 행렬
예상(아니오) 예상(예)
실제(아니요) | TN | FP |
실제(에) | FN | TP |
TP(True Positive) : 참긍정, 병에 관해 예 (병이 있을것이다.)라고 예측한 환자가 실제 병을 가진 경우
실제 True인 정답을 True라고 예측 (정답)
TN(True Negative) : 참부정, 병에 관해 아니오(병이 없을 것이다)라고 예측한 환자가 실제로 병이 없는 경우
실제 False인 정답을 False라고 예측 (정답)
FP(False Positive) : 거짓긍정, 병에 관해 예라고 예측한 환자가 실제로는 병이 없는 경우
실제 False인 정답을 True라고 예측 (오답)
FN(False Negative) : 거짓부정, 병에 관해 아니오라고 예측한 환자가 실제로는 병이 있는 경우
실제 True인 정답을 False라고 예측 (오답)
2. 정확도 (accuracy)
<aside> 💡 accuracy(정확도) 모델이 입력된 데이터에 대해 얼마나 정확하게 예측하는지를 나타낸다.
${예측값 결과와 실제값이 동일 한 경우 \over 전체 데이터}$
</aside>
- 예측 결과 전체 건수 중 실제 값을 올바르게 예측한 비율을 나타낸다.
- 따라서 정확도는 0에서 1사이의 값을 가진다.
- 이는 클래스별 분포가 같을 때에만 의미 있는 모델 성능 비교가 가능하다.자신의 알고리즘이 무조건 암에 걸리지 않았다고 진단하는 잘못된 알고리즘이라고 할 떄이를 정확도로 구한다면로서 정확도가 99프로에 가깝게 나오게 됩니다
- 이는 무조건 틀렸다고 예측해도 샘플이 불균형하기 때문에 성능이 뛰어난 것처럼 잘못 추론을 하게 됩니다
- 암이 걸린 사람 2명 , 암이 걸리지 않은 3,0000,000명이 있다고 가정할때에
- 예를 들면
정확도 공식
예측값결과와 실제값이 동일한 건수 / 전체 데이터수
⌨️ 정확도 Python code
#metrics.accuracy_score()
from sklearn.metrics import accuracy_score
accuracy_score(df.y, pred)
정확도의 한계점
위와같이 예측했을떄 정확도는
92%의 정확도로 굉장히 높은 정확도를 보여주지만
이를 암환자만 분리해서 생각한다면 9명(2+7) 존재하는데 2명만 암환자로 예측했으로 모델 전체의 정확도는 높지만 정작 필요했던 암환자 예측은 절반도 하지못하였다
이러한 이유로 다른모델의 평가수치가 필요하다
- 참고[머신러닝] Accuracy (정확도) 란? https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=sw4r&logNo=221681221173
- 혼동 행렬, Confusion Matrix https://jonsyou.tistory.com/2
- 혼동행렬(confusion matrix) https://diseny.tistory.com/entry/혼동행렬confusion-matrix?category=906035
- 혼동행렬 / 정확도 / 정밀도 / 재현율 / F1 점수 https://truman.tistory.com/179
- [통계] 혼동 행렬(Confusion Matrix) + Python https://jogrammer.tistory.com/346?category=959211
3. 정밀도 (precision)
- 모델의 예측값이 얼마나 정확하게 예측됐는가를 나타내는 지표
- "예"라고 예측했을때의 정답률
정밀도
TP/(TP+FP)
정밀도가 중효한이유
실제 음성인 데이터 예측을 양성으로 잘못 판단하면 업무에 큰영향이 발생하는 경우
스팸메일
#정밀도: metrics.precision_score()
from sklearn.metrics import precision_score
precision_score(df.y, pred)
4. 재현율 (recall)
- 실제값 중에서 모델이 검출한 실제값의 비율을 나타내는 지표
- 실제로 병이 있는 전체 중 참 긍정의 비율
- 실제 암환자들이 병원에 갔을때 암환자라고 예측될 확률,조기에 정확하게 발견해서 신속하게 처방하는 것이 올바른 모델
재현율TP / (TP+FN)
재현율이 더 중요한 경우
실제 양성인 데이터 예측을 음성으로 잘못 판단하게 되면 업무상 큰 영향이 발생하는 경우
암 진단 금융사기 판별
#재현율: metrics.recall_score()
from sklearn.metrics import recall_score
recall_score(df.y, pred)
5. F1 점수 (F1-score)
- 정밀도와 재현율을 따로 볼 경우 상충 관계(trade-off)가 발생하여 판단하기 어려울 수 있는데,
- 이 두값 조화평균내서 하나의 수치로 나타낸 지표
F1점수 = 2재현율정밀도/(재현율+정밀도)
#f1 점수: metrics.f1_score()
f1 = metrics.f1_score(y_test, y_pred)
https://mjdeeplearning.tistory.com/31
참고자료
https://truman.tistory.com/179
https://thebook.io/080246/part04/ch15/unit32/02-01/
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=sw4r&logNo=221681221173
혼동행렬
- 모델의 성능을 평가할때 사용되는 지표
- 예측값이 실제 관측값을 얼마나 정확히 예측했는지 보여주는 행렬
예상(아니오) 예상(예)
실제(아니요) | TN | FP |
실제(에) | FN | TP |
TP(True Positive) : 참긍정, 병에 관해 예 (병이 있을것이다.)라고 예측한 환자가 실제 병을 가진 경우
실제 True인 정답을 True라고 예측 (정답)
TN(True Negative) : 참부정, 병에 관해 아니오(병이 없을 것이다)라고 예측한 환자가 실제로 병이 없는 경우
실제 False인 정답을 False라고 예측 (정답)
FP(False Positive) : 거짓긍정, 병에 관해 예라고 예측한 환자가 실제로는 병이 없는 경우
실제 False인 정답을 True라고 예측 (오답)
FN(False Negative) : 거짓부정, 병에 관해 아니오라고 예측한 환자가 실제로는 병이 있는 경우
실제 True인 정답을 False라고 예측 (오답)
2. 정확도 (accuracy)
<aside> 💡 accuracy(정확도) 모델이 입력된 데이터에 대해 얼마나 정확하게 예측하는지를 나타낸다.
${예측값 결과와 실제값이 동일 한 경우 \over 전체 데이터}$
</aside>
- 예측 결과 전체 건수 중 실제 값을 올바르게 예측한 비율을 나타낸다.
- 따라서 정확도는 0에서 1사이의 값을 가진다.
- 이는 클래스별 분포가 같을 때에만 의미 있는 모델 성능 비교가 가능하다.자신의 알고리즘이 무조건 암에 걸리지 않았다고 진단하는 잘못된 알고리즘이라고 할 떄이를 정확도로 구한다면로서 정확도가 99프로에 가깝게 나오게 됩니다
- 이는 무조건 틀렸다고 예측해도 샘플이 불균형하기 때문에 성능이 뛰어난 것처럼 잘못 추론을 하게 됩니다
- 암이 걸린 사람 2명 , 암이 걸리지 않은 3,0000,000명이 있다고 가정할때에
- 예를 들면
정확도 공식
예측값결과와 실제값이 동일한 건수 / 전체 데이터수
⌨️ 정확도 Python code
#metrics.accuracy_score()
from sklearn.metrics import accuracy_score
accuracy_score(df.y, pred)
정확도의 한계점
위와같이 예측했을떄 정확도는
92%의 정확도로 굉장히 높은 정확도를 보여주지만
이를 암환자만 분리해서 생각한다면 9명(2+7) 존재하는데 2명만 암환자로 예측했으로 모델 전체의 정확도는 높지만 정작 필요했던 암환자 예측은 절반도 하지못하였다
이러한 이유로 다른모델의 평가수치가 필요하다
- 참고[머신러닝] Accuracy (정확도) 란? https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=sw4r&logNo=221681221173
- 혼동 행렬, Confusion Matrix https://jonsyou.tistory.com/2
- 혼동행렬(confusion matrix) https://diseny.tistory.com/entry/혼동행렬confusion-matrix?category=906035
- 혼동행렬 / 정확도 / 정밀도 / 재현율 / F1 점수 https://truman.tistory.com/179
- [통계] 혼동 행렬(Confusion Matrix) + Python https://jogrammer.tistory.com/346?category=959211
3. 정밀도 (precision)
- 모델의 예측값이 얼마나 정확하게 예측됐는가를 나타내는 지표
- "예"라고 예측했을때의 정답률
정밀도
TP/(TP+FP)
정밀도가 중효한이유
실제 음성인 데이터 예측을 양성으로 잘못 판단하면 업무에 큰영향이 발생하는 경우
스팸메일
#정밀도: metrics.precision_score()
from sklearn.metrics import precision_score
precision_score(df.y, pred)
4. 재현율 (recall)
- 실제값 중에서 모델이 검출한 실제값의 비율을 나타내는 지표
- 실제로 병이 있는 전체 중 참 긍정의 비율
- 실제 암환자들이 병원에 갔을때 암환자라고 예측될 확률,조기에 정확하게 발견해서 신속하게 처방하는 것이 올바른 모델
재현율TP / (TP+FN)
재현율이 더 중요한 경우
실제 양성인 데이터 예측을 음성으로 잘못 판단하게 되면 업무상 큰 영향이 발생하는 경우
암 진단 금융사기 판별
#재현율: metrics.recall_score()
from sklearn.metrics import recall_score
recall_score(df.y, pred)
5. F1 점수 (F1-score)
- 정밀도와 재현율을 따로 볼 경우 상충 관계(trade-off)가 발생하여 판단하기 어려울 수 있는데,
- 이 두값 조화평균내서 하나의 수치로 나타낸 지표
F1점수 = 2재현율정밀도/(재현율+정밀도)
#f1 점수: metrics.f1_score()
f1 = metrics.f1_score(y_test, y_pred)
https://mjdeeplearning.tistory.com/31
참고자료
https://truman.tistory.com/179
https://thebook.io/080246/part04/ch15/unit32/02-01/
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=sw4r&logNo=221681221173
혼동행렬
- 모델의 성능을 평가할때 사용되는 지표
- 예측값이 실제 관측값을 얼마나 정확히 예측했는지 보여주는 행렬
예상(아니오) 예상(예)
실제(아니요) | TN | FP |
실제(에) | FN | TP |
TP(True Positive) : 참긍정, 병에 관해 예 (병이 있을것이다.)라고 예측한 환자가 실제 병을 가진 경우
실제 True인 정답을 True라고 예측 (정답)
TN(True Negative) : 참부정, 병에 관해 아니오(병이 없을 것이다)라고 예측한 환자가 실제로 병이 없는 경우
실제 False인 정답을 False라고 예측 (정답)
FP(False Positive) : 거짓긍정, 병에 관해 예라고 예측한 환자가 실제로는 병이 없는 경우
실제 False인 정답을 True라고 예측 (오답)
FN(False Negative) : 거짓부정, 병에 관해 아니오라고 예측한 환자가 실제로는 병이 있는 경우
실제 True인 정답을 False라고 예측 (오답)
2. 정확도 (accuracy)
<aside> 💡 accuracy(정확도) 모델이 입력된 데이터에 대해 얼마나 정확하게 예측하는지를 나타낸다.
${예측값 결과와 실제값이 동일 한 경우 \over 전체 데이터}$
</aside>
- 예측 결과 전체 건수 중 실제 값을 올바르게 예측한 비율을 나타낸다.
- 따라서 정확도는 0에서 1사이의 값을 가진다.
- 이는 클래스별 분포가 같을 때에만 의미 있는 모델 성능 비교가 가능하다.자신의 알고리즘이 무조건 암에 걸리지 않았다고 진단하는 잘못된 알고리즘이라고 할 떄이를 정확도로 구한다면로서 정확도가 99프로에 가깝게 나오게 됩니다
- 이는 무조건 틀렸다고 예측해도 샘플이 불균형하기 때문에 성능이 뛰어난 것처럼 잘못 추론을 하게 됩니다
- 암이 걸린 사람 2명 , 암이 걸리지 않은 3,0000,000명이 있다고 가정할때에
- 예를 들면
정확도 공식
예측값결과와 실제값이 동일한 건수 / 전체 데이터수
⌨️ 정확도 Python code
#metrics.accuracy_score()
from sklearn.metrics import accuracy_score
accuracy_score(df.y, pred)
정확도의 한계점
위와같이 예측했을떄 정확도는
92%의 정확도로 굉장히 높은 정확도를 보여주지만
이를 암환자만 분리해서 생각한다면 9명(2+7) 존재하는데 2명만 암환자로 예측했으로 모델 전체의 정확도는 높지만 정작 필요했던 암환자 예측은 절반도 하지못하였다
이러한 이유로 다른모델의 평가수치가 필요하다
- 참고[머신러닝] Accuracy (정확도) 란? https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=sw4r&logNo=221681221173
- 혼동 행렬, Confusion Matrix https://jonsyou.tistory.com/2
- 혼동행렬(confusion matrix) https://diseny.tistory.com/entry/혼동행렬confusion-matrix?category=906035
- 혼동행렬 / 정확도 / 정밀도 / 재현율 / F1 점수 https://truman.tistory.com/179
- [통계] 혼동 행렬(Confusion Matrix) + Python https://jogrammer.tistory.com/346?category=959211
3. 정밀도 (precision)
- 모델의 예측값이 얼마나 정확하게 예측됐는가를 나타내는 지표
- "예"라고 예측했을때의 정답률
정밀도
TP/(TP+FP)
정밀도가 중효한이유
실제 음성인 데이터 예측을 양성으로 잘못 판단하면 업무에 큰영향이 발생하는 경우
스팸메일
#정밀도: metrics.precision_score()
from sklearn.metrics import precision_score
precision_score(df.y, pred)
4. 재현율 (recall)
- 실제값 중에서 모델이 검출한 실제값의 비율을 나타내는 지표
- 실제로 병이 있는 전체 중 참 긍정의 비율
- 실제 암환자들이 병원에 갔을때 암환자라고 예측될 확률,조기에 정확하게 발견해서 신속하게 처방하는 것이 올바른 모델
재현율TP / (TP+FN)
재현율이 더 중요한 경우
실제 양성인 데이터 예측을 음성으로 잘못 판단하게 되면 업무상 큰 영향이 발생하는 경우
암 진단 금융사기 판별
#재현율: metrics.recall_score()
from sklearn.metrics import recall_score
recall_score(df.y, pred)
5. F1 점수 (F1-score)
- 정밀도와 재현율을 따로 볼 경우 상충 관계(trade-off)가 발생하여 판단하기 어려울 수 있는데,
- 이 두값 조화평균내서 하나의 수치로 나타낸 지표
F1점수 = 2재현율정밀도/(재현율+정밀도)
#f1 점수: metrics.f1_score()
f1 = metrics.f1_score(y_test, y_pred)
https://mjdeeplearning.tistory.com/31
참고자료
https://truman.tistory.com/179
https://thebook.io/080246/part04/ch15/unit32/02-01/
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=sw4r&logNo=221681221173
혼동행렬
- 모델의 성능을 평가할때 사용되는 지표
- 예측값이 실제 관측값을 얼마나 정확히 예측했는지 보여주는 행렬
예상(아니오) 예상(예)
실제(아니요) | TN | FP |
실제(에) | FN | TP |
TP(True Positive) : 참긍정, 병에 관해 예 (병이 있을것이다.)라고 예측한 환자가 실제 병을 가진 경우
실제 True인 정답을 True라고 예측 (정답)
TN(True Negative) : 참부정, 병에 관해 아니오(병이 없을 것이다)라고 예측한 환자가 실제로 병이 없는 경우
실제 False인 정답을 False라고 예측 (정답)
FP(False Positive) : 거짓긍정, 병에 관해 예라고 예측한 환자가 실제로는 병이 없는 경우
실제 False인 정답을 True라고 예측 (오답)
FN(False Negative) : 거짓부정, 병에 관해 아니오라고 예측한 환자가 실제로는 병이 있는 경우
실제 True인 정답을 False라고 예측 (오답)
2. 정확도 (accuracy)
<aside> 💡 accuracy(정확도) 모델이 입력된 데이터에 대해 얼마나 정확하게 예측하는지를 나타낸다.
${예측값 결과와 실제값이 동일 한 경우 \over 전체 데이터}$
</aside>
- 예측 결과 전체 건수 중 실제 값을 올바르게 예측한 비율을 나타낸다.
- 따라서 정확도는 0에서 1사이의 값을 가진다.
- 이는 클래스별 분포가 같을 때에만 의미 있는 모델 성능 비교가 가능하다.자신의 알고리즘이 무조건 암에 걸리지 않았다고 진단하는 잘못된 알고리즘이라고 할 떄이를 정확도로 구한다면로서 정확도가 99프로에 가깝게 나오게 됩니다
- 이는 무조건 틀렸다고 예측해도 샘플이 불균형하기 때문에 성능이 뛰어난 것처럼 잘못 추론을 하게 됩니다
- 암이 걸린 사람 2명 , 암이 걸리지 않은 3,0000,000명이 있다고 가정할때에
- 예를 들면
정확도 공식
예측값결과와 실제값이 동일한 건수 / 전체 데이터수
⌨️ 정확도 Python code
#metrics.accuracy_score()
from sklearn.metrics import accuracy_score
accuracy_score(df.y, pred)
정확도의 한계점
위와같이 예측했을떄 정확도는
92%의 정확도로 굉장히 높은 정확도를 보여주지만
이를 암환자만 분리해서 생각한다면 9명(2+7) 존재하는데 2명만 암환자로 예측했으로 모델 전체의 정확도는 높지만 정작 필요했던 암환자 예측은 절반도 하지못하였다
이러한 이유로 다른모델의 평가수치가 필요하다
- 참고[머신러닝] Accuracy (정확도) 란? https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=sw4r&logNo=221681221173
- 혼동 행렬, Confusion Matrix https://jonsyou.tistory.com/2
- 혼동행렬(confusion matrix) https://diseny.tistory.com/entry/혼동행렬confusion-matrix?category=906035
- 혼동행렬 / 정확도 / 정밀도 / 재현율 / F1 점수 https://truman.tistory.com/179
- [통계] 혼동 행렬(Confusion Matrix) + Python https://jogrammer.tistory.com/346?category=959211
3. 정밀도 (precision)
- 모델의 예측값이 얼마나 정확하게 예측됐는가를 나타내는 지표
- "예"라고 예측했을때의 정답률
정밀도
TP/(TP+FP)
정밀도가 중효한이유
실제 음성인 데이터 예측을 양성으로 잘못 판단하면 업무에 큰영향이 발생하는 경우
스팸메일
#정밀도: metrics.precision_score()
from sklearn.metrics import precision_score
precision_score(df.y, pred)
4. 재현율 (recall)
- 실제값 중에서 모델이 검출한 실제값의 비율을 나타내는 지표
- 실제로 병이 있는 전체 중 참 긍정의 비율
- 실제 암환자들이 병원에 갔을때 암환자라고 예측될 확률,조기에 정확하게 발견해서 신속하게 처방하는 것이 올바른 모델
재현율TP / (TP+FN)
재현율이 더 중요한 경우
실제 양성인 데이터 예측을 음성으로 잘못 판단하게 되면 업무상 큰 영향이 발생하는 경우
암 진단 금융사기 판별
#재현율: metrics.recall_score()
from sklearn.metrics import recall_score
recall_score(df.y, pred)
5. F1 점수 (F1-score)
- 정밀도와 재현율을 따로 볼 경우 상충 관계(trade-off)가 발생하여 판단하기 어려울 수 있는데,
- 이 두값 조화평균내서 하나의 수치로 나타낸 지표
F1점수 = 2재현율정밀도/(재현율+정밀도)
#f1 점수: metrics.f1_score()
f1 = metrics.f1_score(y_test, y_pred)
https://mjdeeplearning.tistory.com/31
참고자료
https://truman.tistory.com/179
https://thebook.io/080246/part04/ch15/unit32/02-01/
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=sw4r&logNo=221681221173
혼동행렬
- 모델의 성능을 평가할때 사용되는 지표
- 예측값이 실제 관측값을 얼마나 정확히 예측했는지 보여주는 행렬
예상(아니오) 예상(예)
실제(아니요) | TN | FP |
실제(에) | FN | TP |
TP(True Positive) : 참긍정, 병에 관해 예 (병이 있을것이다.)라고 예측한 환자가 실제 병을 가진 경우
실제 True인 정답을 True라고 예측 (정답)
TN(True Negative) : 참부정, 병에 관해 아니오(병이 없을 것이다)라고 예측한 환자가 실제로 병이 없는 경우
실제 False인 정답을 False라고 예측 (정답)
FP(False Positive) : 거짓긍정, 병에 관해 예라고 예측한 환자가 실제로는 병이 없는 경우
실제 False인 정답을 True라고 예측 (오답)
FN(False Negative) : 거짓부정, 병에 관해 아니오라고 예측한 환자가 실제로는 병이 있는 경우
실제 True인 정답을 False라고 예측 (오답)
2. 정확도 (accuracy)
<aside> 💡 accuracy(정확도) 모델이 입력된 데이터에 대해 얼마나 정확하게 예측하는지를 나타낸다.
${예측값 결과와 실제값이 동일 한 경우 \over 전체 데이터}$
</aside>
- 예측 결과 전체 건수 중 실제 값을 올바르게 예측한 비율을 나타낸다.
- 따라서 정확도는 0에서 1사이의 값을 가진다.
- 이는 클래스별 분포가 같을 때에만 의미 있는 모델 성능 비교가 가능하다.자신의 알고리즘이 무조건 암에 걸리지 않았다고 진단하는 잘못된 알고리즘이라고 할 떄이를 정확도로 구한다면로서 정확도가 99프로에 가깝게 나오게 됩니다
- 이는 무조건 틀렸다고 예측해도 샘플이 불균형하기 때문에 성능이 뛰어난 것처럼 잘못 추론을 하게 됩니다
- 암이 걸린 사람 2명 , 암이 걸리지 않은 3,0000,000명이 있다고 가정할때에
- 예를 들면
정확도 공식
예측값결과와 실제값이 동일한 건수 / 전체 데이터수
⌨️ 정확도 Python code
#metrics.accuracy_score()
from sklearn.metrics import accuracy_score
accuracy_score(df.y, pred)
정확도의 한계점
위와같이 예측했을떄 정확도는
92%의 정확도로 굉장히 높은 정확도를 보여주지만
이를 암환자만 분리해서 생각한다면 9명(2+7) 존재하는데 2명만 암환자로 예측했으로 모델 전체의 정확도는 높지만 정작 필요했던 암환자 예측은 절반도 하지못하였다
이러한 이유로 다른모델의 평가수치가 필요하다
- 참고[머신러닝] Accuracy (정확도) 란? https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=sw4r&logNo=221681221173
- 혼동 행렬, Confusion Matrix https://jonsyou.tistory.com/2
- 혼동행렬(confusion matrix) https://diseny.tistory.com/entry/혼동행렬confusion-matrix?category=906035
- 혼동행렬 / 정확도 / 정밀도 / 재현율 / F1 점수 https://truman.tistory.com/179
- [통계] 혼동 행렬(Confusion Matrix) + Python https://jogrammer.tistory.com/346?category=959211
3. 정밀도 (precision)
- 모델의 예측값이 얼마나 정확하게 예측됐는가를 나타내는 지표
- "예"라고 예측했을때의 정답률
정밀도
TP/(TP+FP)
정밀도가 중효한이유
실제 음성인 데이터 예측을 양성으로 잘못 판단하면 업무에 큰영향이 발생하는 경우
스팸메일
#정밀도: metrics.precision_score()
from sklearn.metrics import precision_score
precision_score(df.y, pred)
4. 재현율 (recall)
- 실제값 중에서 모델이 검출한 실제값의 비율을 나타내는 지표
- 실제로 병이 있는 전체 중 참 긍정의 비율
- 실제 암환자들이 병원에 갔을때 암환자라고 예측될 확률,조기에 정확하게 발견해서 신속하게 처방하는 것이 올바른 모델
재현율TP / (TP+FN)
재현율이 더 중요한 경우
실제 양성인 데이터 예측을 음성으로 잘못 판단하게 되면 업무상 큰 영향이 발생하는 경우
암 진단 금융사기 판별
#재현율: metrics.recall_score()
from sklearn.metrics import recall_score
recall_score(df.y, pred)
5. F1 점수 (F1-score)
- 정밀도와 재현율을 따로 볼 경우 상충 관계(trade-off)가 발생하여 판단하기 어려울 수 있는데,
- 이 두값 조화평균내서 하나의 수치로 나타낸 지표
F1점수 = 2재현율정밀도/(재현율+정밀도)
#f1 점수: metrics.f1_score()
f1 = metrics.f1_score(y_test, y_pred)
https://mjdeeplearning.tistory.com/31
참고자료
https://truman.tistory.com/179
https://thebook.io/080246/part04/ch15/unit32/02-01/
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=sw4r&logNo=221681221173