광고 전환 확률 예측 모델 구현(CVR Prediction)

2023. 3. 9. 22:53·My Study/Project
728x90
반응형

Github : https://github.com/jgyy4775/AD-CVR-Prediction

 

GitHub - jgyy4775/AD-CVR-Prediction

Contribute to jgyy4775/AD-CVR-Prediction development by creating an account on GitHub.

github.com

 

- Dataset

https://ailab.criteo.com/criteo-sponsored-search-conversion-log-dataset/

 

Criteo Sponsored Search Conversion Log Dataset - Criteo AI Lab

Dataset release announcement for conversion modeling in sponsored products.

ailab.criteo.com

 

 

▶ 데이터 구조

총 23개의 정보로 구성

Sale, SalesAmountInEuro, Time_delay_for_conversion, click_timestamp, nb_clicks_1week, product_price, product_age_group, device_type, audience_id, product_gender, product_brand, product_category(1-7), product_country, product_id, product_title, partner_id, user_id

=> 이중 하늘색 Sale은 정답 라벨로 사용, 분홍색은 모델의 input 데이터로 사용

​

▶ read_csv 함수를 이용해 데이터를 읽음

self.data=pd.read_csv('CriteoSearchData', delimiter='\t', names=data_names, nrows=1500000)

delimiter : 구분자

names : 변수 이름이 없는 파일을 불러올 때 이름 부여

nrows : 전체 데이터 중 몇개의 행만 사용할건지.

 

 

▶ Data Processing

1. time 정보는 day, hour, minute로 변경

self.data['click_timestamp'] = self.data["click_timestamp"].map(lambda x: int(x/1000)) # change second
self.data['day'] = self.data["click_timestamp"].map(lambda x: int(x/86400)) # get day
self.data['hour'] = self.data["click_timestamp"].map(lambda x: int(x%86400/3600)) # get hour
self.data['minute'] = self.data["click_timestamp"].map(lambda x: int(x%86400%3600/60))  # get minute

(확실하지는 않지만.. )click_timestamp는 1970.01.01 부터 현재까지의 시간을 밀리초로 나눈것으로 판단=> 이걸 day, hour, minute으로 변경

​

​

2. product_age_group, device_type과 같은 정보들은 총 몇개의 클래스가 존재하는지 'a'라는 클래스가 몇번 라벨을 갖는지 모르기 때문에 이를 자동으로 매핑해주는 sklearn.preprocessing의 LabelEncoder()함수를 이용해 문자를 숫자로 매핑, 아래 처럼 사용

le = LabelEncoder()
self.data["열 이름"]=le.fit_transform(self.data["열 이름"])

 

3. sklearn.preprocessing의 MinMaxScaler() 함수를 사용해 0~1 사이로 normalize

mms = MinMaxScaler()
self.data[self.data.columns] = mms.fit_transform(self.data[self.data.columns])

 

 

▶ 모델 구성

간단하게 1계층으로만 구성

class CVRModel(nn.Module):
    def __init__(self, input_dim, output_dim):
        super(CVRModel,self).__init__()
        self.input_dim = input_dim
        self.output_dim = output_dim
        self.fc = nn.Sequential(
            nn.Linear(self.input_dim, self.output_dim),
            nn.Dropout(0.3),
            nn.Sigmoid()
        )

 

 

▶ 데이터 분할

- Train Set : 1,000,000​​

- Test Set : 500,000

 

​

▶ 하이퍼 파라미터 설정

BATCH = 20000
EPOCHS = 200
optimizer = torch.optim.Adam(model.parameters(), lr=1e-5)

## loss 함수
loss=F.binary_cross_entropy(logits.squeeze(), y_train)

 

 

▶ Test 정확도

평가 지표 : Accuracy 사용

약 88.5172%의 성능을 기록

728x90
반응형
저작자표시 (새창열림)

'My Study > Project' 카테고리의 다른 글

Apple Machine Learning Research 사이트  (0) 2023.09.19
개인 프로젝트 - 채용 공고 추천(프로그래머스-신경망 ver)  (0) 2023.03.09
개인 프로젝트 - 채용 공고 추천( 프로그래머스)  (0) 2023.03.09
'My Study/Project' 카테고리의 다른 글
  • Apple Machine Learning Research 사이트
  • 개인 프로젝트 - 채용 공고 추천(프로그래머스-신경망 ver)
  • 개인 프로젝트 - 채용 공고 추천( 프로그래머스)
ga.0_0.ga
ga.0_0.ga
    반응형
    250x250
  • ga.0_0.ga
    ##뚝딱뚝딱 딥러닝##
    ga.0_0.ga
  • 전체
    오늘
    어제
    • 분류 전체보기 (181)
      • Paper Review (51)
        • Video Scene Graph Generation (6)
        • Image Scene Graph Generation (18)
        • Graph Model (5)
        • Key Information Extraction (4)
        • Fake Detection (2)
        • Text to Image (1)
        • Diffusion Personalization (4)
        • etc (11)
      • AI Research (49)
        • Deep Learning (30)
        • Artificial Intelligence (15)
        • Data Analysis (4)
      • Pytorch (10)
      • ONNX (5)
      • OpenCV (2)
      • Error Note (34)
      • Linux (2)
      • Docker (3)
      • Etc (7)
      • My Study (16)
        • Algorithm (10)
        • Project (4)
        • Interview (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    TypeError
    오차 역전파
    JNI
    forch.nn.functional
    그래프신경망
    pandas
    dataset
    활성화 함수
    3dinput
    torch.nn
    transformer
    나이브 베이즈 분류
    dataloader
    ONNX
    Logistic regression
    Inductive bias
    linear regression
    GCN
    RuntimeError
    Activation Function
    HRNet
    차원의 저주
    i3d
    permute
    알고리즘
    fine tuning
    pytorch
    tensorflow
    정규화
    contiguous
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
ga.0_0.ga
광고 전환 확률 예측 모델 구현(CVR Prediction)
상단으로

티스토리툴바