전체 글 83

그리드 서치(Grid Search)와 하이퍼 파라미터 (Hyperparameter)

하이퍼 파라미터 (Hyperparameter)많은 머신 러닝 알고리즘은 학습을 하기 전에 미리 정해주어야 하는 변수 또는 파라미터들이 있다.여기서 하이퍼 파라미터란 학습을 하기 전에 미리 정해줘야 하는 변수 또는 파라미터들을 의미하는데 scikit-learn에서 보통 모델을 만들 때 옵셔널 파라미터로 정해주는 변수들이다.하이퍼 파라미터에 어떤 값을 넣어주느냐에 따라 성능에 큰 차이가 있을 수 있기 때문에 모델의 성능을 높여주는 좋은 하이퍼 파라미터를 고르는게 굉장히 중요하다.  예를 들면, Lasso는 L1 정규화를 해주는 회귀 모델인데, scikit-learn에서 Lasso 모델을 만들 때 alpha와 max_iter라는 옵셔널 파라미터를 지정해 준다. model = Lasso(alpha=0.001, ..

k겹 교차 검증(k-fold cross validation)

k겹 교차 검증(k-fold cross validation)은 머신 러닝 모델의 성능을 조금 더 정확하게 평가할 수 있는 방법이다. 머신 러닝 알고리즘을 만들 때, training set은 모델이 인풋 변수를 잉용하여 아웃풋 변수를 예측할 수 있도록 학습시키는데 사용하고, test set은 학습시킨 모델이 얼마나 예측을 잘 하는지, 즉 모델의 성능이 얼마나 좋은지를 파악하기 위해 사용한다.  이렇게 모델의 성능을 파악하면 어떤 문제가 생길 수 있을까?test set에서만 성능이 좋은 걸 수도 있고, 반대로 test set에서만 성능이 좋지 않게 나올 수도 있다.  교차 검증은 이런 문제를 해결해 주는 방법이다.k-겹 교차 검증k-겹 교차 검증은 먼저 전체 데이터를 k개의 같은 사이즈로 나눈 후, 반복적으..

편향(Bias)와 분산(Variance)

편향아래 좌측의 데이터를 살펴보면 어느 정도까지는 키가 늘어날 때 몸무게가 같이 늘어나지만, 일정 키부터는 몸무게가 잘 늘어나지 않는다. 따라서 우측의 곡선이 데이터를 더 정확하게 표현한다고 볼 수 있다. 이처럼 좌측 직선 모델의 문제는 모델이 너무 간단해서 아무리 학습을 해도 우측과 같은 곡선 관계를 나타내지 못하는데 이를 통해 모델에 한계가 있다는 것을 알 수 있다.이처럼 모델이 너무 간단해서 데이터의 관계를 잘 학습하지 못하는 경우 모델의 편향, 영어로는 bias가 높다고 한다. 이번에는 높은 차항의 회귀를 사용해서, 위와 같은 관계를 학습했다고 해보자.이때, 아래의 복잡한 곡선은 모델의 복잡도를 늘려서 training 데이터의 관계를 잘 학습할 수 있도록 하였으므로 training 데이터에 거의 ..

범주형 데이터를 수치형 데이터로 바꿔주는 One-hot Encoding

머신러닝에는 사용되는 데이터터는 아래와 같이 크게 두 종료가 있다. 많은 머신 러닝 알고리즘은 인풋 데이터, 즉 입력 변수의 값이 수치형 데이터여야 한다. 예를 들면 선형 회귀도 손실 함수를 구하고 경사 하강법을 적용하려면 인풋 데이터가 수치형 데이터여야 한다.  그렇다면 범주형 데이터가 있을 땐 어떻게 해야 할까? 범주형 데이터를 -> 수치형 데이터로 바뚸 주면 된다. 그러나 위 이미지처럼 범주에 숫자를 입력하게 된다면 머신러닝 알고리즘은 'A형은 1이니까 가장 작고, O형은 4니까 가장 크고, AB형, B형은 그 사이에 존재한다'라는 관계로 인식하게 되어 오히려 예측에 방해가 된다.  그러므로 범주형 데이터를 수치형 데이터로 바꿔줄 때는 One-hot encoding 방법을 사용한다. One-hot..

Feature Scaling - Min-Max Nomalization

Feature Scaling입력 변수(feature)의 크기를 조정해 준다(scale)라는 뜻이다. 아래 이미지와 같이 '연봉'이라는 입력 변수가 있고 '나이'라는 입력 변수가 있다고 가정해보자. 이때, 연봉은 천단위이지만 나이는 대부분 십단위이다. 이렇게 입력 변수의 규모 단위가 차이가 클 경우 머신 러닝에 방해가 될 수 있기 때문에 feature scaling을 해서 입력 변수들의 크기가 모두 일정 범위 내에 들어오도록 조정해주는 것이다. feature scaling을 하면 '경사 하강법'을 조금 더 빨리 할 수도 있다. Min-Max Nomalizationnormalization은 '숫자의 크기를 0과 1사이로 만든다'라는 뜻이다. 이는 데이터의 minimum, 즉 최솟값 그리고 최댓값(maximu..

차원 축소 - 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명의 학생이 공부한 시간과 시험에 통과했는지 여부를 체크한 데이터가 있을 때 이 데이터를 바탕으로, 새로운 학생이 몇 시간 공부했는지에 따라 시..