Section 1_Sprint 3

JIYOUNG KIM·2021년 12월 29일
0

Codestates AIB

목록 보기
3/15
post-thumbnail

Day1

Vectors & Matrices

Matrix multiplication

Scalar & Vector

  • 스칼라와 벡터는 선형 대수를 구성하는 기본 단위
  • 스칼라는 단순히 변수로 저장되어 있는 숫자, 벡터 혹은 매트릭스에 곱해지는 경우 해당 값에 곱한 값으로 결정
  • 벡터는 파이썬에서는 주로 list로 사용 되며, 데이터셋을 구성하고 있는 데이터프레임의 행/열로써 사용되기도 함
  • 매트릭스는 벡터의 모음으로 간주 될 수도 있기 때문에 벡터를 이해하는 것은 매우 중요

Scalar

단일 숫자, 변수에 저장 할때는 일반적으로 소문자를 이용하여 표기, 실수와 정수 모두 가능

Vector

  • n 차원의 벡터는 컴포넌트라 불리는 n개의 원소를 가지는 순서를 갖는 모음(컴포넌트는 스칼라로 간주 되지 않음)
  • 벡터는 일반적으로 위의 화살표 (→) 를 갖는 소문자의 형태로 표현
  • 벡터의 길이 = 벡터의 차원 수

예시: v\vec{v}

a=[89]\vec{a} = \begin{bmatrix}8\\9\end{bmatrix}\qquad

위의 벡터는 2차원을 가지고 있음

Vector 크기(Magnitude, Norm, Length)

  • 벡터의 Norm 혹은 Magnitude는 단순히 길이에 지나지 않음
  • 벡터는 선이기 때문에 피타고라스를 기억하는 것으로 길이를 구할 수 있음

벡터의 크기를 표현 할때는 || 를 사용

벡터의 길이를 구하는 방법의 일반화

v = [1,2,3,4]

|v| = 12+22+32+42\sqrt{ 1^2 + 2^2 + 3^2 + 4^2 }

|v| = 30\sqrt{30}

즉, 벡터의 크기는 모든 원소의 제곱을 더한 후 루트를 씌운 값

벡터 크기의 특징

x0||x|| \geq 0

x=0||x|| = 0 (모든 원소가 0)

삼각 부등식: x+yx+y|| x + y ||\leq ||x|| + ||y||

벡터의 내적 ( Dot Product )

두 벡터 a\vec{a}b\vec{b} 의 내적은, 각 구성요소를 곱한 뒤 합한 값과 같음

v = [1, 2, 3, 4]

x = [5, 6, 7, 8]

v \cdot x = 1 5 + 2 6 + 3 7 + 4 8

= 70

  • 내적은 교환법칙이 적용 : ab=baa \cdot b = b \cdot a
  • 내적은 분배법칙이 적용 : a(b+c)=ab+aca \cdot (b + c) = a \cdot b + a \cdot c
  • 벡터의 내적을 위해서는 두 벡터의 길이가 반드시 동일해야 함

매트릭스

행과 열을 통해 배치되어있는 숫자들, 매트릭스를 표현하는 변수는 일반적으로 대문자를 사용하여 표기

X=[123456789]X = \begin{bmatrix} 1 & 2 & 3\\ 4 & 5 & 6\\ 7 & 8 & 9 \end{bmatrix} \qquad

Y=[123456]Y = \begin{bmatrix} 1 & 2 & 3\\ 4 & 5 & 6 \end{bmatrix}

Dimensionality

  • 매트릭스의 행과 열의 숫자를 차원 (dimension, 차원수등.)이라 표현
  • 차원을 표기 할때는 행을 먼저, 열을 나중에 표기 (행-열)

Transpose (전치)

매트릭스의 전치는, 행과 열을 바꾸는 것을 의미, 이는 일반적으로 매트릭스 우측 상단에 TT 혹은 tick 마크를 통해 표기 :

BTBB^{T} \qquad B^{\prime}

: B transpose 혹은 B prime 으로 읽음

실제 계산은, 대각선 부분의 구성요소를 고정시키고 이를 기준으로 나머지 구성요소들을 뒤집는다 라고 생각하면 됨

정사각 매트릭스(square matrix)

  • 정방 매트릭스 라고도 불리며, 보통 선형대수 강의에서 처음 몇 주간 배우게 되는 아주 기초적인 매트릭스

  • 행과 열의 수가 동일한 매트릭스

A=[a1,1]A = \begin{bmatrix} a_{1,1} \end{bmatrix} \qquad

B=[b1,1b1,2b2,1b2,2]B = \begin{bmatrix} b_{1,1} & b_{1,2} \\ b_{2,1} & b_{2,2} \end{bmatrix} \qquad

