토스뱅크 66

다항회귀(Polynomial Regression)

다항회귀란?선형 회귀는 학습 데이터에 가장 잘 맞는 일차식을 찾아서 예측을 하는 알고리즘인 반면, 다항 회귀는 고차식을 찾아서 예측하는 알고리즘이다.  집 값 예측 문제를 생각해보자. 항상 집의 크기라는 변수가 주어진다는 가정을 했고 이걸 하나의 속성으로 이용했는데 사용하는 데이터가 항상 이렇게 하나만 사용해도 의미가 있는 완벽한 변수일 수는 없다. 예를 들어 집이 사각형이라고 가정하고 집 크기 대신 집의 높이와 너비 데이터만 있다고 하자.사실 아무리 너비가 커도 높이가 작거나, 높이만 크고 너비만 작으면 크기가 작고 구조가 효율적이지 않기 때문에 집 값이 높지 않다. 사실 이 두 변수들보다 집값을 예측하는 데 훨씬 좋은 수치는 이 둘을 곱한 값, 집의 넓이다.단순 선형 회귀를 사용하면 이 두 변수가 서..

차원 축소 - PCA(주성분분석)

PCA(Principal Component Analysis): 대표적인 차원 축소 기법 중 하나로, 여러 차원들의 특징을 가장 잘 설명해주는 차원인 주성분(Principal Component)을 이용하여 차원을 축소하는 방법 PCA의 동작 과정1. 데이터 표준화 및 원점 이동PCA를 하기 위해선 데이터의 단위를 통일해야 한다. 아래 예시를 보면 키를 표시한 단위는 m이고 신발의 단위는 mm인데, 이렇게 변수의 단위가 다르면 두 변수의 영향이 PCA 결과에 고르게 반영되지 않고 상대적으로 큰 값이 들어간 변수의 영향이 더 많이 반영되게 된다. 따라서 PCA를 적용하기 전에는 변수 간 단위를 통일해주는 '표준화' 과정이 필요하다.  데이터를 표준화하면 변수의 단위 뿐만 아니라 데이터의 중심 지점이 원점이 되..

차원 축소 - 차원의 저주

차원의 저주데이터에서 '차원'이란 변수의 개수를 의미한다. 즉, 변수가 1개인 데이터는 1차원 데이터, 2개인 데이터는 2차원 데이터, n개인 데이터는 n차원 데이터라고 부른다. 이때, 아래와 같은 데이터는 변수가 6개이기 때문에 6차원 데이터이다. 만약 recency와 age라는 2개의 변수만 가지고 있는 2차원 데이터라면 children, spent_all까지 4차원으로 구성된 데이터보다 정보가 적다. 마찬가지로 purchase_num_all 과 family_size 를 모두 포함한 6차원 데이터라면 2, 4차원보다 더 많은 정보를 가지게 된다. 따라서 차원이 높은 데이터를 분석에 활용하면 더 많은 정보를 반영한 결과를 얻을 수 있다.  그러나오히려 데이터의 차원이 너무 많아지면 분석의 정확도가 떨어..

클러스터 분석 - 계층, 밀도, 분포 기반 클러스터링, DBSCAN, GMM

from sklearn.mixture import GaussianMixturen_components = 4 # 분포 개수random_state = 10 # 모델 고정model = GaussianMixture(n_components=n_components, random_state=random_state)# GMM 모델 학습model.fit(df)df['gmm_label'] = model.predict(df)# 시각화sns.scatterplot(x=df[0], y=df[1], hue=df['gmm_label'], palette='rainbow', alpha=0.7, s=100)계층 기반 클러스터링: 유사한 데이터를 묶은 클러스터들을 층으로 쌓아가며 클러스터링 하는 방식데이터간 관계를 쉽게 파악할 ..

클러스터 분석 - k-means

동작 방식k-means의 기본 원리는 '유사한 데이터는 Centroid(중심점)로부터 가까이에 모여있다' 이다. 동작 과정1단계: Centroid 배치먼저 클러스터의 개수를 의미하는 k를 정해주어야 한다. (*아래 예시에서는 우선 '2'로 설정함) 그리고 k의 값만큼 Centroid를 생성하여 임의로 배치한다. 2단계: 클러스터 형성생성한 Centroid와 각 데이터 사이의 거리를 계산하여 가까이에 있는 데이터들을 하나의 클러스터로 묶어준다.3단계: Centroid 위치 갱신클러스터에 속해있는 데이터들의 중심으로 Centroid의 윛치를 이동한다. 이때, 데이터들 사이의 중심을 찾기 위하여 평균값(means)을 사용한다.4단계: 클러스터 재형성새롭게 위치한 Centroid를 기준으로 각 데이터와의 거리..

클러스터 분석 - 개념 알아보기

