본문 바로가기
STUDY

[멋쟁이사자처럼부트캠프_그로스마케팅] Day 23 선형 회귀분석 복습, 실습

by vol2 2025. 3. 10.

 

 

     

     

     

    오늘은 전에 했던 거 복습을 했다. day 24는 밥먹고 와서 하는걸루.

    • 데이터 전처리와 특징 엔지니어링
    • 선형 회귀 개념과 원리

     

    1. 데이터 전처리 (Data Preprocessing)

    데이터 분석의 첫 번째 단계로, 데이터를 정리하고 모델 학습에 적합한 형태로 변환하는 과정이다.

     

    1) 데이터 탐색 및 정리

    • 데이터를 로드하고 기본 통계(분포, 데이터 타입 등)를 확인
      • df.info(), df.describe()
    • 시각화: matplotlib, seaborn 등을 사용해 변수 간 관계 탐색

    2) 결측값(Missing Values) 처리

    • df.isnull().sum() 으로 결측값 확인
    • 평균/중앙값 대체 (df.fillna()), 특정 행 제거 (df.dropna())

    3) 이상치(Outliers) 처리

    • 박스플롯(sns.boxplot())으로 이상치 탐색
    • IQR(사분위 범위) 기반 이상치 제거

    4) 데이터 정규화 및 스케일링

    • 데이터 크기 차이를 맞추기 위해 사용
    • 표준화(Standardization) → StandardScaler() (평균 0, 분산 1로 변환)
    • 정규화(Normalization) → MinMaxScaler() (값을 0~1 범위로 변환)

     

    2. 특징 엔지니어링 (Feature Engineering)

    모델 성능을 향상시키기 위해 적절한 특징을 생성하거나 변환하는 과정

     

    1) 새로운 특징 생성

    • 기존 변수를 조합하여 새로운 특징 생성
      • (예) 구매 주기 = (마지막 주문일 - 첫 주문일) / 총 주문 횟수
    • 날짜 정보 변환
      • (예) df['가입 연도'] = df['가입일'].dt.year
    • 텍스트 데이터 변환 (TF-IDF, 단어 빈도수)
      • TF-IDF (Term Frequency - Inverse Document Frequency)
        • 단순 빈도수(TF)와 희귀성(IDF)를 결합하여 단어의 중요도를 계산하는 방식.

     

     

    2) 특징 선택 (Feature Selection)

    모든 변수를 사용하지 않고, 모델 성능을 높이는 중요한 변수만 선택

    • 상관계수(Correlation) 활용 → df.corr()
    • 중요도 기반 선택 → 랜덤 포레스트(RandomForestClassifier.feature_importances_)
      • 랜덤 포레스트는 여러 개의 의사결정 트리(Decision Tree)를 조합하여 예측하는 앙상블 모델이다. 또한, 각 특징(Feature)이 예측에 얼마나 기여하는지(변수 중요도, Feature Importance)를 확인할 수 있어 특징 선택(Feature Selection)에도 유용함

     

    3) 특징 변환 (Feature Transformation)

    • 로그 변환(Log Transformation)
      • 로그 변환은 데이터가 한쪽으로 치우쳐 있을 때(오른쪽 꼬리 분포) 정규 분포에 가깝게 만들기 위해 사용. 특히 지수적으로 증가하는 값(매출, 인구 수 등)에 유용함.
      • 최근에는 비선형 모델(딥러닝)이 많이 활용되면서, 로그 변환 없이 직접 학습하는 경우도 많음.
    • 차원 축소(Dimensionality Reduction) → PCA(주성분 분석)로 불필요한 차원 제거

     

    3. 머신러닝 적용 예제 (특징엔지니어링 예제)

    고객 유지율 예측

    • 최근 구매 패턴, 구매 간격을 특징으로 활용
    • 예측 모델: 로지스틱 회귀, 랜덤 포레스트

    광고 효율 최적화

    • 광고비와 전환율 관계 분석
    • 특정 고객군에 대한 맞춤 광고 전략 수립

    상품 추천 최적화

    • 고객의 최근 구매 및 클릭 데이터를 활용해 개인화된 추천 시스템 구축

     

    4. 선형 회귀 개념 및 활용

    선형 회귀(Linear Regression)란?

    • 독립 변수(X)와 종속 변수(Y) 간의 선형 관계를 찾아 미래 값을 예측하는 통계적 기법
    • 하지만 현실 데이터에서 단순 선형 관계가 존재하지 않는 경우가 많으며, 코로나, 전쟁 같은 환경적 요인은 단순 회귀 모델로 반영하기 어려움.
    • 최근에는 복잡한 비선형 관계를 학습하는 딥러닝(Quant 모델 등)이 더 많이 활용됨.

     

    실무에서의 활용

    • 전통적 분석 방법: 선형 회귀를 사용하여 변수 간 관계 분석
    • 데이터 중심 접근: 딥러닝 모델을 적용하여 더 높은 예측 성능 확보

     

    5. 회귀분석에 대한 그로스 마케팅 시나리오

    배경: 한 온라인 쇼핑몰의 마케팅 팀은 광고비 지출이 고객 전환(예: 구매, 회원 가입, 앱 다운로드 등)에 미치는 영향을 분석하고자 합니다.

     

     

     

    가상 데이터로 회귀분석 및 보고서 작성 실습 (회귀분석 복습)

     

     


    코드 정리

    dt.days, to_dict, lambda 함수, apply 정의

    • dt.days: 날짜 데이터에서 일 단위 차이 계산
    • to_dict(): 데이터를 딕셔너리 형태로 변환하여 맵핑 가능
    • lambda 함수: 한 줄로 작성할 수 있는 익명 함수
    • apply(): df.apply(함수, axis=1) 형태로 행/열 단위 연산 수행

    1) 고객 유지율 분석

    # 평균 주문 간격 계산 (마지막 주문일 - 첫 주문일) / 총 주문 횟수
    df["평균 주문 간격"] = (df["마지막 주문일"] - df["첫 주문일"]).dt.days / df["총 주문 횟수"]
    
    # 유입 채널별 평균 구매 금액 계산 (각 유입 채널의 평균 구매 금액을 계산 후 매핑)
    channel_avg_purchase = df.groupby("유입 채널")["구매 금액"].mean().to_dict()
    df["유입 채널별 평균 구매 금액"] = df["유입 채널"].map(channel_avg_purchase)
    
    

    설명:

    1. 고객의 평균 구매 주기를 계산하여, 구매 패턴을 분석
    2. 유입 채널(광고, 검색, 추천 등) 별로 평균 구매 금액을 계산하여, 어떤 채널이 높은 전환율을 보이는지 분석

     

    2) 상품 추천 최적화

    import pandas as pd
    
    # 샘플 데이터 생성
    data = {
        "고객ID": ["C001", "C002", "C003"],
        "최근 3개월 구매 카테고리": [["전자기기", "패션", "스포츠"], ["가구", "생활용품"], ["패션", "뷰티", "전자기기"]],
        "최근 본 상품": ["스마트폰", "소파", "헤드폰"],
        "최근 구매 상품": ["태블릿", "책상", "스마트워치"],
        "구매 주기(일)": [20, 35, 15],
    }
    
    df = pd.DataFrame(data)
    
    # 카테고리 다양성 계산 (고유한 카테고리 개수)
    df["카테고리 다양성"] = df["최근 3개월 구매 카테고리"].apply(lambda x: len(set(x)))
    
    # 최근 본 상품과 최근 구매 상품이 같은 카테고리에 속하는지 확인
    df["유사 구매 여부"] = df.apply(lambda row: row["최근 본 상품"] in row["최근 3개월 구매 카테고리"], axis=1)
    
    # 추천 최적화 모델을 위한 특징 데이터 출력
    display(df)