본문 바로가기

Machine Learning71

Wilcoxon rank sum test (윌콕슨 순위 합 검정) 🎯 윌콕슨 순위 합 검정윌콕슨 순위합 검정(종종 윌콕슨 맨-휘트니 검정)이라고도 불리며, 두 독립적인 그룹 간의 차이를 평가하기 위한 비모수적 방법이다.데이터를 정규분포로 가정하지 않고, 데이터의 순위를 사용하여 두 그룹간 차이를 검정한다.주로 두 그룹의 중앙값의 차이를 비교하는데 사용된다. 보통 많은 경우, 샘플 데이터들이 정규 분포로부터 추출되었다고 보거나, 샘플 수가 많으면 샘플 평균은 정규 분포를 따르기 때문에(중심극한정리에 따라) t-test나 ANOVA가 널리 쓰인다.그런데, 이런 가정을 만족하지 못하는 경우에는 모수 검정법이 아닌 비모수 검정법을 사용해야 한다.  ▶︎ 모집단의 분포가 정규 분포라고 확신하기 어려운 경우▶︎ 데이터 샘플 수가 너무 적은 경우 이런 경우 independent.. 2024. 5. 20.
[회귀] 회귀 모델의 R2(결정계수)를 올리는 방법 결정계수가 낮은 원인을 세 가지 범주로 나누어 살펴본다 데이터의 특성과 분석의 목적에 따라 상황이 다를 수 있으므로 고려해야 할 범주를 기준으로 문제의 원인을 파악하고 적절한 조치를 취한다 1. 모델 문제 모델이 단순하거나 제한적일 경우 : 모델이 데이터의 복잡성을 충분히 반영하지 못할 경우 (예를 들어) 모델이 선형성을 가정하지만, 실제 데이터가 비선형 관계를 가지고 있는 경우 적합하지 않은 모델 선택 종속변수와 독립변수 간의 관계를 잘 나타내지 못하는 모델을 선택했을 경우 결정계수가 낮아짐 ▶︎ Solution 👉 다른 모델을 사용해 볼 것 : 선형 회귀, 릿지 회귀, 라쏘 회귀, 결정 트리, 랜덤 포레스트, 그라디언트 부스팅, 서포트 벡터 머신, 다항회귀 👉 다양한 모델을 시도하고, 교차 검증을 통.. 2024. 2. 21.
[회귀] 선형회귀와 결정계수(R-squaured) 선형 회귀 종속변수(매출, 만족도 등)의 차이가 어디에서 비롯되는지 알고자 할 때 사용하는 알고리즘 종속변수를 가장 잘 설명/예측(Best-fit) 하는 선형관계를 찾는 방법 1. 계산 방법 (Least Squares) y = b0 + b1 * x + error b0 : y축 절편(intercept)으로, 예측변수가 0일 때 기대 점수 b1 : 기울기 x가 한 단위 증가했을 때 y의 평균적인 변화 값 2. P-value(Probability-Values) 통계적 유의성을 나타내는 수치 : x, y 사이에 발견된 관계가 통계적으로 유의미한가 데이터를 통해 확인한 관계가 우연히 나왔을 확률 예를 들어, p값이 0.03이라면 x, y 사이에 선형적 관계가 없는데도 불구하고, 데이터 샘플링의 실수로 우연히 관계.. 2024. 2. 12.
[Pandas] 파이썬으로 이커머스 데이터 A/B test 결과 해석 (feat. 통계 검정) 데이터 출처 : 케글 https://www.kaggle.com/code/sergylog/ab-test-data-analysis 라이브러리 & 데이터 불러오기 import numpy as np import pandas as pd from scipy.stats import mannwhitneyu from scipy.stats import ttest_ind from scipy.stats import norm from scipy.stats import pearsonr from scipy.stats import shapiro import matplotlib.pyplot as plt import seaborn as sns from tqdm.auto import tqdm df = pd.read_csv('AB_Test.. 2024. 1. 30.
[Home Credit Default Risk] 5. 이전 대출이력 데이터 EDA, FE 수행(수정중) 📍데이터 설명 : Previous_Application 이 케글 대회는 대출 정보에 따라 연체 여부를 예측할 수 있는 메인 train 데이터 외에, 고객 별로 이전 대출 이력 현황 데이터도 제공하고 있다. 이전 대출이력 데이터를 가공하여, 메인 데이터 셋과 결합하여 예측 결과가 나아지는지 확인해보자. 자세한 데이터셋과 컬럼 설명은 케글에서 확인하세요! 데이터 로딩 prev = pd.read_csv('previous_application.csv') print(prev.shape, apps.shape) 메인 데이터셋과 조인하여 key(ID) 값 기준으로 체크 메인 데이터셋인 apps 데이터와 조인 이때, 키 값인 SK_ID_CURR 기준으로 merge 하되, indicator를 설정하여 두 데이터의 id 차.. 2023. 11. 15.
[Home Credit Default Risk] 4. 이전 대출 이력 데이터 EDA 및 병합 1. 이전 application(메인데이터) 의 Feature Engineering 함수 복사 def get_apps_processed(apps): # EXT_SOURCE_X FEATURE 가공 apps['APPS_EXT_SOURCE_MEAN'] = apps[['EXT_SOURCE_1', 'EXT_SOURCE_2', 'EXT_SOURCE_3']].mean(axis=1) apps['APPS_EXT_SOURCE_STD'] = apps[['EXT_SOURCE_1', 'EXT_SOURCE_2', 'EXT_SOURCE_3']].std(axis=1) apps['APPS_EXT_SOURCE_STD'] = apps['APPS_EXT_SOURCE_STD'].fillna(apps['APPS_EXT_SOURCE_STD']... 2023. 11. 9.
[Home Credit Default Risk] 3.주요 Feature들에 대한 feature engineering 1. 결측치 처리 앞선 EDA와 분포 시각화, 베이스라인 모델링의 feature Importance를 토대로 주요 피쳐를 선정 각 피쳐의 null 값 확인 app_train[['EXT_SOURCE_1', 'EXT_SOURCE_2', 'EXT_SOURCE_3']].isnull().sum() # dropna = false 로 null 값 개수까지 확인 app_train['EXT_SOURCE_1'].value_counts(dropna=False) app_train['EXT_SOURCE_2'].value_counts(dropna=False) app_train['EXT_SOURCE_3'].value_counts(dropna=False) 주요 피쳐들의 평균/최대/최소/표준편차를 확인 # EXT_SOURCE_X 피처.. 2023. 10. 31.
[Home Credit Default Risk] 2. 주요 Feature에 대한 EDA 1. 연속형 피쳐의 분포 시각화(Target 값에 따라) 함수를 이용하여, 컬럼별로 target값이 0, 1일 때 시각화하기 violinplot, distplot 사용 결과를 보며, target 에 따라 유의미한 차이가 나는 피쳐 확인 >> 피쳐 중요도 파악 👉 연령대가 낮은(또는 직장 경력이 적은), 소액 대출 건에서 연체 비중이 높아 보임 def show_hist_by_target(df, columns): # 타겟 값에 따른 조건 지정 cond_1 = (df['TARGET'] == 1) cond_0 = (df['TARGET'] == 0) # 그래프 그리기 for column in columns: print('column name: ', column) #확인용 fig, axs = plt.subplots.. 2023. 10. 30.
[Home Credit Default Risk] 1. 데이터 분포 시각화, 라벨 인코딩 1. 타겟 값 분포 & 주요 컬럼의 분포 확인하기 데이터의 타겟 값(대출 연체 여부)를 확인한다. >> 각 값(0, 1)의 개수와 비율 app_train['TARGET'].value_counts() app_train['TARGET'].value_counts() / 307511 * 100 타겟의 null 값 확인 apps['TARGET'].value_counts(dropna=False) 주요 컬럼의 분포를 히스토그램으로 확인한다 sns.distplot(app_train['AMT_INCOME_TOTAL']) plt.hist(app_train['AMT_INCOME_TOTAL']) 일부 필터도 적용해본다 (예를 들어, 소득이 1,000,000 이하인 선에서 주요 컬럼의 분포) cond_1 = app_train[.. 2023. 10. 30.
728x90