brunch

You can make anything
by writing

C.S.Lewis

by 정경문 Sep 22. 2024

알고리즘이란 무엇인가?

K-NN과 K-means 알고리즘 차이점에서부터 인간관계까지

# 1. 얼마나 가까운가? 를 계산하는 방법


두 편의점 중에서 어디가
집에서 더 가까울까요?


초등학교 시절 수학 문제를 떠올려 보세요. 집에서 가장 가까운 편의점을 찾는 문제입니다. 네이버 지도에서 거리만 가까우면 진짜 가까운 편의점일까요? 어디가 더 가까운지 거리를 계산하는 방식을 두 가지 소개해드릴게요.


첫 번째 방법은 큰 도로를 따라 거리를 계산하는 방식입니다.


2차원 평면 공간에서 두 점 사이의 거리를 측정하는 방법 중 하나로, 두 점 사이의 수평 및 수직 이동 거리의 합으로 정의됩니다. 미국 뉴욕의 맨허튼처럼 바둑판 격자 모양으로 도로가 나있는 상황에서, 한 지점에서 다른 위치로 이동하기 위해서 필요한 거리라는 뜻에서 유래한 말로 맨허튼 거리(Manhattan Distance)라고 합니다.


두 번째는 지름길을 찾아서 직선거리로 이동하는 방식입니다.


이 방식은 우리에게 가로 길이 제곱, 더하기 세로 길이 제곱은 직선거리의 제곱과 같다는 피타고라스의 정리로 익숙하죠. 좀 더 수학적인 단어로 우리는 이것을 유클리디안 거리(Euclidean distance)라고 합니다. “수학에는 왕도가 없다” 라는 말로 유명한 기원전 3세기 수학과 기하학의 아버지 에우클레이데스(Εὐκλείδης | Euclid)가 고안한 방식이죠.


큰 길로 가면 B 편의점이 더 가깝고, 지름길로 가면 A 편의점이 더 가깝다.


이렇게 거리를 측정하는 방법은 두 지점이 얼마나 가까운 지를 판단하고자 하는 방법이죠. 두 지점이 가깝다는 말은 우리가 관찰한 성격, 즉 데이터의 속성이 얼마나 유사한지를 평가하는 방법이 됩니다.


가깝다(Close) = 유사하다(Close)

바로 이 원리를 담고 있는 것이 K-NN과 K-means 알고리즘입니다.




# 2. 가장 가까운 이웃을 몇(K) 개나 고려할까? K-NN

K팝, K푸드, K뷰티 아시죠?
그럼 K-NN, K-means 도 알고 계실까요?


그렇다면 K가 Korea의 K는 아닌 것이 확실하고, K가 진짜 의미하는 바를 찾아가 보겠습니다.

먼저 첫 번째 K-NN을 알아볼까요? K-NN의 풀 네임은 K-Nearest Neighbor입니다. Nearest는 “가장 가까운”이고, Neighbor는 “이웃”이라는 것을 알 수 있습니다. 여전히 K는 알 수 없는데요. K는 바로 이렇습니다.


파란색빨간색 두 개의 집단이 있다고 했을 때, 가운데 녹색 점이 두 집단 중에 어디에 속하는지를 분류하는 문제가 있습니다. 앞서 설명한 방식 데로 가장 가까운 몇 개의 지점을 뽑아서, 가까운 점 들이 어느 집단에 속하는지를 볼 수 있습니다.


예를 들어, 위 그림에서 가장 가까운 3개의 점을 뽑아서 보니, 파랑이 1개, 빨강이 2개 이므로, 좀 더 많은 수인 '빨강' 집단으로 분류할 수가 있습니다. 이제 뽑는 점을 3개 아닌 5개를 뽑을 수도 있고, 7 개를 뽑을 수도 있습니다. 이처럼 분류를 위해 사용하는 데이터의 개수를 K라고 정의하고, K개의 가장 가까운 이웃을 살펴보고 해당 지점을 특정 집단으로 분류하는 알고리즘을 "K-NN(K-Nearest Neighbor 최근접 이웃)"이라고 합니다.



