alpyrithm_알파이리즘

DAY6. Supervised Learning III 본문

SM공부/Data Mining & Machine Learning

DAY6. Supervised Learning III

알파이 2020. 7. 27. 08:44

 

Summarry

  • SVM(Support Vector Machine) in Supervised Learning
  • Soft Margin Classification in Supervised Learning
  • Decision Tree

 

 

 

 

 

 

 

 

 

 

 

 

 

Main

SVM(Support Vector Machine)

  • Support Vector Machine의 개념
    • SVM(Support Vector Machine)의 목표는 클래스 간 경계를 찾아서 misclassification 오류를 줄이는 것
    • 입력 데이터를 공간에서 선형으로 분리할 수 있는 초평면 또는 최적의 선형 결정 경계를 찾는 알고리즘
    • 문제는 대부분 몇 가지 결정 결계가 생긴다는 것
    • 어느 경계가 더 나은지를 더 잘 정의하는 방법에 대한 질문의 해결책이며, 이 해결책은 마진 최적화를 목표로 하는 것
    • SVM 알고리즘의 목적은 마진을 최대화하는 것
    • Linear Classification의 마진은 데이터 포인트에 도달하기 전에 경계의 너비를 늘리는 것
    • 경우
      • 분류 : 클래스(양품/불량)가 다른 데이터들을 가장 큰 margin으로 분리하는 선 또는 면을 찾음(결정 경계, 분리 초평면)
        • 비확률적 이진 선형 분류 모델
      • 예측 : 마진 안에 최대한 많은 샘플을 포함하는 것이 목적
    • 최대 마진을 가지는 선형 판별에 기초하며 속성들 간의 의존성은 고려하지 않음
  • 활용 용도
    • 거래량과 시/종가 활용한 주가 예측
    • 이미지 분류(손글씨 분류 등)
    • 유전자 분류
  • 장점
    • SVM은 차원수가 Training 샘플수보다 많은 고차원 데이터를 처리할 때 효과적
    • SVM은 Kernel Method(커널 기능)를 사용하여 매우 유용
      • Kernel Method는 커널 함수를 사용하여 이름을 지정하므로 고차원 공간에서 동작 가능
  • 단점
    • SVM은 확률을 직접 계산하지 않고 5중 교차 검증을 사용하여 확률을 계산하므로 느려질 수 있음
    • 고차원 데이터의 경우 프로세스가 매우 느려질 수 있으므로 커널 기능과 정규화 툴을 잘 선택하는 것이 매우 중요
  • SVM Working Flow
    • Hyper Plane(초평면)의 너비를 찾고
    • 마진을 최대화
    • 최대 마진을 갖는 결정 경계 선택
  • Codes
    • pandas.DataFrame.fillna()
      • 결측 값 처리
      •  parameter
        • value : 결측 데이터에 채울 값 입력
        • method : 결측 데이터를 채우는 방식 지정
          • bfill/backfill : 이후 데이터로 채움
          • pad/ffill : 이전 데이터로 채운
        • axis : 데이터의 축을 지정
          • 0/index : 가로 기준 축, row
          • 1/columns : 세로 기준 축, column
        • inplace : 처리 후 기존 데이터 수정
          • False : default
          • True : 다른 객체를 반환하지 않고  기존 객체를 수정
    • numpy.where()
      • numpy.where(condition, x, y)
      • return elements chosen from x or y depending on condition
      • 조건에 맞으면(True) x를 맞지 않으면(False) y를 반환
      •  parameter
        • condition : 조건문
        • x, y : values
    • sklearn.svm.SVC()
      • 서포트벡터 분류
      •  parameter
        • kernel : 커널 형태 지정, default = 'rbf'
          • rbf : radial basis funciton
          • linear : 선형
          • poly : 다항
          • sigmoid
        • degree : 커널 형태 poly 지정 시 다항 차수, default = 3
        • gamma : 커널 형태 rbf, poly, sigmoid 지정 시 kernel 계수

 

Soft Margin Classification

  • Background
    • 데이터를 선형적으로 분리할 수 없는 경우 Hard Margin Classification을 사용할 수 없음
    • 이 경우, slack variance ξ를 사용
    • Soft Margin Classification 새로운 종류의 분류기를 사용
  • Working Flow
    • slack variable 정하고
    • constraint(제야 조건)을 relaxation(완화)한 후
    • relaxing에 대한 penalty를 적용
    • slack variable(슬랙 변수)가 linear constraint(선형 구속 조건)을 변경하게 됨

 

Kernel Method

  • Kernel Method의 개념
    • 데이터의 선형 분리가 어려운 경우 중에서도 선형 분리가 아주 어려운 경우 이용
    • 데이터를 분리하기가 어려운 시나리오 경우 slack variable(슬랙 변수)와 linear hyper plane(선형 초평면)을 사용하여 결정 경계를 갖는 것이 불가능
    • 커널의 개념을 사용하여 원래 기능(x1, x2)의 비선형 조합을 만들고 매핑 기능 φ를 통해 더 높은 차원의 공간으로 투영하면 선형으로 분리 가능
  • 단점 및 해결책
    • feature mapping의 문제점은 피처의 차원이 매우 높아서 메모리에 명시적으로 표현하기 어려워 이를 kernel-trick을 사용하여 완화
    • kernel-trick은 기본적으로 dot product를 사용하여 xiT xi를 커널 φ xiTφ(xi)로 대체

 

