Data: LG Aimers 제공, 외부 데이터 이용 금지

고객 지수 산출을 위해 MQL 고객 정보를 활용해 영업 전환 성공 여부를 예측하는 AI 모델 개발

진행단계

  1. 데이터 파악: 칼럼 30개, Y-True:1, False0, 텍스트 데이터: 요청-메시지 영어로 작성됨
  2. 전처리 및 가공변수 생성 결측치 채우기, 범주형 변수 → 수치로 인코딩, 가공변수 생성
  3. 모델 학습 true, false니까 이진분류모델
  4. f1-score, sum(true)값 확인해서 f1-score 0.6이상, sum(true)값 1000이상일 경우 제출해서 public score확인

데이터 전처리 논의

Field 설명
bant_submit MQL 구성 요소들 중 [1]Budget(예산), [2]Title(고객의 직책/직급), [3]Needs(요구사항), [4]Timeline(희망 납기일) 4가지 항목에 대해서 작성된 값의 비율
customer_country 고객의 국적
business_unit MQL 요청 상품에 대응되는 사업부
com_reg_ver_win_rate Vertical Level 1, business unit, region을 기준으로 oppty 비율을 계산
customer_idx 고객의 회사명
customer_type 고객 유형
enterprise Global 기업인지, Small/Medium 규모의 기업인지
historical_existing_cnt 이전에 Converted(영업 전환) 되었던 횟수
id_strategic_ver (도메인 지식) 특정 사업부(Business Unit이 ID일 때), 특정 사업 영역(Vertical Level1)에 대해 가중치를 부여
it_strategic_ver (도메인 지식) 특정 사업부(Business Unit이 IT일 때), 특정 사업 영역(Vertical Level1)에 대해 가중치를 부여
idit_strategic_ver Id_strategic_ver이나 it_strategic_ver 값 중 하나라도 1의 값을 가지면 1 값으로 표현
customer_job 고객의 직업군
lead_desc_length 고객이 작성한 Lead Descriptoin 텍스트 총 길이
inquiry_type 고객의 문의 유형
product_category 요청 제품 카테고리
product_subcategory 요청 제품 하위 카테고리
product_modelname 요청 제품 모델명
customer_country.1 담당 자사 법인명 기반의 지역 정보(대륙)
customer_position 고객의 회사 직책
response_corporate 담당 자사 법인명
expected_timeline 고객의 요청한 처리 일정
ver_cus 특정 Vertical Level 1(사업영역) 이면서 Customer_type(고객 유형)이 소비자(End-user)인 경우에 대한 가중치
ver_pro 특정 Vertical Level 1(사업영역) 이면서 특정 Product Category(제품 유형)인 경우에 대한 가중치
ver_win_rate_x 전체 Lead 중에서 Vertical을 기준으로 Vertical 수 비율과 Vertical 별 Lead 수 대비 영업 전환 성공 비율 값을 곱한 값
ver_win_ratio_per_bu 특정 Vertical Level1의 Business Unit 별 샘플 수 대비 영업 전환된 샘플 수의 비율을 계산
business_area 고객의 사업 영역
business_subarea 고객의 세부 사업 영역
lead_owner 영업 담당자 이름
is_converted 영업 성공 여부. True일 시 성공.
줄쳐진거는 삭제할거
빨간색은 사용할 칼럼
파란색은 합칠 칼럼들
노랑색은 전처리 해야할 칼럼들_남은거
ver_~~ 그대로 사용
 #   Column                   Non-Null Count  Dtype
---  ------                   --------------  -----
 **0   bant_submit              59299 non-null  float64**
 ~~1   customer_country         58317 non-null  object~~
 2   business_unit            59299 non-null  object
 **3   com_reg_ver_win_rate     14568 non-null  float64**
 ~~4   customer_idx             59299 non-null  int64~~
 **5   customer_type            15338 non-null  object**
 6   enterprise               59299 non-null  object
 **7   historical_existing_cnt  13756 non-null  float64**
 8   id_strategic_ver         3444 non-null   float64
 9   it_strategic_ver         1121 non-null   float64
 ~~10  idit_strategic_ver       4565 non-null   float64
 11  customer_job             40566 non-null  object~~
 12  lead_desc_length         59299 non-null  int64
 13  inquiry_type             58358 non-null  object
 **14  product_category         39925 non-null  object**
 ~~15  product_subcategory      9235 non-null   object
 16  product_modelname        9229 non-null   object
 17  customer_country.1       58317 non-null  object
 18  customer_position        59299 non-null  object~~
 **19  response_corporate       59299 non-null  object**
 **20  expected_timeline        28436 non-null  object**
 **21  ver_cus                  59299 non-null  int64
 22  ver_pro                  59299 non-null  int64
 23  ver_win_rate_x           18417 non-null  float64
 24  ver_win_ratio_per_bu     15304 non-null  float64**
 **25  business_area            18417 non-null  object**
 ~~26  business_subarea         5526 non-null   object~~
 **27  lead_owner               59299 non-null  int64
 28  is_converted             59299 non-null  bool**

Response_corporate, timeline인코딩 부분 코드

1. 데이터 확인

# 호출
import pandas as pd
import numpy as np
from sklearn.metrics import (
    accuracy_score,
    confusion_matrix,
    f1_score,
    precision_score,
    recall_score,
)
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
df_train = pd.read_csv("train.csv") # 학습용 데이터
df_test = pd.read_csv("submission.csv") # 테스트 데이터(제출파일의 데이터)