프로젝트 회고 : Comparison of In-home Robotic Companion Pet Use in South Korea and the United States

YuJangHoon·2022년 7월 23일

Projects

목록 보기
1/1
post-thumbnail

실험 목표

  • 미국과 한국의 실험참가자들이 몇 주 동안 로봇 펫과 상호작용 했고, 그 때 로봇에 있는 센서와 실험참가자들의 어플리케이션 응답 그리고 참가자들의 인터뷰를 통해서 양적, 질적 분석을 진행했다. 이 실험의 근본적인 목표는 서로 다른 문화적 환경에서 발생하는 상호작용의 유형에 상당한 차이가 있는지 확인하고, 인간과 로봇의 상호작용의 모델링에 어떤 영향이 있는지 확인하는 것이 었다. 그 결과 한국과 미국의 참가자들 사이에는 로봇과의 상호작용 방식에 상당한 차이가 있었으며, 머신러닝 모델의 결과를 통해 그것을 보여주는 것이 나의 역할이었다.

Data Explain

  • 15분 간의 센서 데이터 기록과 그에 대한 어플리케이션 응답을 통해서 생긴 multi-class 데이터. column에는 가속도, 온도, 기압, 습도, 사운드, orientation, CO2 센서 등이 있음.

Data Preprocessing

Collapsing

  • 시계열 데이터를 다루기 위해서는 시퀀스 모델이 필요하나, 그것을 다룰 능력이 프로젝트를 시작할 시기(1학년 말)에는 없었기에, 딥러닝이 아닌 머신러닝 모델을 다루기 위해서 데이터를 collapsing하기 시작했다.(시계열-시퀀스 데이터는 일반적인 지도학습에 사용되는 데이터처럼 서로 독립적인 것이 아니라 특정 순서를 가지며 비-독립적이기 때문이다.)

  • Numerical : 평균

  • Categorical : 최빈값 추출 이후 Integer Encoding / One Hot Encoding

  • Time : 시간대를 4개로 나누어 분류한 후 Integer Encoding

  • Target(Modality) : One-Hot Encoding으로 Binary Classification 문제로 변환

+Categorical feature에는 각 카테고리들의 비율, 카테고리 사이의 이동의 비율을
+가속도 센서 값에는 이전 row와의 가속도 센서 x, y, z값의 차이를 계산한 diff x, y, z 그리고 그 값을 이용하여 현의 길이와 호의 길이를 새로운 feature로 추가.

+Integer Encoding / One-Hot Encoding을 판단한 기준 : categorical feature이지만 category 사이의 순서나 랭크가 존재할 경우에는 Integer, 그렇지 않을 경우에는 One-Hot Encoding을 진행했다.

Eliminate Duplicated Rows

  • collapsing을 진행한 후 데이터를 살펴보니, 모든 값이 동일하나 target의 One-Hot Encoding만 다른 row들을 발견. 사용자는 앱에서 여러개의 label을 동시에 체크할 수 있었으나 target에 list를 담지 않고 서로 다른 label을 가진 복제된 row들을 생성하는 것으로 데이터가 저장된 것을 확인. 이미 label에 대해 one-hot encoding을 한 상태이기 때문에 기록 시간이 정확히 일치하는 collapsed row들에 대해서 중복 제거를 처리, 대신 multi-label 데이터로 변경함

  • 위 과정을 통해 약 256만개의 row를 지닌 데이터가 단 255개의 row로 줄어들음. 평균적으로 1.4개의 label이 체크되었음을 알 수 있음.

이후 type casting을 통해 전처리를 마친 후, EDA를 통해서 전처리된 데이터의 분포 및 상관관계를 파악한 후 머신러닝을 진행

ML part

SMOTE

  • EDA를 통해 확인한 결과 대부분의 label들이 굉장히 치우쳐진, skewed 상태임을 파악했고, train-test split등의 상황에서 발생할 문제들을 방지하기 위해 SMOTE를 사용하여 각 label별 데이터의 1과 0의 비율을 50:50으로 맞추었다.