C=[c1,1c1,2c1,3c2,1c2,2c2,3c3,1c3,2c3,3]C = \begin{bmatrix} c_{1,1} & c_{1,2} & c_{1,3} \\ c_{2,1} & c_{2,2} & c_{2,3} \\ c_{3,1} & c_{3,2} & c_{3,3} \end{bmatrix}

정사각 매트릭스의 특별한 케이스

Diagonal (대각): 대각선 부분에만 값이 있고, 나머지는 전부 0

D=[a1,1000a2,2000a3,3]D = \begin{bmatrix} a_{1,1} & 0 & 0 \\ 0 & a_{2,2} & 0 \\ 0 & 0 & a_{3,3} \end{bmatrix}

Upper Triangular (상삼각): 대각선 위쪽 부분에만 값이 있고, 나머지는 전부 0

U=[b1,1b1,2b1,30b2,2b2,300b3,3]U = \begin{bmatrix} b_{1,1} & b_{1,2} & b_{1,3} \\ 0 & b_{2,2} & b_{2,3} \\ 0 & 0 & b_{3,3} \end{bmatrix}

Lower Triangular (하삼각): upper triangular 와 반대로, 대각선 아래에만 값이 있음

L=[c1,100c2,1c2,20c3,1c3,2c3,3]L = \begin{bmatrix} c_{1,1} & 0 & 0 \\ c_{2,1} & c_{2,2} & 0 \\ c_{3,1} & c_{3,2} & c_{3,3} \end{bmatrix}

Identity (단위 매트릭스):

  • Diagonal 매트릭스 중에서, 모든 값이 1인 경우
  • 임의의 정사각 매트릭스에 단위 행렬을 곱하면, 그 결과값은 원본 정사각 매트릭스로 나옴
  • 반대로 임의의 매트릭스에 대해서 곱했을때 단위 매트릭스가 나오게 하는 매트릭스를 역행렬 (Inverse)라고 부름

AI==AAI == A, AA1=IAA^{-1} = I

I1=[1]I_1 = \begin{bmatrix} 1 \end{bmatrix} \qquad

I2=[1001]I_2 = \begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix} \qquad

I3=[100010001]I_3 = \begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix}

Symmetric (대칭): 대각선을 기준으로 위 아래의 값이 대칭인 경우

S=[123245356]S = \begin{bmatrix} 1 & 2 & 3 \\ 2 & 4 & 5 \\ 3 & 5 & 6 \end{bmatrix}

Determinant(행렬식 = 판별식)

행렬식은 모든 정사각 매트릭스가 갖는 속성으로, det(A)det(A) 혹은 A|A|로 표기

2x2 매트릭스를 기준으로, 행렬식은 다음과 같이 (AD-BC) 계산 할 수 있음:

2x2

[812916]\qquad \begin{bmatrix} 8 & 12 \\ 9 & 16 \end{bmatrix}

-> 8 * 16 - 12 * 9 = 20

-> |x| = det(x) = 20

더 큰 차원의 매트릭스 행렬식은, 재귀적으로 (recursively) 부분을 이루는 행렬식을 구하는 것으로 계산 할 수 있음

ex)

Inverse

  • 역행렬을 계산하는 방법은 여러가지가 있으며, 행렬의 역수 와 같이 표현 할 수 있음
  • 행렬과 그 역행렬의 값은 항상 1 (단위 매트릭스)

    2x2 매트릭스를 기준으로, 역행렬을 계산하는 방식 중 하나:

    A=[abcd]A = \begin{bmatrix} a & b \\ c & d \end{bmatrix} \qquad

    A1=1adbc[dbca]A^{-1} = \frac{1}{ad-bc}\begin{bmatrix} d & -b\\ -c & a \end{bmatrix}

매트릭스에 역행렬을 곱하면 A1A=IA^{-1}A = I

행렬식이 0인 경우

  • 행렬식이 0인 정사각 매트릭스는 "특이" (singular) 매트릭스라고 불리기도 함

  • 2개의 행 혹은 열이 선형의 관계를 (M[,i]= M[,j] * N) 이루고 있을때 발생

  • 표현하는 다른 방법은, 매트릭스의 행과 열이 선형의 의존 관계가 있는 경우 매트릭스의 행렬식은 0이다. 라고 표현
    ex)
    S=[103322566530996]S = \begin{bmatrix} 10 & 33 & 2 \\ 25 & 66 & 5 \\ 30 & 99 & 6 \end{bmatrix}

L1 norm, L2 norm

Day 2

