머신러닝은 데이터에서 학습하도록 컴퓨터를 프로그래밍하는 과학(또는 예술)입니다.
일반적인 정의
공학적인 정의
T에 대한 컴퓨터 프로그램의 성능을 P로 측정했을 때 경험 E로 인해 성능이 향상됐다면, 이 컴퓨터 프로그램은 작업 T와 성능 측정 P에 대해 E로 학습한 것이다. - Tom Mitchell, 1997즉, 경험으로 학습한다는 것을 의미하기도 한다.
훈련세트 (Training Set)
훈련세트는 머신러닝 모델을 학습시키기 위해 사용하는 데이터의 집합입니다.
이 데이터는 입력(feature)과 정답(label)으로 구성되어 있으며, 모델이 패턴을 학습하고 일반화할 수 있도록 돕습니다.
훈련세트는 전체 데이터의 일부로, 나머지 데이터는 일반적으로 검증(validation) 및 테스트(test) 목적으로 사용됩니다.
훈련사례 (Training Example)
훈련사례는 훈련세트에 포함된 개별 데이터 포인트를 의미합니다.
각 훈련사례는 입력(feature)과 그에 상응하는 정답(label)로 구성됩니다.
예를 들어, 이미지 분류 문제에서 하나의 훈련사례는 특정 이미지와 그 이미지에 대한 올바른 레이블(예: '고양이' 또는 '개')로 이루어질 수 있습니다.
모델 (Model)
모델은 데이터를 기반으로 예측이나 결정을 내리기 위해 설계된 수학적 구조입니다.
머신러닝 모델은 훈련 데이터를 통해 학습하며, 새로운 데이터에 대해 예측을 수행할 수 있도록 조정됩니다.
모델의 종류에는 선형 회귀, 의사결정 나무, 신경망 등 다양한 유형이 있습니다.
훈련데이터 (Training Data)
훈련데이터는 훈련세트와 같은 의미로 사용되며, 모델을 학습시키기 위해 사용되는 데이터입니다.
이 데이터는 모델이 입력과 출력 간의 관계를 학습할 수 있도록 충분한 정보를 제공해야 합니다.
Tom Mitchell의 머신러닝 정의와 스팸메일 예시
이 사례는 스팸메일 분류라는 구체적인 예를 통해 머신러닝의 원리를 설명한 것입니다. Tom Mitchell의 정의는 이미지 분류, 음성 인식 등 다양한 사례에도 적용될 수 있습니다.
작업 (T): 주어진 이메일이 스팸인지 아닌지를 분류하는 작업.
성능 측정 (P): 알고리즘이 이메일을 정확히 분류한 비율(성능).
성능 지표에는 정확도, 정밀도(Precision), 재현율(Recall) 등이 포함될 수 있다.
예를 들어: 알고리즘이 100개의 이메일 중 95개를 정확히 분류하면, 정확도는 95%.
경험 (E): 스팸 분류에서 사용하는 라벨링된 이메일 데이터.
라벨링된 데이터는 이메일과 각 이메일이 "스팸"인지 "비스팸"인지를 나타내는 정보가 포함된 데이터이다.
예:
"지금 바로 크레딧 점수를 확인하세요!" → 스팸
"회의가 3시에 열립니다." → 비스팸
Tom Mitchell 정의 적용
어떤 컴퓨터 프로그램이 이메일을 스팸/비스팸으로 분류하는 "작업 T"를 수행하고,
학습 데이터(라벨링된 이메일 데이터)를 통해 "경험 E"를 얻으며,
테스트 데이터에서의 분류 정확도(성능 P)가 향상된다면,
이 컴퓨터 프로그램은 "작업 T와 성능 P"에 대해 "경험 E"로 학습했다고 할 수 있다.

전통적인 접근 방식
발견한 패턴을 감지하는 알고리즘을 작성하여 프로그램이 이런 패턴을 발견했을 때 그 메일을 스팸으로 분류
머신러닝 접근 방법
스팸에 자주 나타나는 패턴을 감지하여 어떤 단어와 구절이 스팸 메일을 판단하는 데 좋은 기준인지 자동으로 학습
머신러닝이 유용한 또 다른 분야는 전통적인 방식으로는 너무 복잡하거나 알려진 알고리즘이 없는 문제