#3. 비슷한 친구들을 몇(K) 개의 모둠으로 나눌까? K-means


그럼 나머지 하나, K-means 알고리즘으로 가보겠습니다. 모르는 사람들을 사람들을 단순히 키와 몸무게를 기준으로 여러 집단으로 나눈다고 가정해 보겠습니다.


그림에서 가로 X축에 키, 세로 Y축에는 몸무게를 나타냅니다. 그러면 3개의 집단으로 나눴을 때, 첫 번째 키가 작고 몸무게가 많이 나가는 집단, 두 번째 키가 중간이고, 몸무게는 적게 나가는 집단, 세 번째는 키도 크고 몸무게가 많이 나가는 집단으로 구성이 됩니다.

어떤 한 사람이 어느 집단에 속할지를 판단하는 방법은 앞서 알아본 다른 사람들과의 유사성을 거리를 판단하는 것으로 동일하지만, 3개의 집단이라는 집단의 개수가 중요한데요. 바로 이것이 K-means 알고리즘에서 K 값은 나누고자 하는 집단의 개수를 의미입니다.


K-means에서 means는 '평균' 이니까 각 집단의 평균점을 계산할 차례입니다.

K-means를 계산하는 방식은 다음의 (a) ~ (f) 단계로 이루어집니다.

출처 : 경영정보시각화능력 필기(예문에듀)

먼저 초기화 단계(a)에서는 데이터세트에서 K개의 초기 중심점을 무작위로 선택합니다. 이 중심점들은 각 군집의 초기 위치를 나타내며, 군집화 과정의 시작점이 됩니다.


그다음 할당 단계(b)에서는 각 데이터를 가장 가까운 중심에 할당합니다. 이때, 주로 앞서배운 유클리디안 거리 계산을 사용하여 각 데이터 포인트와 중심점 간의 거리를 측정하고, 가장 가까운 중심에 데이터를 배정합니다.


이후 업데이트 단계(c)에서는 각 군집의 중심을 다시 계산합니다. 각 군집에 속한 모든 데이터 포인트들의 좌표 평균을 구해 새로운 중심을 설정하고, 이를 기준으로 군집의 위치를 재할당(d) 합니다.


마지막으로, 반복 단계에서는 중심 업데이트(e)와 할당(f) 단계를 반복하여 중심들이 더 이상 움직이지 않을 때까지 과정을 계속합니다. 중심점의 변화가 멈추면 알고리즘은 수렴한 것으로 간주하고, 최종 군집을 완성하게 됩니다.



#4. 지도와 비지도 학습


첫 번째 K-NN 알고리즘은 애초에 “파랑” 점과 “빨강” 점으로 각 점들의 색의 라벨이 정해져 있습니다. 이렇게 라벨값이 사전에 정해진 데이터를 활용하는 것을 미리 알려주었다고 해서 “지도학습”이라고 합니다.

K-NN(좌), K-means (우) 알고리즘의 시작 비교


반면에, 그림에서 자세히 보시면 K-means 알고리즘에서 점들의 색상은 앞서 K-NN과는 달리 색상이 정해져 있지 않습니다. 이처럼 색이라는 라벨이 사전에 정의되어 있지 않은 데이터를 학습에 활용한다고 해서 비지도 학습이라고 합니다.


다시 정리하면, K-NN (K-Nearest Neighbor)는 주어진 데이터를 이미 분류된 라벨과 비교해 가장 가까운 이웃들과의 유사성을 바탕으로 새로운 데이터를 분류하는 지도학습(Supervised Learning) 알고리즘입니다. K는 '가장 가까운 이웃'의 수를 의미하며, 이웃이 많을수록 더 정교한 분류가 가능합니다. 예를 들어, 새로운 데이터가 들어오면 가장 가까운 K개의 이웃을 찾아 이웃들의 라벨에 따라 그 데이터를 분류하는 방식입니다. 미리 라벨이 지정된 데이터를 학습하는 것이 특징입니다.


