파이썬으로 서로 다른 두 데이터를 매칭하려 하는데 어떤 방법을 이용해야할지 좋을지 모르겠어요

조회수 320회

같은 기계지만, 서로 다른 센서에서 수집된 두 데이터(A,B라고 할께요)가 있습니다. 두 데이터는 모두 1초 단위로 데이터가 수집되었구요 지금 A데이터 정보,B데이터 일부 정보를 합쳐서 새로운 C 데이터를 만들기 위해 A,B 센서에서 같은 정보를 수집한 column이 한개 있어서 그걸 기준으로 매칭하려 합니다. 실제로 동일 날짜의 같은 A,B센서의 동일 정보 column을 그래프로 표현해 봤을때 대략적인 개형이 일치하는 것을 확인했습니다

여기서 문제가 발생합니다.

A. 기기의 오류로 인해 동일한 날짜에 A또는 B 기기에서 데이터 수집이 누락된 구간이 발생합니다

B. A의 문제로 인해 동일 날짜의 A와 B 데이터의 길이가 다르고, 어떤 것은 조금 빠르게, 어떤 것은 뒤로 밀려서 수집되어 있습니다.

C. 센서의 차이로 인해 약간의 오차가 발생합니다(ex1. A에서는 556이라고 기록 되었으면, B에서는 +-5정도의 차이가 납니다/ex2. A,B센서 모두 기기 작동 후 데이터 수집이 동일한 속도로 이루어지지 않았습니다)

D. C의 문제로 인해 또 전체 데이터셋 길이에 차이가 발생합니다.

이러한 상황에서, 이와 비슷한 경험이 있으신 분의 조언이나, 관련 데이터 매칭 알고리즘을 알고 계시다면 알려주시면 정말 정말 감사할 것 같습니다.

  • 데이터 계측 시간을 기준으로 매칭하면 어떨까요? 저는 2개 이상의 esp32로 계측한 데이터를 ble로 앱에 전송하고 시간을 기준으로 합치고 있습니다. 홍정욱 2023.1.5 08:06
  • 저랑 굉장히 유사한 상황이시군요 ㅋㅋ 광자 2023.1.9 13:21
  • 한 기기의 데이터 계측시간이 기기오류로 정확하지 않아서 사용하지 못하고있어요 pythontoohard 2023.1.9 14:47
  • 혹시 해결하신다면 방법론이라도 알려주시면 감사하겠습니다 ㅠㅠ pythontoohard 2023.1.9 14:48

1 답변

  • 저도 지금 첼린징 중이라서 이게 된다고 함부로 입은 못 털겠습니다. 일단 저는 t-sne 의 아이디어를 따와서, 집단과 집단의 유사성 세트를 A* 알고리즘으로 찾고 있습니다.

    이게 뭔 소리냐면,

    "통계적 위치" 를 여러 지표상에서 구한 다음에,

    이 아이템별 통계적 위치간의 관계 가 A랑 B 사이에서 가장 유사한 세트의 조합을 찾는 문제로 인식합니다.(distance가 가장 낮은 것)

    이 distance를 모든 경우에 대해서 다 구하면,

    아이템 by 아이템 의 2차원 메트릭스가 되고,

    여기서 행 하나 열 하나씩 고르고, 그 조합이 최소가 되는 세트 찾는 문제가 됩니다.

    이걸 A* 알고리즘으로 접근 중 입니다.

    휴리스틱은 잔여 디스턴스 메트릭스에서 잔여 행별 최소값의 총합으로 설정하였습니다.

    아이템 개수가 30개를 넘어가면, 회당 실행 시 8 시간 단위로 걸리기 때문에,

    우선순위 큐를 구성해서 소켓 쓰레드를 하나 잡고,

    나머지 쓰레드는 큐에서 값 받아와 연산하고 다시 소켓 통해서 큐에 집어넣는 형태로 돌게 만들어서 병렬화 했고,

    전체 디스턴스 맵의 분포를 그린 뒤, 상위 30% 값을 쓰레숄드로 잡아서 익스펜드 하지 않는 식으로 짰습니다.

    그래서 이렇게 짜면 되느냐?

    아직 뭔가 부족합니다. 저도 더 해야 하는데 일단 저는 이렇게 하고 있는 중 입니다.

    업무에 도움되시면 좋겠습니다.

    • 답변 정말 감사드립니다 한번 도전해봐야겠어요 pythontoohard 2023.1.9 17:19

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)