본문 바로가기

Lecture ML

(36)
머신러닝 강좌 #36] 군집화 - GMM(Gaussian Mixture Model) 소개 GMM 군집화는 군집화를 적용하고자 하는 데이터가 여러 개의 가우시안 분포(Gaussian Distribution)를 가진 데이터 집합들이 섞여서 생성된 것이라는 가정하에 군집화를 수행하는 방식입니다. [GMM] Gaussian Mixture Model 개요에 대해 GMM들어가기전! 가우시안 분포란? 도수 분포 곡선이 평균값을 중심으로 좌우 대칭을 이루는 것이다. 모든 측정에서 중복으로 실험했을 경우 결과 값이 완전 똑같이 이루어지는 경 nicola-ml.tistory.com
머신러닝 강좌 #35] 군집화 - K평균 알고리즘과 실루엣 분석 K-평균은 군집화(Clustering)에서 가장 일반적으로 사용되는 알고리즘입니다. K-평균은 군집 중심점(centroid)이라는 특정한 임의의 지점을 선택해 해당 중심에 가장 가까운 포인트들을 선택하는 군집화 기법입니다. 군집 중심점은 선택된 포인트의 평균 지점으로 이동하고 이동된 중심점에서 다시 가까운 포인트를 선택, 다시 중심점을 평균 지점으로 이동하는 프로세스를 반복적으로 수행합니다. 모든 데이터 포인트에서 더이상 중심점의 이동이 없을 경우에 반복을 멈추고 해당 중심점에 속하는 데이터 포인트들을 군집화하는 기법입니다. [K-Means] K-평균 Clustering 알고리즘 이해 K-평균은 군집화(Clustering)에서 가장 일반적으로 사용되는 알고리즘입니다. K-평균은 군집 중심점(centroi..
머신러닝 강좌 #34] 차원 축소 : SVD(Singular Value Decomposition), NMF(Non-Negative Matrix Factorization) SVD SVD역시 PCA와 유사한 행렬 분해 기법을 이용합니다. PCA의 경우 정방행렬(즉, 열의 크기가 같은 행렬)만을 고유벡터로 분해할 수 있지만, SVD는 정방행렬뿐만 아니라 행과 열의 크기가 다른 행렬에도 적용할 수 있습니다. 사이킷런의 TruncatedSVD 클래스는 사이파이의 svds와 같이 Truncated SVD연산을 수행해 원본 행렬을 분해한 U, sigma, Vt행렬을 반환하지는 않습니다. 사이킷런의 TruncatedSVD 클래스는 PCA 클래스와 유사하게 fit()와 transform()을 호출해 원본 데이터를 몇 개의 주요 컴포넌트로 차원을 축소해 변환합니다. from sklearn.decomposition import TruncatedSVD, PCA from sklearn.data..
머신러닝 강좌 #33] 차원 축소 : LDA(Linear Discriminant Analysis) LDA는 선형 판별 분석법으로 불리며, PCA와 매우 유사합니다. 특징은 LDA는 지도학습의 분류(Classification)에서 사용하기 쉽도록 개별 클래스를 분별할 수 있는 기준을 최대한 유지하면서 차원을 축소합니다. PCA는 입력 데이터의 변동성의 가장 큰 축을 찾았지만, LDA는 입력 데이터의 결정 값 클래스를 최대한으로 분리할 수 있는 축을 찾습니다. LDA는 특정 공간상에서 클래스 분리를 최대화하는 축을 찾기 위해 클래스 간 분산과 클래스 내부 분산의 비율을 최대화하는 방식으로 차원을 축소합니다. 즉, 클래스 간 분산은 최대한 크게 가져가고, 클래스 내부의 분산을 최대한 작게 가져가는 방식입니다. IRIS 데이터를 이용하여 LDA를 수행해보겠습니다. from sklearn.discriminan..
머신러닝 강좌 #32] 차원 축소 : PCA(Principal Component Analysis) PCA는 가장 대표적인 차원 축소 기법입니다. PCA는 여러 변수 간에 존재하는 상관관계를 이용해 이를 대표하는 주성분(Principal Component)을 추출해 차원을 축소하는 기법입니다. PCA로 차원을 축소할 때는 기존 데이터의 정보 유실이 최소화되는 것이 당연합니다. 이를 위해서 PCA는 가장 높은 분산을 가지는 데이터의 축을 찾아 이 축으로 차원을 축소하는데, 이것이 PCA의 주성분입니다. PCA, 즉 주성분 분석은 이처럼 원본 데이터의 피처 개수에 비해 매우 작은 주성분으로 원본 데이터의 총 변동성으로 대부분 설명할 수 있는 분석법입니다. 정리하면 PCA는 입력 데이터의 공분산 행렬이 고유벡터와 고유값으로 분해될 수 있으며, 이렇게 분해된 고유벡터를 이용해 입력 데이터를 선형 변환하는 방식..
머신러닝 강좌 #31] 차원 축소 / Dimension Reduction 차원축소는 매우 많은 피처로 구성된 다차원 데이터 세트의 차원을 축소해 새로운 차원의 데이터 세트를 생성하는 것입니다. 일반적으로 차원이 증가할수록 데이터 포인트 간의 거리가 기하급수적으로 멀어지게 되고, 희소(sparse)한 구조를 가지게 됩니다. 수백 개 이상의 피처로 구성된 데이터 세트의 경우 상대적으로 적은 차원에서 학습된 모델보다 예측 신뢰도가 떨어집니다. 또한 피처가 많을 경우 개별 피처간에 상관관계가 높을 가능성이 큽니다. 선형 회귀와 같은 선형 모델에서는 입력 변수 간의 상관관계가 높을 경우 이로 인한 다중 공정성 문제로 모델의 예측 성능이 저하됩니다. 이렇게 매우 많은 다차원의 피처를 차원 축소해 피처 수를 줄이면 더 직관적으로 데이터를 해석할 수 있습니다. 가령 수십 개 이상의 피처가 ..
머신러닝 강좌 #30] 회귀실습 - 캐글 주택 가격: 고급 회귀 기법
머신러닝 강좌 #29] 회귀실습 - 자전거 대여 수요 예측 전체실습: Jupyter http://localhost:8888/notebooks/Lecture_ML/perfect/5%EC%9E%A5/5.9%20Regression%EC%8B%A4%EC%8A%B5-Bike%20Sharing%20Demand.ipynb data: https://www.kaggle.com/c/bike-sharing-demand
머신러닝 강좌 #28] 로지스틱 회귀에 대해 로지스틱 회귀는 선형 회귀 방식을 분류에 적용한 알고리즘입니다. 즉, 로지스틱 회귀는 분류에 사용됩니다. 로지스틱 회귀 역시 선형 회귀 계열입니다. 회귀가 선형인가 비선형인가는 독립변수가 아닌 가중치 변수가 선형인지 아닌지를 따릅니다. 로지스틱 회귀가 선형 회귀와 다른 점은 학습을 통해 선형 함수의 회귀 최적선을 찾는 것이 아니라 시그모이드(Sigmoid)함수 최적선을 찾고 이 시그모이드 함수의 변환 값을 확률로 간주해 확률에 따라 분류를 결정한다는 것입니다. 많은 자연, 사회 현상에서 특정 변수의 확률 값은 선형이 아니라 시그모이드 함수와 같이 S자 커브 형태를 가집니다. 종양크기에 따라 악성 종양인지 그렇지 않은지를 회귀를 이용해 1과 0의 값으로 예측하는 내용을 진행해 보겠습니다. 위스콘슨 유방암 ..
머신러닝 강좌 #27] 선형 회귀 모델을 위한 데이터 변환 선형 회귀 모델과 같은 선형 모델은 일반적으로 피처와 타깃값 간에 선형의 관계가 있다고 가정하고, 이러한 최적의 선형함수를 찾아내 결과값을 예측합니다. 또한 선형 회귀 모델은 피처값과 타깃값의 분포가 정규 분포(즉 평균을 중심으로 종 모양으로 데이터 값이 분포된 형태) 형태를 매우 선호합니다. 특히 타깃값의 경우 정규 분포 형태가 아니라 특정값의 분포가 치우친 왜곡(skew)된 형태의 분포도일 경우 예측 성능에 부정적인 영향을 미칠 수 있습니다. 따라서 선형 회귀 모델을 적용하기전에 먼저 데이터에 대한 스케일링/정규화 작업을 수행하는 것이 일반적입니다. 하지만 이러한 스케일링/정규화 작업을 선행한다고 해서 무조건 예측 성능이 향상되는 것은 아닙니다. 일반적으로 중요 피처들이나 타깃값의 분포도가 심하게 왜..
머신러닝 강좌 #26] 규제선형 모델 - 릿지, 라쏘, 엘라스틱넷 규제선형 모델에 대해서는 하기 3가지 Step을 사용하여 학습합니다. Regulation(규제) 선형 모델에 대한 개요 - 릿지(Ridge), 라쏘(Lasso), 엘라스틱(Elastic Net) 규제 선형 모델의 개요 좋은 머신러닝 회귀 모델은 적절히 데이터에 적합하면서도 회귀 계수가 기하급수적으로 커지는 것을 제어할 수 있어야 합니다. 이전까지 선형 모델의 비용 함수는 RSS를 nicola-ml.tistory.com 릿지 회귀 : Ridge Model 이란? Scikit Learn에서의 실습 릿지 회귀 : Ridge Model 사이킷런에서의 Ridge 클래스의 주요 생성 파라미터는 alpha이며, 릿지 회귀의 alpha L2규제 계수에 해당합니다. from sklearn.model_selection i..
머신러닝 강좌 #25] 다항 회귀와 과(대)적합/과소적합 이해 지금까지 설명한 회귀는 독립변수(feature)와 종속변수(target)의 관계가 일차 방정식 형태로 표현된 회귀였습니다. 하지만 세상의 모든 관계를 직선으로만 표현할 수는 없습니다. 회귀가 독립변수의 단항식이 아닌 2차, 3차 방정식과 같은 다항식으로 표현되는 것을 다항회귀라고 합니다. 한 가지 주의할 것은 다항 회귀를 비선형 회귀로 혼동하기 쉽지만, 다항 회귀는 선형 회귀라는 점입니다. 회귀에서 선형 회귀/비선형 회귀를 나누는 기준은 회귀 계수가 선형/비선형인지에 따른 것이지 독립변수의 선형/비선형 여부와는 무관합니다. 아쉽지만 사이킷런은 다항 회귀를 위한 클래스를 명시적으로 제공하지 않습니다. 대신 다항 회귀 역시 선형 회귀이기 때문에 비선형 함수를 선형 모델에 적용시키는 방법을 사용해 구현합니다...
머신러닝 강좌 #24] 사이킷런 LinearRegression을 이용한 보스턴 주택 가격 예측 사이킷런의 linear_models모듈은 매우 다양한 종류의 선형 기반 회귀를 클래스로 구현해 제공합니다. 선형 모델 중 규제가 적용되지 않은 선형 회귀를 사이킷런에서 구현한 클래스인 LinearRegression을 이용해 보스턴 주택 가격 예측 회귀를 구현합니다. LinearRegression 클래스 - Ordinary Least Squares LinearRegression 클래스는 예측값과 실제 값의 RSS(Residual Sum of Squares)를 최소화해 OLS(Ordinary Least Squares)추정 방식으로 구현한 클래스입니다. LinearRegression클래스는 fit()메소드로 X, y배열을 입력 받으면 회귀 계수(Coefficients)인 W를 coef_속성에 저장합니다. 관련..
머신러닝 강좌 #23] 회귀 : Regression, 단순 선형 회귀를 통한 회귀 이해 그리고 경사하강법 (GD)에대해 회귀란? 회귀(Regression)분석은 데이터 값이 평균과 같은 일정한 값으로 돌아가려는 경향을 이용한 통계학 기법입니다. 통계학 용어를 빌리자면 회귀는 여러 개의 독립변수와 한 개의 종속변수 간의 상관관계를 모델링하는 기법을 통칭합니다. 독립변수의 값에 영향을 미치는 회귀 계수(Regression Coefficients)입니다. 머신 러닝 관점에서 보면 독립변수는 피처에 해당되며 종속변수는 결정 값입니다. 머신러닝 회귀 예측의 핵심은 주어진 피처와 결정 값 데이터 기반에서 학습을 통해 최적의 회귀 계수를 찾아내는 것입니다. 회귀 계수가 선형이냐 아니냐에 따라 선형 회귀와 비선형 회귀로 나눌 수 있습니다. 그리고 독립변수의 개수가 한 개인지 여러 개인지에 따라 단일 회귀, 다중 회귀로 나뉩니다. 지도학..
머신러닝 강좌 #22] SMOTE, LightGBM을 이용한 예측 분류 실습 - 캐글 신용카드 사기 검출 신용카드 데이터 세트를 이용한 검출 분류 실습을 해보겠습니다. 해당 데이터 세트의 레이블인 Class속성은 매우 불균형한 분포를 가지고 있습니다. Class는 0과 1로 분류되는데 0이 사기가 아닌 정상적인 신용카드 트랜잭션 데이터, 1은 신용카드 사기 트랜잭션을 의미합니다. 전체 데이터의 약 0.172%만이 레이블 값이 1, 즉 사기 트랜잭션입니다. 일반적으로 사기 검출이나 이상 검출과 같은 데이터 세트는 이처럼 레이블 값이 극도로 불균형한 분포를 가지기 쉽습니다. 왜냐하면 사기와 같은 이상 현상은 전체 데이터에서 차지하는 비중이 매우 적을 수밖에 없기 때문입니다. 언더 샘플링과 오버 샘플링의 이해 레이블이 불균형한 분포를 가진 데이터 세트를 학습시킬 때 예측 성능의 문제가 발생할 수 있는데, 이는 이..
머신러닝 강좌 #21] 분류 XGBoost를 이용한 고객 만족 예측 캐글의 산탄데르 고객 만족 데이터 세트에 대해서 고객 만족 여부를 XGBoost와 LightGBM을 활용해 예측해 보겠습니다. 클레스 레이블 명은 TARGET이며, 이 값이 1이면 불문을 가진 고객, 0이면 만족한 고객입니다. 모델의 성능 평가는 ROC-AUC(ROC 곡선 영역)로 평가합니다. 대부분이 만족이고 불만족인 데이터는 일부일 것이기 때문에 정확도 수치보다는 ROC-AUC가 더 적합니다. 데이터를 다운로드 후 TARGET.count()를 확인하면 갯수를 알 수 있습니다. 이를 통해 불만족 비율을 확인해 봅니다. import numpy as np import pandas as pd import matplotlib.pyplot as plt import matplotlib cust_df = pd.re..