K-최근접 이웃(K-NN) – 직관적이지만 강력한 예측 알고리즘

이미지
머신러닝을 처음 접했을 때, 수식 없이도 이해할 수 있는 알고리즘이 있을까 궁금했습니다. 복잡한 계산 없이도 직관적인 방식으로 작동하는 모델이 있다면 초심자에게 큰 도움이 되리라 생각했는데, 그때 만난 알고리즘이 바로 K-최근접 이웃이었습니다. 데이터 포인트 간 거리만 계산하면 되기에 매우 단순하지만, 실제로도 다양한 문제에서 꽤 강력한 성능을 보여주었습니다. K-최근접 이웃 알고리즘의 기본 개념 K-최근접 이웃(K-Nearest Neighbors, K-NN)은 매우 직관적인 방식으로 동작하는 지도 학습 알고리즘입니다. 새로운 데이터 포인트가 주어졌을 때, 이미 알려진 학습 데이터 중에서 가장 가까운 K개의 이웃을 찾아 그들의 레이블을 기반으로 결과를 예측합니다. 분류 문제에서는 다수결 방식으로, 회귀 문제에서는 평균값으로 예측 결과를 결정합니다. 예를 들어 K가 3일 경우, 가장 가까운 세 개의 이웃 중 둘이 'A'이고 하나가 'B'라면 'A'로 분류됩니다. 이 알고리즘은 학습 단계가 거의 없고, 예측 시점에 계산이 집중되는 대표적인 사례 기반 학습(lazy learning)입니다. 데이터 간의 유사도를 측정하는 것이 핵심이며, 대부분 유클리드 거리(Euclidean Distance)를 사용하지만 맨해튼 거리, 코사인 유사도 등 다양한 거리 측정 방법도 적용 가능합니다. K 값의 선택과 거리의 중요성 K-NN에서 가장 중요한 하이퍼파라미터는 바로 K 값입니다. K를 너무 작게 설정하면 소수의 데이터에 과도하게 민감해져 과적합(overfitting)이 발생할 수 있으며, 반대로 너무 크게 설정하면 멀리 떨어진 이웃까지 고려하게 되어 일반화 성능이 떨어질 수 있습니다. 적절한 K 값을 찾기 위해서는 교차 검증 등의 방법을 활용할 수 있으며, 일반적으로 홀수 값을 사용해 동률을 피합니다. 데이터의 밀도나 분포에 따라 최적의 K 값이 달라질 수 있으므로 실험적으로 확인하는 것이 필요합니다. 또한 거...

서포트 벡터 머신(SVM) – 고차원 분류의 강력한 무기

