[세줄요약]
1. 분할(Split) - 큰 문제를 자신이 해결 가능한 작은 문제로 나눠서 분할합니다.
2. 적용(Apply) - 분할한 작은 문제를 독립적으로 해결합니다.
3. 병합(Combine) - 해결한 모든 작은 문제를 하나의 큰 문제로 다시 합치는 작업을 진행합니다.
Split-Apply-Combine Strategy글을 참고하여 작성했습니다.
우리는 어떠한 복잡한 문제가 있을때, 큰 문제를 작은 문제로 분해하고 작은문제를 하나씩 풀어가며 결국 큰 문제를 해결합니다. 이처럼, 빅데이터 처리를 위한 탐색적 데이터 분석 단계에서도 하나의 큰 데이터 세트를 해결하고자 하는 문제의 기준에 따라 세분화 하고, 세분화된 작은 데이터 세트에서 유의미한 데이터 또는 정보를 집계 후, 문제에 접근 또는 해결합니다. 위 방법은 데이터 분석 방법 중 가장 일반적 전략 중 하나입니다. 아래 Hadley Wickham의 논문은 Split-Apply-Combine Strategy 전략에 대해 상세하게 설명이 기술되어있습니다.
Basic Split-Apply-Combine
가상의 DataFrame을 활용하여 분할-적용-결합을 진행하는 과정을 기술합니다.
Step1. 분할 단계 : 문제를 해결하고자 하는 기준에 따라 데이터를 그룹 분할기능으로 기존 그룹을 분할하고,
각각의 그룹를 생성합니다. 이때, 행열 조합을 사용하여 데이터를 원하는 형태로 분할할 수 있습니다.
Step2. 적용 단계 : 데이터를 집계, 변환 또는 필터링 등의 기법을 활용하여 각 그룹별 독립적으로 데이터를 가공합니다.
Step3. 결합 단계 : 적용 단계에서 얻은 결과를 모아서 데이터 구조로 재결합합니다.
Improved Split-Apply-Combine
Split-Apply-Combine기법은 직관적이고 간단하면서도 분석 결과도 좋은 모습을 보여주기에, 데이터 분석에 많이 사용되어왔습니다. 그래서 지금도 Split-Apply-Combine은 지속적으로 개선되고 있습니다.
Split-Apply-Combine의 개선 과정을 상세히 서술된 블로그는 아래 링크와 같습니다.
위 블로그의 내용을 요약하면 아래 기능을 활용하여 기존 기법들을 개선해왔습니다.
- ver.1.0 : Split-Apply-Combine: split, lapply, do.call(rbind, …)
- ver.2.0(plyr) : Split-Apply-Combine: plyr::ddply
- ver.3.1 tidyverse : Split-Apply-Combine: group_by, do
- ver.3.2 tidyverse : Split-Apply-Combine: group_by & by_slice
- ver.3.3 tidyverse : Split-Apply-Combine: group_by, nest, mutate(map())
- ver.4.0 tidyverse/base 하이브리드 조합 : Split-Apply-Combine: split, map_dfr
'AI > AI 이론' 카테고리의 다른 글
[EP. 5-1] Python에서 내부적으로 문자열을 처리하는 방법 (0) | 2021.12.01 |
---|---|
[EP. 31-3] 맵리듀스(MapReduce)의 개념과 원리 (0) | 2021.11.22 |
[EP. 31-1] 빅 데이터 처리의 기본 (0) | 2021.11.22 |
댓글