Intermediate Linear algebra

Variance

데이터가 얼마나 퍼져있는지 측정하는 방법

X\overline{X} 는 평균, NN 은 관측의 수 (샘플의 수)

vv 혹은 분산은 일반적으로 소문자 v로 표기되며 필요에 따라 σ2\sigma^{2}로 표기, v=(XiX)2Nv = \frac{\sum{(X_{i} - \overline{X})^{2}} }{N}

주의할점으로 분산을 계산하는 방법이 모집단이냐 혹은 샘플이냐에 따라서 달라짐

모집단의 분산 σ2\sigma^{2} 는 모집단의 PARAMETER (aspect, property, attribute, etc)이며, 샘플의 분산 s2s^{2} 는 샘플의 STATISTIC (estimated attribute)

샘플 분산 s2s^{2} 는 모집단 분산 σ2\sigma^{2}의 추정치

일반적으로, 샘플의 분산을 계산 할때는 N1N-1로 나누어야 함

Standard Deviation

표준편차는 분산 값에 루트를 씌운 것

Covariance

  • 1개의 변수 값이 변화할 때 다른 변수가 어떠한 연관성을 나타내며 변하는지를 측정하는 것
  • 첫번째 그래프의 경우, y의 값이 높을때 x 의 값은 낮음, -> 음의 (negative) 공분산 값을 갖는다 라고 표현

  • 두번째 그래프에서는 양 변수의 높고 낮음에 대하여 관련성을 알 수 없음 -> 그러므로 이러한 형태는 0에 가까운 공분산 값을 갖습니다.

  • 마지막 그래프에서, y 값이 낮을때 x의 값도 마찬가지로 낮으며, 높을때는 같이 높아진다는 것을 확인 할 수 있음 -> 양 변수간의 공분산 값은 양의 (positive)값을 기대 할 수 있음

큰 값의 공분산은 두 변수간의 큰 연관성을 나타냄

그러나, 만약 변수들이 다른 스케일을 가지고 있다면 공분산은 실제 변수의 연관성에 관계 없이 영향을 받게 될 것

만약 두 변수가 연관성이 적더라도 큰 스케일을 가지고 있다면, 연관이 높지만 스케일이 작은 변수들에 비해서 높은 공분산 값을 가지게 될 것

Correlation coefficient

상관계수 : 공분산을 두 변수의 표준편차로 각각 나눠주면 스케일을 조정할 수 있음

  • 1에서 1까지로 정해진 범위 안의 값만을 갖으며 선형연관성이 없는 경우 0에 근접

대부분의 경우, 상관계수는 공분산에 비해서 더 좋은 지표로써 사용

  • 공분산은 이론상 모든 값을 가질 수 있지만, 상관계수는 -1 ~ 1 사이로 정해져 비교하기 쉬움
  • 공분산은 항상 스케일, 단위를 포함하고 있지만, 상관계수는 이에 영향을 받지 않음
  • 상관계수는 데이터의 평균 혹은 분산의 크기에 영향을 받지 않음

상관계수는 일반적으로 소문자 rr로 표현

cor(X,Y)=r=cov(X,Y)σXσYcor(X,Y) = r = \frac{cov(X,Y)}{\sigma_{X}\sigma_{Y}}

Orthogonality

백터 혹은 매트릭스가 서로 수직으로 있는 상태 : 두 벡터의 내적값이 0

단위 벡터 ( Unit Vectors )

선형대수에서, 단위 벡터란 "단위 길이(1)"를 갖는 모든 벡터

vv = [1, 2, 2]

||vv|| = 12+22+22\sqrt{1^2 + 2^2 + 2^2} = 3

v^\hat{v} = 1 / ||vv|| \cdot vv

= 131 \over 3 \cdot [1, 2, 2] = [131 \over 3, 232 \over 3, 232 \over 3]

||v^\hat{v}|| = 1

각각 1, 2, 3차원의 단위 벡터

R\mathbb{R} unit vector: i^=[1]\hat{i} = \begin{bmatrix} 1 \end{bmatrix}

R2\mathbb{R}^2 unit vectors: i^=[10]\hat{i} = \begin{bmatrix} 1 \\ 0 \end{bmatrix}, j^=[01]\hat{j} = \begin{bmatrix} 0 \\ 1 \end{bmatrix}

R3\mathbb{R}^3 unit vectors: i^=[100]\hat{i} = \begin{bmatrix} 1 \\ 0 \\ 0 \end{bmatrix}, j^=[010]\hat{j} = \begin{bmatrix} 0 \\ 1 \\ 0 \end{bmatrix}, k^=[001]\hat{k} = \begin{bmatrix} 0 \\ 0 \\ 1 \end{bmatrix}

