Supervised learning and text classification: general understanding

• Supervised Learning: 정답(Label)이 포함된 Training set을 학습하여 새로운 데이터가 어떤 카테고리에 속하는지 예측(Predict)하는 기법. • 목표: 입력값과 출력값 사이의 실제 함수 f(x)를 근사하는 일관된 모델(Hypothesis, h(x))을 찾는 것. 수식으로는 y = h(x) 형태로 표현됨. • 분류 파이프라인: 데이터 수집 및 라벨링 -> 전처리 및 특징 추출 -> 모델 학습 및 평가 -> 새로운 데이터 분류 및 배포. • 주요 알고리즘: Naive Bayes, Logistic regression, Neural networks, k-Nearest Neighbors (k-NN) 등이 사용됨.


Document vector representation:

• Bag of Words (BoW): 문서 내 단어의 등장 순서나 문맥은 무시하고, 사전(Vocabulary)에 정의된 단어의 빈도만을 기준으로 문서를 벡터화하는 방식 • Binary BoW: 단어의 출현 횟수와 무관하게 문서에 단어가 없으면 0, 1번이라도 등장하면 1로 표현. ◦ Non-binary BoW (Raw count): 단어가 문서에 등장한 실제 횟수(count)를 그대로 숫자로 표기. ◦ 한계점 (Limitations): 문맥 및 의미(Semantics) 무시, 동의어를 다른 특징으로 인식, 미등록 단어 처리 불가. • TF-IDF (Term frequency - Inverse document frequency): 단순히 자주 등장하는 단어의 점수가 높아지는 문제를 막기 위해, 특정 문서에만 자주 등장하는 핵심 단어의 가중치를 높이는 기법 (수식: TF * IDF). ◦ TF (Term Frequency) 계산법:


Document similarity metrics:

• Euclidean distance: 두 벡터 공간 사이의 물리적(직선) 거리를 측정. ◦ 수식: D(x, y) = sqrt(sum((xi - yi)^2)). ◦ 사용 및 한계: 거리를 기반으로 하므로, 두 문서의 길이가 다를 경우(한 문서의 단어 빈도가 전체적으로 높을 경우) 구성이 비슷하더라도 유사도가 낮게 측정되는 한계가 있음. • Vector Dot Product (벡터 내적): 두 벡터의 같은 차원(단어) 값을 곱한 뒤 모두 더한 스칼라 값. ◦ 수식: a * b = a1b1 + a2b2 + ... + aN*bN. ◦ 사용 및 한계: 계산이 매우 빠르나, 벡터의 길이(Document length)에 크게 의존함. 즉, 자주 쓰이는 단어(Frequent words)가 많이 포함된 긴 문서일수록 점수가 과도하게 높아지는 맹점이 있음. • Cosine Similarity (코사인 유사도): 두 벡터가 이루는 각도(Angle)의 코사인 값을 측정하여 방향의 일치 여부를 판단. ◦ 수식: cos(x, y) = (x * y) / (||x|| * ||y||). ◦ 특징: 단어의 빈도는 음수가 없으므로 0(완전히 다름, 직교)에서 1(완전히 같음, 같은 방향) 사이의 값을 가짐. ◦ 사용시 장점 (When & Why): 분모에 각 벡터의 크기(||x||, ||y||)를 나누어 정규화(Normalization)하므로 Vector Dot Product가 가진 벡터 길이의 편향 문제를 해결함. 따라서 긴 문서와 짧은 문서라도 단어의 등장 비율(방향성)만 비슷하면 높은 유사도를 도출하므로, 텍스트 및 문서 유사도 측정에 가장 널리, 그리고 효과적으로 사용됨


Generative versus discriminative classifiers: understand the difference

Generative model: 각 Class의 실제 데이터 분포(Joint probability P(x, y))를 학습하여 Predict를 수행하는 방식.


Naive Bayes classifier

