이 영역을 누르면 첫 페이지로 이동
천천히 꾸준히 조용히 블로그의 첫 페이지로 이동

천천히 꾸준히 조용히

페이지 맨 위로 올라가기

천천히 꾸준히 조용히

천천히 꾸준히 조용히.. i3months 블로그

[Data Science] ETRI 휴먼이해 인공지능 논문경진대회 - 1

  • 2026.05.04 15:25
  • Computer Science/Data Science
반응형

 

 

 

https://dacon.io/competitions/official/236690/data

 

제 5회 ETRI 휴먼이해 인공지능 논문경진대회 - DACON

분석시각화 대회 코드 공유 게시물은 내용 확인 후 좋아요(투표) 가능합니다.

dacon.io

 

먼저 데이터를 까보자. 

 

10명이 3달동안 핸드폰이랑 스마트워치를 차고 다닌 LifeLog를 기록하고, 그 다음날 아침 잠이 어땠는지 맞추는 데이터임.

10명이 대충 3달동안 참여해서 대충 700개 Row가 수집됐고, 이 중 일부를 학습에 쓰고 일부를 라벨 가리고 검증에 사용함.

 

데이터를 쭉 읽어보면.. 언제 폰이 켜졌고 그 때 어떤 활동을 했고 그 때의 밝기는 어땠는지를 저장한다.

 

12:03 폰 켜짐 / 걷는중 / 화면안봄 / 주변조도 534lux

12:23 워치 심박 측정 / 운동중

13:00 주변 소음 분석 / 차 탑승

...

 

이런 식으로 어떤 사람의 하루 일과 raw 데이터를 저장한다.

그리고 이 사람이 잘 때 침대 아래 Sleep Tracker가 자동으로 데이터를 측정함.

 

몇 시간 잤는지, 잠든 시간 비율, 잠들기까지 걸린 시간, 자다 깬 시간을 측정한다.

이제 다음날 아침에 일어나서 자가보고 진행. Q1 ~ Q3와 S1 ~ S4

 

해야할건 핸드폰 및 워치 로그가 주어질 때 라벨인 Q1 ~ Q3, S1 ~ S4 데이터를 채우는 것.

 

그런데 여기서 Sleep Tracker는 정답을 만들 때만 쓰고 Raw 출력을 주지 않음;

그러니 핸드폰과 워치 로그를 토대로 Sleep Tracker의 결과를 역추적 해야 한다.

 

여기서 Q1 ~ Q3 는 그 사람의 평균 대비 상태를 기록한 값이니.. 너무 상대적이긴 함 

평소 대비 오늘은 어떤 상태인지를 예측하는 모델을 만들어야 한다.

 

 

 

 


 

 

 

 

맞춰야 할 라벨은 Q1 ~ Q3 + S1 ~ S4

 

Q1 ~ Q3은 스스로 생각했을 때 기본 상태보다 좋거나 나쁜지를 의미함 

S1 ~ S4는 Sleep Tracker 기반으로 측정한 값으로 정량적임

 

일단 그냥 입력값만 보고 라벨을 측정하면 안됨. 어제의 라벨값이 지금의 라벨값에 영향을 줄 수 있다.

어제 잘 잤으면 오늘도 잘 잘 가능성이 높을 수도 있으니까.. 입력 피쳐를 조작한다면 성능이 좀 더 좋을 것 

 

그러니 자기상관 정도를 알아야 한다. lag-k를 통해 입력 피쳐에 자기상관 관련 값을 추가할지 말지를 결정한다.

 

 

 

 

 

lag-1이 모든 작업에 일관성있게 0.15 ~ 0.30 을 보여준다. 

그러니 어제의 결과가 오늘의 결과에 유의미한 영향을 미친다는 것.

 

이후 lag-2 lag-3에서는 떨어지다가 lag-7에서는 또 올라갔다. 

단순히 시간이 지남에 따라서 감소한다면 lag-7에서 더 떨어져야 하는데 그게 또 아닌거임; 

그러니 단순히 시간만 보는게 아니라 일주일 전인 특정 요일에 따라서 달라질 수 있다고 의심된다.

 

사실 그냥 데이터가 적어서 이렇게 보일 수도 있는데.. 일단 그건 배제하고 진행하자.

 

또 Q 시리즈와 S 시리즈 패턴이 좀 다르다.

