🚦Summary
- PyCon 2023 Korea 에서 강연한 내용을 유투브로 접하게 되었습니다.
- 이 영상에서는 오늘코드 라는 유투브를 운영중이신 박조은님께서 해주신 “짠내나는 데이터 다루기” 라는 영상에 대해 리뷰합니다.
- 이 영상에서 박조은님은 메모리가 제한된 상황에서 대용량 데이터를 처리하는 방법과 데이터를 효율적으로 줄이는 방법에 대해 설명합니다.
- 모든 영상의 내용을 정리할 순 없었지만 관심있게 본 부분 또는 주요 하이라이트에 대해 정리하였습니다.
🚫유의사항
- 전체적인 목차와 내용은 해당 영상을 보며 연사님이 설명해주시는 내용을 정리한 것입니다.
- 하지만 부가적으로 추가된 용어 설명, 샘플 코드 등은 별도로 내용에 대해 직접 찾아보고 정리하였습니다.
- 제가 정리한 내용은 영상의 모든 내용을 포함하고 있지 않으며, 각 시간대별 하이라이트 정도로 생각해주시면 될 것 같습니다.
- 해당 영상의 상세한 내용이 궁금하시다면 원본영상을 직접 보시는걸 권장 드립니다. (정리한 내용보다 더 많은 꿀팁이 있습니다.)
📌 Intro.
- 이전에 회고를 작성한것 처럼 저는 현재 AIFFEL 의 교육 프로그램(부트캠프)에 참여중입니다.
- 하루 일과중 점심시간 이후에는 AIFFEL의 퍼실리테이터 분들이 AI관련 주요 이슈나 논문등 다양한 이슈들에 대해 전달해주시는 AI News 라는 시간이 있습니다.
- 이때 소개받은 PyCon KR의 한 영상을 보고 내용을 정리하였습니다.
- 이 영상에서 다루는 주요 내용의 하이라이트는 아래와 같습니다.
💭 Hilights
- 데이터 처리를 최적화 하기 위해 청크, 파일, 포맷, 압축, 데이터 타입 조정, 파이썬 라이브러리 등을 활용합니다.
- 메모리 부족으로 인해 파일 가져오기가 느리거나 프로그램이 멈출 수 있으므로, 현재 실행중인 프로그램을 종료하고 컴퓨터를 재부팅해 메모리를 확보하는 것이 좋습니다.
- 데이터를 로드할 때 필요한 데이터만 가져오거나 특정 열을 선택적으로 로딩해서 행과 열의 수를 줄일 수 있습니다.
- 청크를 사용해 큰 파일을 작은 사이즈로 저장하고 필요한 데이터만 가져와서 합치는 전략을 사용하거나 파케(Parquet)형식을 사용해 데이터를 압축할 수 도 있습니다.
- 데이터를 청크로 나누어 로드하고, 다운캐스트 하여 파일로 저장한 후 다시 로드하여 합치는 방법을 사용하면 용량을 줄일 수 있습니다.
1. Intro (00:02~06:35)
- 데이터를 줄이는 방법으로는 대표적으로 청크, 파일포맷, 압축, 데이터 타입조정, 파이썬 라이브러리 사용 등이 있습니다.
- 이번 영상에서 발표자는 제한된 메모리에서도 큰 사이즈의 파일을 처리할 수 있는 방법을 알려주고자 합니다.
2. 메모리 관리와 작업 환경 (06:35~10:34)
- 개인용 장비의 메모리는 보통 4GB ~ 64GB 정도를 사용하며, 8GB 이상의 메모리를 사용하는 사람들은 여러 프로그램을 동시에 사용해야 하는 환경입니다.
- 큰 사이즈의 파일을 한 번에 가져오려면 메모리가 부족하거나 느려질 수 있으며, 프로그램이 멈추거나 종료될 수도 있습니다.
- 컴퓨터에서 데이터를 로드하고 분석하는 동안 다른 작업들도 많이 하게 되면 메모리가 차지되어 데이터를 로드하지 못하는 경우가 발생할 수 있습니다.
-
작업할 수 있는 환경을 만들기 위해 현재 실행 중인 프로그램 중 사용하지 않는 것들을 종료
하고, 메모리를 확보해야 합니다.
- 컴퓨터를 재부팅하고 큰 용량의 데이터를 처리하기 위해 블록을 준비하는 것이 좋습니다.
<Comment 🤔>
어찌보면 단순하고 뻔한 말일 수 있지만, 실제로 잘 실행하지 않는 방법이기도 하고, 처음 데이터를 분석하는 사람들은 대용량 데이터를 다룰 때 간과 하는 부분인 것 같기도 합니다.
3. 판다스의 장점과 주의할 점 (10:34~14:09)
- 판다스는 메모리 효율성과 생산성 측면에서 데이터 분석에 매우 유용한 툴입니다.
- 사이킷런에서는 판다스와 호환성이 좋아져서 데이터 프레임을 그대로 사용할 수 있습니다.
-
판다스는 대부분 메모리에 데이터를 로드해서 처리
하기 때문에 큰 데이터셋을 분석하는데 어려움이 있을 수 있습니다.
- 특히 복사본이나 파생변수를 만드는 경우 메모리를 낭비할 수 있습니다.
<Comment 🤔>
- 공감이 정말 많이 가는 내용이었습니다. 특히 다양한 변수를 만드는 과정이나, 데이터의 전처리 전후 과정에서 각각 가공을 하려고 하다보면
df.copy()
도 정말 많이 쓰는 기능 중 하나인데, 소규모 데이터를 다룰 때야 편하지만 대용량 데이터가 되면 몇개의 copy만 만들어도 메모리를 엄청나게 차지합니다.- 애초에 대규모 용량 데이터를 여러번 불러오기 싫어서(한번 불러올때 몇분씩 걸리다보니..) 사용하는 기능이긴 하지만 공부할때 쓰는 몇GB나 소규모 프로젝트에서 쓰는 몇십GB 단위가 아니라 3자리수로 넘어가면 이것을 어떻게 처리해야 하는가에 대한 고민은 항상 있었던 것 같습니다.
4. 데이터 로딩 및 최적화 처리 방법(14:09~21:46)
- 데이터를 로드할 때 필요한 데이터만 샘플링하여 가져오는 방법을 사용하면 행을 줄일 수 있습니다.
-
특정 열을 인덱싱하거나 선택적으로 로딩
해서 열을 줄일 수도 있습니다.
- 큰 파일을 청크로 나눠서 작은 사이즈로 저장한 뒤 필요한 데이터만 가져와서 합치는 전략을 사용할 수도 있습니다.
- 파케 형식을 사용해서 데이터를 압축하는 방법을 사용해도 됩니다.
- 마지막으로 데이터를 병렬처리해서 처리속도를 높일 수 있습니다.
Comment 🤔
- 항상 공부할 때는 전체 데이터를 모두
info()
나describe()
정도로 훑어보고 일일히 모두 EDA로 시각화를 했었기 때문에, 데이터를 쪼개서 본다는 것에 대한 생각을 미처 하지 못했던 것 같습니다.- 물론 전처리 과정에서 EDA를 거친 후 불필요한 데이터를 걸러내는 과정을 거치기는 하지만 생각지 못한 접근법이었던 것 같습니다.
- 특히, 피클형식이 아닌 파케라는 데이터 형식은 처음 접해보게 되어서 관심을 갖고 찾아보게 되었습니다. 아래에 관련 내용을 정리하였습니다.
✔️ 청크(chunk)
큰 데이터 셋을 처리하기 쉽도록 작은 단위로 분할한 일부분을 의미합니다. 데이터의 처리, 네트워크 전송과 같은 컴퓨팅 작업에서 데이터를 더 작고 관리하기 쉬운 부분으로 나누는 것을 말합니다.
💡 판다스를 사용한 청크(chunk)로 파일 소분하기(w. 예제코드)
- 판다스를 사용해서 대용량의 데이터를 청크로 나누어 작은 데이터로 만들어 저장할 수 있습니다.
- 이는 데이터를 효율적으로 다루기 위한 일반적인 방법입니다.
- 대용량의 파일을 청크로 만들어 저장하는 방법은 아래와 같습니다.
- 1) 데이터 읽기
read_csv
등 파일을 읽어오는 함수로 데이터를 나눠서 읽습니다.chunksize
매개변수를 설정해 한번에 읽을 행의 수를 지정합니다.
- 2) 청크 처리
- 데이터를 청크 단위로 순회하며, 각 청크를 처리 합니다.
- 필요한 데이터 처리 작업(필터링, 변환 등)을 각 청크에 대해 수행합니다.
- 3) 청크 저장
- 처리된 청크를 별도의 파일로 저장합니다.
to_csv
등 함수로 각 청크를 개별 파일로 저장합니다.
- 4) 필요시 합치기
- 나중에 전체 데이터셋이 필요한 경우, 저장된 모든 청크를 다시 읽어 하나의 데이터프레임으로 합쳐서 사용합니다.
- 1) 데이터 읽기
[예제코드]
1
2
3
4
5
6
7
8
9
10
import pandas as pd
chunksize = 1000 # 예를 들어, 청크 크기를 1000행으로 설정
for i, chunk in enumerate(pd.read_csv('large_file.csv', chunksize=chunksize)):
# 필요한 데이터 처리
processed_chunk = process_data(chunk) # process_data는 사용자 정의 함수
# 처리된 청크를 파일로 저장
processed_chunk.to_csv(f'chunk_{i}.csv', index=False)
✔️ 파케(Parquet)
파케는 대용량데이터를 저장하고 처리하기 위해 설계된 열 기반의 파일 포맷을 말합니다.
이 포맷은 특히 Hadoop 생태계에서 많이 사용됩니다. 하지만 파이썬에서도 파케형식을 사용해 데이터를 저장하고 다룰 수 있습니다.
💡 파케(Parquet)파일의 주요 특징
-
효율적인 데이터 압축과 인코딩: 파케는 데이터를 열 단위로 압축하고 인코딩합니다. 이로 인해 동일한 데이터 타입을 가진 열 데이터를 더 효율적으로 압축할 수 있습니다.
-
데이터 분석 최적화: 열 기반 저장은 데이터 분석 쿼리의 성능을 향상시킵니다. 특정 열만을 대상으로 하는 쿼리의 경우, 필요한 열만을 빠르게 읽어들일 수 있습니다.
-
스키마 지원: 데이터의 구조(스키마)를 포함하여 저장합니다. 이를 통해 데이터 타입 및 구조에 대한 정보를 파일과 함께 유지할 수 있습니다.
-
대용량 데이터 처리에 적합: 큰 데이터 세트를 다룰 때 파일 크기가 작고, 읽기/쓰기가 빠르며, 분석이 용이합니다.
파케 형식은 Pandas와 같은 데이터 분석 도구와 호환되어, Python 환경에서도 쉽게 사용할 수 있습니다. 이는 대용량 데이터를 효과적으로 저장하고 처리하는데 매우 유용한 포맷이며, 피클과는 다르게 대규모 데이터에 더 특화된 형태입니다.
✔️ 병렬처리 (Parallel Processing)
데이터의 병렬처리는 데이터의 처리작업을 여러 프로세서나 컴퓨터에서 동시에 수행하는 것을 말합니다. 이 방식은 큰 데이터셋이나 복잡한 계산 작업을 더 빠르게 처리할 수 있도록 해줍니다.
병렬처리의 핵심 아이디어는 ‘분할정복(divide and conquer)’ 로, 큰 문제를 작은 하위문제들로 분할하고, 이들을 동시에 병렬적으로 해결한 다음, 결과를 합쳐 최종 결과를 도출하는 방식입니다.
💡 병렬처리의 주요 특징 및 고려사항
-
효율성: 데이터 처리 속도가 향상됩니다. 복잡한 작업을 여러 부분으로 나누어 동시에 처리하기 때문에, 전체적인 작업 완료 시간이 단축됩니다.
-
규모 확장성: 대규모 데이터 세트나 복잡한 연산을 처리할 수 있는 능력이 향상됩니다. 더 많은 계산 자원(코어, 프로세서, 서버 등)을 활용할 수 있습니다.
-
자원 활용 최적화: 컴퓨터의 여러 코어나 여러 컴퓨터를 활용함으로써 자원을 효율적으로 사용할 수 있습니다.
병렬 처리의 적용 예
- 데이터베이스 쿼리: 대용량 데이터베이스에서 복잡한 쿼리를 빠르게 처리하기 위해 사용됩니다.
- 데이터 분석 및 머신 러닝: 대규모 데이터셋에 대한 데이터 분석이나 머신 러닝 모델 훈련을 가속화하기 위해 사용됩니다.
- 이미지 및 비디오 처리: 고해상도 이미지나 비디오를 처리할 때 병렬 처리를 사용하여 빠르게 작업을 수행합니다.
병렬 처리의 고려 사항
- 데이터 분할과 통합: 데이터를 적절히 분할하고, 각 부분을 처리한 후 결과를 통합하는 과정이 필요합니다.
- 오버헤드 관리: 병렬 처리로 인한 관리 오버헤드(통신, 동기화 등)가 발생할 수 있습니다.
- 자원 관리: 자원의 효율적인 할당과 관리가 중요합니다.
💡 판다스에서의 병렬처리 (w. 예제코드)
파이썬과 판다스에서 대규모 데이터를 병렬처리하는 것에는 다양한 방법이 있습니다만, 여기서는 concurrent.futures 라는 모듈을 사용해 처리할 수 있는 간단한 예제 코드를 소개 합니다.
이 코드에서는 대규모 데이터를 청크로 나눠서 병렬로 처리한 뒤, 결과를 합치는 과정을 소개 합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import pandas as pd
import numpy as np
from concurrent.futures import ThreadPoolExecutor
# 샘플 데이터 생성 (대규모 데이터를 가정)
data = np.random.rand(1000000, 5) # 1백만 행, 5열의 데이터
df = pd.DataFrame(data, columns=['A', 'B', 'C', 'D', 'E'])
# 데이터를 처리하는 함수 정의
def process_data(chunk):
# 여기서는 간단하게 평균을 계산하는 예시
return chunk.mean()
# 데이터를 청크로 나누는 함수
def divide_chunks(data, chunk_size):
for i in range(0, len(data), chunk_size):
yield data[i:i + chunk_size]
# 데이터를 청크 사이즈에 따라 나눔
chunk_size = 100000 # 예: 청크 크기를 10만으로 설정
chunks = list(divide_chunks(df, chunk_size))
# ThreadPoolExecutor를 사용하여 병렬 처리
with ThreadPoolExecutor(max_workers=5) as executor:
results = list(executor.map(process_data, chunks))
# 결과 합치기
final_result = pd.concat(results)
5. 파케(Parquet) 파일과 CSV파일의 비교
- 파케 파일은 열(row) 기반으로 압축을 해서 행(column) 기반으로 저장하는 csv 파일에 비해 효율적입니다. (대용량 파일 한정)
- 하지만, 작은 데이터를 파케 형식으로 저장하면 csv파일보다 용량이 커질 수도 있습니다.
- 파케 파일은 데이터 타입이 모두 같기 때문에 압축 효율이 높습니다.
- 파케 파일은 메타 정보와 스키마 정보를 포함하고 있기 때문에 효율적이라 할 수 있습니다.
- 이런 이유로 파케 파일은 CSV파일 대비 데이터의 크기를 줄 일 수 있습니다.
💡 파케파일의 특징
- 열 기반 저장 : 파케는 데이터를 열 단위로 저장합니다. 이 특징은 동일한 데이터 타입을 가진 열 데이터를 효과적으로 압축할 수 있게 해줍니다.
- 데이터 압축 : 파케는 고급 압축 기법을 사용해서 데이터를 압축합니다. 일한 압축 기법은 특히 반복되는 데이터가 많은 경우 대용량의 데이터에 대한 용량을 크게 줄일 수 있습니다.
- 효율적인 데이터 구조 : 파케는 메타데이터와 데이터 스키마를 포함하여 저장하기 때문에 , 데이터 구조가 csv파일에 비해 효율적입니다.
💡 CSV 파일의 특징
- 행 기반 저장 : csv는 각 행을 순차적으로 저장합니다. 이는 열 기반 저장에 비해 압축 효율이 낮을 수 있습니다.
- 간단한 구조 : csv는 텍스트 기반의 간단한 파일 포맷이기 때문에, 메타 데이터나 데이터 스키마를 포함하지 않습니다.
- 호환성 : 거의 모든 데이터 처리 시스템에서 널리사용되는 포맷이기에, 쉽게 읽고 쓸 수 있습니다.
🤓 언제 파케가 csv보다 더 효율적일까?!
- 데이터 크기와 복잡성 : 대규모 데이터셋, 특히 각 열(column) 마다 데이터 타입이 다양하고, 반복되는 데이터가 많은 경우 파케의 압축 효율이 높아집니다.
- 쿼리 최적화 : 데이터 분석에서 특정 열에 대한 쿼리를 자주 실행하는 경우, 열 기반 저장 방식인 파케 데이터가 효율적입니다.
- 압축 효율 : 데이터가 반복되거나 패턴이 있는 경우, 파케의 압축 알고리즘이 효과적으로 작동할 수 있습니다.
- 정리하자면 아래와 같습니다.
✳️ 작은 파일이라면 csv의 단순한 자료구조(No 메타데이터, No 스키마) 로 인해 효율적인 구조를 갖게 되고, 이는 더 적은 용량으로 저장할 수 있도록 해줍니다. 하지만 아래의 케이스들이 대규모 데이터로 구성되어 있다면 파케가 csv보다 더 효율적일 수 있습니다.
- 컬럼의 데이터타입이 유사한 경우 : 각 컬럼마다 가진 데이터 타입이 유사한 (모두 숫자이거나 모두 문자인 경우 등) 경우, 컬럼 기반의 파케식 압축이 효과적입니다.
- 반복되는 데이터 패턴 : 컬럼 내의 데이터가 반복적인 패턴을 보이거나 중복이 많을 때. 예를 들어 몇가지 범주(성별, 지역 등)으로 구성된 컬럼을 압축할 때 파케식 압축이 효과적입니다.
- 정렬된 데이터 : 같은 데이터셋이라도 특정 기준에 따라 정렬이 되어 있다면 파케식 압축의 효율을 더 높일 수 있습니다.
- 시계열 데이터 : 날짜나 시간순으로 정렬
- 숫자 데이터 : 크기나 오름/내림차순으로 정렬된 숫자
- 범주형 데이터 : 알파벳순서나 특정 사용자 지정 기준에 따라 정렬된 경우
6. 데이터 로드와 저장의 최적화 방법 (32:44~37:54)
- 데이터를 청크로 나눠서 로딩하고, 다운캐스트해서 파일로 저장한후 다시 로딩해서 합치면 최적화를 할 수 있습니다.
- 다운캐스트를 통해 데이터 타입을 변경하면 데이터의 전체적인 용량을 줄일 수 도 있습니다.
- 그 외에 위에 언급한 파케형식의 데이터 저장도 최적화의 방법중 하나입니다.
- 또한, 파일을 작게 나눠서 저장하고 로딩하면 파일의 로딩이나 저장 속도를 향상시킬 수 있습니다.
- 마지막으로, 데이터를 정규화해서 용량을 줄이는 방법도 있지만, 원본 데이터의 정보를 잃을 수도 있으므로 사용에 유의해야 합니다.
💡 다운캐스트
- 다운 캐스트는 데이터 타입을 변경해서 용량을 줄이는 기법을 말합니다.
- 예를 들어, 정수형 데이터를 int64에서 int32나 int16으로 변경하면, 같은 데이터를 더 적은 메모리로 저장할 수 있습니다.
- 주로 숫자 데이터를 저장할 때 사용되는 방법입니다.
✳️ [정리] 데이터 분석을 위한 효율적인 데이터 처리 방법(37:54~41:30)
- 데이터 샘플링 및 특정 목적의 데이터 추출
- 전체 데이터를 모두 읽고 분석하는 대신 샘플링을 통해 대표적인 데이터 집합을 추출하여 분석할 수 있습니다.
- 이는 시간과 자원을 절약함과 동시에 대규모 데이터셋의 주요 특정을 파악하는데 도움을 줍니다.
- 특정 목적에 맞춰 필요한 데이터만 선택적으로 추출하여 분석함으로써 더 효율적으로 데이터를 처리할 수 있습니다.
- 필요한 데이터와 모듈만 로드
- 데이터 분석시 필요한 부분만 추출해서 저장하고, 해당 분석에 필요한 모듈만 로드해서 메모리 사용을 줄일 수 있습니다.
- 필요하지 않은 데이터나 모듈을 로드하지 않는 것은 메모리 절감과 처리속도 향상을 위한 가장 기본적인 유의사항입니다.
- 데이터 청크와 서브셋 활용
- 위에 언급한 바와 같이 대용량 데이터를 여러개의 작은 청크로 나눠서 각각 독립적으로 처리할 수 있습니다.
- 이는 메모리 관리를 용이하게하고, 병렬 처리를 가능하게 합니다.
- 데이터의 서브셋을 생성해 작은 단위로 데이터를 관리하고, 필요한 경우 여러 서브셋을 병합해 사용하는것도 가능합니다.
- 컬럼 선택을 통한 데이터 처리
- 분석에 필요한 컬럼만들 선택해 데이터를 로드하고 처리함으로써 불필요한 데이터에 대한 처리를 피할 수 있습니다.
- 메모리 최적화
- 사용하지 않는 변수를 제거하거나 파이썬의 가비지 컬랙터(garbage collector) 를 통해 메모리를 최적화 할 수 있습니다.
- 이는 메모리 누수를 방지하고, 분석 시스템의 전반적인 성능을 개선하는 효과를 가져 옵니다.
💡 가비지 컬랙터(garbage collector)
- 가비지 컬랙터는 메모리 관리를 자동으로 수행하는 시스템으로, 사용되지 않는 메모리를 garbage 로 인식하고 이를 해제하는 역할을 합니다.
- 파이썬에서는 주로 참조 카운팅(reference counting) 방식과 순환참조(circular references)를 감지하는 방식으로 가비지 컬랙션을 수행합니다.
✔️ 참조 카운팅(Reference Counting)
- 파이썬에서 각 객체는 참조 카운트라는 속성을 갖고 있습니다.
- 어떤 객체에 대한 참조가 생성될 때마다 해당 객체의 참조 카운트가 증가하고, 참조가 해제될 때 참조 카운트가 감소합니다.
- 참조 카운트가 0이 되면(해당 객체를 참조하는 것이 없는 경우), 파이썬의 가비지 컬랙터는 그 객체가 사용하던 메모리를 해제 합니다.
- 참조카운트는
sys
모듈의getrefcount()
함수로 확인할 수 있습니다. (sys.getrefcount(객체명)
)
✔️ 순환 참조(Circular Counting)
- 순환 참조는 서로 다른 객체들이 서로를 참조해서, 참조 카운트가 0이 되지 않는 상황을 말합니다.
- 이 경우 참조 카운팅 만으로는 메모리 해제가 어렵습니다.
- 파이선의 가비지 컬랙터는 이런 순환 참조를 감지하고 이를 해제할 수 있도록 설계 되어 있습니다.
- 순환 참조가 발생하면 가비지 컬랙터는 이러한 객체 그룹을 발견하고 메모리에서 해제할 수 있습니다.
🤓 가비지 컬랙션을 제어하는 방법
- 파이썬에서는
gc
모듈을 통해 가비지 컬랙션을 직접 제어할 수 있습니다. gc.collect()
함수를 호출하면 가비지 컬랙션을 강제로 실행합니다.-
또한, 가비지 컬랙션의 활성봐/비활성화, 세대별 가비지 컬랙션의 조정 도 수행할 수 있습니다.
- 대부분의 경우 가비지 컬랙터는 메모리 관리를 자동화해서 프로그래머가 메모리 할당 및 해제에 신경쓰지 않도록 도와주는 시스템입니다.
- 하지만 대규모 데이터를 다루는 경우, 순환 참조를 피하고, 필요없는 객체를 적절히 해제하는 것이 중요합니다.
- 따라서 이를 위해 사용자가 직접 gc모듈을 사용해 가비지 컬랙션을 수행할 수 있습니다.
[Review] 한 가지 방법에 고착될 필요가 없구나..
- 저용량의 데이터를 다룰때에는 크게 고민하지 않던 부분들이 대용량이 되었을때 어떤 문제들에 직면할 수 있는가를 확연히 느낄 수 있는 강연이었다고 생각합니다.
- 이제까지는 데이터 로딩 처리가 느리거나 하면, 물리적인 메모리를 더 늘릴 생각만을(더 좋은 컴퓨터를 사기위한 핑계) 했는데, 그것 외에도 즉각적으로 사용할 수 있는 다양한 방법이 있다는 것을 느끼게 되었습니다.
- 다만 이러한 데이터의 처리방법들은 시작부터 무조건 적용할 수는 없다는 것을 인지 해야 합니다. 애초에 전체 데이터가 어떻게 생겼는지, 어떤 데이터들을 가지고 있고, 어떤 특성이 있는지 파악이 되지 않는 다면 이러한 방법들을 알고 있어서 적절하게 적용하기 어렵습니다. (물론 청크같은 방법들은 분석 시작 지점 부터 가능할 수 도 있겠습니다.)
- 그렇기에 더더욱 EDA가 중요하다는 것을 역설적으로 느끼게 된 것 같습니다.
- 그리고 이러한 대용량 데이터의 처리방법은 AI 모델링을 한 이후 모델 성능 향상 과정에서의 효율적인 작업에 더더욱 적합하겠다는 생각이 들었습니다.
댓글남기기