본문 바로가기
728x90

Data Analytics with python114

RFC, GBM, XGBoost, LightGBM hyper-parameter tuning 트리 기반 자체의 하이퍼 파라미터가 많고 배깅, 부스팅, 학습, 정규화 등을 위한 하이퍼 파라미터가 추가되어 튜닝하기 어렵기에 하이퍼 파라미터에 대한 이해가 필요합니다. 파라미터를 튜닝하는 경우의 수 1. 피처(Feature)의 수가 매우 많습니다. 2.피처(Feature) 간 상관되는 정도가 많습니다. 3.데이터 세트에 따라 특성이 있는 경우 (비대칭적인 분포 등) Random Forest hyper-parameter parameter default description n_estimators 10 결정 트리의 개수 max_features ‘sqrt’ 최적의 분할을 위해 고려하는 최대 피처 개수 e.g.) 전체 피처가 16개라면 분할을 위해 4개 참조 max_depth None 트리의 최대 깊이를 규정.. 2023. 6. 19.
OLS 고급 수식 구문 '+' : 주 효과 ':' : 특정 상호 작용 2023. 2. 22.
outlier 상관성이 높은 변수를 기준으로 이상치 제거 import seaborn as sns plt.figure(figsize=(9,9)) corr = card_df.corr() sns.heatmap(corr, cmap='RdBu') 이상치 인덱스 import numpy as np def get_outlier(df = None, column = None, weight = 1.5): data = df[df['Class']==1][column] quantile_25 = np.percentile(data.values, 25) quantile_75 = np.percentile(data.values, 75) iqr = quantile_75 - quantile_25 iqr_weight = iqr * weight lowest_.. 2023. 2. 18.
[Machine Learning] Oversampling & Undersampling Class 속성이 매우 불균형한 분포를 가지고 있는 경우 사용합니다. 이상 레이블을 가지는 데이터 건수가 정상 레이블을 가진 데이터 건수에 비해 너무 적기 때문에 데이터 세트를 학습 시킬 때 예측 성능의 문제가 발생할 수 있습니다. 정상 레이블을 가지는 데이터 건수가 매우 많기 때문에 일방적으로 정상 레이블로 치우친 학습으로 이상 데이터 검출이 어려워지는 문제가 있습니다. Oversampling(오버 샘플링)과 Undersampling(언더 샘플링) 방법은 지도 학습에서 극도로 불균형한 레이블 값 분포로 인한 문제점을 해결합니다. Undersampling : 많은 레이블을 가진 데이터 세트를 적은 레이블을 가진 데이터 세트 수준으로 감소시키는 방식 Oversampling : 적은 레이블을 가진 데이터 세.. 2023. 2. 18.
[Regression/Classification] 교차 검증과 하이퍼 파라미터 튜닝 + pipeline GridSearchCV 교차검증과 하이퍼 파라미터 튜닝을 합니다. 랜덤 포레스트 하이퍼 파라미터 튜닝으로 예시 from sklearn.model_selection import GridSearchCV params = { 'n_estimators':[100], 'max_depth' : [6, 8, 10], 'min_samples_leaf' : [8, 12, 18], 'min_samples_split' : [8, 16, 20] } # model 객체 생성 후 GridSearchCV 수행 rf_clf = RandomForestClassifier(random_state=0, n_jobs=-1) grid_cv = GridSearchCV(rf_clf , param_grid=params , cv=2, n_jobs=-1.. 2023. 2. 16.
[Machine Learning][Classification] Classifier Algorithms ▶ 랜덤 포레스트 Bagging (Bootstrap aggregating): 같은 알고리즘으로 여러 개의 분류기를 만들어서 보팅으로 최종 결정하는 알고리즘 데이터 세트가 전체 데이터에서 일부가 중첩되게 샘플링 됩니다. 이를 부트스트래핑이라 합니다. bootstrapping : 여러 개의 데이터 세트를 중첩되게 분리하는 것 배깅의 대표적인 알고리즘입니다. 여러 개의 결정 트리 분류기가 전체 데이터에서 배깅 방식으로 각자의 데이터를 샘플링해 개별적으로 학습을 수행한 후 최종적으로 모든 분류기가 보팅을 하여 최종 예측 결정을 합니다. from sklearn.ensemble import RandomForestClassifier as RFC rf_clf = RFC(random_state= 0) rf_clf.fit.. 2023. 2. 16.
[Machine Learning][Classification] Ensemble Learning 앙상블 학습 여러 개의 분류기(Classifier)를 생성하고 그 예측을 결합함으로써 보다 정확한 최종 예측을 도출하는 기법입니다. 앙상블 학습의 유형 대표적으로 ① 보팅(Voting), ② 배깅(Bagging), ③ 부스팅(Boosting) 이 있고 이외에도 스태깅 등 다양한 앙상블 방법이 있습니다. 보팅 VS 배깅 VS 부스팅 ● 보팅 : 서로 다른 알고리즘을 가진 분류기를 결합하여, 데이터 샘플링을 같게 가져가면서 학습을 수행합니다. - Hard Voting : 각각 분류기가 예측한 결괏값들 중 다수의 분류기가 결정한 예측값을 최종 보팅 결괏값으로 선정합니다. 즉, 마치 '다수결 원칙' 처럼 결과값을 선정합니다. - Soft Voting : 분류기들의 레이블 값 결정 확률을 각 class별로 모두 .. 2023. 2. 15.
[Classification] Decision Tree 결정 트리 ● 데이터에 있는 규칙을 학습을 통해 자동으로 찾아내 트리 기반의 분류 규칙을 만듭니다. ● 규칙이 많아질수록 분류를 결정하는 방식이 더욱 복잡해지고 곧 과적합으로 이어집니다. 결정 트리 구조 ● Root Node : 뿌리의 시작점 ● Decision Node : 규칙 조건 ● Leaf Node : 결정된 클래스 값 ● Sub Tree : 규칙 노드(Decision Node)기반으로 분할되는 작은 트리 결정 노드의 규칙 조건 ● 정보 균일도가 높은 데이터 세트를 먼저 선택합니다. ● 정보의 균일도를 측정하는 대표적인 방법은 엔트로피를 이용한 정보 이득 지수와 지니 계수가 있습니다. ● 정보이득이 높은 속성을 기준으로 분할하거나 지니 계수가 낮은 속성을 기준으로 분할합니다. 정보 이득 정보 이득.. 2023. 2. 15.
[Clustering] DBSCAN DBSCAN¶ 밀도 기반 군집화 기하학적으로 복잡한 데이터 세트에도 효과적 특정 공간 내에 데이터 밀도 차이를 기반한 알고리즘 epsilon : 개별 데이터를 중심으로 입실론 반경을 가진 원형의 영역입니다. 핵심 포인트(최소 데이터 개수 이상(자신의 데이터 포함))와 이웃포인트(주변 영역에 포함)로 핵심포인트인 데이터를 정의합니다. Core point : 주변 영역 내에 최소 데이터 개수 이상을 가집니다. Border point : 핵심 포인트는 아니지만 이웃 포인트로 핵심 포인트를 가집니다. Noise point : 핵심 포인트와 이웃 포인트로 핵심포인트도 없습니다. 핵심 포인트를 서로 연결하면서 군비화를 구성합니다. In [29]: from sklearn.datasets import load_iris.. 2023. 2. 15.
[Clustering] GMM Gaussian Mixture Model¶ 확률 기반 군집화입니다. 적용 데이터가 여러 개의 가우시안 분포가 섞인 것으로 간주합니다. 즉, 전체 데이터 세트는 이를 구성하는 서로 다른 정규 분포 형태를 가진 여러 가지 확률 분포 곡선으로 구성될 수 있고, 개별 데이터가 이 중 어떤 정규 분포에 속하는지 결정하는 방식입니다. KMeans는 원형의 범위에서 군집화를 수행합니다. KMeans 보다 유연하게 다양한 데이터 세트에 잘 적용될 수 있다 (가령 직선으로 밀집된 데이터) In [1]: from sklearn.datasets import load_iris from sklearn.cluster import KMeans from sklearn.mixture import GaussianMixture impor.. 2023. 2. 15.
[Clustering] MeanShift 평균 이동 :¶ 군집의 중심을 데이터가 모여 있는 밀도가 가장 높은 곳으로 이동시킵니다. 컴퓨터 비전 영역에서 뛰어난 역할을 수행하는 알고리즘 입니다. 이미지나 영상 데이터에서 특정 개체를 구분하거나 움직임을 추적하는 데 사용합니다. In [12]: # 군집화 데이터 생성기 from sklearn.datasets import make_blobs # 평균 이동 (밀도가 가장 높은 곳) : MeanShift # 밀도의 추정 성능을 위한 최적의 대역폭 계산 : estimate_bandwidth from sklearn.cluster import MeanShift, estimate_bandwidth import pandas as pd import numpy as np import matplotlib.pyplot .. 2023. 2. 14.
[Machine Learning] K-Menas_2 비지도 학습에 속한다. 비슷한 위치에 있는 데이터들을 그룹으로 묶어 군집화 한다. 두 가지 변수에 속한 데이터 값들을 그룹핑 하는 경우 타겟 레이블이 없고 여러 데이터 값들만 있는 상태에서 군집화가 가능하다. 데이터들을 관찰하고 유클리드 거리값이 비슷한 데이터들 간에 묶는 과정을 거친다. K-Means 알고리즘 단계 step1. 군집의 수를 정합니다. k step2. 각 군집의 중심이 될 랜덤 k의 지점을 선택합니다. step3. 정한 중심으로 근처에 있는 데이터를 할당하여 k개의 군집을 만듭니다. step4. 각 군집의 새로운 중심을 계산합니다. step5. 각각의 데이터들을 새로운 근처의 중심에 재할당합니다. step6. step4부터 반복합니다. 최적의 k숫자 ELBOW METHOD: 최적의 군집 .. 2023. 2. 14.
[Clustering] K-means k-means In [1]: import matplotlib.pyplot as plt import numpy as np import pandas as pd # %matplotlib inline from sklearn.preprocessing import scale from sklearn.datasets import load_iris from sklearn.cluster import KMeans from sklearn.decomposition import PCA # 실루엣 분석 평가 지표 값을 구하기 위한 API 추가 from sklearn.metrics import silhouette_samples, silhouette_score In [2]: iris = load_iris() # Convert to D.. 2023. 2. 14.
[Machine Learning] 실루엣 분석 silhouette analysis 군집화 평가 방법으로 각 군집 간의 거리가 얼마나 효율적으로 분리되어 있는지를 나타내는 평가 방법입니다. ● 실루엣 계수(silhouette coefficient) : 개별 데이터가 가지는 군집화 지표 ● 실루엣 계수는 개별 데이터가 가지고 있으며 같은 군집내의 데이터와 얼마나 가깝게 뭉쳐 있고, 다른 군집에 있는 데이터와는 얼마나 멀리 분리되어 있는지를 나타내는 지표입니다. ● 실루엣 계수는 다음과 같이 정의합니다. s(i) = - a(i) : i번째 데이터에서 자신이 속한 클러스터내의 다른 데이터 포인트들의 평균 거리 ex) 1번 데이터의 경우 a(1) = mean(a12, a13, a14) - b(i) : i번째 데이터에서 자신이 속하지 않은 클러스터 중 가장 가.. 2023. 2. 14.
[Machine Learning] K-means_1 K-means ● 군집화(Clustering)에서 가장 일반적으로 사용되는 알고리즘 ● 군집 중심점이라는 특정한 임의의 지점을 선택해 해당 중심에 가장 가까운 포인트들을 선택하는 군집화 기법입니다. k=2인 군집화 ① 2개의 군집 중심점을 임의로 설정(초기화 알고리즘에 의해 적합한 위치에 중심점이 위치함)합니다. ② 각 데이터는 가장 가까운 중심점에 소속합니다. ③ 중심점에 할당된 데이터들의 평균 중심으로 중심점을 이동시킵니다. ④ 각 데이터는 이동된 중심점을 기준으로 가장 가까운 중심점에 다시 소속합니다. ⑤ 다시 중심점에 할당된 데이터들의 평균 중심으로 중심점을 이동합니다. ⑥ 평균 중심 이동을 반복하여 중심점을 이동하였지만 데이터들의 중심점 소속 변경이 없으면 군집화.. 2023. 2. 14.
[Dimension Reduction] NMF 변환 NMF¶ In [1]: from sklearn.decomposition import NMF from sklearn.datasets import load_iris import matplotlib.pyplot as plt %matplotlib inline iris In [2]: iris = load_iris() iris_ftrs = iris.data NMF 변환 In [12]: nmf = NMF(n_components=2, max_iter=1000) nmf.fit(iris_ftrs) iris_nmf = nmf.transform(iris_ftrs) NMF 변환된 입력 데이터 값 시각화 In [13]: plt.scatter(x=iris_nmf[:,0], y= iris_nmf[:,1], c= iris.target.. 2023. 2. 13.
[Dimension Reduction] SVD 변환 SVD¶ 사이킷런 TruncatedSVD 클래스를 이용한 변환¶ In [1]: from sklearn.decomposition import TruncatedSVD, PCA from sklearn.datasets import load_iris import matplotlib.pyplot as plt %matplotlib inline from sklearn.preprocessing import StandardScaler iris In [2]: iris = load_iris() iris_ftrs = iris.data SVD 변환 (스케일 전) In [3]: # 2개의 주요 component로 TruncatedSVD 변환 tsvd = TruncatedSVD(n_components=2) tsvd.fit(iris_.. 2023. 2. 13.
[Dimension Reduction] LDA 변환 LDA¶ In [1]: from sklearn.discriminant_analysis import LinearDiscriminantAnalysis from sklearn.preprocessing import StandardScaler from sklearn.datasets import load_iris import pandas as pd import matplotlib.pyplot as plt %matplotlib inline In [2]: iris = load_iris() iris_scaled = StandardScaler().fit_transform(iris.data) LDA 변환 In [3]: lda = LinearDiscriminantAnalysis(n_components=2) lda.fit(ir.. 2023. 2. 13.
[Dimension Reduction] PCA components 기반 변환 PCA ¶ Data source: https://archive.ics.uci.edu/ml/datasets/default+of+credit+card+clients In [1]: import pandas as pd import seaborn as sns import matplotlib.pyplot as plt %matplotlib inline # PCA from sklearn.decomposition import PCA from sklearn.preprocessing import StandardScaler # model import numpy as np from sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import.. 2023. 2. 13.
[Machine Learning] 차원 축소 차원 축소 (Dimension Reduction) 매우 많은 피처로 구성된 다차원 데이터 세트의 차원을 축소해 새로운 차원의 데이터 세트를 생성하는 기법입니다. *차원 증가의 한계 1) 수백 개 이상의 피처로 구성된 데이터 세트일수록 예측 신뢰도가 떨어집니다. 상대적으로 적은 차원에서 학습된 모델의 예측 신뢰도가 더 높습니다. 2) 피처가 많아질수록 개별 피처간에 상관관계가 높을 가능성이 커집니다. 특히, 선형 모델에서는 입력 변수 간의 상관관계가 높을 경우로 인한 다중 공선성 문제로 모델의 예측 성능이 저하됩니다. 3차원 이하의 차원 축소를 통해서 시각적으로 데이터를 압축해서 표현하면 직관적을 데이터를 해석할 수 있습니다. 함축적인 특성 추출은 기존 피처가 전혀 인지하기 어려웠던 잠재적인 요소를 추출하.. 2023. 2. 13.
728x90