메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

IT/모바일

『파이썬 라이브러리를 활용한 머신러닝』 01, 왜 머신러닝인가?

한빛미디어

|

2017-07-05

|

by 박해선

16,923

머신러닝Machine Learning은 데이터에서 지식을 추출하는 작업입니다. 머신러닝은 통계학, 인공지능 그리고 컴퓨터 과학이 얽혀 있는 연구 분야이며 예측 분석predictive analytics이나 통계적 머신러닝statistical learning으로도 불립니다. 최근 몇 년 동안 머신러닝을 사용한 애플리케이션들이 우리 일상에 널리 퍼지고 있습니다. 영화 추천에서부터 음식 주문, 쇼핑, 맞춤형 온라인 라디오 방송과 사진에서 친구 얼굴을 찾아주는 일까지 최근 많은 웹사이트와 기기가 머신러닝 알고리즘을 핵심 기술로 채택하고 있습니다. 페이스북, 아마존, 넷플릭스 같은 복잡한 웹사이트들은 여러 가지 머신러닝 모델을 사용하여 구성 요소의 대부분을 만들어냅니다.

 

1.jpg

 

상업적인 애플리케이션 이외에도 머신러닝은 오늘날 데이터에 기반한 연구에 커다란 영향을 끼쳐 왔습니다. 이 책에서 소개하는 도구들은 별을 탐구하고 새로운 행성을 찾거나 새로운 미립자를 발견하고 DNA 서열을 분석하며 또 맞춤형 암 치료법을 만드는 일과 같은 다양한 과학분야에 적용되어 왔습니다.

 

그렇다고 여러분의 애플리케이션이 이처럼 큰 규모이거나 대단한 것이어야 머신러닝을 사용할 수 있는 것은 아닙니다. 이 장에서는 왜 머신러닝이 유명해졌는지 그리고 머신러닝을 사용해 어떤 문제를 해결할 수 있는지 살펴보겠습니다. 그런 다음 어떻게 머신러닝 모델을 만드는지 설명하면서 중요한 개념들을 언급하도록 하겠습니다.

 

 

1.1 왜 머신러닝인가?

 

2.png

초창기 지능형 애플리케이션들은 데이터를 처리하고 사용자의 입력을 다루는 데 하드 코딩된 “if”와 “else” 명령을 사용하는 시스템이었습니다. 의심되는 메일을 스팸함으로 보내야 하는 스팸 필터를 생각해보겠습니다. 스팸으로 의심되는 단어들로 블랙리스트를 만들어 처리할 수 있을 것입니다. 이 방식은 지능형 애플리케이션을 만들기 위해 규칙 기반 전문가 시스템rule-based expert system을 사용하는 예라고 볼 수 있습니다. 결정 규칙을 수동으로 만드는 것이 적합할 때도 있습니다. 모델링할 처리 과정을 사람이 잘 알고 있는 경우입니다. 하지만 직접 규칙을 만드는 것은 두 가지 커다란 단점이 있습니다.

 

  • 결정에 필요한 로직은 한 분야나 작업에 국한됩니다. 작업이 조금만 변경되더라도 전체 시스템을 다시 개발해야 할 수 있습니다.
  • 규칙을 설계하려면 그 분야 전문가들이 내리는 결정 방식에 대해 잘 알아야 합니다.

 

얼굴 인식은 규칙을 직접 만드는 데 실패한 대표적인 예입니다. 요즘엔 모든 스마트폰이 이미지에서 얼굴을 찾아낼 수 있습니다. 하지만 얼굴 인식은 2001년 이전에는 풀 수 없는 문제였습니다. 컴퓨터가 인식하는 픽셀(컴퓨터에서 이미지를 구성하는 단위) 방식이 사람이 얼굴을 인식하는 방식과 매우 다르다는 점이 가장 큰 문제였습니다. 이런 표현 방식의 차이 때문에 디지털 이미지에서 얼굴을 구성하는 것이 무엇인지를 일련의 규칙으로 표현하기가 근본적으로 불가능합니다.

 

그러나 머신러닝을 사용하여 알고리즘에 많은 얼굴 이미지를 제공해주면 얼굴을 특정하는 요소가 어떤 것인지를 충분히 찾아낼 수 있습니다.

 

 

1.1.1 머신러닝으로 풀 수 있는 문제

 

