빅데이타 & 머신러닝/머신러닝

맨땅에 해딩 머신러닝 #1-기본 개념 잡기

Terry Cho 2014. 10. 30. 01:12

맨땅에 해딩 머신러닝 #1


어떻게 강의도 보고 이야기를 듣다 보니, 빅데이타 분석등에서 중요한 것은 데이타 저장/통계뿐만 아니라 데이타 분석을 기반으로 예측등과 같은 의미를 찾아내는 것이 중요하다는 것을 알게 되었는데, 후배가 DEVIEW 컨퍼런스에서 딥러닝 강의등을 듣고 대략적인 원리를 듣고 감명 받은 소감을 이야기 해줘서 관심을 가지고 있던 중, 아프리카 TV의 추천 시스템 등의 강의를 접하게 되었습니다.

모든게 기본적으로 머신러닝이라는 것을 기본으로하고 있었는데, 이 분야를 공부하려고 봤더니, 수학(선형대수), 통계학 그리고 빅데이타 분석 시스템, 대용량 분산 처리 시스템등 여러가지 학문이 엮어 있더군요.

지금까지 기술 흐름을 봤을때, 이 부분이 중요한 부분이 될것 같기도 해서 막상 공부를 시작하려고 하니, 막상 수학에 대한 두려움 부터 오더군요. 어떤 것부터 해야 할지...

그래서 정석 수학을 사서 고등학교 수학을 공부해볼까도 생각해봤지만, 주변에 조언이 그러면 시작하기도 전에 지친다고 해서 Machine Learning in action 책도 구입하고 조언대로 Cousera의 스탠포드 Andrew ng 교수님의 강의를 듣기 시작했습니다. 영어라서 진도는 느리기는 하지만, 머신 러닝의 기본적인 컨셉을 잘 설명해주시고, 수학적인 지식이 많이 없더라도 그걸 다 감안해서 설명해주기 때문에 초보자에게 많이 유용한 것 같습니다.


머신 러닝은 이미 대학/대학원에서도 많이 가르키고 있는 학문으로 인터넷에 관련 컨텐츠들이 많고 수준이 높은 내용도 많지만, 저 같은 엔지니어는 머신러닝의 알고리즘을 스스로 만들기 보다는 머신러닝을 잘 이해하고 이를 맞는 시나리오에 잘 가져다가 인프라와 시스템들과 같이 잘 녹여 내는게 중요하다고 생각해서 수학 초보자 엔지니어의 머리로 공부한 머신러닝에 대해서 정리해보고자 합니다. (사실 Hash 알고리즘. MD5,SHA1-256 등도 다 이해하고 쓰시는 분들보다 라이브러리를 가져다 쓰시잖아요. 그렇지만 최소한 해쉬의 원리에 대해서는 이해하고 있어야져)


NoSQL과 클라우드 컴퓨팅도 공부를 시작하고 개념을 잡아서 스스로 정립 시키기 까지 대략 2년 정도가 걸렸던것 같은데.. 이렇게라도 시작을 안하면 시작을 못할까봐, 자기제약의 형태로 코세라 andrew 교수님의 강의나 다른 책들을 통해서 공부한 내용을 정리해보고자 합니다.


머신 러닝 이란?


컴퓨터에 샘플 데이터를 통한 지속적인 학습을 통해서, 문제에 대한 답을 얻어내는 방법

컴퓨터 공학, 수학, 통계학의 교집합에 속함. 쉽게 접할 수 있는 머신러닝의 사례로는 

  • 이메일 스팸 필터링 시스템
  • 쇼핑몰이나 영화 연관 추천 시스템
  • 문자 인식
  • 자연어 처리
  • 연관 검색어 처리

이러한 시나리오는 지속적인 샘플 데이터를 통해서 알고리즘을 학습해나감으로써, 최적의 알고리즘을 찾아서, 적절한 담을 찾아내도록 할 수 있다.