데이터 마이닝(Data Mining)은 대량의 데이터 속에서 유용한 정보를 추출하고 패턴을 발견하는 과정입니다.
이는 다양한 분야에서 의사결정을 지원하고, 비즈니스 인사이트를 제공하며, 데이터 기반의 전략을 수립하는 데 중요한 역할을 합니다.
데이터 마이닝은 여러 가지 기술과 방법론을 사용하여 데이터를 분석하고 해석합니다.
주요 특징과 과정
데이터 준비
데이터 마이닝의 첫 단계는 데이터를 수집하고 준비하는 것입니다.
이는 데이터 정제, 통합, 변환 등의 과정을 포함하며, 분석에 적합한 형태로 데이터를 준비합니다.
패턴 발견
데이터 마이닝의 핵심은 데이터에서 유의미한 패턴이나 규칙을 발견하는 것입니다.
이는 연관 규칙 학습, 군집화, 분류, 회귀 분석 등의 기법을 통해 이루어집니다.
모델링
데이터를 기반으로 예측 모델을 구축합니다.
이는 머신러닝 알고리즘을 사용하여 데이터를 학습하고, 새로운 데이터에 대한 예측을 수행할 수 있는 모델을 만드는 과정입니다.
평가
발견된 패턴이나 모델의 유효성을 평가합니다.
이는 모델의 정확도, 신뢰성, 일반화 능력을 검증하는 과정으로, 교차 검증이나 테스트 세트를 사용하여 수행됩니다.
지식 표현
최종적으로 발견된 패턴이나 모델을 이해하기 쉽게 표현하고, 이를 통해 의사결정에 활용할 수 있도록 합니다.
이는 시각화 도구나 보고서를 통해 이루어질 수 있습니다.
데이터 마이닝은 다양한 분야에서 활용됩니다.
요약하면 머신러닝은 다음 분야에 뛰어납니다.
기존 솔루션으로는 많은 수동 조정과 규칙이 필요한 문제
전통적인 방식으로는 전혀 해결 방법이 없는 복잡한 문제
유동적인 환경
복잡한 문제와 대량의 데이터에서 통찰 얻기
CNN (Convolutional Neural Network)
제품 이미지 자동 분류: 생산 라인에서 제품 이미지를 분석하여 자동으로 분류.
뇌 스캔 이미지 분석: 뇌를 스캔하여 중요 부위를 판단하는 작업.
NLP (Natural Language Processing)
뉴스 기사 자동 분류: 자연어 처리 기법을 이용하여 뉴스 기사를 자동으로 분류.
부정적 댓글 자동 감지: 토론 포럼에서 부정적인 코멘트를 자동으로 감지하는 작업.
문서 요약: 긴 문서를 자동으로 요약하는 작업.
챗봇 또는 개인 비서: 자연어 이해를 통해 챗봇이나 개인 비서를 개발하는 작업.
Regression (회귀 분석)
Clustering (군집 분석)
기타
음성 명령 인식 앱 개발: 음성 명령을 인식하여 반응하는 애플리케이션 개발.
신용카드 부정 거래 감지: 부정 거래를 감지하는 이상치 탐지 작업.
추천 시스템: 고객 구매 이력을 바탕으로 관심 상품을 추천하는 시스템 개발.
다음을 기준으로 넓은 범주에서 분류하면 도움이 됩니다.
사람의 감독 하에 훈련하는 것인지 그렇지 않은 것인지(지도, 비지도, 준지도, 강화 학습)
실시간으로 점진적인 학습을 하는지 아닌지(온라인 학습과 배치 학습)
단순하게 알고 있는 데이터 포인트와 새 데이터 포인트를 비교하는 것인지 아니면 훈련 데이터셋에서 과학자들처럼 패턴을 발견하여 예측 모델을 만드는지(사례 기반 학습과 모델 기반 학습)
이 범주들은 서로 배타적이지 않으며 원하는 대로 연결할 수 있습니다.
예를 들어 최첨단 스팸 필터가 심층 신경망 모델을 사용해 스팸과 스팸이 아닌 메일로부터 실시간으로 학습할 지도 모릅니다.

분류(classification)가 전형적인 지도 학습 작업이며, 스팸 필터가 좋은 예입니다.

또 다른 전형적인 작업은 예측 변수(predictor variable)라 부르는 특성(feature) (주행거리, 연식, 브랜드 등)을 사용해 중고차 가격 같은 타깃 수치를 예측하는 것입니다.
이런 종류의 작업을 회귀(regression)라고 부릅니다.
- 속성(attribute)
- 데이터 타입(예를 들면 주행거리)을 말합니다.
- 특성
- 문맥에 따라 여러 의미를 갖지만 일반적으로 속성과 값이 합쳐진 것을 의미합니다(예를 들면 주행거리=15,000).
- 하지만 많은 사람이 속성과 특성을 구분하지 않고 사용합니다.
일부 회귀 알고리즘은 분류에 사용할 수도 있고 또 반대의 경우도 있습니다.
주요 지도 학습 알고리즘
k-최근접 이웃(k-Nearest Neighbors)
선형 회귀(Linear Regression)
로지스틱 회귀(Logistic Regression)
서포트 벡터 머신(Support Vector Machines , SVM)
결정 트리(Decision Tree)와 랜덤 포레스트(Random Forests)
신경망(Neural networks)

