머신러닝 데이터 분석

Ruinak·2021년 9월 14일
0

Machine Learning

목록 보기
1/8
post-thumbnail
post-custom-banner

머신러닝 분석 개요

1. 머신러닝 개요

인공지능, 머신러닝, 딥러닝

머신러닝 정의

  • 머신러닝은 데이터에서부터 학습하도록 컴퓨터를 프로그래밍하는 과학(또는 예술)입니다.
  • [아서 새뮤얼(Arthur Samuel), 1959] : “머신러닝은 명시적인 프로그래밍 없이 컴퓨터가 학습하는 능력을 갖추게 하는 연구 분야”
  • [톰 미첼(Tom Mitchell), 1997] : “어떤 작업 T에 대한 컴퓨터 프로그램의 성능을 P로 측정했을 때 경험 E로 인해 성능이 향상됐다면, 이 컴퓨터 프로그램은 작업 T와 성능 측정 P에 대해 경험 E로 학습한 것”

머신러닝?

  • 데이터에서 법칙성을 추출하는 통계적 방법’의 하나입니다.
  • 법칙을 추출하여 예측, 분류하는 다양한 모델(알고리즘)입니다.
  • 손글씨 문자 식별, 물체 식별, 질병 진단 등 다양한 분야에 걸쳐 응용됩니다.
  • 딥러닝도 머신러닝의 일부로, 신경망 모델의 한 형태입니다.

머신러닝 문제의 분류

지도 학습 Supervised Learning 문제

  • 입력에 대한 적절한 출력을 구하는 문제
  • Regression, Classification

비지도 학습Unsupervised Learning 문제

  • 비지도 학습은 입력 정보의 특징을 찾는 문제
  • Clustering

강화 학습 문제

  • 강화 학습은 장기나 체스와 같이 마지막 결과가 가장 좋은 행동을 찾는 문제

Regression, Classification

딥러닝 – Neural Networ

  • 신경망(Neural Network) 인간의 뇌 세포(Neuron) 상호작용을 모방했습니다.
  • 이전 뉴런 츨력을 각각의 입력으로 받아, + 또는 –가중치를 통해 전체 합을 합하여 특정 임계치(threshold)를 넘으면 다음 뉴런으로 전달하는 원리입니다.

머신러닝 / 딥러닝 구현 - 프레워크

2. 머신러닝 수학

미분 - derivative

머신러닝 / 딥러닝에 자주 사용되는 함수 미분

편미분 - partial derivative

  • 입력 변수가 하나 이상인 다 변수 함수에서 미분하고자하는 변수 하나를 제외한 나머지 변수들을 상수로 취급하고 해당 변수를 미분하는 것입니다.
  • 예를 들어 f(x, y)를 변수 x에 대해 편미분 하는 경우 다음과 같이 나타냅니다.

연쇄법칙 - chain rule

  • 합성함수란 여러 함수로 구성된 함수로서 이러한 합성함수를 미분하려면 ‘함성함수를 구성하는 각 함수를 미분의 곱'으로 나타내는 chain rule(연쇄법칙을 이용)

수치미분 1차 버전 - numerical derivative

  • 수치미분은 주어진 입력 값이 미세하게 변할 때 함수 값 f는 얼마나 변하는지를 계산하는 것입니다.

수치미분 - 다변수

  • 입력 변수가 하나 이상인 다 변수 함수의 경우 입력 변수는 서로 독립적이기 때문에 수치미분 또한 변수의 개수 만큼 개별적으로 계산하여야 합니다.
# 다변수 함수, 모든변수를 포함하고 있는 numpy객체(배열, 행렬…)
def numerical_derivative(f, x): # 수치미분 debug version
  delta_x = 1e-4
  # 계산된 수치미분 값 저장 변수
  grad = np.zeros_like(x)
  
  # 모든 입력변수에 대해 편미분하기 위해 iterator 획득
  it = np.nditer(x, flags=['multi_index'], op_flags=['readwrite'])
  
  while not it.finished:
    idx = it.multi_index
    
    # Numpy 타입은 mutable이므로 원래 값 보관
    tmp_val = x[idx]
    # 하나의 변수에 대한 수치미분 계산
    x[idx] = float(tmp_val) + delta_x
    fx1 = f(x) # f(x+delta_x)
    x[idx] = tmp_val - delta_x
    fx2 = f(x) # f(x-delta_x)
    grad[idx] = (fx1 - fx2) / (2*delta_x)
    x[idx] = tmp_val
    it.iternext()
  return grad
profile
Nil Desperandum <절대 절망하지 마라>
post-custom-banner

0개의 댓글