
머신러닝을 무엇일까?
보통 데이터에서 특징을 이용해서 컴퓨터가 학습한 것을 머신러닝이라고 부르기도 하지만,
조금 더 공학적인 의미로는 아래와 같다고 한다.
"어떤 작업 T에 대한 컴퓨터 프로그램의 성능을 P로 측정 했을때, 경험 E로 인해 성능이 향상 되었다면, 이 컴퓨터 프로그램은 작업 T와 성능 측정 P에 대해 경험 E로 학습 한 것이다."
-톰 미첼-
쉽게 설명하자면 컴퓨터에게 무언갈 주고(경험 E) 그로 인해서 문제(작업 T)에 대한
모델의 성능(P)이 좋아졌을 때, 그 모델은 학습 한 것이다. 라는 말이다.
반대로 이야기 하자면 E가 T에 대한 P에 아무런 영향을 주지 않거나, 혹은 오히려 안 좋은 영향을 준다면 그건 학습한 것이 아니라는 것이다.
즉 톰 미첼의 정의에 의하면, E로 인해 T에 대한 P가 향상 되어야 학습이라고 한다는 것이다.
스팸 문자들을 생각해보자
우리에게 오는 스팸들은 매우 특이한 문자로 온다.
예를 들어, For You -> 4U, Four you, 등등..
이러한 것들을 if를 이용해서 분류한다고 해보자. 프로그래머는 매번 이러한 변형에 따라 로직을
수정하고 분석 해야한다. 이렇게 되면 규칙이 점점 길고 복잡해져서 유지보수가 매우 힘들어진다.
이번에는 머신러닝을 사용했다고 가정하자.
머신러닝 모델에게 기존의 스팸/정상 문자 데이터(경험 E)를 학습시키면, 모델은 데이터에서 스팸 문자를 구분하는 데 유용한 패턴을 학습한다.
그 결과 새로운 문자가 스팸인지 탐지하는 작업(T)의 성능(P)을 향상시킬 수 있다.
기존 방식처럼 프로그래머가 스팸의 모든 규칙을 일일이 찾아 코드로 작성하는 것이 아니라, 머신러닝은 데이터를 통해 스팸을 구분하는 데 유용한 패턴을 학습할 수 있으며 대체로 일일이 코드로 적는 것보다 정확도가 더 높다.
즉 머신러닝은 여러 데이터의 피처를 분석해 의미있는 패턴, 관계, 규칙을 발견 하는 과정인 데이터 마이닝에 뛰어나다.
머신러닝은 주로 아래와 같은 상황일 때 주로 사용된다.