TIL/머신러닝

11.24일 얕은복사,깊은복사 / 혼동행렬

monawa 2022. 11. 24.
728x90

얕은복사(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]]

 

참고자료 

https://wikidocs.net/16038

 

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명만 암환자로 예측했으로 모델 전체의 정확도는 높지만 정작 필요했던 암환자 예측은 절반도 하지못하였다

이러한 이유로 다른모델의 평가수치가 필요하다


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

https://jonsyou.tistory.com/2

혼동행렬

  • 모델의 성능을 평가할때 사용되는 지표
  • 예측값이  실제 관측값을 얼마나 정확히 예측했는지 보여주는 행렬

예상(아니오) 예상(예)

실제(아니요) 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명만 암환자로 예측했으로 모델 전체의 정확도는 높지만 정작 필요했던 암환자 예측은 절반도 하지못하였다

이러한 이유로 다른모델의 평가수치가 필요하다


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

https://jonsyou.tistory.com/2

혼동행렬

  • 모델의 성능을 평가할때 사용되는 지표
  • 예측값이  실제 관측값을 얼마나 정확히 예측했는지 보여주는 행렬

예상(아니오) 예상(예)

실제(아니요) 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명만 암환자로 예측했으로 모델 전체의 정확도는 높지만 정작 필요했던 암환자 예측은 절반도 하지못하였다

이러한 이유로 다른모델의 평가수치가 필요하다


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

https://jonsyou.tistory.com/2

혼동행렬

  • 모델의 성능을 평가할때 사용되는 지표
  • 예측값이  실제 관측값을 얼마나 정확히 예측했는지 보여주는 행렬

예상(아니오) 예상(예)

실제(아니요) 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명만 암환자로 예측했으로 모델 전체의 정확도는 높지만 정작 필요했던 암환자 예측은 절반도 하지못하였다

이러한 이유로 다른모델의 평가수치가 필요하다


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

https://jonsyou.tistory.com/2

혼동행렬

  • 모델의 성능을 평가할때 사용되는 지표
  • 예측값이  실제 관측값을 얼마나 정확히 예측했는지 보여주는 행렬

예상(아니오) 예상(예)

실제(아니요) 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명만 암환자로 예측했으로 모델 전체의 정확도는 높지만 정작 필요했던 암환자 예측은 절반도 하지못하였다

이러한 이유로 다른모델의 평가수치가 필요하다


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

https://jonsyou.tistory.com/2

혼동행렬

  • 모델의 성능을 평가할때 사용되는 지표
  • 예측값이  실제 관측값을 얼마나 정확히 예측했는지 보여주는 행렬

예상(아니오) 예상(예)

실제(아니요) 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명만 암환자로 예측했으로 모델 전체의 정확도는 높지만 정작 필요했던 암환자 예측은 절반도 하지못하였다

이러한 이유로 다른모델의 평가수치가 필요하다


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

https://jonsyou.tistory.com/2

728x90

댓글