주요 지도 학습 알고리즘
군집(clustering) : 데이터를 비슷한 특성을 가진 그룹으로 묶는 비지도 학습 기법.
k-평균(k-Means): 데이터를 k개의 군집으로 분류하며, 중심점(centroid)과의 거리 차이를 최소화하는 알고리즘.
계층 군집 분석(Hierarchical Cluster Analysis, HCA): 데이터를 계층적 트리 구조(Dendrogram) 형태로 군집화하여 분석.
기댓값 최대화(Expectation Maximization): 군집에 속할 확률을 계산해 데이터를 할당하는 알고리즘. 혼합 모델 기반(예: 가우시안 혼합).
시각화(visualization)와 차원 축소(dimensionality reduction) : 고차원 데이터를 저차원으로 축소해 이해와 시각화를 돕는 기술.
주성분 분석(Principal Component Analysis, PCA) : 데이터의 주요 변동성을 보존하는 선형 변환으로 차원 축소.
커널(kernel) PCA : 비선형 데이터에 PCA를 확장 적용해 차원을 줄이는 방법.
지역적 선형 임베딩(Locally-Linear Embedding, LLE) : 데이터의 지역적 선형 관계를 보존하며 저차원으로 변환.
t-SNE(t-distributed Stochastic Neighbor Embedding) : 데이터의 고차원 밀집 구조를 저차원 공간에서 효과적으로 시각화. 군집 구조 파악에 유리.
연관 규칙 학습(Association rule learning) : 데이터 항목 간의 연관성과 규칙을 발견하는 기법.
어프라이어리(Apriori) : 빈도가 높은 항목 집합을 기반으로 연관 규칙을 도출.
이클렛(Eclat): 빈도 계산을 집합 간 교집합 방식으로 수행하여 효율성을 높인 알고리즘.

군집 알고리즘의 활용 예: 블로그 방문자 분석
문제-상황
블로그 방문자 데이터를 기반으로, 비슷한 성향을 가진 방문자들을 그룹으로 분류하고자 함.
방문자들이 어떤 그룹에 속하는지 기본적인 정보를 제공할 수 없기 때문에 비지도-학습을 적용.
군집-알고리즘의-역할
알고리즘이 방문자들의 데이터에서 스스로 유사성을 찾아 그룹화 수행.
예시
40%: 만화책을 좋아하며 저녁에 블로그를 방문하는 남성 그룹.
20%: 공상 과학을 좋아하며 주말에 주로 방문하는 젊은 그룹.
계층-군집(Hierarchical-Clustering)의-적용
계층-군집-알고리즘을 사용하여 그룹을 더 작은 하위-그룹으로 세분화 가능.
그룹별 방문자 성향을 바탕으로 맞춤형 컨텐츠 제공 가능.
활용-예시
만화책 남성 그룹: 저녁 시간에 만화 관련 글 게시.
공상 과학 젊은 그룹: 주말에 공상 과학 관련 트렌드 소개.
결과

시각화(Visualization) 알고리즘
비지도 학습의 좋은 예로, 레이블이 없는 고차원 데이터를 2D나 3D로 도식화 가능.
장점
입력 공간의 구조를 최대한 보존
데이터가 어떻게 조직되어 있는지 이해할 수 있음.
예상하지 못한 패턴 발견 가능.
차원 축소(Dimensionality Reduction)
데이터의 특성을 간소화하면서 중요한 정보는 그대로 유지.
활용 방법
특성 간 통합
예: 자동차의 주행거리와 연식 등 상관관계가 높은 두 특성을 하나로 합침.
결과: 두 특성을 "차량 마모 정도"라는 하나의 특성으로 표현.
이를 "특성 추출(Feature Extraction)"이라 부름.
차원 축소의 실용적 이점
머신러닝 알고리즘에 활용 가능
차원 축소를 통해 훈련 데이터의 차원을 줄이면 다음과 같은 효과를 얻음.
실행 속도 향상: 연산 및 학습 시간 단축.
공간 효율성: 디스크와 메모리 사용량 감소.
성능 향상: 과적합 방지 및 알고리즘 성능이 개선될 가능성.

