빅데이터 관련 개념 정리

머신러닝

은행털이 2024. 10. 14. 01:34

머신러닝이란

- 명시적인 프로그래밍 없이 컴퓨터가 학습하는 능력을 갖추게 하는 연구 분야(Arthur Samuel, 1959)

- 어떤 작업 T에 대한 컴퓨터 프로그램의 성능을 P로 측정 헀을 때, 경험 E로 인해 성능이 향상됐다면, 이 컴퓨터 프로그램은 작업 T와 성능 측정 P에 대해 경험 E로 학습한 것(Tom mitchell, 1997)

 

 

알고리즘과 머신러닝

알고리즘(Algorithms) 머신러닝(Machine Learning)
- 어떠한 문제를 해결하기 위한 일련의 절차나 방법 - 기계가 패턴을 학습하여 자동화하는 알고리즘

 

 

머신러닝 학습의 종류

지도 학습 비지도학습 준지도학습 강화학습
- 입력과 결과가 레이블로 표시
- 입력과 출력에 매핑되는 일반적인 규칙을 학습
- 원하는 출력 없이 입력 데이터 사용
- 입력 데이터의 구조나 패턴을 찾는 것이 목표
- 레이블이 있는 것과 없는 것이 혼합된 경우 사용
- 일반적으로 일부 데이터에만 레이블이 있음
- 동적 환경과 함께 상호작용
- 어떤 지도가 없이 일정한 목표를 수행

 

 

온라인 학습과 배치 학습

온라인 학습 배치 학습
- 적은 데이터를 사용해 미니배치(mini-batch) 단위로 점진적 학습
- 실시간 시스템이나 메모리 부족의 경우 사용
- 전체 데이터를 모두 사용해 오프라인에서 학습
- 컴퓨팅 자원이 풍부한 경우 사용

 

 

사례 기반과 모델 기반

사례 기반 학습(Instance-Based) 모델 기반 학습(Model-Based)
- 샘플을 기억하는 것이 곧 훈련
- 예측을 위해 샘플 사이의 유사도 측정
- 샘플을 사용해 모델을 훈련
- 훈련된 모델을 사용해 예측

 

 

 

 

연역적 학습과 귀납적 학습