Span

주어진 두 벡터의 (합이나 차와 같은) 조합으로 만들 수 있는 모든 가능한 벡터의 집합

  • 선형 관계의 벡터 (Linearly Dependent Vector)
    두 벡터가 같은 선상에 있는 경우, 이 두 벡터들은 조합을 통해서 선 외부의 새로운 벡터를 생성 할 수 없음, 이러한 벡터의 span은 평면 공간이 아닌, 벡터가 이미 올려져 있는 으로 제한

  • 선형 관계가 없는 벡터 (Linearly Independent Vectors)
    선형적으로 독립되어 있다고 표현, 주어진 공간 (2개의 벡터의 경우 R2 평면)의 모든 벡터를 조합을 통해 만들어 낼 수 있음

Basis

벡터 공간 VV의 basis 는 VV 라는 공간을 채울 수 있는 선형 관계에 있지 않은 벡터들의 모음 ( span 의 역개념 )

예를 들어, 위의 그림에서 2개의 벡터 (빨강, 파랑)는 벡터 공간 R2\mathbb{R}^2 의 basis 입니다.

Orthogonal Basis

Basis 에 추가로 Orthogonal 한 조건이 붙는, 즉 주어진 공간을 채울 수 있는 서로 수직인 벡터들

Orthonormal Basis

Orthogonal Basis에 추가로 Normalized 조건이 붙은 것으로, 길이가 서로 1인 벡터들

Rank

  • 매트릭스의 rank란 매트릭스의 열을 이루고 있는 벡터들로 만들 수 있는 (span) 공간의 차원

  • 매트릭스의 차원과는 다를 수도 있으며 그 이유는 행과 열을 이루고 있는 벡터들 가운데 서로 선형 관계가 있을 수도 있기 때문

  • Rank를 확인 하는 방법 중 하나인 Gaussian Elimination

Gaussian Elimination

주어진 매트릭스를 "Row-Echelon form"으로 바꾸는 계산과정

여기서 "Row-Echelon form"이란, 각 행에 대해서 왼쪽에 1, 그 이후 부분은 0으로 이뤄진 형태 -> 이러한 매트릭스는 일반적으로 upper-triangular 의 형태를 가지고 있음

P=[113012214]P = \begin{bmatrix} 1 & 1 & 3 \\ 0 & 1 & 2 \\ 2 & 1 & 4 \end{bmatrix}

3행을 1행*2 로 뺌.

P=[113012012]P = \begin{bmatrix} 1 & 1 & 3 \\ 0 & 1 & 2 \\ 0 & -1 & -2 \end{bmatrix}

3행을 2행으로 더함

P=[113012000]P = \begin{bmatrix} 1 & 1 & 3 \\ 0 & 1 & 2 \\ 0 & 0 & 0 \end{bmatrix}

맨 마지막 줄이 0, 0, 0이다 라는 것은 3개의 행이, 선형 관계가 있다는 의미

(다른 행들의 스칼라 곱과 합으로 표현됨)

r3r_3 = 2 r12 \cdot\ r_1 - 1 r21 \cdot\ r_2

yy = a x+ba \cdot\ x + b

처음에 주어졌던 매트릭스

P=[113012214]P = \begin{bmatrix} 1 & 1 & 3 \\ 0 & 1 & 2 \\ 2 & 1 & 4 \end{bmatrix}

의 Rank 는 2이며 이는 3x3 매트릭스 이지만 R3\mathbb{R}^{3} 공간이 아닌 R2\mathbb{R}^{2} 만을 벡터들로 만들어 낼 수 있음을 의미

Projection : projL(w)proj_{L}(\vec{w})

Day 3

Dimensionality Reduction

고유벡터 (Eigenvector)

transformation에 영향을 받지 않는 회전축(혹은 벡터)을 공간 = transformation에 대해서 크기만 변하고 방향은 변화하지 않음

고유값 (Eigenvalue) : λ\lambda

고유벡터는 주어진 transformation에 대해서 크기만 변하고 방향은 변화 하지 않는 벡터 -> 변화하는 크기는 결국 스칼라 값으로 변화 할 수 밖에 없는데, 이 특정 스칼라 값고유값 (eigenvalue)

  • Eigenvector와 Eigenvalue는 항상 쌍을 이루고 있음

Dimension Reduction

  • Feature Selection
  • Feature Extraction : 기존에 있는 feature 혹은 그들을 바탕으로 조합된 feature를 사용 하는 것, ex. PCA

❓ Selection 과 Extraction의 차이

