[ML] 6주차-3 : Building a Spam Classifier

k_dah·2021년 11월 24일
0

MachineLearning_AndrewNg

목록 보기
13/32
post-custom-banner

Machine Learning by professor Andrew Ng in Coursera

1) Prioritizing What to Work On

Building a spam classifier


  • 지도 학습
  • x : features of email
    • spam/non-spam을 구분할 수 있는 단어 100개로 구성한다.
      실제로는 자주 언급되는 단어로 training set를 구성한다.
  • y : = 1(spam) or = 0(not spam)

이 분류기의 정확도를 높이기 위해 어떻게 할까

  • 많은 data 수집
  • 더 복잡한 feature 개발 (예: email header 데이터 활용)
  • email 본문에 기반하여 알고리즘을 개선한다.
  • 철자오류를 감지하는 복잡한 알고리즘을 개선한다.

'ml 시스템을 설계할 때 위와 같이 다양한 옵션들에 대한 생각을 해봐야 한다. brainstrom different options'

2) Error Analysis


  • 빠르게 실행할 수 있는 단순한 알고리즘으로 시작한다. 해당 알고리즘을 빠르게 실행해 보고 cross validation data에 테스트해 본다.
  • learning curves를 그려보고 더 많은 데이터 또는 특성 등 도움이 될만한 것들을 파악한다.
    -> high bias/variance 확인
    '어디에 시간을 더 써서 개선할지 결정할 수 있다.'
  • 수동으로 cross validation set의 에러를 분석한다. 어떤 유형의 데이터에서 에러가 자주 발생하는지 파악한다.

Error Analysis


cross validation set에 500개의 example이 있다.
이때 알고리즘은 100개의 메일을 잘못 분류했다.
이 100개의 메일을 수동으로 분석하고, 아래를 기준으로 분류한다.

  • 이메일 타입
    • pharma : 12
    • Replica/fake : 4
    • steal passwords : 53
    • other : 31
      를 보고 특히 steal passwords의 성능향상을 위해 노력한다.
  • 알고리즘이 그것들을 올바르게 분류하는 데 도움이 될 것이라고 생각하는 단서(특징)
    • Deliberate misspellings : 5
    • Unusual email routing : 16
    • Unusual (spamming) punctuation : 32
      를 보고 특히 Unusual punctuation 성능향상을 위해 노력한다.

The Importance of Numerical Evaluation


알고리즘 성능을 평가할때 오류를 수치로 얻는 것이 매우 중요하다. 그렇지 않으면 성능평가가 어렵다. Hence, we should try new things, get a numerical value for our error rate, and based on our result decide whether we want to keep the new feature or not.
'새로운 아이디어를 적용해서 새로운 버전의 알고리즘을 실행하는 일이 많다. (이때 test set이 아닌 cross validation set로 알고리즘을 실행) 실행 후 에러를 살펴보는 시간을 가져야 한다. 이를 통해 알고리즘을 개선할 방법을 빠르게 찾고 새로운 것을 적용한다.'

profile
개똥이
post-custom-banner

0개의 댓글