[머신러닝] 1. '진짜' 머신러닝을 하기 전 알아야 할 이론적인 이야기

두비니

·

2020. 2. 29. 19:49

이 글은 '핸즈온 머신러닝' 책에

기반하여 작성되었습니다.

 

 

 

1. '진짜' 머신러닝을 하기 전 알아야 할 이론적인 이야기

 

 


 

 

일단 툴을 다운받고 뭘 하고 하기전에, 우리가 공부하려고 하는 것이 무엇인가 파악을 해야겠죠?

 

 

 

 

 

1) 머신러닝이란 무엇인가?

 

 

 

"명시적인 프로그래밍 없이 컴퓨터가 학습하는 능력을 갖추게 하는 연구분야다."

_아서 사무엘

 

 

 

직접 사례로 비교하는 것이 더 편할 것 같아, 보통의 프로그래밍과 머신러닝을 비교해 봅시다.

예를들어 스팸메일을 필터링하는 프로그램을 만든다고 가정합시다.

 

 

전통적인 프로그래밍 방법을 택한다면,

 

 

1)스팸메일들에 주로 들어가는 단어나 발신자같은 패턴을 발견을 해냅니다.(사람)

2) 발견한 패턴을 감지하고, 분류하는 알고리즘을 작성합니다.(사람)

3) 프로그램이 충분한 신뢰도를 가질 때까지 1단계와 2단계를 반복합니다.(사람)

 

 

 

 

이런 전통적인 프로그래밍 방법의 단점은, 우리가 마주하는 문제들은 단순하지 않아 알고리즘 구현 자체가 어려운 경우도 많으며, 시간이 지날수록 지속적인 유지/보수가 필요하다는 점이 있습니다.

 

 

반면에 머신러닝을 택한다면,

 

위 1, 2, 3번 과정은 모두 같지만 위 과정을 모두 기계가 한다는 점이 있습니다.

 

 

 

 

따라서 사람이 할 일은 그냥 많은 양의 데이터셋을 던져주는 일이 끝인거죠. 알고리즘에 수정이 필요하더라도 머신러닝이 알아서 수정하는식입니다.

 

 

일단 가장 큰 장점은 개발자들이 알고리즘 구현을 할 필요가 없다는 것이죠.

음성인식, 사진구분 등 단순한 수치화로는 표현할 수 없는 것들도 머신러닝을통해 자동화 구분이 가능해지는 것이죠.

 

 

반대로 이를 통해 배울 수도 있습니다. 

방대한 양의 데이터를 던져준 후, 머신러닝을 시킨 후에 머신러닝을 통해 얻은 알고리즘을 분석하면 겉으로 보이지 않던 패턴을 찾을 수도 있겠죠. 이런 과정을 데이터마이닝이라고 합니다.

 

 

<머신러닝이 뛰어난 분야>

 

● 기존 솔루션으로는 많은 수동 조정과 규칙이 필요한 문제 : 하나의 머신러닝 모델이 코드를 간단하고 더 잘 수행되도록 할 수 있습니다.
● 전통적인 방식으로는 전혀 해결 방법이 없는 복잡한 문제 : 가장 뛰어난 머신러닝 기법으로 해결 방법을 찾을 수 있습니다.
● 유동적인 환경 : 머신러닝 시스템은 새로운 데이터에 적응할 수 있습니다.
● 복잡한 문제와 대량의 데이터에서 통찰 얻기