그리고, K-means는 라벨이 없는 데이터를 군집으로 나누는 비지도학습(Unsupervised Learning) 알고리즘입니다. K는 군집의 수를 의미하며, 주어진 데이터를 K개의 군집으로 나누고 각 군집의 중심점(평균값)을 기준으로 데이터를 반복적으로 재배치하여 군집을 형성합니다. 이 알고리즘은 미리 정의된 라벨이 없기 때문에 데이터를 스스로 분류하고, 유사한 특성을 가진 데이터끼리 그룹화하는 역할을 합니다.


군집분석(K-Means)과 분류분석(K-NN) 알고리즘의 핵심은 바로 데이터의 “유사성”입니다. 이 두 알고리즘은 데이터를 근처에 있는 다른 데이터들과 비교해, 얼마나 가까운지를 판단하여 새로운 데이터를 분류하거나 군집을 만듭니다. 인공지능의 이러한 작동원리는 비슷한 데이터를 그룹화하는 거죠. 이 원리는 인간관계에도 적용됩니다.


마치 사람들 간에 서로 친해지면서 공통된 취미, 학교, 직장, 관심사나 성격을 통해 무리 지어 다니는 것처럼 말이죠.

“Show me your friends,
I will show your future”
You become who you hang out with.

네가 지금 가까이하고 있는 친구들을 나한테 보여줘라 내가 너의 미래를 알려주겠다.


미국의 기업가이자 세계적인 비즈니스 성공코치, 댄 페냐(Dan Peña)가 한 말입니다.


이 말은 우리가 주위 사람들로부터 영향을 받으며 그들과 비슷해져 간다는 점을 강조합니다. 사회 속에서 우리는 가까운 사람들과의 관계를 통해 자신을 정의하고, 그 유사성을 기반으로 삶의 방향을 결정하게 됩니다. 우리 자신도 일종의 데이터처럼 주변 환경에 의해 분류되고, 군집을 형성해 나가는 셈입니다.


인공지능과 사람 모두 유사성을 통해 자신을 둘러싼 세계를 이해하고, 그 속에서 나아갈 방향을 결정합니다. 알고리즘이 데이터를 통해 패턴을 찾는 것처럼, 우리는 주변 사람들과의 관계 속에서 스스로의 위치를 찾아갑니다. 결국, 인공지능이든 인간이든, '가까운 것'에서 답을 찾고 자신을 형성해 나가는 과정은 동일한 철학적 여정을 공유한다고 볼 수 있습니다.


사람도 데이터도 하나의 점이 아닐까요?


데이터의 속성과 알고리즘에 대한 깊은 이해는 실무에서 적절한 데이터를 선택하고 이를 최적의 방식으로 처리하는 능력을 길러줍니다. K-NN과 K-means 같은 알고리즘을 활용할 때, 데이터가 이미 분류된 라벨이 있는지 없는지에 따라 '지도학습'과 '비지도학습'을 구분하여 적용하는 것이 중요합니다. 올바른 알고리즘을 선택하면 데이터의 패턴을 정확히 파악할 수 있고, 이를 통해 실무에 유용한 인사이트를 도출할 수 있습니다.


결국, 적합한 데이터와 그에 맞는 알고리즘을 선택하는 능력은 실무에서 경쟁력을 높이는 중요한 요소입니다. 데이터의 구조와 성격을 파악하고, 그에 맞는 분석 기법을 적용하는 것이 성공적인 결과를 가져오는 핵심입니다. 이를 통해 비즈니스 문제를 효과적으로 해결하고, 인공지능의 진정한 가치를 실현할 수 있을 것입니다.


이제 인공지능이 데이터를 활용하는 방법의 차이를 이해하셨나요? 이러한 데이터에 대한 이해와 개념을 바탕으로 이제 여러분들이 알고리즘과 인공지능을 선택하고 설계할 차례입니다. 감사합니다.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari