내일배움캠프/TIL

[TIL]250319_최종 프로젝트_군집을 위한 파생변수, 튜터링 노트 요약

dydatablog 2025. 3. 19. 23:38

요즘 가장 공감되는 짤...

끝없는 전처리...

 

파면 팔수록 또 나오는 전처리 대상 데이터들...ㅎㅎ

일단 큼지막한 전처리는 끝냈으니 전처리는 필요에 따라 계속 진행하기로 하고, 군집을 위한 파생변수를 생각해보기로 했다.

 

군집을 시행하기 전에 우리의 목적과 문제 정의를 다시 떠올려보면

목적:
명품 중고 거래 시장의 글로벌 점유율 확대를 목표로 한다. 중고 플랫폼의 특성상 신뢰는 플랫폼 성공의 핵심 요소이며, 우리는 판매자를 위한 차별화된 서비스를 제공하여 신뢰할 수 있는 우수 판매자들을 확보하고, 구매자 유입 및 플랫폼의 지속적인 성장을 촉진하고자 한다.  

문제:
현재 판매자를 분류해 놓은 'seller_badge'를 살펴보면 기준이 모호하고, 배지별로 큰 매리트가 없다. 커뮤니티의 반응을 살펴보면 판매자 입장에서는 상품 등록까지 24시간 이상 걸리고, 각종 수수료가 많아 불만이 쇄도 중이다. 신뢰성 확보를 위한 과정을 생략할 수 없으므로, 우수 판매자들이 느낄 수 있는 다른 메리트가 필요하다.

해결 방안: 
트렌드 분석 대시보드, 추천 시스템을 활용하여 판매자들에게 편의성 제공 + 우수 판매자 혜택 및 기준 강화로 판매자들의 활동을 촉진한다.

... 이다.

 

일단 어떤 기준으로 "우수 판매자"를 설정할 것인지 정하는 것과

이에 필요한 변수(필요하면 파생변수)를 생각하는 것이 과제였다.

 

이전 프로젝트에서 구매자의 세그먼트를 RFM으로 나누었던 적이 있는데 현재 데이터에는 시계열 데이터가 없기 때문에 그대로 적용하기 힘든 부분이 있어서 새로운 지표를 만들어야 했다.

 

우수 판매자 기준을 위한 시장조사를 시행 후

1. 신뢰도

2. 인기도

3. 회사 이윤 측면 에서 높은 점수를 받는 판매자를 "우수 판매자"로 판단하기로 했다.

 

이 3가지 기준을 판단할 변수를 설정하기 위해 각 컬럼별 상관관계를 살펴보고 파생변수를 생각해봤다.

변수 별 상관관게 분석 결과(범주형변수 포함)

  • price_usd, seller_price, seller_earning, buyers_fees는 강한 양의 상관관계를 띠고 있음
  • 팔린 제품이 많은 셀러는 팔로워 수가 많은 경향이 있다.
  • (seller_products_sold - seller_num_followers)
  • 팔린 제품이 많은 셀러는 팔고 있는 제품 수가 많은 경향이 있다.(seller_products_sold - seller_num_products_listed)

 

군집을 위한 파생변수 아이디어

판매자 신뢰 지수

  • seller_badge × seller_pass_rate → seller_badge가 제대로 분류가 안되어있는 데이터가 많아서 신뢰도 떨어짐

회사 이윤 측면

  • seller_price(판매 가격) - seller_earning(판매자 이익) = seller_fee (판매자 수수료)
  • seller_fee(판매자 수수료) + buyer_fee(구매자 수수료) = company_profit (회사 이윤)

등... 여러가지 아이디어를 수집해서 최종적으로 다음 지표들을 시도해보기로 했다.

신뢰도 인기도 회사 이윤
seller_pass_rate seller_num_followers company_profit
seller_products_sold seller_products_sold seller_fees
avg_ships_within 셀러별 좋아요 수 평균  

 

변수 설정 시 유의해야할 점

-> K-means 거리기반으로 군집을 하기 때문에 변수를 고를 때 다음과 같은 점을 주의

  • 이상치가 많은가?
  • 연속형 변수인가?

 

이전 튜터링 내용!

대용량 데이터 처리 관련

문제 상황 : 데이터가 80만개가 넘어가서 코드하나 실행하는데 너무 오래 걸리거나 런타임 에러 발생 (코랩, VS code 둘 다 같은 현상)

튜터님 추천 : 
1. csv -> parquet파일로 변환해서 사용 : parquet은 열 중심 저장 방식의 데이터 형식이라 불러오는 속도나 메모리 줄이는데 효율적
2. pandas -> duck db 혹은 polars 라이브러리로 대체 (두 라이브러리 모두 대용량 처리에 유리)
    a. duck db : sql 스타일의 데이터 처리 가능
    b. polars : pandas와 비슷한 문법 사용 가능