Decision Tree

  • Decision Tree 개념
    • 설명변수들의 규칙, 관계, 패턴 등으로 관심 대상인 목표변수를목표 변수를 분류하는 나무 구조의 모델을 만들고, 설명변수의 값을 생성된 모델에 입력하여 목표 변수를 분류/예측하는 지도학습 기법
    • 목표 변수에 영향을 주는 설명변수를 탐색하고 해당 설명변수의 최적 분리기준 제시
    • Non-Parametric Supervised Learning
    • 예측 모델이 트리와 같은 구조로 표현되기 때문에 Decision Tree
    • Decision Tree는 데이터에서 간단한 의사 결정 규칙을 학습하여 대상 변수를 찾아감
    • classification 및 regression 작업에 모두 사용 가능
      • 분류(classification)는 범주형 레이블 예측
        • 은행 입장에서 대출을 요청하는 고객의 특성에 따른 대출 위험성을 분석하여 대출 여부 결정
        • 고객 프로파일 및 구매 패턴을 분석하여 새로운 제품 구매 여부 판단
        • 환자 특성과 상태에 따라 특정 처방의 적절성 여부 예측
      • 회귀(regression)는 목표 변수의 평균값 예측
        • 다양한 신체 측정값을 기반으로 체질 비만도 예측
        • 주택 가격에 영향을 주는 다양한 요인을 분석하여 주택 특성별 가격 예측
        • 고객 프로파일 및 구매 패턴에 따른 (특정)제품 또는 매장의 매출액 예측
    • 주로 classification에 이용
  • 활용 용도
    • 고객 관리 : 이탈 고객의 이탈 원인과 발생 조건 도출
    • 불량 개선 : 불량 발생을 유발하는 공정 인자 탐색 및 저감을 위한 최적의 관리조건 도출
    • 금융 거래 : 이상금융거래 탐지 정규화 및 사전 방지
    • 스포츠 예측 : 프로야구 전적을 통한 플레이오프 진출팀 예측
  • 장점
    • 이해하기 매우 간단하며 시각화에 용이
    • 숫자 데이터와 범주 데이터 모두 처리 가능
    • 누락된 데이터 처리가 쉬우므로 data cleaning시 필요 사항(요구사항)이 매우 적어짐
    • 가정(공간 분포, 분류기 구조)도 필요로 하지 않은 Non-Parametric Supervised Learning
    • Nueral Network(신경망)과 같은 블랙박스 모델이 아닌 화이트 박스 모델로 Bool을 이용하여 분할 논리를 설명
  • 단점
    • 데이터의 overfitting이 쉽게 나타나는 경향이 있어 모델의 overfitting을 방지하려면 data pruning(제거)가 필요
    • 편향된 의사 결정 트리를 가질 수 있는 불균형 데이터에는 적합하지 않음
    • 의사 결정 트리는 대다수 클래스를 기반으로 노드를 분할하려고 시도하므로 일반화되지 않음
    • 의사 결정 트리를 적용하기 전에 반드시 data balancing, 데이터의 균형을 맞추는 것이 필요
  • Working Flow
    • Root Node에서 시작하여 위에서 아래로 Decision Tree를 읽음
    • 각 Internal Node는 입력 중 하나의 값을 기반으로 분할을 나타냄
    • Input은 트리 전체에 여러 개의 분할로 나타날 수 있으며 case는 입력값이 포함된 분기로 이동
    • Bool(Inequality)가 참이면 사건이 왼쪽으로 이동하고 그렇지 않으면 오른쪽으로 이동
    • Tree의 Terminal Node를 Leaves라고 하며 Leaves는 예측된 목표를 나타냄
  • Codes
    • DataFrame.isnull().sum()
      • 결측 값 개수 구하는 함수
      • sum() : column 단위
      • sum(1) : row 단위
    • pandas.DataFrame.astype().cat.codes
      • value를 카테고리별로 int8로 나타낸 것으로 결측 값은 -1로 표현됨
    • sklearn.tree.DecisionTreeClassifier()
      • 의사결정 나무 분류
      • parameter
        • criterion : 분리 기준 지정, default = 'gini'
          • gini : 지니 지수
            • 불순도 측정지수
            • 지니 지수가 낮을수록 순수도 높음
            • 부모 노드의 지니 지수를 가장 많이 감소시키는 설명변수와 분리 값을 기준으로 자식 노드 형성
          • entropy : 엔트로피 지수
            • 무질서(혼란) 측정지수
            • 엔트로피 지수가 낮을수록 순수도 높음
            • 부모 노드의 엔트로피 지수를 가장 많이 감소시키는 설명변수와 분리값을 기준으로 자식 노드 형성
        • max_depth : 최대 깊이 지정
        • min_samples_split : 분리 노드의 최소 자료수 지정, default = 2
        • min_samples_leaf : 잎사귀 노드 최소 자료수 지정, default = 1
    • sklearn.tree.export_graphviz()
      • 트리 모듈로 트리를 시각화, 그래프 저장용 덱스트 파일 포맷인 .dot 파일을 만드는 함수
    • pydotplus.graph_from_dot_data()
      • load graph as defined by data in DOT format
      • pydotplus 모듈 중 dot 형식의 데이터로 정의된 그래프를 로드하는 함수

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형

'SM공부 > Data Mining & Machine Learning' 카테고리의 다른 글

DAY7. Ensemble Learning I  (0) 2020.08.03
+) DataFrame 기초 정리  (0) 2020.07.28
DAY5. Supervised Learning II  (0) 2020.07.26
DAY4. Supervised Learning I  (0) 2020.07.25
DAY3. Dimension Reduction - PCA  (0) 2020.07.24
Comments