Bayes' Rule을 활용하여 문서가 특정 카테고리에 속할 확률을 구하는 확률적 Generative model. ◦ 장단점: 알고리즘이 매우 빠르고 구현하기 쉬워 Baseline model로 자주 쓰이지만, 확률값이 0이나 1로 극단적으로 쏠리는 경향이 있어 항상 최고의 성능을 보장하지는 못함. • Math, Assumptions, and ComputationAssumptions (가정): 모든 단어(Events)의 출현은 서로 독립적(Mutually independent)이며, 단어의 등장 순서를 무시하는 Bag-of-words 구조를 가정함. ◦ Bayes' Rule 수식: P(y | x) = P(x | y) * P(y) / P(x) ◦ MAP (Maximum A Posteriori) 수식: y_MAP = argmax [ P(y) * P(x1 | y) * P(x2 | y) * ... * P(xN | y) ]. 분모 P(x)는 모든 Class에 동일한 상수이므로 무시하고 분자값이 가장 큰 Class를 찾음. ◦ Log transformation: 확률들을 계속 곱하면 언더플로우(Underflow)가 발생하므로, 로그를 취해 덧셈으로 변환함. 즉, argmax [ log(P(y)) + Sum(log(P(xi | y))) ] 형태의 Linear classifier로 동작하게 됨. ◦ Input: 분류할 대상이 되는 Document x, 고정된 정답 Classes Y 집합, N개의 라벨링된 Training set. ◦ Output: 주어진 문서 x에 대해 가장 확률이 높은(Lowest error) Class를 예측하는 Learned classifier model (y = h(x)). • Model ComponentsPrior probability P(y): 해당 Class가 전체 문서에서 차지하는 사전 확률 (예: 전체 문서 중 스팸 문서의 비율). ◦ Likelihood P(x | y): 특정 Class 내부에서 특정 단어(Feature)가 등장할 조건부 확률. ◦ Vocabulary V: 훈련 데이터 코퍼스 전체에서 추출된 고유 단어들의 집합. • Training Process1단계: 훈련 셋을 바탕으로 각 Class별 문서 비율을 계산하여 Prior 로그 값을 저장. ◦ 2단계: 각 Class 내에서 Vocabulary에 있는 단어들의 등장 횟수(Count)를 기반으로 Likelihood 확률을 계산 후 로그 값을 저장. ◦ Laplace Smoothing (매우 중요): 훈련 데이터에 없던 단어가 등장해 확률이 0이 되는 것을 방지하기 위해 분자(Count)에 +1, 분모(전체 단어 수)에 +|V| (사전 크기)를 더해 보정함. ◦ Stop words: "the", "a"와 같은 불용어는 제거하는 것이 원칙 같지만, 실제 Naive Bayes 실무에서는 제거하지 않고 모든 단어를 사용하는 경우가 많음. • Testing / Performance Evaluation Process ◦ 데이터를 Training / Validation / Test set으로 분할 후 테스트. • Classification Process ◦ 새로운 Test document가 입력되면 문서 내 단어들을 추출함. 이때 사전에 없는 Unknown words는 아무런 확률 계산도 하지 않고 완전히 무시(Ignore)함. ◦ 훈련 과정에서 미리 계산해 둔 각 Class별 log prior와 문서에 포함된 단어들의 log likelihood를 모두 덧셈(Sum)함. ◦ One-of classification: 합산된 점수(Score)가 가장 높은 단 하나의 Class를 최종 정답으로 배정함. (다중 클래스 허용 시 임계값을 넘는 여러 클래스 배정 가능)


Logistic regression classifier