가장 많이 사용되는 머신러닝 알고리즘들은 이미 알려진 사례를 바탕으로 일반화된 모델을 만들어 의사 결정 프로세스를 자동화하는 것들입니다. 이 방식을 지도 학습supervised learning이라고 하며 사용자는 알고리즘에 입력과 기대되는 출력을 제공하고 알고리즘은 주어진 입력에서 원하는 출력을 만드는 방법을 찾습니다. 이렇게 학습된 알고리즘은 사람의 도움 없이도 새로운 입력이 주어지면 적절한 출력을 만들 수 있습니다. 스팸 분류 문제로 돌아가 보면, 머신러닝을 사용해서 사용자는 알고리즘에 많은 이메일(입력)과 각 이메일의 스팸 여부(기대되는 출력)를 제공합니다. 그러면 이 알고리즘은 새로운 이메일이 스팸인지 아닌지 예측할 수 있게 됩니다.

 

undefined

 

입력 데이터로부터 기대한 출력이 나오도록 알고리즘을 가르치는 것이기 때문에 입력과 출력으로부터 학습하는 머신러닝 알고리즘들을 지도 학습 알고리즘이라고 합니다. 입력과 출력 데이터를 만드는 것은 종종 수작업을 거쳐야 해서 힘든 일이지만, 지도 학습 알고리즘은 분석하기에 좋고 성능을 측정하기도 쉽습니다. 만약 여러분의 애플리케이션을 지도 학습 문제로 구성 할 수 있고 원하는 출력을 포함한 데이터셋dataset을 만들 수 있다면 아마도 머신러닝이 그 문제를 해결할 수 있을 것입니다.

지도 학습의 예는 다음과 같습니다.

  • 편지 봉투에 손으로 쓴 우편번호 숫자 판별
    • 여기서 입력은 손글씨를 스캔한 이미지이고 기대하는 출력은 우편번호 숫자입니다. 머신러닝 모델 구축에 쓸 데이터셋을 만들려면 많은 편지 봉투를 모아야 합니다. 그리고 우편번호를 눈으로 확인해서 원하는 출력 값을 기록해놓아야 합니다.
  • 의료 영상 이미지에 기반한 종양 판단
    • 이 경우 입력은 이미지이고 출력은 종양이 양성(옮긴이 주_ 종양이 암이면 악성이라 하며, 양성은 그 반대입니다.)인지의 여부입니다. 모델 구축에 사용할 데이터셋을 만들려면 의료 영상 데이터베이스가 필요합니다. 또한 전문가의 의견이 필요합니다. 다시 말해 의사가 이미지를 모두 확인해서 종양이 양성인지, 아니면 악성인지 판단을 내려야 합니다. 경우에 따라서는 종양이 암인지를 확인하기 위해 이미지 확인 외의 추가 분석을 해야 할 수도 있습니다.
  • 의심되는 신용카드 거래 감지
    • 여기서는 신용카드 거래 내역이 입력이 되고 부정 거래인지의 여부가 출력이 됩니다. 신용카드 회사라면 모든 거래 내역을 저장하고 고객이 잘못된 거래라고 신고한 내역을 기록해서 데이터셋을 만들 수 있습니다.

 

이런 사례들에서 주목할 점은 입력과 출력이 상당히 직관적으로 보이지만, 데이터를 모으는 과정은 세 경우가 많이 다르다는 것입니다. 편지 봉투를 읽는 것은 손이 많이 가는 일이지만, 쉽고 비용이 적게 듭니다. 반면에 의료 영상 이미지를 얻거나 분석하려면 도덕적 이슈나 개인정보 보호를 차치하더라도 고가의 장비가 필요하고 보수가 높고 흔치 않은 전문가의 의견을 구해야 합니다. 신용카드 사기 탐지의 예에서는 데이터 수집이 매우 간단합니다. 고객이 사기 거래라고 보고할 것이니 필요한 출력 데이터를 고객이 제공하는 셈입니다. 즉 사기 거래와 일반 거래의 입력과 출력을 얻기 위해서는 기다리기만 하면 됩니다.

 

이 책에서 다룰 또 다른 알고리즘은 비지도 학습unsupervised learning 알고리즘입니다. 비지도 학습에서는 알고리즘에 입력은 주어지지만 출력은 제공되지 않습니다. 이 알고리즘의 성공 사례는 많지만 비지도 학습을 이해하거나 평가하는 일은 쉽지 않습니다.

비지도 학습의 예는 다음과 같습니다.

 

  • 블로그 글의 주제 구분
    • 많은 양의 텍스트 데이터를 요약하고 그 안에 담긴 핵심 주제를 찾고자 할 수 있습니다. 사전에 어떤 주제인지 알지 못하고 얼마나 많은 주제가 있는지도 모릅니다. 그러므로 출력 값을 준비할 수 없습니다.
  • 고객들을 취향이 비슷한 그룹으로 묶기
    • 고객 데이터를 이용해서 어떤 고객들의 취향이 비슷한지 알고 싶거나 비슷한 취향의 고객을 그룹으로 묶고 싶을 것입니다. 쇼핑 사이트라면 부모, 독서광, 게이머 같은 그룹이 있을 수 있습니다. 어떤 그룹이 있는지 미리 알 수 없고 얼마나 많은 그룹이 있는지도 모르니 출력을 가지고 있지 않은 셈입니다.
  • 비정상적인 웹사이트 접근 탐지
    • 일상적이지 않은 접근 패턴을 찾으면 부정행위나 버그를 구별하는 데 도움이 됩니다. 각각의 비정상 패턴은 서로 많이 다를 수 있고 이미 가지고 있는 비정상 데이터도 없을 수 있습니다. 이 경우 단지 웹 트래픽만 관찰할 수 있고 어떤 것이 정상이고 비정상인지 알지 못하므로 비지도 학습 문제입니다.

 