Q 시리즈는 lag-1에서 가장 강하고 뒤로 갈수록 약해짐

S 시리즈는 lag-1과 lag-7이 거의 비슷함

 

셀프 피드백은 어제꺼 영향을 좀 많이 받고, Sleep Tracker 데이터는 요일 패턴에 더 영향을 받는듯.

 

 

 


 

 

 

 

자기상관 정도를 살펴봤으니 이제 Task간 상관성이 있는지 확인해야 한다.

Q1 ~ Q3 + S1 + S4 라벨이 각자 움직이는지 아님 얘내들끼리도 연관성이 있는지 확인해야 함. 

 

 

 

 

일단 Q1은 S와 강하게 연결되고, Q2와 Q3는 S와 거의 무관하다.

Q1은 기상 직후 자가보고 / Q2와 Q3는 취침 직전 자가보고인데, Q1은 그날 잠의 결과이기에 그날 잠의 지표인 S와 연관됨.

Q2와 Q3는 잠자기 전 그날의 활동에 영향받기에 그날 밤의 잠과는 인과가 약함.

 

S 그룹 안에서는 S2 말고는 모두 다 독립적으로 동작한다. S2가 모두의 다리가 됨.

 

 

그러니.. 정리하면 

라벨 7개는 서로 약하게 연결되고 바로 전날과 일주일 전이 좀 강하게 연관된다.

 

그러니 모델 구조는 기본적으로 Single-Task를 7번 실행하는 식으로 설계하고 Q1과 S1만 서로 Multi-Task로 묶어보자.

lag-k 피쳐는 lag-1와 lag-7을 사용하자.

 

 

 


 

 

 

이 정도까지 하고 가설을 세워보자. 

가설 : 22:00 ~ 10:00 사이의 워치가 측정한 걸음 수의 합계가 적을수록 S1 이 1일 가능성이 높지 않을까? 

 

애초에 잘때는 걸음수가 0이다. 

그러니 야간 걸음수가 적다는 건, 침대에 오래 누워있다는거니까 잠을 길게 잔게 아닐까..

 

 

 

 

 

가설이 들어맞으려면 S1=1 이 더 적어야 하는데 약간 더 많이 나왔다.

일단 이 가설은 들어맞지 않음; 

단순히 잠을 잘 잤다면 야간 걸음이 적은건 아닐수도?

 

 

 

 

나머지 Task와 야간 걸음수간의 연관을 살펴보자. 

확인해보면 S2에서는 유의미한 신호를 보여주고 있다. 밤에 조금 걸으면 수면 효율이 좋은가보다.

 

일단 목표는 라벨이 1인 확률을 정확하게 예측하는 것. 그냥 라벨을 맞추는게 아니다. 

그러니 예측 확률과 정답의 관계를 파악하기 위해 log-loss를 사용한다. 

 

일단 baseline을 설정. 

모든 행에 0.5를 찍어버리거나, 모든 행에 train의 전체 평균을 적용하거나, 각 사람의 평균 라벨 비율로 찍거나..

각 baseline별로 log-loss를 계산하면 각각 0.6931, 0.6641, 0.6231 으로 계산된다. 0.6231을 Sanity Baseline으로 사용한다.

 

 

 

 

 

야간 걸음수가 라벨과 관계된다면 걸음이 적은 그룹은 라벨이 1인 비율이 높을 것.

그러니 Train의 야간 걸음수를 기준으로 5등분하고 각 그룹의 S1 비율을 계산한다. 

이러면 각 그룹의 S1 비율이 그 그룹의 예측 확률이 됨.

 

그냥 5등분만 하면 데이터를 외워버리게 되니까.. 5-fold Out Of Fold 기법을 사용한다.

5그룹으로 나누기 -> 1그룹은 Validation, 4그룹은 Train으로 사용해 예측 -> valid 역할을 수행하는 그룹만 돌려가며 반복 

 

표를 확인해보면 Sanity Baseline보다 성능이 더 안 나오고 있다.

데이터를 보면 피실험자마다 라벨 평균이 천차만별인데, 그 정보를 무시해버리면 단일 피쳐인 야간 걸음 하나를 이길 수 없다는 것.

 

그러니 새로 피쳐를 만들 때 그 사람에 대한 정보를 포함해야 한다.

