티스토리 뷰

2019.02.20-1

딥러닝영역은 CNN과 RNN 두 가지 영역으로 나뉜다. CNN은 image를 다루고, RNN은 언어를 다룬다. image에는 사진 안에 있는 대상을 기준으로 분류하는 기술과 GAA라는 사진과 동영상 같은 것을 만들어 내는 기술, 그리고 알파고 같은 기술이 있다. 언어에는 구글 번역기, 회화, 언어는 순서를 중요시 하기때문에 주식 같은 것들이 있다. Numpy는 시계열 적이므로 CNN분야라고 할 수 있다.

  • 머신러닝(구) : 머신러닝을 기반으로 딥러닝과 강화학습이 나왔기 때문에, 머신러닝을 먼저 공부해줘야 한다. 데이터가 있어야만 분석을 한다. 데이터에서 원하는 정보를 추출
  • 딥러닝 : 머신러닝 분야에 신경망이라는 방법론이 있었는데, 이 분야가 커지다 보니 딥러닝으로 따로 만들어졌다. 데이터가 있어야만 분석을 한다.
  • 강화학습(Qlearning) : 알파고가 강화학습과 딥러닝을 적용했다. 최근에 나온 알파고0는 강화학습만으로 습득한다. 데이터가 없지만 시뮬레이션을 통해 데이타를 생성. 시뮬레이션 + 환경(feedback)을 통해 습득.

강화학습을 통해 생기는 데이터를 딥러닝을 이용해 처리한다. ex) 구글사의 DQN(Deeplearning Qlearning Network), 자율주행
미래에는 딥러닝을 기반으로 강화학습이 주도되어 갈 것이다.

머신러닝 기초

머신러닝이란

  • 데이터에서 지식을 추출하는 작업
  • 기존에 있는 정보를 활용하여 새로운 상황에 대처할 수 있도록 예측하는 작업
  • 인간이 데이터와 미리 개발된 예측모델을 제공하면, 기계가 복잡한 계산을 수행하여 의미있는 결과를 돌려주는 작업

어떤 데이터에 대해 모델을 만들고 데이터와 모델을 결합하여 결과물로서 주어진 데이터에 커스터마이징 된 모델을 만든다.
그래서 그 모델에 새로운 데이터를 집어넣어 예측, 판단, 결정을 한다. ex) SVM (Spots Vector Machine)

머신러닝에서의 데이터

  • 아기가 "사과" 라는 한 단어를 수십 번을 듣고 나서야 어렴풋이 구분할 수 있듯이, 기계도 충분한 사례, 즉 수 많은 데이터가 주어져야 그 데이터의 특성을 파악할 수 있게 된다.
  • 즉, 기계도 충분한 경험을 쌓아야 의미있는 결과를 제공할 수 있다는 점에서는 인간과 같다.
  • 인간은 시청각 데이터를 그대로 받아들이지만, 기계는 수치로 변환된 데이터만 받아들일 수 있다.

    참고: 사실 인간이 시청각 데이터를 받아들이기는 하지만 뇌에 전달될 때에는(시신경-뇌회로-판단-행동-생각 의 전제 구조상에서는) 전기회로 상의 수치로 변환된다는 측면에서 기계와 별반 다르지 않다고 할 수 있다.

  • 실제 상황에서 주어지는 데이터는 수치화 하기 어렵거나, 빠져 있거나, 잘 못 기록된 수치가 있는 경우가 대부분이고 일반적이다. 머신러닝 작업은 이런 정제되지 않은 데이터를 기계가 제대로 처리할 수 있도록 정제하는 전처리 작업에 대부분의 시간을 쓰게 된다.

  • 어떤 데이터가 주어졌을 때 그 분야의 전문지식이 없는 머신러닝 기술자라 하더라도 데이터를 분석하고 결과를 산출해 낼 수가 있다. 하지만 그 기술자는 그 결과가 어떤 의미인지 어떻게 활용할 수 있는지는 전혀 판단할 수 없다. 그러므로 실제 문제의 해결에 있어서 주어진 데이터의 특성과 유례를 이해하는 것이 가장 중요하다고 하겠다.

    참고: 위의 그래프를 볼 때, 해당 분야의 전문의가 아니면 저 결과가 유용한지 아닌지는 절대 판단할 수 없다.

재귀방법론: 과거에는 요구사항->설계->개발->테스트->납품 이었다. 이는 요구사항과 테스트가 잘 안맞은 상태로 납품이 되는 문제가 발생되곤 하였다. 지금은 각 과정이 서로 연결되어 원하는 제품이 나올 때 까지 무한 반복 하게 된다.

설계: c++ -> Java -> R, SAS, MATLAB, GAUSS... -> 파이썬

  1. 데이터+모델틀(선정/옵션) -> 모델(fit함수, 학습을 통해 컴퓨터가 자동으로 해주는 부분)
    (모델을 만들고 나면 사용된 데이터는 필요없어지게 된다.)
  2. 모델에 새로운 데이터를 집어넣으면 결정, 출력, 예측이 나온다.(predict,score함수) (틀을 만들기 위한 데이터와 예측하기 위한 데이터가 필요, 미래 데이터로 예측 하면 좋겠지만 우선 이 모델이 잘 만들어졌는지 확인하기 위해서 가지고 있는 데이터를 사용)

데이터의 구조

  • 머신러닝에서 다루는 데이터의 일반적인 구조는 표 형태 또는 2차원 행렬 형태이다.
  • 아래의 표를 보자. 총 100명의 데이터가 있다고 하자. 표는 행과 열로 구분할 수 있다.
  • 여기서 하나의 행은 사례 또는 샘플(sample) 이라 부른다.
  • 그리고 "나이/성별/키/몸무계" 같은 각각의 열은 속성 또는 특성(feature) 이라 부른다.
  • '점'이라고 표현하며 부르기도 한다.