지도 학습과 비지도 학습 모두 컴퓨터가 인식할 수 있는 형태로 입력 데이터를 준비하는 것이 중요합니다. 데이터를 엑셀 테이블처럼 생각하면 편리할 때가 많습니다. 우리가 판별해야 할 개개의 데이터(개개의 이메일, 고객, 거래)는 행이고 데이터를 구성하는 각 속성(고객의 나이, 거래 가격, 지역)은 열입니다. 고객이라면 나이, 성별, 계정 생성일, 온라인 쇼핑몰에서의 구매 빈도 등으로 표현할 수 있습니다. 흑백 이미지로 된 종양 데이터라면 크기나 모양, 색상의 진하기 등이 속성이 될 것입니다.

 

머신러닝에서는 하나의 개체 혹은 행을 샘플sample 또는 데이터 포인트data point라고 부릅니다. 그리고 샘플의 속성, 즉 열을 특성feature이라고 합니다. 

 

나중에 이 책에서 좋은 입력 데이터를 만들어내는 특성 추출feature extraction 혹은 특성 공학feature engineering이라는 주제를 자세히 다뤄보겠습니다. 유념해둬야 할 것은 어떤 머신러닝 알고리즘도 아무런 정보가 없는 데이터로는 그 어떤 것도 예측할 수 없다는 사실입니다. 예를 들어 환자에 대해 알고 있는 특성이 오직 성씨뿐이라면 어떤 알고리즘도 그 환자의 성별을 예측할 수는 없을 것입니다. 성씨 데이터에는 성별에 관한 정보가 없기 때문입니다. 만약 환자의 이름을 특성으로 추가한다면 아마 이름을 토대로 환자의 성별을 알아낼 수도 있을 것입니다.

 

 

1.1.2 문제와 데이터 이해하기

 

머신러닝 프로세스에서 가장 중요한 과정은 사용할 데이터를 이해하고 그 데이터가 해결해야 할 문제와 어떤 관련이 있는지를 이해하는 일입니다. 아무 알고리즘이나 선택해서 데이터를 입력해보는 것은 좋은 방법이 아닙니다. 데이터셋으로 무엇을 하는 것인지 머신러닝 모델을 만들기 전에 반드시 이해해야 합니다. 알고리즘마다 잘 들어맞는 데이터나 문제의 종류가 다르기 때문입니다. 머신러닝 솔루션을 만들 동안 다음 질문에 답해보거나 최소한 마음에 새겨둬야 합니다.

 

4.jpg

 

  • 어떤 질문에 대한 답을 원하는가? 가지고 있는 데이터가 원하는 답을 줄 수 있는가?
  • 내 질문을 머신러닝의 문제로 가장 잘 기술하는 방법은 무엇인가?
  • 문제를 풀기에 충분한 데이터를 모았는가?
  • 내가 추출한 데이터의 특성은 무엇이며 좋은 예측을 만들어낼 수 있을 것인가?
  • 머신러닝 애플리케이션의 성과를 어떻게 측정할 수 있는가?
  • 머신러닝 솔루션이 다른 연구나 제품과 어떻게 협력할 수 있는가?

 

넓은 시각으로 보면, 머신러닝 알고리즘이나 방법론은 특정 문제를 푸는 전체 과정의 일부일 뿐입니다. 항상 머릿속에 전체 시스템에 대한 큰 그림을 담고 있어야 합니다. 많은 사람이 복잡한 머신러닝 솔루션을 구축하느라 오랜 시간을 투자하고 나서야 문제를 풀기에 적절한 방법이 아니었음을 깨닫습니다.

 

(이 책에서 보게 될) 머신러닝의 기술적인 측면을 깊게 파고 들다가 궁극적인 목표를 망각하게 되기 쉽습니다. 앞에서 나열한 질문들에 대해 깊게 다루지는 않겠지만, 머신러닝 모델을 구축하기 시작할 때 직간접적인 가능한 모든 가정들을 세워보라고 강조해봅니다.

 

 

 

▼ 도서 살펴보기 (링크이동)

 

댓글 입력
자료실