안녕하세요, 럽미네이비입니다. 오랜만이네요!
저는 요즘 데이터 분석에 큰 관심이 생겨 꾸준히 공부하고 있어요.
데이터 분석이란 우리가 실생활에 필요한 모든 데이터들을 한 번에 수집 및, 분석해서 유용한 정보나 규칙을 찾아내는 과정으로, 흔히 정보를 찾아주는 AI 서비스나 1:1 맞춤 컨텐츠를 제공해 주는 알고리즘을 구축하는 데 적용된다고 생각하면 편합니다.
이러한 서비스는 현대인들에게 많은 편리함을 제공해주고, 필요한 정보만을 얻을 수 있다는 장점이 있다 보니 점점 그 시장이 넓어져가는 추세인데요. 특히 고객의 니즈를 자세히 파악해야 하는 마케팅 업종이나 환자의 질병을 분석하는 의학분야 등 실생활에 밀접한 연관이 있는 분야에서 많은 수요가 있다는 점이 큰 강점이라고 할 수 있죠.
저도 이러한 특성에 흥미를 느껴 데이터 분석에 대해 알아가보고 있는데요. 어디서 공부를 시작할까 찾던 도중, '멀티캠퍼스'에서 제공하는 데이터 분석가 부트캠프가 적합하다고 느껴 수강을 신청했습니다. 제가 정말 코딩의 'ㅋ'조차도 모르던 사람이었는데, 파이썬의 기초부터 하나씩 가르쳐주신 덕분에 데이터 분석을 공부하는 데 있어서 많은 도움을 받고 있어요.
그래서 오늘! 제가 공부했던 부분 중 일부를 이 블로그에 담아 복습 겸, 내용 정리를 한 번 해볼까 합니다. 앞으로도 이러한 내용을 조금씩 업로드될 예정이니, 관심있으신 분들은 한 번쯤 방문해 보시는 걸 추천드려요~!
TIL 챌린지 1주차, 머신러닝- 군집화 (clustering)
이번에 제가 올릴 내용은 머신러닝 중 군집화에 대한 부분인데요.
군집화란 유사한 속성을 갖는 데이터를 묶어 전체의 데이터를 몇 개의 군집으로 나누는 것을 말합니다. 소위 말해서 여러 개의 공이 들어간 바구니에서 색이나 모양이 같은 것끼리 묶은 다음, 이를 몇 개의 덩어리로 구분하는 작업을 말하는 거죠.
이러한 분류는 데이터 수집과 학습에 있어서 중요한 과정이라고 할 수 있는데요. 그 이유는 어떠한 이미지나 정보를 수집할 적에 비슷한 정보들끼리 정리되어 있다 보니 데이터가 복잡해지는 것을 방지할 수 있으며, 이를 이용해 새로운 패턴을 발견한다거나 어떤 서비스를 제공해야 할지 전략을 세울 적에 상당히 유용하기 때문입니다.
특히 마케팅업종에서 많이 요구하는 편이라 생각하는데요. 고객의 니즈에 맞춰서 물품을 전시한다거나 연령별로 선호하는 스타일, 뷰티템 등을 공략해 구매력을 높이는 데 집중하기 위해서는 이러한 작업이 필수적으로 적용되어야 효율적인 마케팅이 될 수 있으니까요. 그래서 이를 이용한 데이터 분석이 많이 활용되는 편이라고 합니다.
군집화 (clustering)의 경우, 일반적으로 K-Means라는 알고리즘을 이용하는데요.
K-Means란 임의의 수인 K 개수만큼 군집을 묶는 과정을 말합니다. 수 많은 데이터 정보에서 임의로 중심점을 찍은 다음, 이것을 기준으로 군집을 묶고, 그 속에서 다시 중심점을 잡은 다음, 새로이 데이터들을 군집해 가면서 비슷한 특성이 모일 때까지 찾아가는 과정이라고 할 수 있겠죠.
이 알고리즘이 이해하기 편하고 단순해서 군집화할 적에 많이 쓰인다고 하던데, 막상 설명으로만 보니 처음에는 많이 복잡하다는 느낌을 받았어요. 😅 하지만, 실습을 하고나니 왜 K-Means 알고리즘이 대중적으로 쓰이는지 이해가 되더라고요.
군집화 실습 (붓꽃 데이터)
저는 이 알고리즘을 이용할 적에 붓꽃의 꽃잎과 너비의 데이터를 이용해 진행해 보았어요. 붓꽃 데이터를 호출한 다음, 이것을 시각화해 우선 전반적인 군집의 표본을 확인해보았습니다.
(코딩은 google colab에서 진행했습니다.)
이후, 필요한 자료들만 추출한 이후, 이것을 이용해서 K-Means 알고리즘을 이용해 3가지로 종류를 분류해 보았습니다.
이때, K-Means에서 필요한 매개변수가 있는데요. 바로 군집할 개수를 정해주는 n_clusters 매개변수입니다. 이 매개변수는 알고리즘이 앞으로 진행할 군집 과정에서 ' 아, 이 개수만큼 묶으면 되는구나!'라고 설정해 주는 장치라 생각하면 됩니다. 때문에 K-Means에서 중요한 작업 중 하나라고 할 수 있죠.
n_clusters 에 들어가는 숫자는 본인 마음대로 골라서 진행해도 되지만, 최적의 개수를 찾아서 넣으면 알고리즘을 진행하기가 더 효율적이겠죠? 그래서 필요한 방법이 있으니 바로 엘보우(elbow) method라고 합니다.
엘보우 방법 (elbow method)
이 방법은 최적의 n_clusters를 결정해 주는 방법인데요. K값을 변화시켜 가면서 군집 내 분산값 혹은 이너셔(inertia)라는 값을 측정한 다음, 이것을 그래프로 그린 것을 말합니다.
이때 얘기하는 군집 내 분산값이란 임의로 설정한 중심값과 데이터 간 사이의 제곱의 합을 말하며, K의 수가 늘면 늘수록 중심점의 개수가 많아진다는 의미이니 데이터 간 사이가 점점 좁아질 수밖에 없겠죠. 엘보우 방법은 그 그래프 중 가장 급격하게 사이가 좁아지는 시점을 찾아내 최적의 개수를 구하는 것을 말합니다.
이를 간단히 실습을 통해서 구해본다면
이런 코딩으로 진행해 볼 수 있겠으며, 결과물은 다음과 같습니다.
그래프에서 보시다시피, 급격히 꺾이는 부분이 보이죠? 이 부분이 군집화하기 좋은 개수라고 할 수 있겠습니다. 붓꽃 데이터의 경우 그 개수를 2, 또는 3으로 지정해 볼 수 있겠네요.
이러한 실습을 통해 머신러닝 기술 중 군집화에 대해서 충분히 이해하는 시간을 가졌습니다.
아직 배울 것이 많고, 따라가기 벅찰 때도 있지만, 이렇게 하나씩 기록하고 공부해 가면 언젠간 내 것이 되는 날이 오겠죠?
그런 날이 오기까지 열심히 정진해 보겠습니다.
이상, 럽미네이비였습니다. 감사합니다!
'일상' 카테고리의 다른 글
[멀티캠퍼스] TIL 챌린지 2주차, 데이터 분석 공부일지 (0) | 2025.06.10 |
---|---|
안동 산불로 보는 산불 예방의 중요성 (0) | 2025.03.26 |
꽃 덕후가 엄선한 국내 꽃 축제 여행지 추천 #벚꽃여행 #국내꽃축제 (0) | 2025.03.18 |
미세먼지 철벽 방어! 미세먼지 막는 법/ 미세먼지 대처하는 법 (1) | 2025.02.14 |
혼자 떠나기 좋은 해외 여행지 추천! 25년 2월 기준 (6) | 2025.02.05 |