Feature Selection

  • Feature Engineering을 통해서 다양한 feature들을 새로 만들어 냈기 때문에 feature selection을 통해 모델의 간소화와 feature importance등을 통해 모델의 설명력을 높여보고자 했다.

  • 하는 일 : eliminating redundant or irrelevant features and narrowing down the set of features to those most relevant to the machine learning model. 중복되거나 관계없는 feature들을 제거해서 ML model에 가장 연관된 feature의 set를 얻어내는 것.

  • 효과

  1. simpler model : 말 그대로 더 심플하고 설명가능한 모델을 만들 수 있다.
  2. shorter training times : 적은 컴퓨팅으로 같거나 더 좋은 성능
  3. variance reduction : 불필요한/중복되는 feature을 제거했기 때문에, 의미없는 feature의 영향으로 인한 variance가 감소
  4. Avoid Curse of dimension : feature의 개수가 늘어남에 따라, 차원축이 늘어나게 되며 objective function의 탐색 공간과 local minimum 등이 크게 증가한다.

Filter-based : SelectKBest

각 특성과 target 사이의 통계적인 관계가 있는지 계산하여, 깊은 관계가 있는 상위 K개의 feature을 선택하는 방식이다.

  1. f-value
  2. ANOVA f-value
  3. Mutual Information
  4. Chi-Squared stats

Wrapper based : RFE

지정된 Model의 weight나 feature importance등을 연산하여, 가장 덜 중요한 feature부터 제거해 나가는 방식이다.
단점은 각 case에 대해서 model을 fitting해야하기 때문에 데이터의 수와 feature의 개수 그리고 선택한 모델에 따라서 굉장한 computational cost가 요구될 수 있으며, training data set에 overfitting될 위험이 있다.

Embedded Method : SelectFromModel

  • L1, L2, Elastic Net 등의 penalty가 loss fuction에 포함되어 있어 regularization의 역할도 같이하는 경우
  • Decision Tree, Random Forest 등의 tree based model은 split 지점에서 가장 entorpy를 낮출 수 있는 feature을 선택한다. 이때 classification이라면 gini impurity 혹은 info gain, regression이라면 variance의 감소 등을 통하여 feature의 importance를 측정할 수 있게 되고, 이를 정렬해서 상위 N개 혹은 N%의 feature을 선택할 수 있다. 혹은 평균 등을 threshold로 설정하여 feature을 선택해도 된다.

ML model

Random Forest

  • entropy, gini gain 등을 기준으로 split하는 decision tree에 bagging(bootstrap aggregating)과 split 후보군 또한 전체가 아닌 random을 추가한 Ensemble 기법

Gradient Boosting

  • RF처럼 decision tree를 여러개 이용하지만, 각 tree에 제한을 두고 (# of leaves : 8 ~ 32), 이전까지의 예측값과 실제값의 잔차(residual, gradient)를 예측하는 여러개의 decision tree를 순차적으로 만들어낸다. 또한, 각 tree의 예측은 learning rate가 곱해진 채로 예측에 이용된다.

XGB

  • GBM을 사용하되, split을 수행할 때 exact greedy가 아닌 bucket(global || local)을 이용한 approximate greedy을 활용하므로써 계산량을 줄임과 동시에 병렬처리가 가능하게 만들었다.

  • sparsity aware split finding : 학습과정에서 missing value가 존재하는 데이터를 맨왼쪽 or 맨 오른쪽으로 보낸 후 split을 시도하여 더 나은 쪽을 default direction으로 설정해두어, missing value가 evaluation을 시도할 때 들어오면 바로 default direction으로 보내는 것이다.

  • 어차피 정렬해야하니 column-wise로 데이터 저장, feature value 기준으로 sort(index와 함께)

  • regression 진행할 때는, similarity를 계산하여 similarity gain을 이용하고, 그 식에 들어가는 lambda는 pruning과 regularization에 관여하며, gamma는 pruning의 기준이 되는 값이다. 특히나 lambda는 split된 node에 속한 데이터의 갯수가 적으면 적을 수록 더 harsh한 regularization이 된다. 또한, gamma가 0이라고 해서 pruning을 진행하지 않는 것이 아니다.

profile
HYU DataScience, ML Engineer - 산업기능요원(4급)

0개의 댓글