My Blog for coding and note

https://github.com/hesthers

0%

Happy New Year! 新年快乐!!
New year 2022 has already come!!

So, I will post new year plan (perhaps bucket list?? lolol) today.

  • 2월에 HSK 6급 따기
  • 지금 하고 있는 프로젝트 1월에 마무리 잘하기
  • 취업!!!!! 뽀개기 (취뽀 성공 IT 가자!!) —- 올해 꼭꼭!!
  • 중국어 말하기 (능숙하게 할 수 있게!!)
  • 책 읽기 (올해는 10권 완독할 수 있도록)

2 days left until this year ends!!!

Things that I did today

  • figuring out the overall outliers in the dataset using iForest(Isolation Forest)
  • dropping the outliers in the dataset after merging outlier dataframe to the first dataset

result

  • total outliers that the first dataset has: 1038 (anomaly detection)

Things to do tomorrow

  • Studying K-Means and KNN imputer to fill out the missing value in the dataset at least before noon

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 방법 사용해서 전반적인 이상값의 경향 확인하기)

오전 논의 사항

  • emergency_cnt 이상치를 삭제해도 무방해보임.
  • adver_follower_count 컬럼 삭제
  • 8% 정도 비율의 데이터들을 완전히 삭제할지 여부
  • 3~4% 상품이 노출되어 클릭까지 진행한 고객 제외 후 나머지 96%는 단순히 노출되어 서버에 접속한 경우의 결측치 처리 여부

오후 논의 사항

  • imp_id 중복제거한 데이터 셋을 다시 생성 후 전처리 (오늘 할 일!!)
    • 데이터 전처리 방법 확인하기
    • 이상치 삭제 후 데이터 판단
  • 결측치, 이상치 처리 및 질문 사항 논의 (약간의 영향력은 남겨두되 최대한 이상치, 결측치 처리하기)
    • 결측치가 8%정도 되는 데이터 컬럼들 삭제
    • click_time 컬럼은 절댓값을 씌운 후 다시 컬럼 생성하여 이후 단계 진행 (양수로 만들기)
    • emergency_cnt 이상치 부분 처리 문제 질문.
    • flag_used 카테고리 질문
    • 나이는 범주화 (0세를 임의의 값으로 대체할지 아니면 따로 처리가 필요한지 질문)
    • click_time 결측치 처리 질문

데이터 전처리

결측치 처리 판단

  1. device_type_x 컬럼의 경우 데이터 값이 전부 a이므로 무의미한 데이터로 보여짐. adver_follower_count 컬럼 또한 0이라는 데이터 값만 가지고 있으므로 무의미한 데이터.
    → 처리 방법: 삭제

  2. click_time의 경우 - (음수) 값이 존재. (이 부분과 결측치 처리 문제가 발생)

    • 음수값이 존재하는 이유: impression의 서버 접속 시간이 view 서버 접속시간보다 늦기 때문..
    • 결측치 값의 비중이 96~7%이므로 삭제는 안됨…
    • 3~4% 상품이 노출되어 클릭까지 진행한 고객 제외 후 나머지 96%는 단순히 노출되어 서버에 접속한 경우
      → 처리 방법: 무조건적인 삭제는 금물.. 절댓값을 씌운 상태에서 click_time을 새로 계산.
  3. 수치형 데이터 중 이상치 처리 필요해 보이는 컬럼들:
    → bid_price_x, emergency_cnt, commen_cnt, user_age(나이는 임의로 0을 넣은 건가…..), adver_pay_count, adver_parcel_post_count, adver_transfer_count, adver_chat_count 등…

    • 눈에 띄는 이상값들은 비율 확인해서 삭제하기
    • 스케일링 진행할 때 robust_scaler로 진행.
  • name, keyword의 경우 텍스트 분석 진행 가능 (카카오 아레나 블로그 참고해서 태그 별 분석도 가능해보임)

image

Project Process for the new week

  • Week 3
  • Finished studying the deep learning(DL) modeling
  • This week: begin the preprocessing
    • Table join
    • Preprocessing - data type, outlier, missing value

The process of a project with a company’s data

  • 피드백:

    이대로 쭉 진행하기 (여러 논문들 참고 및 코드들 돌려보기)
    추가 학회 논문 참고
    오토인코더도 추천시스템에 자주 쓰이는 모델. 카카오 블로그 등 참고해서 공부하고 확인할 수 있음.

Merry Christmas!!

Deep Learning Project

  • autoencoder modeling study (required)
  • finished DeepFM modeling using wine and breast cancer dataset from sklearn datasets

Project Progress

  • 어려움/ 문제점
  1. 코드 리뷰하면서 해당 데이터 셋 제외한 나머지 데이터 셋으로는 코드가 먹히지 않음.
  2. 해당 DeepFM 모델 코드 실행시 오류가 발생.
  • 이후 예상되는 어려움

    DeepFM 모델에 대하여 데이터 셋에 적절한 코드를 작성 (오랜 시간이 필요할 것으로 보여짐.)
    기타 추가 모델이 필요하므로 이에 대한 추가 코드도 작성하면서 시간이 요구될 것으로 보여짐.
    딥러닝 모델 코드 구축하기 위한 별도의 공부/학습이 필요함.