이미지
분류 문제를 해결하는 다양한 알고리즘을 접하던 중, 선형 분리만으로는 분류가 어려운 복잡한 데이터를 마주한 적이 있습니다. 기존 모델로는 정확도가 한계에 부딪히는 상황이었고, 이때 처음 서포트 벡터 머신(SVM)을 활용해 보았습니다. 높은 차원의 데이터에서도 깔끔한 분류 결과를 보여주었던 이 모델은 이후 고차원 문제를 다룰 때마다 가장 먼저 떠오르는 도구가 되었습니다. SVM의 기본 개념 – 분류 경계 최대화를 추구하다 서포트 벡터 머신(Support Vector Machine, SVM)은 분류(Classification)와 회귀(Regression) 문제에 모두 사용할 수 있는 지도 학습 알고리즘입니다. 그 중에서도 이진 분류 문제에 특히 효과적이며, 주어진 데이터를 가장 잘 구분할 수 있는 결정 경계(Hyperplane)를 찾는 것이 핵심입니다. SVM의 가장 큰 특징은 단순히 데이터를 분리하는 것이 아니라, 두 클래스 간의 마진(margin) 을 최대화하는 경계를 찾는다는 점입니다. 마진이란 두 클래스 사이의 가장 가까운 거리이며, 이 마진이 클수록 새로운 데이터에 대한 일반화 성능이 높아진다고 여겨집니다. 모델은 서포트 벡터(support vectors)라고 불리는, 경계에 가장 가까운 데이터를 기준으로 결정 경계를 설정합니다. 이때, 가능한 많은 데이터를 올바르게 분류하면서 동시에 가장 넓은 마진을 확보하려고 시도합니다. 이 최적화 문제는 수학적으로 ‘제약이 있는 최적화’ 형태로 정의되며, 라그랑주 승수법 등으로 해결됩니다. 비선형 분류와 커널 트릭 – 고차원 공간으로의 변환 현실의 데이터는 선형적으로 분리되지 않는 경우가 많습니다. 예를 들어 XOR 문제처럼 중간에 다른 클래스가 섞여 있거나, 원형으로 구분된 데이터는 단순한 직선으로 나눌 수 없습니다. 이러한 경우 SVM은 커널 함수(Kernel Function) 를 이용해 입력 데이터를 고차원으로 변환한 후, 그 공간에서 선형 분리를 시도합니다. 이 과정을 커널 트릭(kern...

결정트리와 랜덤포레스트 – 트리 기반 모델의 원리와 활용

이미지
머신러닝을 공부하던 중, 모델의 예측 과정을 눈으로 확인하고 해석할 수 있는 방법은 없을까 하는 궁금증이 들었습니다. 특히 실무에서는 ‘왜 이 결과가 나왔는가’를 설명할 수 있는 것이 중요하다는 이야기를 자주 들었고, 그때 처음 접한 모델이 결정트리였습니다. 이후 랜덤포레스트까지 접하게 되면서, 단순한 규칙 기반 분류를 넘어서 앙상블 학습의 개념까지 자연스럽게 확장할 수 있었습니다. 무엇보다도 이 두 모델은 직관적이면서도 예측력이 뛰어나 현업에서도 많이 쓰인다는 점에서 지금까지도 자주 참고하고 있습니다. 결정트리(Decision Tree) – 규칙 기반의 직관적인 분류 결정트리는 데이터를 분할하며 예측을 수행하는 트리 구조의 머신러닝 모델입니다. 마치 20문제 게임처럼, 하나의 질문을 통해 데이터를 두 그룹으로 나누고, 그 결과에 따라 다시 질문을 이어가며 최종 분류 또는 예측 결과에 도달하는 방식입니다. 트리의 각 노드에서는 특정 특성(feature)을 기준으로 데이터를 분할하게 되며, 이때 분할의 기준은 정보이득(Information Gain), 지니 불순도(Gini Impurity) 등의 척도를 사용합니다. 예를 들어, ‘나이 < 30세’ 같은 조건이 하나의 분기 기준이 될 수 있고, 이에 따라 데이터를 반복적으로 나눕니다. 최종적으로 각 분기점의 끝단인 리프 노드에서는 하나의 클래스(혹은 수치 예측값)가 결정됩니다. 결정트리는 분류(Classification)와 회귀(Regression) 모두에 사용할 수 있으며, 모델 구조 자체가 해석 가능하다는 점에서 큰 장점을 가집니다. 특히 데이터 기반 의사결정이 필요한 분야(예: 금융, 의료, 마케팅 등)에서 “왜 이런 판단을 내렸는가?”를 설명할 수 있다는 점은 큰 강점으로 작용합니다. 그러나 결정트리는 매우 깊어지거나 특정 데이터에 과적합(overfitting)되기 쉬운 단점이 있습니다. 특히 학습 데이터에만 지나치게 민감하게 반응하여 새로운 데이터에는 일반화 성능이 낮을 수 있습니다....

선형회귀와 로지스틱 회귀 – 가장 기초적인 예측 모델들

이미지
머신러닝을 처음 배우던 시절, 다양한 알고리즘들이 복잡하게 느껴졌지만, 그중에서도 선형회귀와 로지스틱 회귀는 이해의 출발점이 되어주었습니다. 특히 데이터를 시각화하고 직선 하나를 그어 예측을 하는 과정은 매우 직관적이었고, 로지스틱 회귀를 통해 분류 문제도 수치적으로 접근할 수 있다는 사실은 신선하게 다가왔습니다. 모델의 복잡함보다는, 그 근간이 되는 수학적 직선과 확률 개념을 얼마나 정확히 이해하느냐가 중요하다는 것을 점차 느끼게 되었습니다. 선형회귀 – 연속적인 수치를 예측하는 가장 단순한 모델 선형회귀(Linear Regression)는 독립 변수와 종속 변수 간의 선형 관계를 기반으로, 입력값에 따라 연속적인 수치 값을 예측하는 회귀 알고리즘입니다. 예를 들어 면적에 따른 집값 예측, 공부 시간에 따른 시험 점수 예측처럼, 결과가 숫자로 나타나는 문제에서 활용됩니다. 선형회귀의 수식은 다음과 같습니다. y = w1x1 + w2x2 + ... + wnxn + b 여기서 y는 예측값, x는 입력 변수, w는 가중치(회귀계수), b는 절편을 의미합니다. 이 모델은 데이터 포인트를 가장 잘 설명하는 직선을 찾는 것이 핵심이며, 손실 함수로는 보통 평균제곱오차(Mean Squared Error, MSE)를 사용합니다. 즉, 실제 값과 예측 값의 차이를 제곱해 평균을 구하고, 이 값을 최소화하는 방향으로 가중치를 조정합니다. 선형회귀의 장점은 해석이 매우 명확하다는 점입니다. 각 변수의 계수가 결과에 어떤 영향을 미치는지 직관적으로 이해할 수 있기 때문에, 통계 분석과 실무 보고서에서도 자주 사용됩니다. 하지만 변수 간 선형성이 없거나, 이상치에 민감한 경우에는 성능이 급격히 떨어질 수 있으므로 주의가 필요합니다. 로지스틱 회귀 – 분류 문제를 위한 회귀 알고리즘 로지스틱 회귀(Logistic Regression)는 선형회귀와 유사한 구조를 가지지만, 결과값이 연속적인 수치가 아닌 범주(클래스) 라는 점에서 차이가 있습니다. 대표적으로 이...

모델 평가 지표 정리 – 정확도, 정밀도, F1 Score까지

이미지
머신러닝 모델을 처음 만들어봤을 때, 정확도가 90% 이상 나오자 속으로 꽤 잘 만들었다고 생각했습니다. 하지만 막상 실제 데이터에 적용해보니 예측 결과가 엉뚱하게 나오는 경우가 많았습니다. 그때 처음으로 ‘정확도만 보고 판단하면 안 되겠구나’라는 생각이 들었습니다. 이후 정밀도, 재현율, F1 Score 같은 지표들을 접하면서 비로소 모델 성능을 입체적으로 해석하는 것이 얼마나 중요한지 깨닫게 되었습니다. 정확도(Accuracy) – 가장 기본적인 성능 지표 정확도는 전체 예측 중에서 정답으로 맞힌 비율을 나타내는 가장 기본적인 모델 평가 지표입니다. 수식으로는 다음과 같이 표현됩니다. 정확도 = (정답으로 맞힌 건수) / (전체 건수) 예를 들어 100개의 샘플 중에서 90개를 정확히 예측했다면 정확도는 90%입니다. 간단하고 직관적인 지표이기 때문에 많은 입문자들이 가장 먼저 사용하게 됩니다. 그러나 정확도에는 한 가지 큰 함정이 있습니다. 바로 데이터가 불균형한 경우, 높은 정확도에도 불구하고 모델이 쓸모없을 수 있다는 점입니다. 예를 들어 암 환자 데이터 중 95%가 정상이고 5%만 환자일 경우, 모든 샘플을 ‘정상’이라고 예측하면 정확도는 95%가 됩니다. 하지만 이 모델은 정작 암 환자를 전혀 찾아내지 못하는 무의미한 결과를 만들어냅니다. 이처럼 클래스 불균형 문제에서는 정확도 하나만으로 모델을 평가할 수 없습니다. 정밀도(Precision)와 재현율(Recall) – 오류의 방향을 분석하다 정밀도와 재현율은 이진 분류 문제에서 오류의 종류에 따라 성능을 평가하는 데 사용됩니다. 둘은 서로 다른 관점을 제공합니다. 정밀도(Precision) 는 모델이 ‘양성’이라고 예측한 것들 중에서 실제로 양성인 비율을 의미합니다. 즉, 모델이 얼마나 신중하게 양성으로 판단했는지를 나타냅니다. 정밀도 = TP / (TP + FP) (TP: 진짜 양성, FP: 거짓 양성) 예를 들어 스팸 필터에서 스팸으로 분류된 메일 중 실제로 스팸인...

특징 공학과 전처리 – 모델 성능을 좌우하는 데이터 준비 과정

이미지
처음 머신러닝 모델을 만들었을 때, 알고리즘을 잘 골랐다고 생각했지만 결과는 기대에 못 미쳤습니다. 하이퍼파라미터를 조정해보고, 다른 모델로 바꿔봐도 성능이 크게 나아지지 않자, 문득 ‘데이터 자체에 문제가 있는 건 아닐까?’라는 의문이 들었습니다. 이후 전처리와 특징 공학의 중요성을 알고 나서야, 모델 성능은 데이터 준비 단계에서 이미 절반 이상 결정된다는 사실을 깨달았습니다. 데이터 전처리란 무엇인가 – 모델 학습을 위한 정리 작업 데이터 전처리(Preprocessing)는 원시 데이터를 머신러닝 모델이 학습 가능한 형태로 가공하는 모든 과정을 의미합니다. 현실에서 수집된 데이터는 대부분 불완전하거나 비정형이며, 결측치, 이상치, 형식 오류 등이 포함되어 있어 그대로 사용할 수 없습니다. 따라서 학습 이전에 데이터를 정제하고 표준화하는 과정은 필수적입니다. 대표적인 전처리 작업으로는 다음과 같은 것들이 있습니다. 첫째, 결측치 처리입니다. 예를 들어, 설문조사 데이터에서 일부 응답 항목이 비어 있다면 이를 평균값, 중앙값으로 대체하거나 해당 샘플을 제거해야 합니다. 둘째, 이상치 탐지입니다. 정상 범위에서 벗어난 데이터는 모델의 일반화 성능을 저하시킬 수 있으므로, 통계적 기법이나 거리 기반 방법으로 제거하거나 조정합니다. 셋째, 데이터 스케일링입니다. 서로 다른 단위를 가진 특성값(예: 나이와 소득)을 정규화나 표준화 기법으로 동일한 범위로 변환함으로써, 학습 알고리즘이 특정 특성에 편중되지 않도록 합니다. 넷째, 범주형 변수 처리입니다. 문자 형태의 데이터를 숫자형으로 변환하기 위해 원-핫 인코딩(one-hot encoding), 라벨 인코딩 등을 사용합니다. 전처리 과정은 단순한 형식 정리가 아니라, 모델의 안정성과 정확도에 직접적으로 영향을 주는 핵심 단계입니다. 실제로 전처리가 잘 된 데이터는 단순한 모델을 사용해도 높은 성능을 낼 수 있으며, 반대로 아무리 복잡한 알고리즘도 전처리가 부족하면 좋은 결과를 기대하기 어렵습니다. ...

지도학습 vs 비지도학습 – 머신러닝의 대표 학습 방식 비교

이미지
머신러닝 공부를 막 시작했을 때 가장 헷갈렸던 개념 중 하나는 지도학습과 비지도학습의 차이였습니다. 처음에는 단순히 정답이 있는지 없는지의 차이라고 들었지만, 실제로 다양한 문제를 접하고 적용해보니 그 차이는 훨씬 더 근본적이고 실용적인 관점에서 이해되어야 한다는 것을 깨달았습니다. 이 두 방식은 머신러닝을 배우는 입장에서 가장 기본이면서도, 실제 데이터를 어떻게 다뤄야 하는지를 결정짓는 출발점이기도 합니다. 지도학습 – 정답이 있는 데이터로부터 배우다 지도학습(Supervised Learning)은 학습 데이터에 입력(Input)과 정답(Output)이 명확히 주어진 상태에서 모델을 훈련시키는 방식입니다. 즉, 기계는 입력값에 대해 어떤 결과가 나와야 하는지를 미리 알고 있고, 이를 기준으로 오차를 줄여가며 학습합니다. 예를 들어 이메일이 스팸인지 아닌지를 분류하는 문제에서는, 이미 ‘스팸’ 혹은 ‘정상’이라는 라벨이 붙은 수천 개의 메일을 학습 데이터로 사용합니다. 이 데이터를 통해 머신러닝 모델은 특정 단어나 발신자 정보, 메일 구조 등의 특징을 학습하고, 이후 새로운 메일에 대해서도 스팸 여부를 예측할 수 있게 됩니다. 지도학습에서 가장 대표적인 문제 유형은 두 가지입니다. 하나는 ‘분류(Classification)’ 문제로, 특정 입력이 어떤 범주에 속하는지를 예측하는 것입니다. 예를 들어 암 진단 모델이 입력된 의료 데이터를 보고 양성인지 음성인지 판단하는 것이 여기에 해당합니다. 다른 하나는 ‘회귀(Regression)’ 문제로, 연속적인 수치를 예측하는 데 사용됩니다. 예를 들어 주택의 면적, 위치, 층수 등을 보고 가격을 예측하는 모델이 대표적인 회귀 문제입니다. 지도학습의 장점은 명확한 목표와 피드백을 통해 빠르게 학습할 수 있다는 점이며, 결과의 정확도 역시 비교적 높게 유지됩니다. 그러나 단점으로는 정답 데이터를 만드는 데 시간이 많이 들고, 현실에서 라벨이 없는 데이터가 훨씬 많다는 한계가 존재합니다. 비지도학습 – ...