강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

배재용님의 프로필 이미지
배재용

작성한 질문수

[개정판] 파이썬 머신러닝 완벽 가이드

시계열 데이터의 분류 학습 및 고차원 데이터 처리에 대해

작성

·

792

0

강사님의 강의를 수강하면서 자체적으로 많은 머신러닝 공부를 진행하게 되었습니다.

그래서 강의 내용과는 조금 벗어나는 내용이지만, 질문하고 싶은 내용이 있어 문의드립니다.

요즘 머신러닝을 이용하여 시계열 데이터를 분류하는 코드를 작성하고 있는데, 

KMeans 같은 경우, fit_predict  함수 자체가 X에 대한 인풋이 2차원이더군요.

그래서 시계열 부분이 작은 경우는 reshape를 통하여 2차원 array로 바꾸어서 처리를 하는 방식으로 돌아갔습니다.

( n_samples, n_time_steps, n_features ) -> (n_samples , n_times_steps * n_features )

적은 시계열 데이터에 대해서는 위의 과정이 적합하다고 생각이 들지만,

많은 시계열 데이터에 대해 다룰 경우,  columns의 양이 너무 커져 올바른 분류학습이 되는지 의문이 듭니다.

질문을 정리하자면,

첫번째로, 혹시 이러한 시계열 포함 데이터에 관한 ( 일반적으로, 3D array input_data )에 대한 분류처리의 다른 방법이 있는지 궁금합니다.

두번째로, 분류이외의 다른 학습에서도,

이렇게 고차원 데이터의 경우, feature에 여분차원을 우겨넣으면서 머신러닝을 수행하여도 학습자체에 문제가 없을까요 ?

(n_samples, n_time_stpes, n_features, n_sub_features , ...etc ) -> (n_samples, FEATURES )

인간의 관점에서는 우겨넣어서 생각하면 올바른 학습이 이루어 지지는 않을것 같기도 하면서도,

기계학습의 관점에서는 또 단순 input에 대한 처리일 뿐이니 상관없을것 같기도 하고 조금 혼란스럽네요.

별개로, 항상 좋은 강의 감사드립니다. 정말 큰 도움이 되고 있습니다.

답변 1

1

권 철민님의 프로필 이미지
권 철민
지식공유자

안녕하십니까,

1. 일반적으로 딥러닝이 아닌 사이킷런 기반의 머신러닝은 2차원의 데이터만 입력 데이터로 가능합니다.

물론 3차원 이상의 입력 데이터가 가능하지 않은건 아니지만 이를 머신러닝 입력데이터로 사용할 경우 보통은 앞에서 말씀하신 대로 차원을 flatten해서 2차원으로 맞춥니다. 즉 (n_samples, n_time_steps, n_features)를 (n_samples x n_time_steps, n_features)로 변환해서 입력합니다. 적어 주신대로 (n_samples, ntime_steps x n_features)로 변환하면 너무 feature들이 많아져서 저도 제대로 모델링이 될지 의문입니다. (물론 시계열 부분이 작은 경우는 가능할 수도 있을 것 같습니다만)

2. 일단 일반 머신러닝으로 입력하려면 다차원을 2차원으로 구겨 넣어야 합니다. 딥러닝의 장점이 다차원의 데이터를 입력 데이터로 사용할 수 있으며, 이 다차원 입력 데이터가 차원으로 가지는 특징을 활용할 수 있다는 것입니다. 이미지를 예로 들자면 2차원 적인 위치 특성을 모델에 반영할 수 있습니다.

하지만 딥러닝이라도 (n_samples, n_time_stpes, n_features, n_sub_features , ...etc ) 다차원은 처리가 곤란합니다. 보통은 3차원, 4차원 그리고 Video같은 경우는 5차원에 제한됩니다.

정리하자면 일반 머신러닝으로 입력데이터를 사용하려면 2차원으로 구겨 넣어야 합니다. 이 경우 원본 데이터가 가지는 특징이 없어지는 문제가 발생할 수 있습니다. 예를 들어 RGB 채널을 하나로 구겨 넣으면 색깔과 관련한 특성을 얻을 수 없습니다. 따라서 구겨 넣을 때는 이러한 문제가 발생할 수 있다고 생각하고 모델을 만들어야 합니다.

좋은 질문 감사합니다.

배재용님의 프로필 이미지
배재용

작성한 질문수

질문하기