AI & Data를 활용하는 기술경영자

Home_Credit Default_Risk Kaggle 필사 본문

Kaggle 필사

Home_Credit Default_Risk Kaggle 필사

Data_Lover 2022. 5. 9. 00:05
728x90

최종 코드

 

GitHub - qsdcfd/kaggle

Contribute to qsdcfd/kaggle development by creating an account on GitHub.

github.com

 

캐글 필사하면서 배우게 된 것을 정리한 것입니다.(2022.04.25 ~ 2022.05.06)

 

Intro

 

Home Credit은 고객의 상환 능력을 예측하기 위해 통신 및 거래 정보를 포함한 다양한 대체 데이터와 다양한 통계 및 기계학습 방법을 이용하여 상환 능력이 있는 고객들이 거절당하지 않고 대출자들에게 성공하기 위한 원금, 만기, 상환 달력이 주어지도록 만드는 것이 목적입니다.

 

ROC curve

 

톺아보기

 

FPR(false positive rate): 0인 케이스에 대해 1로 틀리게 예측하는 비율(1-Specificity)

TPR(True positive rate): 1인 케이스에 대해 1로 바르게 예측하는 비율(Sensitivity)

 

정의: FPR과 TPR을 각각 x,y 축으로 그린 그래프로 모델의 판단 기준을 연속적으로 바꿔서 측정하여 FPR과 TPR의 변화를 나타냅니다.

 

특징: 어떤 모델이 좋은 성능을 보이는 판단할 때 사용이 되므로 민감도(sensitivity)와 특이도(specificity)가 높다면(좌상단 치우칠 수록) 가장 성능이 좋은 모델일 것이라고 판단됩니다.

 

조건: 최소한 2개 이상의 변수가 있어야하고, 두 개의 변수 중 하나는 반드시 진단 결과 혹은 검사 결과를 나타내는 이분형 변수이어야 합니다.

 

사용 이유: 검사도구의 유용성을 판단하거나 정확도를 평가하는데 사용 혹은 진단을 위한 도구 개발에선 검사의 기준점으로 설정이 되기 때문입니다. 이러한 이유로 이번 캐글에서도 환급 받을 환자 혹은 고객이 맞는지 아닌지에 대해서 Evaluation 한다고 합니다.

 

 

Data Aggregation

 

톺아보기

 

raw data:  정제되지 않은 상태의 원본 데이터로 하나의 열에 해당 열의 값만 포함하고 있는 형태이지만 시각화 차트를 만들 때 필요한 형식입니다.

 

정의: 정보를 수집하여 요약 및 표현하는 과정으로 데이터 해석에서 가장 중요한 부분으로 raw data를 가지고 여러 가지 다양한 통계표를 만드는 과정입니다.

 

이러한 이유로 집산은 데이터 하나로 수 많은 차트를 만드는 방법으로 불립니다.

 

집산 결과: 로우 데이터와 다르게 하나의 cell value가  그 위치를 기준으로 행과 열의 의미를 둘 다 갖습니다.

그 결과, 로우 데이터를 특정 기준으로 묶어서 데이터 셋을 추출하고 이를 통해서 데이터 분석 및 인사이트 도출이 가능해집니다.

 

*이미지로 보는 데이터 집산 결과*

데이터 큐브(Data Cube)

 

정의: 데이터 집산을 수행하면 보통 범위가 줄어들기에 많은 양의 데이터를 탐색할 때 유용합니다.

그래서, 데이터 큐브라는 개념을 통해서 집산의 과정을 설명하곤 합니다.

그림을 설명하자면, 기준별로 집산의 과정을 따르게 되면 범위가 줄어들어서 결국 1이 됩니다. 그러면 이 1이된 데이터는 구체적이고 개별적인 정보가 특정 기준에 따라서 추상화된 것으로 볼 수 있습니다.

 

 

정리

 

통계표는 로우 데이터를 특정 기준으로 집산한 결과물로 하나의 로우 데이터를 활용해도 어떤 기준으로 집산하느냐에 따라서 다수의 통계표와 다수의 시각화 차트를 얻을 수 있습니다.

 

집산의 기준이 되는 변수의 유형-수치형 변수, 범주형 변수에 따라서 두 가지 유형으로 나눌 수 있습니다.

 

수치형 변수를 활용한 집산은 합계, 평균, 최댓값, 최솟값 등 데이터의 계산 방식을 달리합니다.

범주형 변수를 활용한 집산은 성, 연령, 지역, 날짜 등의 기준으로 데이터를 묶고 이 경우 어떤 유형인가에 따라서 효과적인 시각화의 유형이 달라집니다.

 

집산의 기준을 데이터 필터의 기준으로 활용하면 대시보드에서의 데이터 탐색 시 효율적으로 활용이 가능할 것입니다.

 

 

 

