※ 본 내용은 Coursera, Machine Learning - Andrew Ng 강의, 강의자료를 바탕으로 작성하였습니다.
<프로젝트 진행 순서 정하기>
예를 들어, spam 메일을 분류하는 프로젝트를 진행한다고 하면 다음과 같이 수행할 수 있을 것이다.
feature로 특정 단어(spam에 주로 있는 단어들)가 메일에 포함되어 있는지 여부를 선택하고 이러한 데이터를 통해 모델을 생성할 수 있을 것이다.
그런데 모델이 많은 오류를 보이면 어떻게 해야할까.
위와 같은 방법들이 있을 것이다. 하지만 어떠한 방법이 모델을 개선할 수 있을지 미리 알 수 없기 때문에 무엇부터 시작해야 될지 결정하는 것에 어려움이 있을 것이다. 이러한 문제들을 고려하여 강의에서 제안한 프로젝트의 진행 순서는 다음과 같다.
- 프로젝트 진행 순서
1. 간단하게 모델을 완성해보고, validation set을 통해 성능을 확인해본다.
2. learning curve와 같은 방법을 통해 data나 feature가 더 필요한지 검사해본다.(bias or variance 검사)
3. Error Analysis : 모델이 예측에 실패한 데이터를 집중적으로 살펴본다. -> 모델의 취약점 파악
3. Error Analysis를 통해 취약점을 찾더라도 해당 부분을 보완하는 것이 모델의 성능을 크게 향상 시킬 것이라는 보장은 없다. 따라서 numerical evaluation을 통해 개선 효과를 확인하는 것이 필요하다.
예를 들어, stemming 문제를(universe, university와 같이 뜻은 다르지만 앞 단어가 비슷한 경우) 구분하기 위한 알고리즘을 적용했을 때 이전 5%에서 3%로 에러가 줄었다고 하면 해당 알고리즘은 유지하면 된다.
반대로 대소문자 구분을 적용하기 전과 후의 에러차이가 유의미하지 않다면 해당 알고리즘은 적용하는 것이 의미가 없을 것이다.
즉, 보완점을 찾고 개선하더라도 얼마나 효과가 날지 미리 알 수 없기 때문에, 확실한 수치를 통해 전후의 효과를 확인한 후 비교하는 것이 좋다.
<Error Matrix, skewed data>
암 여부를 판단하는 모델을 개발한다고 했을 때, 만약 암 환자의 비율이 0.5% 정도밖에 안된다면 어떻게 될까.(skewed)
무조건 암이 아니다고 판단하는 모델(h = 0)을 만들어도 오류는 0.5% 밖에 되지 않는다. 그러다 당연히 해당 모델을 바람직하지 않다.
이러한 경우에서 알 수 있듯이 모델의 성능을 평가할 때는 precision과 recall 두 개의 지표를 모두 평가해야 한다.
각각의 의미는 다음과 같다.
actual | |||
predicted | 1 | 0 | |
1 | True Positive | False Positive | |
0 | False Negative | True Negative |
error matrix
precision = TP / (TP + FP),
recall = TP / (TP + FN)
precision은 '1'로 예측한 것 중 제대로 예측한 비율,
recall은 실제 '1'인 것 중 성공적으로 예측된 비율을 의미한다.
둘 중 하나만 고려했을 때 생기는 문제는 다음과 같다.
(1) precision만 고려 - confidence한 경우에만 '1'로 판단 ex) logistic regression에서 threshold = 0.9.
-> 1이지만 0으로 판단하는 비율이 늘어날 것이다.
즉, precision은 높아지지만 recall은 낮아진다.
(2) recall만 고려 - '1'을 '0'으로 잘못판단하면 risk가 크기 때문에, threshold를 낮춘 경우
-> 0이지만 '1'로 판단한 비율이 늘어날 것이다.
즉, recall은 높아지지만 precision은 낮아진다.
위의 예시에서 확인할 수 있듯이 둘은 trade off 관계이고, 두 평가 요소 모두 유의미하다.
그러나 평가요소가 2개라면 위와 같이 서로 다른 알고리즘이 성능을 보일 때, 어떤 알고리즘이 우월한 알고리즘인지 판단하기 어렵다. 따라서 위 식과 같이 F1-score를 이용한다.
F1-score는 둘 중 하나라도 0에 가까운 값을 갖는 경우 0에 가까워진다.
* precision과 recall의 평균을 사용하는 경우 algorithm3 가 좋게 평가되지만, recall은 모두 '1'로 평가하는 알고리즘의 경우가 algorithm3 같은 경우이므로 바람직하지 않다.
<Data for Machine Learning>
앞서 bais, variance 문제를 다루면서 데이터를 무작정 늘리는 것이 성능 향상을 보장하지 못한다고 했지만, 그렇게 하는 것이 성능 향상에 도움이 되는 경우도 당연히 존재한다.
다음 그림은 데이터의 크기 변화에 따라 알고리즘을 평가한 유명한 실험이라고 한다.
앞서 bias, variance 문제에서도 다뤘지만, 데이터를 추가하는 것이 도움이 될지 안될지 판단하는 또 다른 직관적이고 유용한 사고로는 '사람(전문가)이라면 그 문제를 해결할 수 있는가' 에 대해 생각해보는 것이다.
예를 들어, 부동산 전문가라도 주택의 가격을 크기만으로 결정할 수는 없을 것이다. 위치, 방의 수, 상태 등을 모두 고려해야 그때서야 부동산 전문가도 가격을 예측할 수 있을 것이다.
결론부터 정리하면,
feature가 충분할 때 데이터가 많아질수록 좋은 효과를 볼 수 있다.
앞서 variance 문제일때 데이터를 늘리는 것이 도움이 된다고 한 것과 같은 이유이다.
feature가 충분하지 않다면 모델은 당연히 데이터가 많더라도 높은 bias를 갖을 것이고,(설명 불가)
데이터가 충분하지 않다면 과적합문제가 발생할 것이다.
ex) 100차항 까지 있는데 데이터가 100개라면 모두 fitting할 수 있음(overfittiing)
따라서 데이터를 늘리는 것이 과적합 문제를 막는 것에 도움이 된다고 할 수 있다.
'머신러닝 > Machine Learning(Ng)' 카테고리의 다른 글
[8주차 - 1] Clustering, K-means algorithm (0) | 2021.08.21 |
---|---|
[7주차] Support Vector Machine (0) | 2021.08.19 |
[6주차 - 1] 모델 성능, Bias와 Variance (0) | 2021.08.16 |
[5주차] Neural Network - 2 (0) | 2021.08.14 |
[4주차] Neural Network (0) | 2021.08.11 |