Selection 의 경우

  • 장점 : 선택된 feature 해석이 쉽다.
  • 단점 : feature들간의 연관성을 고려해야함.
  • 예시 : LASSO, Genetic algorithm

Extraction의 경우

  • 장점 : feature 들간의 연관성 고려됨. feature수 많이 줄일 수 있음
  • 단점 : feature 해석이 어려움.
  • 예시 : PCA, Auto-encoder

PCA(Principal Component Analysis)

  • 고차원 데이터를 효과적으로 분석 하기 위한 기법
  • 낮은 차원으로 차원축소
  • 고차원 데이터를 효과적으로 시각화 + clustering
  • 원래 고차원 데이터의 정보(분산)를 최대한 유지하는 벡터를 찾고, 해당 벡터에 대해 데이터를 (Linear)Projection

    PCA의 특징

    • 데이터에 대해 독립적인 축을 찾는데 사용 할 수 있음.
    • 데이터의 분포가 정규성을 띄지 않는 경우 적용이 어려움
    • 이 경우는 커널 PCA 를 사용 가능
    • 분류 / 예측 문제에 대해서 데이터의 라벨을 고려하지 않기 때문에 효과적 분리가 어려움
      • 이 경우는 PLS 사용 가능

Day 4

Clustering

Scree Plots : PCA 차원 수 결정 -> 완만해지는 부분에서 결정


Machine Learning INTRO

지도 학습 (Supervised Learning)

Supervised Learning은 트레이닝 데이터에 라벨(답)이 있을때 사용

  • 분류 (Classification)
    분류 알고리즘은 주어진 데이터의 카테고리 혹은 클래스 예측을 위해 사용
  • 회귀 (Prediction)
    회귀 알고리즘은 continuous 한 데이터를 바탕으로 결과를 예측 하기 위해 사용

비지도 학습 (Unsupervised Learning)

  • 클러스터링 (Clustering)
    데이터의 연관된 feature를 바탕으로 유사한 그룹을 생성

  • 차원 축소 (Dimensionality Reduction)
    높은 차원을 갖는 데이터셋을 사용하여 feature selection / extraction 등을 통해 차원을 줄이는 방법

  • 연관 규칙 학습 (Association Rule Learning)
    데이터셋의 feature들의 관계를 발견하는 방법 (feature-output 이 아닌 feature-feature)

강화 학습 (Reinforcement Learning)
머신러닝의 한 형태로, 기계가 좋은 행동에 대해서는 보상, 그렇지 않은 행동에는 처벌이라는 피드백을 통해서 행동에 대해 학습해 나가는 형태

Clustering

  • 목적
    주어진 데이터들이 얼마나, 어떻게 유사한지 -> 주어진 데이터셋을 요약정리하는 데 있어 매우 효유럭인 방법 중 하나(production의 수준, 예측을 위한 모델링에 쓰이기 보다는 EDA를 위한 방법으로 사용)

  • 종류

  1. Hierarchical

    • Agglomerative: 개별 포인트에서 시작후 점점 크게 합쳐감

    • Divisive: 한개의 큰 cluster에서 시작후 점점 작은 cluster로 나눠감

  2. Point Assignment

    • 시작시에 cluster의 수를 정한 다음, 데이터들을 하나씩 cluster에 배정시킴
  3. Hard vs Soft Clustering

    • Hard Clustering에서 데이터는 하나의 cluster에만 할당

    • Soft Clustering에서 데이터는 여러 cluster에 확률을 가지고 할당

    • 일반적으로 Hard Clustering을 Clustering이라 칭함

  • clustering 에서는 관측 데이터 간 유사성이나 근접성을 측정해 어느 군집으로 묶을 수 있는지 판단해야 함
    • 연속형 변수의 경우 일반적으로 유클리디안거리를 많이 사용(변수들간 산포 정도 감안 X)

K-Means Clustering (= Centroid-based clustering)

K-means Clustering

n-차원의 데이터에 대해서 :

1) k 개의 랜덤한 데이터를 cluster의 중심점으로 설정

2) 해당 cluster에 근접해 있는 데이터를 cluster로 할당

3) 변경된 cluster에 대해서 중심점(centroid : 주어진 cluster 내부에 있는 모든 점들의 중심부분에 위치한 가상의 점)을 새로 계산

cluster에 유의미한 변화가 없을 때 까지 2-3을 반복

K-means에서 'K' 결정방법

  • The Eyeball Method :사람의 주관적인 판단을 통해서 임의로 지정하는 방법입니다.

  • Metrics : 객관적인 지표를 설정하여, 최적화된 k를 선택하는 방법입니다.

profile
데이터분석가

0개의 댓글