DataFrame Merge

merge()함수는 두 데이터 프레임의 고유값을 기준으로 병합할 때 사용합니다.

merge()함수의 how 디폴트 옵션은 공통 열이름을 기준으로 inner join을 수행합니다.

두 데이터프레임의 key값이 달라도, left_on과 right_on 옵션을 활용하여 key값을 지정한 후 how 옵션을 활용하면 됩니다.

 

*Merge open source*

 

*오픈 소스 필사*

 

 

 

*활용 코드*

 

df1 = pd.DataFrame({
    'data1':range(6),
    'key':list('aabbcc')
})

df2 = pd.DataFrame({
    'data2':range(3),
    'key':list('cad')
})

print(df1, '\n\n', df2)

#결과

   data1 key
0      0   a
1      1   a
2      2   b
3      3   b
4      4   c
5      5   c 

    data2 key
0      0   c
1      1   a
2      2   d
pd.merge(df1, df2) #merge(how='inner')

pd.merge(df1, df2, on='key', how='outer') # merge(how='outer')

pd.merge(df1, df2, on='key', how='left')  # merge(how='left')

pd.merge(df1, df2, on='key', how='right') # merge(how='right')

### New version

df1 = pd.DataFrame({
    'data1' : range(7),
    'lkey' : list('abcabca')
})

df2 = pd.DataFrame({
    'data2' : range(3),
    'rkey' : list('abd')
})

pd.merge(df1, df2, left_on='lkey', right_on='rkey') # left_on & right_on

 

유사 기능

 

pd.concat() : 두 데이터 프레임을 병합만 하는 것으로 열 인덱스가 맞지 않으면 NaN처리하지만 fillna메소드로 처리 가능합니다. 추가적으로 ignore_index를 통해서 행 인덱스를 재배열 합니다.

 

pd.join() : merge()함수 기반으로 만들어서 작동 방식은 비슷하지만 행 인덱스 기준으로 데이터프레임 병합

 

Python Iterate

 

정의: 값을 차례대로 꺼낼 수 있는 반복 가능한 객체입니다.

 

장점: 숫자가 많아질수록 메모리의 사용량이 늘어나게 되므로 성능 저하가 일어납니다. 이때, 이터레이터를 활용하여 값이 필요한 특정 시점에만 값을 만드는 방식(지연 평가)을 사용하면 성능 저하를 방지할 수 있습니다

 

정리: 반복 가능한 객체는 요소를 한 번에 하나씩 가져올 수 있는 객체이고, 이터레이터는 __next__ 메서드를 사용해서 차례대로 값을 꺼낼 수 있는 객체입니다.

 

**iterate 뜯어보기**

 

    # 캐글 코드 속 이터레이터
    #Interate through the variables names
    for var in agg.columns.levels[0]:
        #Skip the grouping variable
        if var != group_var:
            #Iterate through the stat names
            for stat in agg.columns.levels[1][:-1]:
                #make a new colum name for the variable and stat
                columns.append('%s_%s_%s' % (df_name, var, stat))

    agg.columns = columns
    return agg

 

Algorithm A/B Test

 

TEST의 주의사항

 

집단 특성간 차이를 고려하여 OMTM 혹은 핵심 지표기준 달성 목표를 생각해야 합니다. 

 

실제로일어난 사실을 근거로 테스트를 해야합니다.

 

새로운 알고리즘이나 로직이 기존 알고리즘 대비 얼마나 성능 개선

 

기업과 비즈니스에 각각의 테스트가 어떤 도움을 줄 것인지 설명

 

정의: 두 개의 변형 A와 B를 사용하는 종합 대조 실험으로 통계 영역에서 사용되는 "2- 표본 가설 검정"의 한 형태이다.

 

 

특성집단을 반영한 세그먼트간 A/B Test

A/B Test는 보통 모든 사용자에게 동일한 확률로 같은 변형을 적용하지만 응답이 이질적일 수 있습니다.

 

이때, A Test set 응답률이 높을 수도 있고 혹은 B Test set(고객 기반의 특정 세그먼트) 가 높을 수도 있습니다.

 

전략 수집을 어떻게 해야할까요?

 

A/B TEST의 결과로 세분화 전략을 취해서, 남성에게는 B를 보내고 여성에게는 A를 보낼 수 있습니다. 

즉, 개인화된 A/B 테스트를 통해서 남성 응답률이 증가할 것을 예상할 수 있다는 결론을 내릴 수 있습니다.

 

A/B 테스트 프로세스

 

1. 기존에 존재하는 데이터를 분석

2. 목표 구체화

3. 지표 선정

4. 가설 수립

5. 실험을 설계 및 실행( A/B TEST 샘플링 과정 포함)

6. 결과 분석

728x90