이상치 탐지(Anomaly Detection)
정상 샘플과 다른 특성을 가진 데이터를 찾아냄.
활용 사례
신용카드 부정 거래 탐지: 이상한 거래를 감지하여 부정 행위를 방지.
제조 결함 탐지: 생산 과정에서 발생하는 결함을 식별.
데이터 정제: 학습 알고리즘에 주입하기 전, 데이터셋에서 이상치 값 제거.
작동 방식
연관 규칙 학습(Association Rule Learning)
데이터셋 내에서 특성 간의 흥미로운 관계를 찾아내는 기법.
활용 사례
대량의 데이터에서 특성 간 관계를 분석해 유용한 패턴 발견.
예: 슈퍼마켓 판매 분석.
의의: 사용자의 행동 패턴을 이해하여 맞춤형 마케팅 전략 개발 가능.

준지도 학습은 레이블이 일부만 있는 데이터로 학습하는 알고리즘입니다.
일반적으로 레이블이 없는 데이터가 많고, 레이블이 있는 데이터는 적습니다.
지도 학습과 비지도 학습의 조합으로 이루어져 있습니다.
예시
구글 포토
가족사진을 업로드하면 서비스가 클러스터링(군집화)하여 사진 속 인물들을 분류합니다. (비지도 학습)
시스템에 사람들의 이름(레이블)을 제공하면 나머지 사진에서 모든 사람의 이름을 알아내고 사진을 분류합니다. (지도 학습 활용)
알고리즘
심층 신뢰 신경망 (Deep Belief Network, DBN)
여러 층으로 쌓은 제한된 볼츠만 머신 (Restricted Boltzmann Machine, RBM)으로 구성.
RBM은 비지도 학습 방식으로 순차적으로 학습.
이후 전체 모델은 지도 학습 방식으로 세밀하게 조정합니다.

강화 학습은 에이전트(Agent)가 환경(Environment)을 관찰하고 행동(Action)을 실행하며 보상(Reward) 또는 벌점(Penalty)을 받습니다.
최종 목표는 가장 큰 보상을 얻기 위한 최적의 정책(Policy)을 학습하는 것입니다.
정책(Policy)은 주어진 상황에서 에이전트가 어떤 행동을 해야 할지 정의합니다.
예시
보행 로봇
딥마인드(DeepMind)의 알파고(AlphaGo)
수백만 개의 게임을 분석하며 승리를 위한 전략을 학습.
자기 자신과 대결하며 경험을 축적.
실제 경기에서는 학습을 중단하고 학습된 전략만 적용.
(예: 2017년 바둑 세계 챔피언 커제 선수와의 경기에서 승리한 사례.)
데이터를 점진적으로 학습할 수 없으며, 가용한 모든 데이터를 사용해 한 번에 훈련해야 함.
훈련은 주로 오프라인에서(오프라인 학습) 수행됨.
학습이 완료된 모델은 학습된 지식만 적용하며, 이후 학습은 하지 않음.
새 데이터 학습 과정
새로운 데이터(예: 새로운 종류의 스팸) 학습 시, 이전 데이터와 새로운 데이터를 모두 포함한 전체 데이터셋을 이용해 처음부터 다시 훈련해야 함.
기존 시스템을 종료하고 새로운 시스템으로 교체해야 함.
자동화 가능성
훈련, 평가, 론칭의 전체 프로세스를 자동화하여 시스템을 변화에 적응시킬 수 있음.
데이터를 주기적으로 업데이트하고 일정 주기(예: 매일, 매주)로 새로 훈련 가능.
단점
시간과 자원 소모
훈련 시간이 길어질 수 있음(몇 시간에서 며칠).
CPU, 메모리, 디스크 공간, 네트워크 IO 등 대량의 리소스가 필요함.
비용 문제
자원 제한 환경
스마트폰, 화성 탐사 로버와 같은 자원 제한 시스템에서는 비현실적.
대량 데이터 전송 및 긴 훈련 시간이 큰 제한 요소가 됨.
한계 극복
빠르게 변화하는 상황(예: 주식 가격 예측)에는 배치 학습이 적합하지 않음.
점진적 학습이 가능한 알고리즘 사용을 고려해야 함.

데이터를 순차적으로 한 개씩 또는 미니배치(mini-batch) 형태로 주입하며 시스템을 훈련함.
매 학습 단계가 빠르고 비용이 적게 들어, 데이터가 도착하는 대로 즉시 학습 가능.
빠르게 변화하는 데이터(예: 주식 가격)에 적응해야 하는 시스템에 적합.
컴퓨팅 자원이 제한적인 상황에서도 활용 가능.

