alpyrithm_알파이리즘
DAY6. Supervised Learning III 본문
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으로 분리하는 선 또는 면을 찾음(결정 경계, 분리 초평면)
- 비확률적 이진 선형 분류 모델
- 예측 : 마진 안에 최대한 많은 샘플을 포함하는 것이 목적
- 분류 : 클래스(양품/불량)가 다른 데이터들을 가장 큰 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 계수
- kernel : 커널 형태 지정, default = 'rbf'
- pandas.DataFrame.fillna()
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)는 범주형 레이블 예측
- 주로 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 : 엔트로피 지수
- 무질서(혼란) 측정지수
- 엔트로피 지수가 낮을수록 순수도 높음
- 부모 노드의 엔트로피 지수를 가장 많이 감소시키는 설명변수와 분리값을 기준으로 자식 노드 형성
- gini : 지니 지수
- max_depth : 최대 깊이 지정
- min_samples_split : 분리 노드의 최소 자료수 지정, default = 2
- min_samples_leaf : 잎사귀 노드 최소 자료수 지정, default = 1
- criterion : 분리 기준 지정, default = 'gini'
- sklearn.tree.export_graphviz()
- 트리 모듈로 트리를 시각화, 그래프 저장용 덱스트 파일 포맷인 .dot 파일을 만드는 함수
- pydotplus.graph_from_dot_data()
- load graph as defined by data in DOT format
- pydotplus 모듈 중 dot 형식의 데이터로 정의된 그래프를 로드하는 함수
- DataFrame.isnull().sum()
728x90
반응형
'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