• Concept 및 특징: 데이터의 전체 분포를 구하는 대신 정답 라벨의 Conditional Probability P(y|x) 를 직접 학습하여 최적의 Linear Separator (결정 경계) 를 찾는 Discriminative classifier로, 각 특징이 독립적이라는 엄격한 가정 없이도 빠르고 직관적인 확률값을 제공하여 실무 활용도가 매우 높음 • Math 및 Computation: 주어진 입력 벡터와 가중치의 선형 결합 z = w * x + b (또는 sum(wi*xi)+b)를 계산한 후, 이를 비선형 함수인 Sigmoid 곡선 y = 1 / (1 + exp(-z)) 에 통과시켜 해당 데이터가 특정 클래스에 속할 확률을 0과 1 사이의 스칼라 값으로 산출함 • Input 및 Output 구조: 분석할 대상을 N차원의 숫자로 변환한 특징 벡터 x = [x1, x2, ..., xN] 가 모델에 들어가면, 타겟 클래스(예: SPAM)일 연속적 스칼라 확률값과 최종 임계값을 거쳐 판별된 이진 라벨 y_hat (0 or 1) 이 반환됨 • Model Parameters (Weights & Bias): 모델의 핵심 학습 대상인 파라미터 theta = (w, b) 세트로 구성됨 ◦ Weights (w): 개별 Feature가 분류에 미치는 중요도(Importance)를 수치화하여 결정 경계의 기울기(Rotation)를 정함 ◦ Bias (b): 경계선의 영점 기준을 이동(Translation)시켜 데이터 중심이 0,0 원점을 벗어나 분포하더라도 유연하게 분할할 수 있도록 도움 • Training Process: 예측된 확률값과 실제 라벨 사이의 오차를 최소화(Minimize)하도록 파라미터를 스스로 미세 조정하는 과정 ◦ Cross-Entropy Loss: 분류기가 도출한 확률과 실제 정답의 거리 오차를 나타내는 함수로 수식은 L_CE = -[y * log(y_hat) + (1-y) * log(1-y_hat)] 이며, 밥그릇처럼 움푹 패여 항상 단일 최솟값을 보장하는 Convex function 형태이기에 학습 중 엉뚱한 값(Local minima)에 빠질 위험이 없음 ◦ Gradient Descent: 손실을 줄이기 위해 현재 오차 곡면의 기울기(Gradient)를 구하고 그 반대 방향(Steepest descent)으로 파라미터를 갱신하는 최적화 알고리즘으로, theta_new = theta_old - learning_rate * Gradient 수식을 반복하며, 무작위 데이터 하나씩 빠르게 갱신하는 Stochastic Gradient Descent (SGD) 방식이 대용량 처리에 유리함 ◦ Sigmoid function의 역할: 무한대 범위의 실수 연산 결과(z)를 S자 곡선을 통해 매끄럽게 0~1 사이로 압축(Squash)해 직관적인 Probability로 해석 가능하게 하며, 미분이 용이하여 오차 역추적(Gradient 계산)이 필수적인 경사하강법 훈련을 가능하게 함 • Testing 및 Performance Evaluation: 학습 완료 후 완전히 분리된 테스트 셋을 입력해 도출된 라벨과 실제 정답을 대조하는 Confusion Matrix를 작성하고, 이를 바탕으로 True Positive, False Negative 등의 비율을 집계하여 실무 환경에 맞는 검증 지표로 시스템 성능을 평가함 • Classification Process 및 Decision Threshold: 산출된 확률값이 기준치(Boundary)를 초과하는지 평가해 하나의 클래스를 최종 할당하며 수식으로는 y_hat = 1 if P(y=1|x) > Threshold else 0 형태를 띰 ◦ 응용 관점: 기본 판단 기준은 0.5를 쓰지만 스팸 메일처럼 정상 메일을 스팸으로 오탐(False Positive)했을 때의 고객 피해가 크면 0.8로 올려 확실할 때만 적발하고, 반대로 병 검진처럼 놓치는 것(False Negative)이 치명적인 상황이면 0.2로 낮춰 민감하게 잡아내는 등 유연한 튜닝이 가능해 비즈니스 목적에 최적화하기 좋음