인공지능-머신러닝-맛보기01

아래의 글은 elice(엘리스) 에서 진행한 인공지능/머신러닝 맛보기 수업을 듣고 개인 공부를 목적으로 정리한 글입니다.
학습자료가 따로 있기에 그림이나 예제등 자세한 내용 없이 키워드와 기억하고 싶은 내용, 궁금해서 따로 검색해 놓은 내용만 적어놓은 것임을 밝힙니다.


데이터 사이언스

데이터 중심의 과학
데이터에서 지식과 통찰력을 발견하는 과학적인 방법론.

  • 통계학
  • 데이터 분석
  • 머신러닝

예전의 데이터 사이언스

부제 : 데이터 사이언스의 시초
19세기 중반 영국 런던에서 콜레라 발병
-> 콜레라는 왜 그리고 어떻게 전파되는가?(존 스노우(왕좌의 게임 아님)) - 가설만 하지말고 검증을 해보자
-> 지도에 발병자를 표시해보자
-> 콜레라로 인한 사망자는 한 펌프를 기준으로 퍼진다. 다른 펌프를 이용한 사용자는 사망하지 않음.
-> 콜레라를 옮기는 매개체는 공기가 아니라 물이다.
데이터로 인한 검증


머신 러닝

명시적으로 프로그래밍을 하지 않고도 컴퓨터가 학습할 수 있는 능력을 갖게 하는 것

  • 데이터 마이닝
    데이터가 주어졌을 때 사람들이 얻을 수 있는 정보를 뽑아내는 것.
  • Feature 학습
    어떤 사물이나 생물의 사진을 수십, 수백만장을 보여주고 답을 알려주면 학습을 통해 공통적인 특징(feature)을 도출해냄
  • 추천
    사용자 개개인에게 추천을 하여 원하는 정보를 제공해 주는 것.

무엇을 할 수 있나?

  • 지도 학습
  • 비 지도 학습
  • 강화 학습

지도 학습(Supervised Learning)

훈련 데이터(Training Data)로부터 하나의 함수를 유추해내기 위한 기계 학습(Machine Learning)의 한 방법.
간단히 말하면 학습을 지도한다고 생각하면 될 것 같습니다.
어떤 대표적인 데이터에 대한 답을 정해주면 그 데이터와 답을 통해 미래의 어떤 대상을 추론할 수 있게 알고리즘을 적용 시키는 방식이라고 할 수 있습니다.

  • 회귀 문제
    회기분석(regression analysis)은 관찰된 연속형 변수들에 대해 두 변수 사이의 모형을 구한뒤 적합도를 측정해 내는 분석 방법.
  • 분류 문제
    새로운 데이터가 어떤 클래스(class)에 해당하는지 판단하는 것.
    데이터는 여러개의 차원을 가질 수 있습니다.

비지도 학습

  • 군집화
    지도학습과 반대로 답을 내릴 수 없는 경우 컴퓨터에게 데이터를 입력하면 컴퓨터가 특정 군집(Cluster)으로 데이터를 나눕니다.
    나누어진 군집을 보고 사람이 후에 그 군집에 대한 정의를 내려줍니다.

강화 학습

어떤 환경 안에서 정의된 에이전트가 현재의 상태에서, 선택 가능한 행동들 중 보상을 최대화하는 행동 혹은 행동 순서를 선택하는 방법(출처 : Wikipedia)

위에서 에이전트는 게임 케릭터가 될 수도 있고, 알파고가 될 수도 있습니다. 보상은 승리 혹은 게임아이템이라고 할 수 있으며, 어떤 행동을 해야 더 좋은 보상을 얻는지에 대한 순서를 선택하도록 하는 학습법 입니다.


Numpy

Numpy는 Python에서 사용되는 과학 컴퓨팅용(Scientific Computing) 라이브러리 입니다.

Python 언어에서 기본으로 지원하지 않는 행렬과 같은 데이터 구조 지원 및 수학 / 과학 계산 함수 포함하고 있습니다.

행렬이 필요한 이유 : 머신러닝에서 대부분의 데이터는 행렬로 표현됩니다.


행렬 만들기

1
2
3
4
import numpy as np
A = np.array([[1, 2],
[3, 4]])
print(A)

