---
title: "분류 복잡도를 활용한 목표 오버 샘플링 비율 산출 알고리즘 개발"
output:
flexdashboard::flex_dashboard:
orientation: columns
vertical_layout: fill
source_code: embed
---
```{r setup ,include = TRUE}
library(flexdashboard)
library(shiny)
library(png)
library(knitr)
```
# **논문 개요**
Column {data-width = 500}
-----------------------------------------------------------------------
### 불균형 데이터 정의
#### - 불균형 데이터는 데이터 범주에 따른 데이터의 분포가 불균형한 데이터를 의미한다.
#### - 이런 데이터를 활용하여 기존 분류 알고리즘으로 분류기를 학습하면, 성능이 저하되는 문제 발생
#### - 소수 범주 : 수가 극단적으로 적은 범주(class)
#### - 다수 범주 : 수가 극단적으로 많은 범주(class)
```{r,include = TRUE,echo=TRUE}
library(ggplot2)
library(ROSE)
data(hacide)
hacide.test$cls <- factor(hacide.test$cls, levels=c("0","1"), labels=c("다수 범주","소수 범주"))
ggplot(hacide.test, aes(x=x1, y=x2,color=cls, size =5)) + geom_point()+ ggtitle('불균형 데이터 분포')
```
### 목표 오버샘플링 비율이란?
#### - 다수 범주 데이터수와 소수 범주 데이터 수 사이 발생하는 차이대비
#### - 오버샘플링을 활용하여 늘리는 소수범주 데이터 수가 차지하는 비율
```{r,include = TRUE,echo=TRUE}
include_graphics("ratio.png")
```
Column {data-width = 500}
-----------------------------------------------------------------------
### 오버샘플링과 부스팅 알고리즘 결합
#### - 부스팅 알고리즘은 adaboost.M2를 사용하며, 샘플별 가중치 재산정(re-weighting)을 위하여 매 약한 학습자(weak learner)를 순차적으로 학습
#### - 오버 샘플링은 이때 데이터 불균형을 해소해주는 효과
#### - 결합으로 인한 주요 흐름 : 오버 샘플링 => 약한 학습자 학습 => 샘플별 가중치 재산정 => 오버 샘플링된 샘플 삭제
#### - 지난 연구에서의 주요 관심사는 오버 샘플링 시 어떤 소수 범주 샘플을 기준으로 삼을지
### 주요 기법 소개
#### 1) SMOTEBoost <=> 2) RAMOBoost, 3) WOTBoost
#### - 대표적인 차이점 : 오버 샘플링을 위한 기준 선정 시 재산정된 가중치 활용 여부
```{r,include = TRUE ,echo=TRUE}
include_graphics("models.png")
```
# **연구진행 사항**
Column {data-width = 500}
-----------------------------------------------------------------------
### 데이터 셋별 최고 분류 성능(AUC)을 보이는 목표 오버 샘플링 비율
#### SMOTEBoost와 다른 알고리즘 간 상이한 비율을 보이는 경우가 있음
```{r,include = TRUE,echo=TRUE}
include_graphics("optimal_ratio.jpg")
```
### 데이터 셋별 최고 분류 성능(AUC)
#### 비율은 상이하더라도, 분류 성능 자체는 동일함
```{r,include = TRUE,echo=TRUE}
include_graphics("AUC.jpg")
```
#### 따라서 분류복잡도와 성능지표를 가지고 경향성 분석 진행
# **분류복잡도**
Column {data-width = 500}
-----------------------------------------------------------------------
### 정의
#### 분류 복잡도는 범주별 데이터들의 변수 분포에 따라 분류 경계가 명확한 정도를 의미한다. 일반적으로 분류 모형은 학습을 통해 서로 다른 범주를 구분할 기준이 되는 분류 경계선을 생성한다. 이는 범주별 일종의 구역 할당을 의미하며, 분명하고 명확할수록, 기대 성능은 높아질 수 있다.
```{r,fig.height=4,include = TRUE,echo=TRUE}
include_graphics("overlapping.png")
```
#### 대표적으로 Cohesion과 Fisher-Discriminant Ratio 가 있다.
### cohesion
#### K개의 근접 이웃 중 같은 범주에 속한 경우의 확률적 표현이다. 이는 범주 간 거리분포정보를 의미한다.
```{r,include = TRUE}
include_graphics("cohesion.png")
```
Column {data-width = 500}
-----------------------------------------------------------------------
### Fisher-Discriminant Ratio
#### 개별 변수에서 범주별 분산 합의 제곱 대비 범주별 평균의 차이의 제곱의 비율이다. 범주별 평균의 차이는 이들이 서로 다른 분포 중심을 가지는지를 의미한다. 범주별 분산 합은 이들이 분포 결집도를 보이는지를 의미한다. 따라서 해당 값과 분류 복잡도는 역비례 관계를 가진다.
```{r,include = TRUE,echo=TRUE}
include_graphics("f1.jpg")
```
# **분류성능(AUC)과 해당 분류복잡도 간 관계 분석**
Column {data-width = 500}
-----------------------------------------------------------------------
### 실험 설계
#### UCI에 존재하는 18가지의 데이터셋을 활용하였으며, 이들의 요약정보는 아래와 같습니다.
#### 분석 하기 앞서, 분류 복잡도를 전체 데이터를 활용하여 한 번에 측정 한 것과, train-test split randomness(20번) 및 5 fold 를 통해 임의로 나눈 100개의 표본으로 구한 결과를 평균 낸 결과값들의 평균에 대해서 실험하였다.
```{r,include = TRUE,echo=TRUE}
include_graphics("overview.jpg")
```
### 실험 결과
```{r,include = TRUE,echo=TRUE}
include_graphics("auc_score_base.png")
```