'머신 러닝' 머신 러닝 기본기

인덱스·2023년 1월 7일
0

codeit

목록 보기
16/17

머신 러닝

  • 기계 학습 : 기계가 학습을 통해 발전

  • 머신 러닝 프로그램 : 경험을 통해서 스스로 업무 능력 향상

  • 기계가 학습한다는 건, 프로그램이 특정 작업(T)을 하는 데 있어서 경험(E)을 통해 작업의 성능(P)을 향상시키는 것_톰 미첼

  • 더 많은 경험을 할수록 성능이 좋아지면 머신 러닝이라고 할 수 있음

빅데이터

  • 데이터 보관, 처리, 분석 방법

인공지능

  • 프로그램이 인간처럼 생각, 행동하게 하는 학문

딥러닝

  • 머신러닝 기법 중 하나

지도학습(Supervised Learning)

  • 답이 있고 이 답을 맞추는 게 학습의 목적

  • 분류(Classfication)

  • 회귀(Regression)

비지도 학습(Unsupervised Learning)

  • 답이 없고 이 답을 맞추는 게 학습의 목적

k-NN 알고리즘

  • k-최근접 이웃 알고리즘(k-Nearest Neighbors Algorithm)

머신 러닝의 수학

  • 머신 러닝 : 컴퓨터 과학 + 수학(선형대수, 미분, 통계, 확률)

  • 적합한 알고리즘을 선택하고 코드를 최적화 하기 위해서

  • 선형대수학

    • 행렬 - 많은 데이터를 묶을 수 있음, 계산도 효율적
  • 미적분학

    • 최적화할 때 사용
  • 통계

    • 특징을 파악하기 위해 사용

    • 데이터에서 큰 흐름을 파악하면 예측에 사용 가능

  • 확률

    • 가능성을 공부하는 학문

선형대수학

  • 일차식이나 일차 함수를 공부하는 학문

  • 행렬(Matrix)

    • 수를 직사각 형태로 나열
  • 벡터(Vector)

    • 행이나 열이 하나인 행렬

python numpy 라이브러리

-- numpy 라이브러리 불러오기
import numpy as np 

-- 행렬은 2차원 배열로
np.array([[]])

-- 랜덤 행렬
np.random.rand(n,m)

-- 모든 값이 0인 행렬
np.zeros(n,m)

행렬 연산

  • 행렬 덧셈 : 같은 위치에 있는 원소들끼리 더하기

    • 덧셈을 하기 위해서는 두 행렬의 차원이 같아야 한다.
  • 스칼라 곱 : 행렬 X 수(i)

  • 행렬 곱셈

    • 행렬 A와 B를 곱하려면, A의 열과 B의 행의 수가 같아야함

    • 교환 법칙 성립 안 함 (순서와 상관있음)

    • 요소별 곱하기(Element-wise Multiplication)

      • A∘B

      • 행과 열에 있는 요소들끼리 곱해서 새로운 행렬을 만드는 연산

      • 행렬 덧셈과 마찬가지로 같은 차원을 갖는 행렬 사이에만 연산이 가능

전치 행렬(transposed matrix) AT{A}^T
: 행렬 계산을 위한 모양 맞추기를 할 때

np.transpose(A)
-- 더 쉬운 방법
A.T

단위 행렬(identity matrix)
: 어떤 행렬이든 단위 행렬을 곱하면 그대로 유지

np.identity(n)
역행렬(inverse matrix)

역행렬(inverse matrix) A1{A}^{-1}

  • 꼭 정사각형

  • 모든 행렬에 역행렬이 있는 것 아님

np.linalg.pinv()

선형대수학과 행렬/벡터

  • 아무리 복잡한 선형 시스템도 행렬과 벡터로 쉽게 표현할 수 있음!

선형대수학이 머신 러닝에 필요한 이유

  • 머신 러닝을 할 때는 데이터를 일차식에 사용하는 경우가 많다.

  • 행렬을 이용하면 정돈된 형태로 효율적이게 계산을 할 수 있다.

  • 선형대수학은 일차식, 일차 함수, 행렬, 벡터를 다루는 학문이기 때문에 필수!


함수

  • 하나의 인풋에 대해서 하나의 아웃풋만!


그래프

  • 수학식을 시각적으로 표현하는 방법


평균변화율

  • 구간을 정해서 해당 구간의 기울기 계산

    f(b)f(a)b  a\frac{f\left(b\right)-f\left(a\right)}{b\ -\ a} f(a+h)f(a)h\frac{f\left(a+h\right)-f\left(a\right)}{h}

순간변화율

  • 범위를 극한으로 줄여서 0에 가깝게 만들어서 변화율 구하기

    limh0f(a+h)f(a)h\lim _{{h}\to {0}}^{ }{\frac{f\left(a+h\right)-f\left(a\right)}{h}}
    ​​

미분

  • 순간 변화율을 구해주는 함수

    ddxf(x)=f(x)\frac{d}{dx}f\left(x\right)=f'\left(x\right)


기울기

  • 그래프가 해당 지점에서 얼마나 기울어져 있는지

  • 어떤 방향으로 가야 가장 가파르게 올라갈 수 있는지

극소점(local minimum) 최소점(global minimum)

극대점(local maximum) 최대점(globla maximum)

안장점(saddle point) : 기울기가 평평해졌다가 다시 가팔라지는 점

고차원에서 미분

  • 편미분 : 함수를 변수 하나에 대해서만 미분

  • 인풋 변수가 두 개 이상일 때

    f(x, y) = x2+2y2f\left(x,\ y\right)\ =\ {x}^2+{2y}^2

    xf(x, y)=2x\frac{\partial }{\partial x}f\left(x,\ y\right)=2x

    yf(x, y)=4y\frac{\partial }{\partial y}f\left(x,\ y\right)=4y

    함수 f의 기울기함수\ f의\ 기울기

    f(x,y)=[2x4y]∇f\left(x,y\right)=\begin{bmatrix}2x\\4y\end{bmatrix}

  • 인풋 변수가 3개가 넘으면 시각적으로 이해하기 힘들지만 편미분과 기울기 개념은 똑같이 적용 가능

  • 편미분을 통해 기울기 벡터를 구할 수 있고, 기울기 벡터는 가장 가파르게 올라가는 방향을 가리킨다는 점은 언제나 똑같다.

머신 러닝에 미분이 필요한 이유

  • 머신 러닝 : 경험을 통해 특정 작업에 대한 성능이 좋아지는 프로그램

  • 머신 러닝의 최적화를 위해서는 극소점이나 극대점을 찾아야 한다 - 순간변화율, 미분, 기울기 개념 필요


어렵지만 재미있다 ㅎㅎ

'머신 러닝' 머신 러닝 기본기|작성자 Index

profile
헤맨 만큼 내 땅이 된다

0개의 댓글