z-score를 사용해 그 값을 기준으로 평소보다 얼마나 더 위에 있는지, 더 아래에 있는지를 변환하자.

 

 

 

 

 

z-score는 이 사람의 평소 대비 오늘 걸음이 얼마나 적은지를 표현한다.

다시 5-fold Out Of Fold 기법으로 테스트했는데.. 여전히 Sanity Baseline은 이기지 못하지만, z-score를 적용했을 때가 절댓값을 적용했을 때 보다는 확실히 성능이 좋다는걸 확인할 수 있음.

 

z-score는 입력 단계에서 피실험자의 정보를 추가하는데, 출력 단계에서 정보를 다시 잃어버린다.

5등분 후 다시 평균을 낼 때 피실험자의 정보가 섞이게 되는게 문제. 모두 묶어서 접근하는 방식 자체가 문제임.

 

그러니 모델이 여러 피쳐와 피실험자의 정보를 함께 확인할 수 있어야 한다.

 

 

 

반응형
저작자표시 (새창열림)

'Computer Science > Data Science' 카테고리의 다른 글

[Data Science] ETRI 휴먼이해 인공지능 논문경진대회 - 3  (0) 2026.05.09
[Data Science] ETRI 휴먼이해 인공지능 논문경진대회 - 2  (0) 2026.05.05
[Data Science] Data Preprocessing & Feature Engineering  (0) 2026.04.14
[Data Science] Statistical Data Analysis  (0) 2026.04.09
[Data Science] Data Acquisition and Visualization  (0) 2026.03.28

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • [Data Science] ETRI 휴먼이해 인공지능 논문경진대회 - 3

    [Data Science] ETRI 휴먼이해 인공지능 논문경진대회 - 3

    2026.05.09
  • [Data Science] ETRI 휴먼이해 인공지능 논문경진대회 - 2

    [Data Science] ETRI 휴먼이해 인공지능 논문경진대회 - 2

    2026.05.05
  • [Data Science] Data Preprocessing & Feature Engineering

    [Data Science] Data Preprocessing & Feature Engineering

    2026.04.14
  • [Data Science] Statistical Data Analysis

    [Data Science] Statistical Data Analysis

    2026.04.09
다른 글 더 둘러보기

정보

천천히 꾸준히 조용히 블로그의 첫 페이지로 이동

천천히 꾸준히 조용히

  • 천천히 꾸준히 조용히의 첫 페이지로 이동

검색

방문자

  • 전체 방문자
  • 오늘
  • 어제

카테고리

  • 분류 전체보기 (695) N
    • Algorithm (205)
      • Data Structure (5)
      • Theory && Tip (33)
      • Baekjoon (166)
      • ALGOSPOT (1)
    • Spring (123)
      • Spring (28)
      • Spring Web MVC (20)
      • Spring Database (14)
      • Spring Boot (6)
      • Spring 3.1 (11)
      • Spring Batch (6)
      • Spring Security (16)
      • JPA (12)
      • Spring Data JPA (5)
      • QueryDSL (4)
      • eGovFramework (1)
    • Programming Language (74)
      • C (25)
      • C++ (12)
      • Java (19)
      • JavaScript (15)
      • Python (1)
      • PHP (2)
    • Computer Science (154) N
      • Machine Learning (38)
      • Operating System (18)
      • Computer Network (28)
      • System Programming (22)
      • Universial Programming Lang.. (8)
      • Data Science (8) N
      • Embedded Software (4) N
      • Computer Architecture (4)
      • Compiler Design (11)
      • Computer Security (13)
      • BlockChain (0)
    • Database (21)
      • Database (7)
      • MySQL (3)
      • Oracle (3)
      • Redis (5)
      • Elasticsearch (3)
    • DevOps (20)
      • Docker && Kubernetes (8)
      • Jenkins (4)
      • Amazon Web Service (8)
    • Mobile (28)
      • Android (21)
      • Flutter (7)
    • 💡 솔루션 (17)
    • 👥 모각코 (12)
    • 💬 기록 (9)
    • 📚 공부 (7)
    • -------------- (25)

최근 글

나의 외부 링크

메뉴

  • 홈
반응형

정보

i3months의 천천히 꾸준히 조용히

천천히 꾸준히 조용히

i3months

블로그 구독하기

  • 구독하기
  • RSS 피드

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / AXZ. Copyright © i3months.

티스토리툴바