시도해본 방법 :
- csv -> parquet파일로 변환해서 사용 : 실제로 처리 속도가 향상됨!
- polars 사용 : pandas와 문법이 미묘하게 달라서 코딩 속도가 느려졌음..
parquet으로 충분히 빨라졌다고 느꼈기 때문에 parquet파일 + pandas를 사용하기로 결정!

 

튜터링 노트 : 25/03/18(화)

  • (질문 1) 각각의 요소를 결정할때 서로 상관관계가 있는 컬럼끼리 구했는데 올바른 판단인지?
    • (질문 2번과 비슷함) 이미 어느정도 예상가는 가설이 있다면 상관관계가 있는 컬럼을 봐도 좋고, 여러가지를 넣고 시도해봐도 좋다.
  • (질문 2) 군집을 다양하게 시도해봐야한다고 하셨는데 크게 어떤 지표를 볼 것인지 정하고 그 지표로 쓸 수 있을것 같은 컬럼들을 다양하게 시도해봐야 하는 것인지, 아니면 관련 없을것 같은 지표라도 최대한 다양하게 시도해보는 것이 좋은지?
    • 우리가 모르는 패턴을 파악하기 위해 군집할 때 : 이 군집으로 우리 데이터 특성 자체를 파악하고싶다면 다양한 변수를 시도하면 됨 (이런 기준이 중요하구나 하고 알게되는 것)
    • 가설을 확인할 때 : '판매자는 이렇더라'라는 가설이 이미 있다면 그 가설을 바탕으로 관련 지표로 군집을 형성해서 확인해보면 됨 -> 2~4개 변수만 사용하는 것도 해석할 수 있게 하기 위해 개수를 조절하는 것. 10개 이상이 되면 군집의 패턴을 찾기가 어려움.
  • (질문 3) : K-Means 대신 DBSCAN(밀도 기반 클러스터링)을 이용해야하는지?
    • dbscan은 데이터가 너무 커서 결과가 안나올 수도 있음, 군집의 모양을 다양하게 보고싶을 때 사용
    • k-means를 사용하되, 이상치를 제거하고 제거한 이유를 넣는게 좋을 듯.
    • DBSCAN 안 돌아가면 이것도 쓰려고 했는데 이런 문제로 불가능했다고 언급함으로써 왜 하필 K means를 썼는지 설명이 더해지면 좋음
  • (질문 4) : 군집 관련 자료들을 찾아보면 변수 스케일링 할 때 StandardScaler() 만 사용하던데 MinmaxScaler()나 RobustScaler()는 사용하지 않는지?
    • 보통 kmeans에는 standard, dbscan에서는 minmaxscaler가 나은걸로 알고 있음. robust는 좀 더 이상치를 잡아줌.
    • 스케일러도 여러가지 실험해보고 비교해보기

→ 여러개를 써보면서 비교하는 실험 해보고, 만약 군집 결과가 달라지면 그에 대해서도 언급.

→ 스탠다드를 쓰게되었다면, 'robust도 써봤지만 사실상 이런 차이때문에 이렇게 했다.~' 언급

  • (질문 5) : 군집 예시들을 찾아보면 대부분 2개 이상 4개 이하의 변수만 사용하던데 이유가 있는지?
    • PCA는 변수가 많을 때 2개로 줄이는 것이기 때문에 애초에 변수가 적으면 반드시 하지 않아도 됨
    • 판매여부에 영향을 미치는 피처를 선택하는 방식은 다양하게 시도해보는 것도 좋음
  • (질문 6): 가설을 검정 시 유의할 사항이 있는지?
    • 군집 : 가설검정 하기 전에 비교할 집단을 정하는 것
  • (질문 7): 군집에 한해서 이상치 제거한 파일로 작업해도 되는지…? 데이터가 이상치도 베스티에르에는 이득이 되는 고객들이라 무시할 수 없을 듯 해서 제거를 해야하나 말아야하나 고민중.
    • 이상치를 제거하는 명확한 이유과 근거가 있다면 제거해도 괜찮음.
    • 무조건 IQR만으로 이상치를 제거하는 것은 위험!! 반드시 데이터를 뜯어보고 제거해야하는 값인지 확인하기!
  • (질문 8) : 실루엣 점수말고 다른 방법 / 보통 0.5이상이면 잘 된것이라고 하는데 정확한 근거가 있는 이야기인지?
    • 실무에서는 0.5 이상으로 나오지 않는 경우가 있어서 그런것 같다. 대게 만들어진 데이터면 더 잘 나올 것.
    • 실루엣점수 + 시각화를 함께 보여주는 것이 좋음

p.s. 잡담방에 튜터님이 올려주신 비즈니스 모델 캔버스

⭐️ 지금 하고 있는 분석이 누구에게 어떻게 도움이 될 것인지 생각해보면서 진행하기

내일부터 본격 대시보드 기획도 들어가서 다시 한번 생각해보면서 진행해야겠다.