연역적 학습(Deductive Learning) 귀납적 학습(Inductive Learning)
- 이미 존재하는 결론(원리, 이론)을 통해서 개별 사실을 확인하는 연역적 추론을 통한 학습 - 사례(Example)을 일반화(Generalization)하여 패턴 또는 모델을 추출하는 것
- 일반적인 기계학습의 대상
- 학습 데이터를 잘 설명할 수 있는 패턴을 찾는 것
- 오컴의 면도날(Occam's Razor) : 가능하다면 학습 결과를 간단한 형태로 표현하는 것이 좋음

 

 

 

머신러닝의 종류

  • 회귀(Regression)
    - 모델에 의한 예측을 위해 오차 측정을 사용하여 반복적으로 구체화된 변수 간의 관계를 모델링
    - 통계의 핵심이자 꽃이며, 통계기반의 기계학습에서 채택됨
    - OLSR, 선형 회귀, 로지스틱 회귀, 단계적 회귀, MARS, LOESS 등
  • 사례 기반(Instance-Based)
    - 모델에 중요하거나 필요하다고 여기는 학습 데이터의 인스턴스 또는 예제에 대한 의사 결정
    - 예측을 위해 유사성 측정 등을 사용해 비교
    - kNN, LVQ, SOM, LWL, SVM 등
  • 정규화(Regularization)
    - 복잡성에 따라 모델에 불이익을 주는 방법으로 일반화
    - 일반적으로 회귀 방법 등에 확장되어서 사용
    - 릿지 회귀, LASSO, 엘라스틱 넷, LARS 등
  • 의사 결정 트리(Decision Tree)
    - 데이터 속성의 실제 값을 기반으로 의사 결정 모델을 구성
    - 주어진 레코드에 대한 예측을 트리 구조에 기반하여 결정
    - 분류 및 회귀 문제에 대한 데이터를 학습
    - CART, ID3, C4.5, C5.0, CHAID, M5, Conditional Decison Trees 등
  • 베이지안(Bayesian)
    - 베이지안 확률 기반으로 불확실성에 대해 새로운 사건을 추정
    - 분류 및 회귀와 같은 문제에 자주 사용됨
    - 나이브 베이즈, 가우시안 나이브 베이즈, 멀티노미얼 나이브 베이즈, AODE, BBN, BN 등
  • 클러스터링(Clustering)
    - Centroid 기반 및 계층 기반의 모델링 방법으로 구성
    - 데이터를 최대 공통 그룹으로 잘 구성되도록 하는 방식으로 동작
    - k-Means, k-Medians, EM, Hierarchical Clustering 등
  • 연관 규칙(Association Rule Learning)
    - 변수 간 관찰된 관계를 가장 잘 설명하는 규칙을 추출
    - 어떤 항목이 어떤 항목을 동반하여 등장하는지를 파악
    - 중요하고 유용한 연관성을 발견
    - Apriori, Eclat 등
  • 신경망(Artificial Neural Network)
    - 생물학적 신경망의 구조, 기능에서 영감을 받은 모델
    - 회귀, 분류 문제에 일반적으로 사용되는 패턴 매칭의 한 종류
    - 모든 유형의 문제에 대한 다양한 알고리즘으로 변화, 구성 가능
    - Perceptron, MLP, 역전파, Stochastic Gradient Decent, Hopfield Network, Radial Basis Function Network(RBFN)
  • 딥러닝(Deep Learning)
    - 인공 신경망의 발전된 형태로, 값이 싸지만 대규모로 구성한 연산을 이용하는 방법
    - 훨씬 크고 더 복잡한 신경망 구조를 가지며, 이미지, 텍스트, 오디오, 비디오와 같은 매우 큰 데이터에 사용 가능
    - CNN, RNN, LSTM, Stacked Auto-Encoders, DBM, DBN 등
  • 차원 감소(Demensional Reduction)
    - 데이터의 고유한 구조를 이용하여 데이터를 요약하거나 기술하는 방법
    - 고차원 데이터를 중요한 요소를 유지하며 저차원으로 변환
    - PCA, PCR, PLSR, MDS, LDA, MDA, QDA, FDA 등
  • 앙상블(Ensemble)
    - 독립적으로 훈련되고 전체적인 예측을 위해 어떤 식으로든 예측이 결합되는 복수의 약한 모델로 구성된 모델
    - 이 약한 모델들을 학습시키고 어떻게 결합할지가 중요
    - 일반적으로 매우 강력함
    - Bagging, AdaBoost, Blending, Stacking, GBM, GBRT, 랜덤 포레스트 등

 

 

분류(Classification)

- 데이터들을 정해진 몇개의 부류(Class, Category, Label)로 대응시키는 문제

- 분류 문제의 학습 : 학습 데이터를 잘 분류할 수 있는 함수를 찾는 것으로 함수의 형태는 수학적일수도 규칙일수도 있음

- 분류기(Classifier) : 학습된 함수를 이용하여 데이터를 분류하는 프로그램

    -> 결정 트리, kNN, MLP, 딥러닝, SVM, AdaBoost, 랜덤포레스트, 확률 그래프 모델
- 이상적인 분류기 : 학습에 사용되지 않은 데이터에 대해서 분류를 잘 하는 것, 즉 일반화 능력이 좋은 것

 

 

데이터의 구분

학습데이터(Train Data) 테스트 데이터(Test Data) 검증 데이터(Validation Data)
- 모델을 학습하는데 사용하는 데이터 집합
- 학습 데이터가 많을 수록 유리
- 학습된 모델의 성능을 평가하는데 사용되는 데이터 집합
- 학습에 사용되지 않은 데이터여야 함
- 학습 과정에서 학습을 중단할 시점을 결정하기 위해(Early Stopping) 사용되는 데이터 집합

 

 

성능 평가

  • 정확도(Accuracy) 
    - 얼마나 정확하게 분류하는가
    - 정확도 = (옳게 분류한 개수) / (전체 데이터 개수)
    - 테스트 데이터에 대한 정확도를 모델의 정확도로 사용
    - 정확도가 높은 모델을 학습하기 위해서는 많은 학습데이터를 가지는 것이 유리
    - 학습 데이터와 테스트 데이터는 겹치면 안됨
  • 데이터가 부족한 경우
    - 별도로 테스트 데이터를 확보할 수록 비용이 증가
    - 가능하면 많은 데이터를 학습용으로 돌리면서 성능을 평가하는 방법이 필요
    - K-Fold 교차검증으로 해결 가능 : 전체 데이터를 k등분하고 각 등분을 한번씩 테스트 데이터로 사용하여 평가하고 평균값을 선택
  • 불균형 데이터 문제
    - 특정 부류에 속하는 학습 데이터가 다른 부류에 비해 지나치게 많은 경우
    - 이 경우 정확도에 의한 평가는 무의미(A부류의 데이터가 99%의 비율을 가질경우, 항상 A로 결정해도 정확도는 99)
    - 대응방안으로 가중치를 고려한 정확도 사용, 많은 데이터를 가지는 부류에서 리샘플링, 적은 데이터를 가지는 부류에서 인공적으로 데이터 증강
    - SMOTE : 빈도가 낮은 부류의 학습 데이터를 인공적으로 만들어내는 방법으로 임의의 낮은 부류 데이터 x의 근접 이웃 부류의 데이터를 무작위로 선택하고 x, y의 직선상 위치에 무작위로 데이터 생성
  • 이진 분류기의 성능 평가
  실제 정답
True False
분류 결과 True True Positive(TP) False Positive(FP)
False False Negative(FN) True Negativa(TN)

- TP : 실제 True인 정답을 True로 예측(정답)
- FP:  실제 False인 정답을 True라고 예측(오답)
- FN : 실제 True인 정답을 False라고 예측(오답)
- FP : 실제 False인 정답을 False라고 예측(정답)

  • 민감도, 재현율(Sensitivity, Recall)
    - TP / TP + FN
  • 특이도(Specificity)
    - TN / TP + TN
  • 정밀도, 양성예측도(Precision, Positive Predictive Value)
    - TP / TP + FP
  • 음성 예측도(Negative Predictive Value)
    - TN / TN + FN
  • 위양성률
    - 1 - Specificity
  • 위발견률
    - 1 - Precision
  • 정확도(Accuracy)
    - TP + TN / TP + FP + TN + FN
  • F1 Score
    - 2((Precison * Recall) / (Precision + Recall))
  • ROC 곡선
    - 부류 판정 임계값에 따른(위양성률, 민감도) 그래프
  • AUC
    - ROC 곡선에서 곡선 아래 부분의 면적으로, 클수록 바람직한 이진분류모델

 

 

회귀(Regression)

- 학습 데이터에 부합되는 출력 값이 실수인 함수를 찾는 문제

- 성능 = 낮은 오차 : 예측값과 실제값의 차이
-> 오차 : 테스트 데이터들에 대한 (에측값 - 실제값)^2의 평균 또는 제곱근

-> 모델의 종류(함수의 종류)에 영향을 받음

 

 

회귀의 과소적합, 과대적합

과소적합(Underfitting) 과대적합(Overfitting)
지나치게 단순한 모델(함수) 사용 지나치게 복잡한 모델(함수)사용
- 모델의 복잡도를 성능 평가에 반영함으로써 대응가능
- 목적 함수 = 오차의 합 + (가중치 * 모델 복잡도)

 

 

 

선형 회귀(Linear Regression)

- 과거부터 현재까지 널리 이용되는 기계학습 방법
- 입력 데이터에 대한 선형 함수를 만들어 예측 수행

- 가장 간단한 회귀 분석을 위한 선형 모델
- 모델의 예측과 정답 사이의 평균제곱오차(MSE, Mean Squared Error)를 최소화 하는 학습 파라미터 w를 찾는 것

 

MAE(Mean Absolute Error)

- 모델의 예측과 정답 사이의 차이를 모두 더함
- 절대값을 취하기 때문에 가장 직관적
- MSE보다 특이치에 강건함
- 절대값을 취하므로 모델이 고성능인지 저성능인지 알 수 없음(+- 판단 불가)

 

MSE(Mean Squared Error)
- 모델의 예측과 정답사이의 차이의 면적의 합
- 특이값이 존재하면 수치가 많이 늘어나므로(Squared) 특이값에 민감
- RMSE : MSE에 루트를 씌워 실제 값과 유사한 단위로 재변환하여 해석에 용이

 

MAPE(Mean Absolute Percentage Error)
- MAE와 마찬가지로 절대값을 취하므로 MSE보다 특이치에 강건
- 그러므로 MAE와 같은 단점을 가지며 MPE도 추가로 고려하는게 좋음
- 0근처의 값에서는 사용하기 어려움

 

MPE(Mean Percentage Error)
- MAPE에서 절대값을 제외한 지표
- MAPE와 다르게 고성능인지 저성능인지 판단 가능(+- 판단 가능)

 

 

로지스틱 회귀(Logistic Regression)

- 회귀이지만, 가능한 부류가 2개인 이진 분류를 위한 모델
- 로지스틱 함수를 이용하여 함수 근사

 

 

 

 

k 근접 이웃(k-Nearest Neightbor, kNN)

- 입력, 결과가 있는 데이터들이 주어진 상황에서 새로운 입력에 대한 결과를 추정할 때 결과를 아는 최근 접한 k개의 데이터에 대한 결과 정보를 이용하는 방법

- 질의(query)와 데이터간의 거리 계산

- 효율적으로 근접이웃 탐색

- 근접 이웃 k개로부터 결과를 추정

  • 수치 데이터의 거리 계산
    - 유클리디언 거리(Euclidian Distance)
  • 범주형 데이터가 포함된 경우
    - 응용분야의 특성에 맞춰 개발

-> 데이터의 개수가 많아지면 계산 시간이 증가하는 문제 -> 색인(Indexing) 자료 구조로 해결(R-트리, k-d트리)

 

 

최근접 k개로부터 결과를 추정하는 방법

  • 분류
    - 출력이 범주형 값
    - 다수결 투표(Majority Voting) : 개수가 많은 범주 선택
  • 회귀
    - 출력이 수치형 값
    - 평균 : 최근접 k개의 평균값
    - 가중합(Weighted sum) : 거리에 반비례하는 가중치 사용

 

kNN의 특징, 단점

  • 학습 단계에서는 실질적인 학습이 일어나지 않고 데이터만 저장
    - 학습 데이터가 크면 메모리 문제 발생
    - 게으른 학습(Lazy Learning)
  • 새로운 데이터가 주어지면 저장된 데이터를 이용하여 학습
    - 시간이 많이 걸릴 수 있음

 

 

 

서포트 벡터 머신(Support Vector Machine, SVM)

- 분류 오차를 줄이면서 동시에 여백을 최대로 갖게 하는 결정 경계를 찾는 이진 분류기

- 회귀, 분류, 이상치 탐지 등에 사용되는 지도학습 방법

- 여백(margin) : 결정 경계와 가장 가까이 있는 학습 데이터(Support vector)까지의 거리

- 서포트 벡터(Support vector) : 결정 경계로부터 가장 가까이에 있는 학습 데이터들

- 초평면(hyperplane) : 4차원 이상의 공간에서 선형 방정식으로 표현되는 결정 경계(ex. 4차원을 분류하기위해선 3차원초평면 사용)
- SVM의 학습은 분류를 위한 초평면의 만족조건을 찾는 것

 

 

비선형 SVM

- 비선형 함수를 고차원으로 사상하여 선형 분리 가능, XOR 문제 해결 가능
- 단점으로 차원의 저주 문제 발생(Curse of dimensionality) : 차원이 증가할수록 처리량이 기하급수적으로 증가하는 문제로서, 테스트 데이터에 대한 일반화 능력이 저하될 수 있음
- 여백 최대화를 통해 일반화 능력을 유지 가능
- 계산 비용 증가는 커널 트릭 사용으로 해결(Kernel Trick)

 

 

커널 트릭(Kernel Trick)
- 입력 데이터를 고차원 공간에 사상해서 비선형의 특징을 학습할 수 있도록 확장하는 기법
- 고차원 변환 없이 계산할 수 있는 커널 함수 사용

 

 

 

 

결정 트리(Decision Tree)

- 트리 형태로 의사결정 지식을 표현한 것

- 내부 노드(internel node) : 비교 속성

- 간선(edge) : 속성 값

- 단말 노드(terminal node) : 부류(class), 대표값

 

 

분할 속성 결정(비교 속성, internel node)

- 어떤 속성을 선택하는 것이 효율적인가? -> 분할한 결과가 가능하면 pure한 것으로 만드는 속성을 선택
- 이를 측정하기 위해 엔트로피(Entropy) 사용 -> 원래 정보량(amount of information) 측정 목적의 척도

- 섞인 정도가 클 수록 큰 값을 가짐 = 값이 클수록 pure하지 못함

 

 

정보이득(information gain)

- IG = I - I(res)
- I(res) : 특정 속성으로 분할한 후의 각 부분집합의 정보량의 가중 평균
- IG가 클수록 우수한 분할속성임

- 단점으로 정보이득 척도는 속성값이 많은 것을 선호함
- 속성값이 많으면 데이터 집합을 수많은 부분집합으로 분할
- 개선 척도로 정보이득비(information gain ratio), 지니 지수(Gini index)가 있음

 

정보이득 비(information gain ratio)

- 정보이득 척도를 개선 한 것으로, 속성값이 많으면 불이익을 반영

 

 

결정 트리 알고리즘

ID3 알고리즘 C4.5 알고리즘 C5.0 알고리즘 CART 알고리즘
- 범주형 속성값을 갖는 데이터에 대한 결정트리 학습
- PlayTenis, 삼각형/사각형 문제
- 범주형 속성값과 수치형 속성값을 갖는 데이터에 대한 결정트리 학습
- ID3를 개선한 알고리즘
- C4.5를 개선한 알고리즘 - 수치형 속성을 갖는 데이터에 대해 적용

 

 

회귀를 위한 결정트리

- 출력값이 부류(class)가 아닌 수치값(numerical)

- 분할 속성 선택 -> 표준편차 축소(SDR)을 최대로 하는 속성을 선택

 

 

 

 

 

앙상블 분류기(Ensemble Classifier)

- 주어진 학습 데이터에 대해 여러개의 서로 다른 분류기를 만들고 이 분류기들의 판정결과를 투표 방식(voting method)나 가중치 투표 방식(weighted voting method)로 결합

- 부트스트랩(bootstrap) : 주어진 학습 데이터 집합에서 복원추출(Resampling with Replacement)하여 다수의 학습데이터 집합을 만들어내는 기법

- 배깅(bagging), 부스팅(boosting), 랜덤포레스트, 에이다부스트(AdaBoost)

 

 

배깅(bagging, bootstrap aggregating)

- 부트스트랩을 통해 여러 개의 학습 데이터 집합을 만들고, 각 학습 데이터 집합 별로 분류기를 만들어 투표, 가중치 투표를 하여 최종 판정을 하는 기법

 

랜덤 포레스트(random forest)
- 분류기로 결정트리를 사용하는 기법

 

부스팅(boosting)
- k개의 분류기를 순차적으로 만들어가는 앙상블 분류기 생성법

- 분류 정확도에 따라 학습 데이터에 가중치를 변경해가면서 분류기 생성

 

 

 

 

군집화(Clustering)

  • 군집화 알고리즘
    - 데이터를 유사한 것들끼리 모으는 것
    - 군집 간의 유사도(similarity)는 크게, 군집 내의 유사도는 작게
  • 계층적 군집화
    - 군집화의 결과가 계층적인 구조를 갖도록 하는 것
    - 병합형 계층적 군집화 : 각 데이터가 하나의 군집을 구성한 상태에서 시작하여, 가까이 있는 군집들을 결합하는 과정으로 계층적 군집 생성
    - 분리형 계층적 군집화 : 모든 데이터를 포함한 군집에서 시작하여 유사성을 바탕으로 군집을 분리하여 계층적인 군집 생성
  • 분할 군집화
    - 계층적 구조를 만들지 않고, 전체 데이터를 유사한 것들끼리 나누어서 묶는 것
    - k-means 알고리즘

 

k-means 알고리즘

  • i번째 클러스터의 중심을 u 클러스터에 속하는 점의 집합을 S라고 할 때 전체 분산
  • 분산값 V를 최소화 하는 S를 찾는 것이 알고리즘의 목표
  • 과정
    - 초기 u를 임의로 지 정
    - 다음 두 단계를 클러스터가 변하지 않을 때 까지 반복
      1. 클러스터 설정 : 각 점에 대해 그 점에서 가장 가까운 클러스터를 찾아 배당
      2. 클러스터 중심 재조정 : u를 각 클러스터에 있는 점들의 평균 값으로 재설정 해준다
  • 특성
    - 군집의 개수 k는 미리 지정
    - 초기 군집 위치에 민감

'빅데이터 관련 개념 정리' 카테고리의 다른 글

인공지능 개념  (4) 2024.10.13
분석 모형 설계  (1) 2024.06.13
추정과 검정  (0) 2024.04.22
데이터 축소  (0) 2024.04.21
데이터 통합  (1) 2024.04.21