Q n A with feedback
Q1. 클릭 시간의 경우 데이터의 결측치가 96~97%인데 컬럼을 아예 제외하는 것이 나은지 아니면 해당 결측치를 다른 값으로 대체해서 채우는 것이 나은가? view_log, impression_log을 가지고 계산한 click_time을 어떻게 처리해야 할지..??
- click_time ⇒ 음수값이 나오면 안되고 서버 기록 시간인지 해당 view, impression이 발생한 시간인지의 여부의 차이 (데이터의 정의 차이)문제.
- 정의를 고민해볼 문제.. (impression이 먼저 → view가 후행)
- 확실하게 하려면 EDA를 해보는 것이 좋음. (해당 click_time의 weight가 얼마나 되는지.. 클릭하는 데 있어서 과연 시간이 무관한지를 판단)
- 몇 초이상 노출이 되는 경우 클릭할 확률이 높다 (특정 시간 분포를 확인해보기)
Q2. emergency_cnt 이상치 부분 처리를 어떻게 해야하는가 (삭제 or 스케일링 처리)
- 특정 값만 out 되어있는 경우 isolation forest 모델을 통해 여러 피쳐들 간의 영향력(여러 피쳐들간의 outlier 값들을 확인)을 파악할 수 있음.
- 눈에 띄는 해당 건수의 경우 outlier 값이 맞으나 해당 광고주에 대해 유의미한 정보는 아닐 수 있으나 학습에 사용할 지 말지는 따로 확인 필요함.
- 결측치나 이상값의 수가 상당히 적은 경우 주관적인 입장에서 아예 drop하는 것이 나음.
Q3. 나이는 0세를 임의의 값으로 대체할지 아니면 따로 처리가 필요한가..?
- 입력을 안했거나 잘못 입력한 경우 (잘못된 데이터일 확률이 높음)
- 일반적으로 평균값 혹은 다른 특징의 데이터들을 가지고 나이 추정함.
- 데이터를 수집하는 과정에서 데이터 수집하기 어려운 경우가 존재
→ 데이터를 버리지 않을 때 나이, 성별을 제외한 나머지 피쳐들을 유사도를 계산해서 가까운 인원 수의 평균값 계산 (KNN imputer) 방식 사용.
- 성별 알 수 없음은 로그인 안해서 알 수 없음으로 판단. (의도를 가지고 응답을 하지 않는 경우라고 보기 어려움.)
- 비율이 치중되지 않는 이상 결측치 처리 시 KNN imputer or 버리기 (결측값이 많을 때에는 데이터를 버리는 것은 pass)
추가 피드백
- 많은 알고리즘이 추천 시스템에 들어가 복잡함.
- cold start 문제가 추천 시스템 구현이 어려운 이유임.
- 로그 데이터로 추천 문제를 해결하는 것이 어려움.
- 데이터가 하루치 이므로 결론이 애매할 수 있음. (데이터 문제임)
- 지금까지의 모든 프로젝트 준비 과정들이 의미있음.
project process
- 논의 후 click_time 계산 관련된 논란 종결!!
- 나이/성별 데이터 확인하고 결측치 및 이상값 확인 필요함. (KNN Imputer & Isolation Forest 방법 사용해서 전반적인 이상값의 경향 확인하기)