본문 바로가기

분류 전체보기99

머신러닝 - t-SNE t-SNE t-SNE 알고리즘은 데이터 시각화를 위해 주로 활용되는 차원 축소 알고리즘입니다. 데이터 간의 거리에 상관없이 함축적으로 표현되는 PCA와는 달리 t-SNE는 차원 축소 이후에도 가까운 데이터는 가깝게, 멀리 있는 데이터는 멀게 표현할 수 있습니다. 따라서 대용량 데이터의 시각화 즉, 구별 가능한 시각화를 위해 활용할 수 있습니다. 이번 실습에서는 주성분 분석(PCA)에서 사용한 와인 데이터를 활용하여 t-SNE 알고리즘을 사용하는 방법을 학습해보도록 하겠습니다. t-SNE를 위한 사이킷런 함수/라이브러리 from sklearn.manifold import TSNE : 사이킷런에 구현되어 있는 tsne 모델을 불러옵니다. TSNE(n_components): n_components 개수로 데이.. 2022. 5. 23.
머신러닝 - 주성분 분석(PCA) 주성분 분석(PCA) PCA를 사용하면 가장 덜 중요한 축들은 제거되고, 가장 중요한 상위 축만 남겨집니다. 이렇게 데이터 내에서 영향을 덜 주는 변수들이 사라지면, 점들 간에 가장 중요한 관계를 맺는 차원들만을 남길 수 있습니다. 예를 들어, 변수를 반으로 줄였을 때 대부분의 점들이 잘 보존된다면, 적은 정보로 값을 그대로 표현할 수 있어 데이터를 사용하기에 훨씬 효율적일 것입니다. 이번 실습에서는 2차원으로 고정한 wine data를 주성분이 있는 PCA를 사용하여 1차원으로 축소할 때 결과를 확인해보도록 하겠습니다. PCA를 위한 사이킷런 함수/라이브러리 from sklearn.decomposition import PCA : 사이킷런에 구현되어 있는 주성분 분석(PCA) 모델을 불러옵니다. PCA(.. 2022. 5. 23.
머신러닝 Clustering - K-Means VS GMM K-Means VS GMM K-Means 클러스터링은 군집화 범위가 원형입니다. 그러므로 데이터 세트의 분포가 원형에 가까울수록 효율이 높아집니다. 그러나 실제 데이터의 분포가 원형인 경우는 적습니다. 데이터의 분포가 만약 타원의 형태로 길쭉하게 늘어져 있다면 K-means 클러스터링은 해당 데이터에 대하여 제대로 군집화를 진행하기 어렵습니다. 이런 경우에는 데이터의 분포 방향에 따라 군집화를 진행하는 GMM 클러스터링을 사용하면 군집화 성능을 높일 수 있습니다. 임의의 데이터 생성 클러스터링 알고리즘을 테스트하기 위한 데이터 생성기를 사용해보겠습니다. 대표적으로 make_blobs() 를 사용합니다. 이를 이용해 타원형 분포를 가진 데이터를 만들어냅니다. 타원형 분포 데이터 생성을 위한 사이킷런 함수/.. 2022. 5. 23.
머신러닝 Clustering - Gaussian Mixture Model (GMM) Gaussian Mixture Model (GMM) Gaussian Mixture Model(GMM)을 이용한 클러스터링은 데이터가 여러 개의 정규 분포를 가지고 있다고 가정한 후 클러스터링을 진행하는 방식입니다. 여러 개의 데이터 세트가 있다면 이를 구성하는 여러 개의 정규 분포 곡선을 추출하고, 개별 데이터가 이 중 어떤 정규 분포에 속하는지 결정합니다. 또한, GMM은 K-means 클러스터링과 달리 군집 중심점(clustering center)가 없으므로 군집의 개수(K)를 정해주면 됩니다. 이번 실습에서는 동일한 iris 데이터를 가지고 GMM을 이용한 클러스터링을 수행하고, 결과를 시각화하여 확인해보겠습니다. GMM을 위한 사이킷런 함수/라이브러리 from sklearn.mixture impo.. 2022. 5. 23.
머신러닝 Clustering - K-Means 클러스터링 K-Means 클러스터링 K-Means 클러스터링은 가장 간단하고 널리 사용되는 클러스터링 알고리즘 입니다. K-Means 클러스터링은 데이터의 영역을 대표하는 Cluster-center(중심점)을 찾아가며 데이터를 클러스터에 할당합니다. 이번 실습에서는 사이킷런에 구현된 K-Means 클러스터링 모델을 불러와 클러스터링 결과를 시각화를 통해 확인해보겠습니다. K-Means 클러스터링을 위한 사이킷런 함수/라이브러리 from sklearn.cluster import KMeans: K-Means 클러스터링을 위한 모델을 불러옵니다. KMeans(init, n_clusters, random_state) : K-Means 클러스터링 모델을 정의합니다. init : 중심점 초기화 방법 설정(‘random’ 으로.. 2022. 5. 23.
머신러닝 분류 - 로지스틱 회귀(Logistic Regression) 로지스틱 회귀(Logistic Regression) 로지스틱 회귀(Logistic Regression)는 분류 문제를 위한 회귀 알고리즘으로, 0에서 1사이의 값만 내보낼 수 있도록 출력값의 범위를 수정한 분류 알고리즘입니다. 이번 시간에는 사이킷런 안에 구현되어 있는 로지스틱 회귀 호출을 통해 실제로 S자형 곡선 그래프가 출력되는지 시각화를 통해 확인해보도록 하겠습니다. 로지스틱 회귀를 위한 사이킷런 함수/라이브러리 from sklearn.linear_model import LogisticRegression : 사이킷런 안에 구현되어 있는 로지스틱 회귀를 불러옵니다. LogisticRegression() : 로지스틱 회귀 모델을 정의합니다. [Model].fit(X, y): (X, y) 데이터셋에 대해.. 2022. 5. 23.
머신러닝 - 회귀 알고리즘 평가 지표- R_squared 회귀 알고리즘 평가 지표- R_squared 이번 실습에서는 R^2 에 대해 알아보겠습니다. R^2 또한 사이킷런 모듈 안에 존재하여 쉽게 불러오기 만으로도 회귀 모델 평가 지표를 계산할 수 있습니다. 특히 이전 실습들에서 살펴본 RSS, MSE, MAE 지표들은 “오차” 에 기반한 지표들이기 때문에 해당 값들이 작을수록 더 높은 성능의 모델을 의미하지만, R^2 지표의 경우 데이터에 대한 모델의 설명력을 의미하기 때문에 1에 가까울수록 즉, 더 클수록 높은 성능의 모델임을 의미합니다. R^2 평가 지표를 계산하기 위한 사이킷런 함수/라이브러리 from sklearn.metrics import r2_score : R^2 평가 지표 계산 기능 불러오기 r2_score(y_true, y_pred) : R^2.. 2022. 5. 23.
머신러닝 - 회귀 알고리즘 평가 지표- MSE, MAE 회귀 알고리즘 평가 지표- MSE, MAE 이번 실습에서는 MSE와 MAE에 대해 알아보겠습니다. MSE와 MAE는 사이킷런 라이브러리 안에 존재하여 쉽게 불러오기 만으로도 회귀 모델 평가 지표를 계산할 수 있습니다. MSE, MAE 평가 지표를 계산하기 위한 사이킷런 함수/라이브러리 from sklearn.metrics import mean_absolute_error : MAE 평가 지표 계산 기능 불러오기 mean_absolute_error(y_true, y_pred): MAE 값 계산하기 from sklearn.metrics import mean_squared_error: MSE 평가 지표 계산 기능 불러오기 mean_squared_error(y_true, y_pred): MSE 값 계산하기 fro.. 2022. 5. 23.
머신러닝 - 회귀 알고리즘 평가 지표- RSS 회귀 알고리즘 평가 지표- RSS 이번 실습에서는 회귀 알고리즘을 위한 다양한 평가 지표 중 가장 기본적인 Loss Function인 RSS(단순 오차제곱합)을 직접 계산해보고, 결과를 확인해보겠습니다. import matplotlib.pyplot as plt import numpy as np from elice_utils import EliceUtils elice_utils = EliceUtils() from sklearn.model_selection import train_test_split from sklearn.linear_model import LinearRegression # 데이터 X와 y를 생성하고, 학습용 데이터와 테스트용 데이터로 분리하여 반환하는 함수입니다. def load_data(.. 2022. 5. 23.
머신러닝 - 엘라스틱넷(ElasticNet) 회귀 엘라스틱넷(ElasticNet) 회귀 이전 실습을 통해 라쏘 회귀와 릿지 회귀에 대해 알아보았습니다. 이전 실습에서 그래프를 통해 확인한 바와 같이 라쏘(L1 정규화) 회귀는 너무 많은 βi를 0으로 만들고, 릿지(L2 정규화) 회귀는 βi를 완전히 0으로 만들지는 않기 때문에 여전히 모델의 복잡성이 높습니다. 따라서, 이 L1, L2 정규화를 동시에 사용하여 두 회귀의 장점을 가진 회귀인 엘라스틱넷 회귀가 등장하게 된 것입니다. 엘라스틱 넷 회귀는 L1 ,L2 정규화를 반영한 비율을 설정할 수 있기 때문에 결과를 확인해가며 자유롭게 비율을 조정해 높은 예측 성능을 가진 모델을 만들어보세요. 엘라스틱넷 회귀를 위한 사이킷런 함수/라이브러리 from sklearn.linear_model import Ela.. 2022. 5. 23.
머신러닝 - 릿지(Ridge), 라쏘(Lasso) 회귀 릿지(Ridge), 라쏘(Lasso) 회귀 정규화 방법을 적용한 총 3가지(릿지, 라쏘, 엘라스틱 넷) 과적합 방지 모델 중 먼저 릿지(Ridge), 라쏘(Lasso) 회귀에 대해 알아보겠습니다. 사이킷런에 구현된 릿지 회귀와 라쏘 회귀를 이용하여 데이터를 학습시키고, βi 들의 크기를 확인해보겠습니다. 사이킷런 데이터의 변수 이름을 불러오기 위한 방법 load_boston().feature_names : boston 데이터의 변수 이름을 반환합니다. 릿지(Ridge), 라쏘(Lasso) 회귀를 위한 사이킷런 라이브러리/함수 from sklearn.linear_model import Ridge : 사이킷런에 저장된 릿지 회귀를 불러옵니다. Ridge(alpha): 릿지 회귀를 정의합니다. alpha: 기.. 2022. 5. 23.
머신러닝 - 과적합 방지 기법 - 교차 검증 과적합 방지 기법 - 교차 검증 과적합을 방지하기 위해서 어떠한 방식을 사용하여야 할 지에 대해 실습을 통해 알아보도록 하겠습니다. 교차 검증(cross validation) 은 과적합 방지를 위해 데이터를 분리하는 방법입니다. 기존 실습 문제들에서 학습용 데이터와 테스트용 데이터로 분리하는 방법을 적용하였는데, 이번 실습에서는 테스트 뿐만 아니라 검증용(Validation) 데이터를 활용하여 모델 결과를 평가해보겠습니다. 일반적으로 교차 검증에서 가장 많이 사용되는 것이 바로 k-fold 교차 검증입니다. k-fold 교차 검증은 아래와 같이 학습용 데이터를 계속 변경하며 모델을 훈련시키는 방법입니다. k-fold 교차 검증은 다음과 같은 순서로 진행됩니다. 데이터를 train, test 데이터로 분할.. 2022. 5. 23.