클러스터링유사한 데이터들을 같은 클러스터(집단)으로 묶어 주는 작업을 의미하며, 우리말로는 '군집화' 라고도 한다.클러스터링은 머신러닝 기법 중, 비지도 학습에 해당한다. 머신러닝은 컴퓨터가 데이터들을 통해 스스로 규칙을 학습하도록 하는 인공지능의 한 방법인데, 이 중 비지도 학습 정답(레이블)을 주지 않은 상태에서 데이터의 특성만 가지고 스스로 규칙을 찾아내는 방식이다. 더보기클러스터링과 분류(Classification)클러스터링과 비슷하게 데이터들의 특성을 바탕으로 특정 범주로 구분해 주는 분류(Classification) 문제도 있다. 예를 들어서, 100명의 학생이 공부한 시간과 시험에 통과했는지 여부를 체크한 데이터가 있을 때 이 데이터를 바탕으로, 새로운 학생이 몇 시간 공부했는지에 따라 시..

편미분으로 기울기 벡터 구하기

위의 함수에 대해 그래프를 그리면 아래와 같다. 그리고 편미분을 통해 함수의 기울기 벡터를 구해보았다. 이 벡터는 해당 지점에서의 기울기를 알려 주기도 하지만, 그래프를 가장 가파르게 올라갈 수 있는 방향도 함께 알려준다. 2차원 그래프에서도 가장 가파르게 올라가기 위해 왼쪽으로 가야 하는지, 오른쪽으로 가야 하는지, 기울기가 그 방향을 알려 준다는 것을 배웠다. 마찬가지로 고차원 그래프에서도 기울기가 그 방향을 알려주는데 대신 기울기가 벡터가 된다. 예를 들어서 x가 1이고 y가 1인 지점에 놓였다고 생각해보자. 기울기 벡터는 2, 4 이므로 이 벡터를 그래프에 표시하면, x 방향으로 두 칸이고 y 방향으로 네 칸이니까, 위와 같은 대각선 방향이 나온다. 이 대각선 방향으로 움직인다면, 가장 가파르게 ..

편미분과 기울기

편미분위의 함수가 있다고 가정해보자.인풋 변수가 $x$와 $y$ 이렇게 두 개로 이루어져 있다. 이럴 때에는 '편미분'을 해야 하는데,편미분이란 두 인풋 변수 $x$랑 $y$에 대해서 모두 미분을 하는 게 아닌 변수 하나에 대해서만 미분을 하는 것이다. 즉, 변수 $x$ 에 대해서 편미분을 할 수도 있고, 변수 $y$에 대해서 편미분을 할 수도 있다.  $x$ 에 대해서 편미분$x$ 에 대해서 미분을 하면: $d/dx$ 를 쓰는데, $x$ 에 대해서 편미분을 하면 $∂/∂x$ 를 쓴다. (*'델'이라고 읽음)변수 $x$ 에 대해서 편미분을 한다면 $x$ 를 제외한 나머지 변수들은 마치 상수인 것처럼 취급하게 되므로 $x$ 를 제외한 나머지 변수 $y$ 를 변수가 아니라 그냥 일반 숫자(상수)처럼 취급 한..

선형대수학 - 극소점, 극대점 그리고 안장점

순간 변화율이 양수면 해당 지점에서 x가 늘어나면 y도 늘어난다. 반대로 순간 변화율이 음수라는 것은, 해당 지점에서 x가 늘어나면 y가 줄어든다는 뜻이다. 그런데 순간 변화율이 0인 지점은 해당 지점에서 x가 변해도 y는 그대로라는 의미이다. 이런 순간 변화율이 0인 지점이 발생하는 경우는 아래와 같다. 극소점 (Local Minimum)극소점은 이렇게 그래프에서 아래로 볼록 튀어 나오는 경우를 말한다. 이 지점에서 왼쪽으로는 기울기가 음수고, 오른쪽으로는 기울기가 양수인데, 기울기가 음수에서 양수로 전환할 때 한 번 0을 찍고 가게 된다. 참고로 지금 아래로 볼록 튀어 나오는 부분이 여러 개 있는 경우에는 극소점이 여러 개 있는 것인데, 이 중에서 제일 작은 값은 최소점, 영어로는 global m..

선형대수학 - 행렬

행렬과 벡터 구분행렬이란?행렬(matrix)은 수를 직사각형의 형태로 나열한 것으로 행렬의 가로줄을 행, 영어로는 row라고하며, 세로줄은 열, 영어로는 column이라고 한다. A의 경우 행이 3개 있고 열이 4개 있는데, 이런 걸 3 x 4 행렬 또는 "이 행렬의 차원이 3 x 4다"라고도 한다. 원소 표기 m x n인 행렬이 있다면 원소들을 아래처럼 표현할 수 있다.벡터벡터도 일종의 행렬로써, 행이 하나밖에 없거나 열이 하나밖에 없는 행렬을 의미한다.a는 열이 하나만 있으므로 열 벡터라고 하며 b는 행이 하나만 있기 때문에 행 벡터라고 한다. 다만, 열 벡터를 사용하는 경우가 더 많기 때문에, 그냥 벡터라고 하면 열 벡터를 뜻한다. 벡터의 차원벡터는 무조건 열이 하나밖에 없거나 행이 하나밖에 없다...