나이 성별 몸무계
35 175 67
... ... ... ...
27 163 52

[그림] 데이터의 일반적인 구조

머신러닝을 적용하기 전에 해봐야 하는 질문들

출처 : 교재 27쪽

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

머신러닝의 분류

  • 지도학습 (supervised learning)

    1. 회귀 (regression)
    2. 분류 (classification)

  • 비지도학습 (unsupervised learning)

    1. 군집 (clustering)
    2. 특성 분석

지도학습과 비지도학습

(답을 알려주느냐 or 답을 알려주지 않느냐)

  • 위의 표를 참고하면, 나이와 성별과 키가 주어졌을 때 몸무계의 수치를 예측하거나, 나이와 키와 몸무계가 주어졌을 때 성별을 예측하는 것과 같이 해당 문제에 있어 예측에 대한 목표값(target)이 주어진 머신러닝 문제지도학습이라고 한다. (모든 속성이 목표값으로서 사용될 수 있다.)

    참고: 위 유방암 그래프 사례는 악성과 양성이라는 목표값이 주어졌기 때문에 지도학습에 해당한다

  • 이에 반해, 목표값이 주어지지 않은 상태에서 데이터에 대한 특성을 알아내는 머신러닝 문제비지도학습이라고 한다. 예를 들어 위의 표가 한 식당의 고객 정보라고 한다면, 그 식당을 찾는 고객들을 몇 가지 특징적인 그룹으로 구분할 수 있는지 그리고 어떤 속성이 가장 전체 고객을 잘 대표할 수 있는지 등을 분석하는 것이다.

회귀 (Regression)

  • 회귀는 목표값이 주어지는 지도학습 중에서도, 목표값이 연속적인 실수값인 경우가 일반적이다. (길이, 무게 등 연속적인 실수값)
  • 회귀는 다른 식으로 표현하면, 속성들 간의 근사 평면을 찾는 것이라고 할 수 있다. 이럴 경우 속성들 중의 하나가 목표값이 된다.
  • 이런 근사 평면은 2차원에서는 직선, 3차원에서는 평면 그리고 4차원 이상에서는 초평면이 된다.
  • 근사 평면은 머신러닝 모델에 따라서 굽은 직선이나 굽은 평면이 될 수 있다.

분류 (Classification)

  • 분류는 회귀와 달리 목표값이 0,1,2 와 같이 연속적이지 않은 값을 목표값으로 가지는 경우이다.
  • 유방암 그래프에서 처럼, 악성인지 양성인지와 같이 클래스(class)를 구분하는 경우가 대표적인 분류 문제이다.
  • 앞의 표에서, "나이/키/몸무게" 라는 3가지 속성을 가지고 성별이라는 목표값을 구분해 내는 경우도 분류이다.

    참고 : 보통 타겟값은 "남/녀", "악성/양성", "봄/여름/가을/겨울" 과 같이 단어로 주어지는 경우가 대부분이다. 이 경우 목표값을 0,1,2,3 과 같이 0부터 시작하는 정수로 바꾸어준다.

  • 분류는 속성이 하나일 때는 점, 속성이 둘일 때에는 곡선, 속성이 셋일 때에는 평면, 그 이상일 때에는 초평면으로 클래스를 구분해 준다. 각 점이나 곡선, 평면이 하나일 필요는 없고 여러개 일 수 있다.

    주의 : 아래 그림에서 보듯이 분류 문제에 있어 각 클래스는 다른 색깔이나 모양으로 표현된다. 회귀와 어떻게 다른지 생각해 보자.

군집 (Clustering)

  • 군집은 비지도 학습의 대표적인 방법이다.
  • 많은 데이터가 주어졌을 때, 이들을 특징적인 몇몇 그룹으로 구분해 주는 기술이다.
  • 사실 군집은 지도학습 보다 먼저 수행되는 것이라고 할 수 있다. 역사적으로 초기 공룡 연구자 들이라면 여러 공룡 화석을 수집한 다음 이를 적절히 군집 기술을 이용해 구분함으로서 공룡의 이름을 부여할 수 있었을 것이다. 이렇게 이름(타겟값)을 지정한 다음에 새로운 화석이 나타나면 회귀나 분류를 이용하여 이 화석을 구분할 수 있었을 것이다.

특성 분석 (Feature Analysis)

  • 특성 분석은 우리가 데이터를 맞았을 때 가장 먼저 1차적으로 수행해 오던 작업이다.
  • 가장 중요한 속성이 무엇인지, 서로 연관되어 있는 속성이 무엇인지, 아니면 여러가지 속성을 결합해 새로운 속성을 뽑아내든지 할 수 있다.
  • 특성 분석은 목표값에 상관 없이 각 속성들 간의 연관관계를 분석하는 경우가 대부분이므로 비지도학습으로 구분하기로 하자.
  • 특성 분석은 일반적인 용어이지만, 머신러닝에서는 특성 분석을 위해 여러가지 자동화된 기술을 제공하고 있다.

'beginner > 파이썬 머신러닝 기초' 카테고리의 다른 글

머신러닝 기초_비용함수  (0) 2019.02.22
머신러닝 기초 _ 거리  (0) 2019.02.22
머신러닝 기초_iris활용  (0) 2019.02.22
머신러닝과 파이썬  (0) 2019.02.21
Scikit-learn 기초  (0) 2019.02.20
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함