머신러닝의 정의
머신러닝은 일종의 소프트웨어다.기존의 소프트웨어는 규칙을 프로그래머가 입력을 해준다. 스팸필터로 예를 들면, 특정단어가 발견되면 스팸처리를 할수 있다. 하지만, 현실의 스팸의 종류는 너무 다양하고 계속 발전한다. 프로그래머가 일일이 규칙을 정하는 것이 비효율적이다. 머신러닝은 컴퓨터가 스스로 배우면서 이러한 ‘판단’을 할수 있게 만드는 소프트웨어다.
“Field of study that gives computers the ability to learn without being explicitly programmed” Arthur Samuel(1959)”
지도학습과 비지도 학습
머신러닝은 지도학습(Supervised Learning)과 비지도학습(Unsupervised Learning)으로 나눈다. 둘간의 가장 큰차이는 답(y)의 유무이다.
- 지도 학습: x(미지수),y(답)을 동시에 보여준다. 예를 들어 고양이의 사진을 여러개 보여주고 “이것은 고양이다”라는 답을 컴퓨터는 알고 학습을 한다. 그렇다면 앞으로 고양이 사진을 “고양이”라고 분류할 수 있다.
- 비지도 학습: x(미지수)만 보여준다. 유튜브의 개인화 추천을 보자. 나의 유튜브만 하더라도, 나의 취향에 따라 3~5개의 플레이리스트가 추천된다. “y(답)”이라고 할 수 있는 추천 리스트 자체가 기존의 프로그래머들의 정한 것이 아니라, 컴퓨터가 스스로 만들어 낸 것이다.
당연히 지도학습이 더 쉽고, 현재는 더 많이 쓰이지만 앞으로는 비지도학습이 더 많은 가능성을 가지고 있는 미개척 분야이다.
훈련 셋, 검증 셋, 시험 셋
머신러닝은 말 그대로, 데이터를 통해서 소프트웨어를 훈련(train)시켜서 예측(predict)을 하는 것이다. 그렇기 위해서는 당연히 데이터가 필요하고, 데이터는 크게 3개의 셋(Set)으로 나눌수 있다. 현업에서 검증 셋은 종종 생략되는 경우가 있다.
-
훈련 셋(Training Set)은 말그대로 모델을 만들기 위해 훈련시키는 데이터를 의미한다.
-
검증 셋(Validation Set)은 모델이 제대로 작동하는 검증하는 셋이다.
-
시험 셋(Test Set)은 실제로 예측해야 될 데이터 셋이다.