[ZB] TeamProject 2 - 데이터 EDA

porii·2024년 11월 12일

[edu] zerobase

목록 보기
18/28

데이터 EDA _ 1105

데이터 개요

fraud_bool사기계좌 여부credit_risk_score신용 위험 점수
income수입email_is_free도메인 유료 여부
name_email_similarity이름-이메일 유사성housing_status거주 상태
prev_address_months_count이전 주소 월 수phone_home_valid집전화 유효 여부
current_address_months_count현 주소 월 수phone_mobile_valid휴대전화 유효 여부
customer_age나이bank_months_count
days_since_request신청 이후 일수has_other_cards해당 은행 다른 카드 소유 여부
intended_balcon_amount초기 이체 금액proposed_credit_limit신용 한도
payment_type지불 방식foreign_request외국인 여부
zip_count_4w우편번호 신청 건수source신청 소스
velocity_6h개설 신청 속도_6hsession_length_in_minutes사용자 세션 길이
velocity_24h개설 신청 속도_24hdevice_os신청 장치
velocity_4w개설 신청 속도_4wkeep_alive_session세션 활성화 유지 여부
bank_branch_count_8w은행 지점별 신청 건수device_distinct_emails_8w장치별 이메일 수
date_of_birth_distinct_emails_4w생년월일별 이메일 수device_fraud_count장치별 사기 수
employment_status고용 상태month

<취합본 내용>

# 카테고리컬 데이터 분석 1
# 구성 확인 및 사기 비율 확인
# 평균 fraud 비율(1.1%)과 비슷하거나 더 많은 클래스 확인

# payment_type = ['AC', 'AB']
# 'AC'의 경우 3번째로 사용하는 타입인데도 불구하고 fraud 비율이 높은 편이다. (1.67%)

# employment_status = ['CC', 'CA', 'CG']
# 소비자 대부분이 'CA'이다. 'CC'는 아주 높은 편이다. (2.47%)

# housing_status = ['BA']
# 'BA'는 4번째로 거주하는 사람이 많은 경우임에도 불구하고 fraud 비율이 높은 편이다. (3.75%)

# device_os = ['window', 'macintosh', 'x11']
# 'window'로 사기를 시도하는 경우가 매우 많다. (2.47%) (macintosh:1.40%)

---

# 카테고리컬 데이터 분석 2
# employment_status, housing_status, device_os 3차원 플랏

# [overview]
# 3개의 feature는 유용한 것으로 판단된다.
# 군집이 발견되긴 하나 확률이 높은 편이 아니라서 3개 만으로 분류할 순 없다.
# 따라서, 추가로 다른 feature를 활용해야만 한다. (numerical)
# 군집별로 분류를 진행하는 것도 괜찮아 보인다.

# [확률 높은 케이스]
# device_os - housing_status - employment_status
# mac-BF-CF 조합은 100% 확률로 사기다. (1개, 의미 없음)
# mac-BB-CG 조합은 33% 확률로 사기다. (1개, 의미 없음)
# mac-BG-CA 조합은 17% 확률로 사기다.( 1개, 의미 없음)
# win-BA-CG 조합은 14% 확률로 사기다. (3개, 의미 없음)
# win-BA-CC 조합은 10% 확률로 사기다. (343개) (!) -> 군집 발견
# mac-BA-CD 조합은 9% 확률로 사기다. (5개, 의미 없음)
# win-BA-CA 조합은 5% 확률로 사기다. (343개) (!) -> 군집 발견
# mac-BA-CA 조합은 7% 확률로 사기다. (3277개) (!) -> 군집 발견

---

# numerical 데이터 분석 1 (categorical같은)

# foreign_request = [1]
# foreign_request는 1인 경우가 적은데 사기인 경우가 많다. (2.20%)

# keep_alive_session는 = [0]
# keep_alive_session는 0과 1이 비슷한 양이며 0에서 사기인 경우가 많다. (1.72%)

# device_distinct_emails_8w = [2, 0]
# device_distinct_emails_8w은 1인 경우가 대부분이다. 2와 0인 경우 사기 비율이 높다. (4.09%, 2.41%)

# 3개 컬럼 ['foreign_request', 'keep_alive_session', 'device_distinct_emails_8w']

---

# numerical 데이터 분석 2
# 바이올린 플랏의 shape이 다른 feature 선별

# 큰 분포 차이 : ['income', 'name_email_similarity']
# 작은 분포 차이 : ['current_address_months_count', 'customer_age', 'credit_risk_score', 'proposed_credit_limit']

---

# 통합 데이터 분석 1
# 카테고리컬만 활용해서 군집 추출
# 기준: 2000명 이상, 5% 이상

# ['housing', 'os', 'keep_alive'] -> ['BA', 'win', 0] : 9%, 2669
# ['housing', 'os', 'forign'] -> ['BA', 'win', 0] : 7%, 3713
# ['employment', 'housing', 'os'] -> ['CA', 'BA', 'win'] : 7%, 3277
# ['employment', 'housing', 'keep_alive'] -> ['CA', 'BA', 0] : 6%, 3580
# ['housing', 'os', 'dist_emails'] -> ['BA', 'win', 1] : 6%, 3543
# ['housing', 'forign', 'keep_alive'] -> ['BA', 0, 0] : 5%, 4103
# ['housing', 'keep_alive', 'dist_emails'] -> ['BA', 0, 1] : 5%, 4103

---

# 통합 데이터 분석 2
# Top3 군집에 대한 numerical 분석

# ['employment', 'housing', 'os'] -> ['CA', 'BA', 'win'] : 7%, 3277
# ['housing', 'os', 'forign'] -> ['BA', 'win', 0] : 7%, 3713
# ['housing', 'os', 'keep_alive'] -> ['BA', 'win', 0] : 9%, 2669
# 각 군집별로 봤을 때 확률분포의 뚜렷한 유의차를 발견하기 힘들다.


Data EDA _ 1108

payment_typeemployment_typehousing_statussourcedevice_os
0AACABAINTERNETlinux
1ABCBBBTELEAPPmacinotosh
2ACCCBCother
3ADCDBDwindows
4AECEBEx11
5CFBF
6CFBG
  • object 컬럼 int형태로 변형
  • fraud_bool=0의 비율을 낮추어서 모델의 recall값을 올릴 수 있다
  • f1-score 가 높아질수록 좋은 것

To do

  • 머신러닝 코드 dacon에서 검색해서 참고해봐
  • TabNet 공부
  • 현재까지의 스토리 작성
  • TabNet 적용해서 f1 높게 만들기
    • learning rate 잘 설정

0개의 댓글