쇼핑몰 추천 시스템의 경우 사용자의 구매 패턴을 군집화 하여, 유사한 패턴을 찾아 냄으로써 적절한 상품을 추천하게 하는데, 40대 미혼/남자/연수입 5000만원/차량 보유 한 사용자가 카메라,배낭등을 구매했을 경우 여행 상품을 구매할 확률이 높다는 것을 학습했을 때, 이러한 사용자에게 여행 상품을 추천해주는 것들과 같은 답을 제공할 수 있다.


Supervised learning (지도 학습)
학습에 사용되는 데이터에 결과가 정해졌 있는 경우를 Supervised Learning이라고 한다.
예를 들어, “아파트 평수가 22평일 때, 구매 가격이 1억이다”와 같은 경우인데, “구매가격이 1억이다”라는 결과 값이 정해져있는 경우이다.
반대로, 영화관 관람객 데이터가 있을 때, “20대x30 명, 30대x10명,40대x10명”과 같이 어떤 데이터데 대해서 그 결과값이 없을 경우에는 비지도 학습(Un-supervised learning이라고 한다)
여기서 용어를 한번 소개하고 넘어가자. 아래와 같이 지역,평수,층수에 따른 가격 데이터가 있다고 하자


가격은 앞의 3개 조건에 따라 변화하는 결과인데, 이 지역,평수,층수와 같은 조건을 Feature 또는 Attribute 라고 하며, 이 Feature에 따라 결정되는 값을 Targeted value(목적값)이라고 한다.


Regression problem vs Classification problem


이 Supervised learning은 문제의 타입 (problem type)에 따라 크게 두가지로 분류될 수 있다.

먼저 Regression problem이란 기대되는 목적값이 continuous 한 연속성을 가지고 있을 때, Regression problem 이라고 한다. 즉 평수에 의한 아파트 값은 Regression problem이다, 22평일 때 가격이 1억, 23평일 때 1.2억,24평일 때 1.4억과 같이 Feature x_i에 대해서 Targeted value y_i가 기대 되는 경우 Regression problem이라고 한다.

아래는 Regression problem에 대한 예로, 집 평수에 따른 가격에 대한 문제를 표현한 것이다. ( X는 실측 데이터)





 

반대로 Classification problem은 목적값이 continuous한 연속성이 없이 몇가지 값으로 끊어지는 경우이다. 예를 들어 “나이가 20대이고, 종양의 크기가 2cm이면 음성암”,”나이가 50대이고 종양의 크기가 3cm 이면 양성암” 과 같이 나이,종양과 같은 Feature에 대해서 기대되는 target value가 양성/음성과 같이 연속성이 없이 몇 개의 분류로 딱 떨어지는 경우를 Classification problem이라고 한다. 

아래는 “종양 크기에 따른 유방암 여부”에 대한 문제를 그래프로 표현한 것인데, Target value (Y축)의 값이 Yes/No로 딱 구분되는 것을 볼 수 있다.

 


Unsupervised learning (비지도 학습)

비지도 학습(Unsupervised learning)이란, Training data에 target value가 없는 경우를 말한다. 흔히 라벨링 (Labeling)이 안되어 있다고도하는데, 지도 학습(Supervised learning)과 비교를 해보면 개념을 잡기가 좋다.


  

왼쪽의 그래프를 Supervised learning이라고 하면, x1은 나이, x2는 종양의 크기라고 할 때 그래프에서 동그라미는 음성암, X는 양성암이다. x1,x2는 feature이고, O/X는 target value로 x1,x2에 대한 결과를 기대할 수 있는 문제 형태이지만

오른쪽 그래프는 unsupervised learning으로 x1,x2가 각각 나이,종양이라고 했을 때, 그래프 O는 같은 의미를 갖는 뿐 양성/음성으로 표시(labeled) 되지 않았다. 대신 이런 경우는 x1,x2와 같은 feature에 대해서 몇 개의 군집(Cluster)로 나눌 수 가 있는데, 그림의 붉은 동그라미 그룹이 군집 그룹에 속한다.

SNS에서 사용자들을 가까운 사람들 끼리 군집화 하거나, 시장에서 사용자들을 특정군으로 나누는 등에 사용될 수 있다.