공간 절약
새로운 데이터 샘플을 학습한 후에는 이전 데이터를 버릴 수 있어 저장 공간을 절약할 수 있음.
저장하지 않아도 되는 경우 학습된 데이터를 보관할 필요가 없음.
외부 메모리 학습 (Out-of-Core Learning)
메인 메모리에 담을 수 없는 아주 큰 데이터셋을 학습할 때 사용.
알고리즘이 데이터를 부분적으로 읽어들여 학습하며, 전체 데이터가 학습될 때까지 반복 실행.
주의: 이 과정은 보통 오프라인에서 수행되므로, 실시간 학습 시스템과는 구분됨.
학습률 (Learning Rate)
데이터의 변화에 얼마나 빠르게 적응할지를 결정함.
학습률↑
데이터를 빠르게 학습하지만, 과거 데이터를 빠르게 잊어버리는 문제가 있음.
최근 데이터를 중심으로 학습(예: 최근 스팸만 걸러낼 수 있음).
학습률↓
데이터 적응 속도가 느리지만, 잡음이나 대표성이 부족한 데이터에 덜 민감함.
더 안정적 학습 가능.
문제점
나쁜 데이터의 위험성
부정확하거나 악의적인 데이터가 들어오면 시스템 성능이 점진적으로 감소할 수 있음.
예
잘못된 로봇 센서 데이터.
검색 엔진을 속이기 위한 조작된 데이터.
해결 방안
시스템 성능을 면밀히 모니터링해 성능 감소 시 학습 중지.
문제가 발생하면 이전 상태로 되돌릴 수 있도록 조치하기.
입력 데이터를 모니터링하여 이상치를 탐지(예: 이상치 탐지 알고리즘 활용).
머신러닝 시스템은 어떻게 일반화되는가에 따라 분류할 수도 있습니다.
대부분의 머신러닝 작업은 예측을 만드는 것입니다.
이 말은 주어진 훈련 데이터로 학습하지만 훈련 데이터에서는 본적 없는 새로운 데이터로 일반화되어야 한다는 뜻입니다.
훈련 데이터에서 높은 성능을 내는 것이 좋지만 그게 전부는 아닙니다. 진짜 목표는 새로운 샘플에 잘 작동하는 모델,입니다.

학습의 가장 간단한 형태는 단순히 데이터를 기억하는 것.
사례 기반 학습은 시스템이 데이터를 기억한 후, 새로운 데이터를 처리할 때 유사도(similarity)를 사용해 일반화하는 방식.
단순 기억 학습의 예: 스팸 필터
사례 기반 스팸 필터 개선
스팸 메일과 동일한 메일만 아니라, 매우 유사한 메일도 스팸으로 분류하도록 개선.
두 데이터(메일) 간 유사도를 측정해 스팸 여부를 구분.
유사도 측정 방법
예: 공통 단어의 수를 세기.
핵심 특징
데이터의 기억
유사도 기반 일반화

샘플로부터 일반화시키는 또 다른 방법은 샘플들의 모델을 만들어 예측에 사용하는 것입니다. 이를 모델 기반 학습(model-based learning)이라고 합니다.
예시: 돈이 사람을 행복하게 만드는가?
데이터 수집
OECD 웹사이트의 Better Life Index 데이터
IMF 웹사이트의 1인당 GDP 통계
데이터 전처리
두 데이터 테이블을 합치고, 1인당 GDP로 정렬
일부 데이터를 표로 정리 (예: 표 1-1)

데이터 시각화
일부 국가를 무작위로 선택해 그래프 생성 (예: 그림 1-17)
관찰 결과: 데이터가 다소 흩어져 있지만, 1인당 GDP가 증가할수록 삶의 만족도도 선형적으로 증가하는 경향을 확인할 수 있음

모델 선택 (Model Selection)
1인당 GDP 하나의 특성을 기반으로 삶의 만족도를 예측하는 선형 모델(linear model)을 선택

간단한 선형 모델과 선형 회귀
삶의 만족도를 예측하기 위한 간단한 선형 모델은 다음과 같이 표현할 수 있습니다.
이 모델은 두 개의 모델 파라미터, θ₀(절편)과 θ₁(기울기)을 가집니다. 이 파라미터들을 조정하면 다양한 선형 함수를 표현할 수 있으며, [그림 1-18]처럼 데이터에 적합한 직선을 얻을 수 있습니다.
모델을 사용하기 위해서는 먼저 θ₀과 θ₁의 값을 정의해야 합니다. 하지만 어떤 값이 최적인지 어떻게 알 수 있을까요? 이를 판단하려면 모델의 성능을 측정할 수 있는 기준이 필요합니다.
일반적으로는 모델이 얼마나 좋은지를 측정하는 효용 함수(utility function)나, 얼마나 나쁜지를 측정하는 비용 함수(cost function)를 정의합니다.
여기서 선형 회귀(Linear Regression) 알고리즘이 사용됩니다. 이 알고리즘에 훈련 데이터를 제공하면, 데이터에 가장 잘 맞는 선형 모델의 파라미터 θ₀과 θ₁을 찾아줍니다. 이 과정을 모델을 훈련(training)시킨다고 표현합니다.
훈련이 완료되면, 모델은 훈련 데이터에 최대한 잘 맞는 선형 함수로 표현됩니다. [그림 1-19]에서는 이러한 결과를 시각적으로 확인할 수 있습니다.
이제 학습된 모델을 사용해 새로운 데이터를 예측할 수 있습니다.