Today’s project meeting note

  • journal/article review with code review

    DeepFM model-based modeling

  • Tomorrow: do code execution with code review using different datasets

Journal Review about DeepFM model (pt.1)

DeepFM 모델과 CTR 예측에 관한 논문 하나를 정리해보려고 한다. (사실 리뷰라고 쓰고 정리라 읽는 그런 포스팅이다.)
프로젝트 준비하면서 DeepFM 관련 논문들을 읽어봤지만 사실 무슨 말인지도 모르겠고 과연 코드로 구현할 수 있을지 의문이 들기는 하지만 요약해서 정리해볼까 싶다.

  • Title: A New Approach for Advertising CTR Prediction Based on Deep Neural Network via Attention Mechanism

    (Based on Wang, Q., Liu, F., Xing, S., & Zhao, X. (2018). A New Approach for Advertising CTR Prediction Based on Deep Neural Network via Attention Mechanism. Computational & Mathematical Methods in Medicine, 1–11. https://doi-org.libproxy.library.unt.edu/10.1155/2018/8056541)

  • Introduction:

    • CTR(Click-Through Rate) is critical element to many recommender systems and advertising as estimating the ratio of clicks to impressions of ads, that is to say, how many ads would be displayed to consumers.
    • The Internet market and electronic commerce industry has been rapidly developing, so the online ads with the media are also key issue.
    • As following those development, CTR is an critical indicator to measure the effectiveness of advertising display.
    • Deep learning fields have honored the achievements of NLP, image data processing, so in this article, the authors introduce various methods of CTR prediction based on Deep FM (a part of deep learning) models.
  • Main points (part 3. — This is the main section that I want to emphasize on this post!)

    • Click-through Rate Estimation Based on Deep Neural Network (p.g. 3 to 7)

    To mine highly correlated features, reducing high spareness of features of data, or data dimensional reduction is needed. The complex relationships between various, different types of objects are in data and there is also the similiarity between the same types of objects, so the dimensionality reduction is required.
    In this article, using K-Means clustering algorithm to group/cluster the similar objects into the same cluster for click log data, calculated the distance between user-query-ad (3D vector).

  • I intentionally omitted the formula in this post. (Regarding formula, I will post on another posting. (To be continued)
  • I used this article for personal study and personal project, not the commercial purpose.

What I studied/did today (TIS)

  • Read journals about DeepFM
  • Studied Chinese
  • Updated things related to prepraring for careers (Resume)

  • 내일 있는 커리어 상담 질문 준비

  • 면접 시 자기소개하는 질문에 대한 답변을 어떻게 시작하는 것이 좋은가

  • 면접 예상질문들 중 인성면접에서 원하는 답변의 기준은 무엇인가

  • 자기소개서에서 직무동기에 대한 답변을 할 때 특정 경험이 없는 경우 어떻게 표현하는 것이 좋은가…

  • 인성면접에서 자신의 장/단점을 어떻게 어필해야 할까

  • 취미나 특기에 대해서 물어보면 면접관에게 직무와 관련된 취미나 특기를 이야기하는 것이 좋은가.. 아니면 솔직하게 있는 그대로 이야기하는 것이 좋은가 (너무 당연한 답을 얘기해야하는 것이 맞나)

  • 포트폴리오의 경우 이미 프로젝트 시 만들었던 결과물을 취합해서 ppt 형식으로 만들어두는 것이 좋은가 아니면 워드 파일에 정리해두는 것이 좋은가 (특정 형식에 맞춰 정리???)

  • 그 밖의 예상질문들 추가 찾아보고 생각해서 준비하기

기업 프로젝트

  • purpose: to improve CTR (Click Through Rate)
  • the result of this project: algorithm for recommending ads with high CTR
  • data: 번개장터 데이터 (광고, 광고주 데이터, 상품 노출 및 클릭 여부 데이터)

프로젝트 진행 시 활용할 자료들(References)

  • Kaggle & Github: machine learning technique codes
  • blogs
  • journals: about concepts and theories of various machine learning techniques

models

  • Deep FM (a part of NN)
  • Ensemble, Clustering, Naive Bayes to classify the group of customers to provide the recommendation service
  • LDA and CNN to analyze the text and image data

New project — my idea

  1. 문제 정의

    • 머신러닝(지도학습/비지도학습): 클러스터링, 분류 모델 주 사용 (KNN, Ensemble Classifier 등…), 연관 분석 기법, GBDT
    • 딥러닝: CIFAR10 이미지 분석
    • 문제:
      고객 관점? vs. 서비스 제공자 관점?
      상품 - 어떤 도메인인지
      협업 / 내용기반 필터링 기법: 고객 카테고리에 맞는 아이템 추천 (클릭수, 구매수, 성별, 나이, 팔로잉 수 등..을 활용한 예측 기법 사용)
      광고주 데이터를 통한 연관 상품 추천
      고객 군집 분석(clustering) - 특정 고객집단의 특성 추출 및 파악
      키워드와 제품명을 기반으로 한 텍스트 분석을 통한 추천시스템
      추가: 개인화 상품 추천, 상품 브랜드 자동 추출, 연관 검색어 개발, 거래 위험 (Fraud 위험 탐지 알고리즘)
  2. 데이터 정의 및 수집

    • 데이터 셋: ad / advertiser / view_log / impression_log / viewer // dataset
    • 사용할 컬럼들: 상품 아이디, 상품 입찰가, 키워드, 나이, 성별, 로그 데이터 시간대 등… (device type, 광고 상품 신고수 컬럼 은 제외)
    • 테이블 조인 (SQL 활용), table merge, 이미지 크롤링 혹은 sql 쿼리문 활용, 키워드를 통한 텍스트 분석, user-item matrix (거리 기반 유사도), …

    • URL 크롤링으로 이미지 저장 후 텍스트 분석 및 이미지 분석으로 추천 상품 제공 (가능하다면 번개 장터 홈페이지 후기 등 크롤링으로 긍부정 분석)

    • EDA: 파이썬과 태블로 활용
    • 최종 결과물을 UI/UX로 Figma를 활용해서 구현해보기 (번개 장터 추천시스템 앱을 만든다면??)
  • 해당 문제에 대한 기존 방법론 조사

    • 논문: 추천시스템 관련 내용들 (예시 논문: 딥러닝 기반 나이 예측과 자연어처리를 활용한 의류추천 시스템)
    • 캐글 사이트: 추천시스템 모델 코드들에 관한 참고 레퍼런스
    • github에서 관련 모델 코드들 참고
    • 온라인 강의(The Red): 추천시스템에 관한 실습코드를 레퍼런스용으로 사용
  • 사용할 협업 툴(환경):
    슬랙: 멤버, 강사님과의사소통
    github: 프로젝트 코드 공유
    notion: 보고서 및 업무 분담 등 기록

  • 수행 환경:
    Google Colab or Jupyter Notebook
    SQL
    Tableau
    Figma

  • 참고
    기획서에 반드시 포함되어야 하는 내용들
    1. 문제 정의
    2. 데이터 정의
    3. 해당 문제에 대한 기존 방법론 조사 (논문, tech review 등)
    4. 사용할 모델 리스트 (rough하게)
    5. 프로젝트를 수행할 환경 (Google Colab, Kaggle Notebook, AWS 등)
      추가 사항: 프로젝트 계획 (rough하게)

Deep Learning

  • Framework
TensorFlow PyTorch
From Google From Meta (Old: FB / FaceBook)
good at hardware optimization good for research or study
a set of Keras and with TPU on CoLab easy to debug and high rate of opensource
  • Difference between ML and DL

    Whether the feature extraction/engineering is with classification in the modeling or not
    Does Human expert do the feature engineering or not??

CNN

  • a kind of deep learning fields
  • it is for image classification.
  • Using convolutional calculation, pooling, ReLU in the process

Convolutional Layer

  • a convolutional filter or convolutional filters(=kernels) is/are on the input image.
  • when this filter moves next or under, it is called as the stride.
  • convolutional calculation: multiply the filters of input image with the weight(random value at first)
  • the size of activation maps: (input width - filter width) / stride + 1

    channel(depth) of activation maps = how many filters are

New Project

Data for new project

  • 광고와 광고 노출여부 확인 데이터
  • 하루치 데이터밖에 없으므로 결과해석에서는 한계가 있으나 분석에 대한 인사이트를 얻을 수 있음.
  • final classification (0,1로구분하여 확률을 머신러닝으로 계산하기)
  • 문제 정의를 명확하게 해줘야 함.!!!!!!! (이번 주 동안에)
    • 머신러닝 추천문제로 어떤 문제를 해결할 것인가
    • feature vector, 유사도 등 어떻게 구성할 것인가..
    • 문제를 얼마나, 어떻게 구현할 것인가

Guidelines for a project

  1. 머신러닝 문제 정의 — 분류, 클러스터링 등 머신러닝 기법 사용
  2. 데이터 정의 (어떤 컬럼이 있는지, 비정형데이터의 경우 size가 어떻게 되는지…)
    • 분석에 사용할 데이터 정의
    • 문제 정의가 우선되어야 함. (테이블 join, 어떤 feature vectors, user-item matrix)
  3. 환경세팅 (github, slack, notion 등 활용)
    • 협업 (발표 보고서 - 노션 활용), 코드 공유 환경(github)
  4. 어떤 문제를 어떻게 해결할 것인지
    • 기획서!!
    • 문제 정의 - 데이터 정의 - 기존 방법론 (문제에 대한) - 모델리스트 - 수행 환경..

My idea

  • 이미지 url을 이용해서 크롤링하고 이미지 분석 후 추천 시스템..
  • 광고 데이터에서 제품 별 컨텐츠 주 단어를 활용하여 텍스트 분석을 통한 추천 시스템
  • 카테고리별 (id별, 시간별, 제품별) 등으로 추천시스템
  • 예측을 통한 추천시스템 (카테고리, 이용시간대, 성별 등)