이렇게 만들어진 행렬은 곱셈, 덧셈, 뺄셈이 가능합니다.
행렬 내 원소에 대한 산술 연산(element-wise operation)도 가능합니다.
비교, 논리 연산도 가능합니다.
(우리가 생각하는 대부분의 수학 연산이 가능한듯 합니다.)


Numpy 활용해보기
1
2
3
4
5
6
import numpy as np
A = [[1, 2],[3, 4]]
print(A) # [[1,2],[3,4]]
A = np.array(A)
print(A) # [[1 2]
# [3 4]]

위의 두 출력 결과물은 다르다.


Numpy Reductions
  • Reductions

    1
    2
    3
    4
    5
    6
    7
    a = np.array([3, 5, 2, 1, 4])
    np.sum(a) # 15
    a.sum() # 15
    a.min() # 1
    a.max() # 5
    a.argmin() # 3
    a.argmax() # 1
  • Logical Reductions

    1
    2
    3
    4
    5
    6
    a = np.array([True, True, True])
    b = np.array([True, True, False])
    np.all(a) # True
    np.all(b) # False
    np.any(a) # True
    np.any(b) # True
  • Logical Reductions 응용

    1
    2
    3
    4
    5
    6
    7
    a = np.array([1, 2, 3, 2])
    b = np.array([2, 2, 3, 4])
    c = np.array([6, 4, 4, 5])
    print(a < b) # [True, False, False, True]
    print(a < c) # [True, True, True, True]
    np.all(a < b) # False
    np.all(a < c) # True
  • Statistical Reductions

    1
    2
    3
    4
    5
    x = np.array([1, 2, 3, 1])
    print(np.mean(x)) # 1.75 (평균값)
    print(np.median(x)) # 1.5 (중간값)
    print(np.std(x)) # 0.82915619758884995 (표준편차)
    print(np.var(x)) # std()^2

행렬 곱셈
1
2
3
4
5
6
x = np.array([[1, 2], [3, 4]])
y = np.array([[3, 4], [3, 2]])
print(np.dot(x, y)) # [[ 9 8]
# [21 20]]
print(x * y) # [[3 8]
# [9 8]]

Notation

N : 데이터의 개수
X : “Input” 데이터 / Feature
Y : “Output” 해답 / 응답
(X^(i), Y^(i)) : i번째 데이터


Loss Function : 차이의 제곱의 합


  • 단순 선형 회귀분석 (Simple Linear Regression)
  • 다중 선형 회귀분석 (Multiple Linear Regression) 은 데이터의 여러 independent variables (features) XX로부터 response variable YY를 예측하는 모델입니다.
  • 다항식 회귀분석 : 2차식
    X^2 를 X2로 치환해놓고 생각하면 다중 회귀 분석과 동일해집니다.

성능 측정 방법

  • RSS(Sesidual Sum of Squares) : 전체 데이터에서 실제 값과 모델이 예측하는 값의 차이(클 수록 나쁨)
  • MSE(Mean Squared Error) : 평균적으로 각 데이터의 실제값과 모델이 예측하는 값의 차이(클 수록 나쁨)
  • R^2 : r = Pearson’s correlation coefficient
    상관관계를 r수치로 표현하는 방식

마치며

거창한줄 알았던 인공지능과 머신러닝을 맛보니(?) 생각보다 접근하기 어려운 학문이 아니라는 사실을 알게 되었습니다. 고등학교와 대학과정에서 수학을 꾸준히 공부했다면 무난하게 공식이나 개념을 이해할 수 있는 수준이라고 생각합니다.
물론 더 발전적이고 전문적인 분야는 새로운 알고리즘과 접근방식, 공식 등 연구가 필요한 분야는 맞습니다. 하지만 막연한 두려움만 가지고 있는 분이라면 예전에 배운 수학지식을 조금만 끌어올려서 다가가도 불가능한 영역은 아니라고 생각합니다.
엘리스(elice)수업을 통해 접하게 되어 기쁘고 쉽게 설명해 주신 김수인 강사님에게 감사의 말씀전합니다.
앞으로 적어도 지금 듣고 있는 수업내용을 정리하면서 맛보기 시리즈를 연재하여 배운 내용이 쉽게 흩어지지 않도록 복습할 계획입니다.

Share 0 Comments