[예제 1-1]에서는 파이썬 코드로 다음 과정을 보여줍니다.
데이터를 로드하고 전처리함
산점도를 그려 시각화함
선형 모델을 학습시킴
학습된 모델로 예측 수행
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import sklearn
# 데이터 적재
oecd_bli = pd.read_csv("oecd_bli_2015.csv", thousands=',')
gdp_per_capita = pd.read_csv("gdp_per_capita.csv",thousands=',',delimiter='\t',
encoding='latin1', na_values="n/a")
# 데이터 준비
country_stats = prepare_country_stats(oecd_bli, gdp_per_capita)
X = np.c_[country_stats["GDP per capita"]]
y = np.c_[country_stats["Life satisfaction"]]
# 데이터 시각화
country_stats.plot(kind='scatter', x="GDP per capita", y='Life satisfaction')
plt.show()
# 선형 모델 선택
model = sklearn.linear_model.LinearRegression()
# 모델 훈련
model.fit(X, y)
# 키프로스에 대한 예측
X_new = [[22587]] # 키프로스 1인당 GDP
print(model.predict(X_new)) # 결과 [[ 5.96242338]]
NOTE_ 사례 기반의 학습 알고리즘을 사용한다면 먼저 1인당 GDP가 키프로스와 가장 가까운 슬로베니아Slovenia (20,732달러)를 찾습니다. OECD 데이터에 있는 슬로베니아의 삶의 만족도가 5.7이므로 키프로스의 삶의 만족도를 5.7로 예측합니다.
- 조금 더 확대해서 그다음으로 가까운 두 나라를 더 고려하면 삶의 만족도가 5.1과 6.5인 포르투갈Portugal과 스페인Spain이 있습니다.
이 세 값을 평균하면 모델 기반의 예측과 매우 비슷한 5.77이 됩니다.
- 이 간단한 알고리즘을 k-최근접 이웃k-Nearest Neighbors 회귀라고 합니다(여기서는 k = 3입니다).
- 이전 코드에서 선형 회귀 모델을 k-최근접 이웃 회귀로 바꾸려면 아래 한 줄을
model = sklearn.linear_model.LinearRegression()다음과 같이 바꾸면 됩니다.
model = sklearn.neighbors.KNeighborsRegressor(n_neighbors=3)
머신러닝 시스템은 좋은 알고리즘만으로 완성되지 않습니다.
높은 성능을 위해서는 충분하고, 대표성이 있으며, 품질이 좋은 데이터를 사용해야 합니다.
또한 모델의 복잡도와 데이터의 특성 사이에서 균형을 잡는 것도 중요합니다. 이 절에서는 머신러닝에서 흔히 발생하는 여러 문제를 살펴봅니다.
머신러닝 알고리즘은 일반적으로 많은 양의 데이터를 필요로 합니다.
단순한 작업조차 수천 개의 샘플이 요구되며, 이미지나 음성 인식과 같은 복잡한 작업은 수백만 개가 필요할 수 있습니다.
데이터가 부족하면 모델은 패턴을 일반화하지 못하고, 새로운 데이터에 대해 잘못된 예측을 하게 됩니다.
믿을 수 없는 데이터의 효과2001년에 발표한 유명한 논문(http://goo.gl/KNZMEA)에서 마이크로소프트 연구자인 미셸 반코Michele Banko와 에릭 브릴Eric Brill은 아주 간단한 모델을 포함하여 여러 다른 머신러닝 알고리즘에 충분한 데이터가 주어지면 복잡한 자연어 중의성 해소disambiguation 18 문제를 거의 비슷하게 잘 처리한다는 것을 보였습니다([그림 1-20]에서 볼 수 있습니다).
이 논문의 저자들이 말한 것처럼 ‘이 결과가 제시하는 것은 시간과 돈을 알고리즘 개발에 쓰는 것과 말뭉치corpus 개발에 쓰는 것 사이의 트레이드오프에 대해 다시 생각해봐야 한다는 것입니다.’
복잡한 문제에서 알고리즘보다 데이터가 더 중요하다는 이 생각은 2009년에 피터 노르빅Peter Norvig 등이 쓴 「The Unreasonable Effectiveness of Data」(http://goo.gl/q6LaZ8, 2009) 논문 때문에 더 유명해졌습니다. 하지만 기억할 점은 작거나 중간 규모의 데이터셋이 여전히 매우 흔하고, 훈련 데이터를 추가로 모으는 것이 항상 쉽거나 저렴한 일은 아니므로, 아직은 알고리즘을 무시하지 말아야 한다는 것입니다.

훈련 데이터는 실제 적용하고자 하는 데이터의 특성을 잘 반영해야 합니다.
특정 그룹이나 상황에만 편중된 데이터는 모델의 편향을 유발하며, 일반화 능력을 떨어뜨립니다.
샘플링 잡음(우연한 왜곡)과 샘플링 편향(잘못된 수집 방식)이 대표성 부족의 원인이 될 수 있습니다.
유명한 샘플링 편향 사례아마도 샘플링 편향에 대한 가장 유명한 사례는 랜던Randon과 루즈벨트Roosevelt가 경쟁했던 1936년 미국 대통령 선거에서 Literary Digest 잡지사가 천만 명에게 우편물을 보내 수행한 대규모 여론조사일 것입니다. 240만 명의 응답을 받았고 랜던이 선거에서 57% 득표를 얻을 것이라고 높은 신뢰도로 예측했습니다.
하지만 루즈벨트가 62% 득표로 당선되었습니다. 문제는 Literary Digest의 샘플링 방법에 있었습니다.
- 첫째, 여론조사용 주소를 얻기 위해 전화번호부, 자사의 구독자 명부, 클럽 회원 명부 등을 사용했습니다. 이런 명부는 모두 공화당(따라서 랜던)에 투표할 가능성이 높은 부유한 계층에 편중된 경향이 있습니다.
- 둘째, 우편물 수신자 중 25% 미만의 사람이 응답했습니다. 이는 정치에 관심 없는 사람, Literary Digest를 싫어하는 사람과 다른 중요한 그룹을 제외시킴으로써 역시 표본을 편향되게 만들었습니다. 특히 이러한 종류의 샘플링 편향을 비응답 편향nonresponse bias이라고 합니다.
다른 예로 펑크 음악 비디오를 분류하는 시스템을 만든다고 가정합시다. 이를 위한 훈련 세트를 유투브에서 ‘펑크 음악’을 검색해 마련할 수 있습니다. 하지만 이는 유투브 검색 엔진이 결괏값으로 유투브 내의 모든 펑크 음악을 대표하는 동영상을 반환한다고 가정하는 것입니다. 현실에서는 검색 결과가 인기 음악가들로 편중될 가능성이 큽니다(브라질에 살고 있다면 ‘펑크 음악의 아버지’ 제임스 브라운James Brown과 전혀 상관없는 ‘펑크 카리오카funk carioca’ 동영상을 결과로 보게 될 것입니다). 그렇다면 어떻게 대량의 훈련 세트를 구할 수 있을까요?
에러, 이상치, 잡음이 많은 데이터는 학습을 방해하고 잘못된 패턴을 만들 수 있습니다.
데이터 정제는 머신러닝 프로젝트에서 가장 시간이 많이 소요되는 과정 중 하나입니다.
이상치 제거, 결측값 처리, 오류 수정 등이 포함됩니다.
Garbage In, Garbage Out이란 속담처럼, 무의미한 데이터가 들어가면 무의미한 결과가 나옵니다.
특성 공학은 유용한 특성을 찾아내거나 만드는 작업으로, 다음 과정을 포함합니다:
특성 선택 (Feature Selection)
특성 추출 (Feature Extraction)
새로운 데이터 수집 및 특성 생성

과대적합은 모델이 훈련 데이터에 너무 잘 맞춰진 나머지, 일반화 성능이 떨어질 때 발생합니다.
과대적합의 사례
복잡한 모델이 훈련 데이터에는 잘 맞지만 테스트 데이터에는 부적합.
예) 복잡한 고차원 다항 회귀 모델 → 불필요한 잡음까지 학습.
과대적합 원인
모델이 너무 복잡해서 데이터 잡음을 학습.
훈련 데이터 부족으로 패턴 일반화 실패.
불필요한 데이터를 포함.
W가 삶의 만족도와 관련 있다고 추론하는 패턴(뉴질랜드, 노르웨이...)을 학습하지만, 일반화되지 못함.
과대적합 해결 방법
모델 단순화
파라미터가 적은 간단한 모델 사용 (ex: 선형 회귀).
훈련 데이터의 특성 수를 줄임.
모델의 복잡도를 낮춤(규제 적용).
훈련 데이터 증가
데이터 잡음 제거
규제 (Regularization)
규제는 모델 복잡도를 낮추고 과대적합을 방지하는 기법입니다.
모델 학습 시 자유도(Degree of Freedom)를 제한하여, 적절한 복잡도를 유지하고 일반화 성능을 개선합니다.
규제 적용 방법
가중치 제한
과소적합 방지
하이퍼파라미터 튜닝
규제의 강도를 설정하는 규제 하이퍼파라미터는 다음과 같은 역할을 합니다.
규제 강도가 약하면: 과대적합 위험 증가.
규제 강도가 강하면: 과소적합 위험 증가.
해결책:
하이퍼파라미터 튜닝을 통해 최적의 규제 강도를 설정하는 것이 중요합니다.
과소적합(underfitting)은 모델이 너무 단순해 데이터의 구조를 충분히 학습하지 못하는 현상입니다.
일반적으로 훈련 데이터에 대해서도 성능이 낮게 나타나며, 예측력이 부족합니다.
이 문제를 해결하는 주요 기법은 다음과 같습니다.
모델 파라미터가 더 많은 강력한 모델을 선택합니다.
학습 알고리즘에 더 좋은 특성을 제공합니다(특성 공학).
모델의 제약을 줄입니다(예를 들면 규제 하이퍼파라미터를 감소시킵니다).
머신러닝은 데이터를 통해 학습하는 시스템.
다양한 유형의 시스템이 존재
지도 학습, 비지도 학습
배치 학습, 온라인 학습
사례 기반, 모델 기반 학습
성공적인 머신러닝을 위해서는
양질의 훈련 데이터 확보
적절한 알고리즘 선택
과대적합과 과소적합 사이의 균형 유지
평가 및 하이퍼파라미터 튜닝 필수
새로운 샘플에서 모델 평가가 중요한 이유
모델이 새로운 데이터에 얼마나 잘 일반화될 수 있는지 확인하려면 실제 샘플에 적용해보는 것이 필요합니다.
하지만, 실제 서비스에서 모델을 테스트하면 성능이 좋지 않을 때 고객 불만으로 이어질 수 있으므로 더 안전한 방식이 필요합니다.
훈련 세트와 테스트 세트
훈련 세트: 모델 학습에 사용.
테스트 세트: 학습 후 모델을 평가하는 데 사용. 일반화 오차(Generalization Error)를 측정.
일반화 오차
새로운 샘플에서 모델이 만들어내는 오류 비율을 일반화 오차(외부 샘플 오차)라 부릅니다.
테스트 세트를 사용해 이전에 본 적 없는 데이터에서 모델의 성능을 평가.
주의
훈련 오차가 낮지만 일반화 오차가 높다면 이는 모델이 훈련 데이터에 과대적합된 것입니다.
일반적으로 80%의 데이터를 훈련, 20%는 테스트용으로 사용합니다.
훈련 세트로 학습
테스트 세트로 평가
규제 및 하이퍼파라미터 최적화
과대적합 방지나 성능 향상을 위해 규제를 적용.
성능 향상을 위해 여러 하이퍼파라미터 시도.
하이퍼파라미터를 최적화하는 과정에서, 테스트 세트를 반복적으로 사용하면 모델이 테스트 세트에 최적화될 수 있어 일반화 성능이 저하됩니다.
해결책: 검증 세트 추가
훈련 데이터를 다음 세 가지로 분리: 훈련 세트, 검증 세트, 테스트 세트.
과정 요약:
훈련 세트를 사용해 모델 학습.
검증 세트를 사용해 모델 성능 및 하이퍼파라미터 평가.
최종적으로 선택된 모델을 테스트 세트에서 단 한 번만 평가해 일반화 오차를 추정.
훈련 데이터의 손실을 줄이기 위해 교차 검증을 활용:
훈련 데이터를 여러 서브셋(subset)으로 나눔.
각 서브셋 조합으로 모델을 학습하고, 나머지 부분으로 검증.
모델과 하이퍼파라미터 선택 후, 전체 훈련 데이터를 사용해 최종 모델 학습.
훈련 데이터 분리는 과대적합 방지와 새로운 데이터에 대한 일반화 성능 평가에 필수적입니다.
훈련 세트: 모델 학습.
테스트 세트: 모델 성능 평가.
필요 시, 검증 세트로 하이퍼파라미터 조정.
검증 세트의 중요성
테스트 세트를 반복 사용하면 제대로 된 일반화 성능 평가가 어려움.
검증 세트를 도입해 모델 최적화를 수행하고 최종 평가를 위해 테스트 세트를 한 번만 사용.
교차 검증은 데이터 손실을 줄이는 기법으로 여러 서브셋에서 훈련 및 검증을 반복적으로 수행.
공짜 점심 없음(No Free Lunch) 이론
데이터에 완벽히 무관한 가정은 없으므로, 목적에 맞는 모델을 적절히 선택하고 평가해야 함.
간단한 데이터에선 선형 모델, 복잡한 문제에선 신경망 같은 방식을 시도.