Python Packages in ML

Numpy

트라비스 올리펀트(Travis Oliphant)가 개발한 Numpy는 파이썬 언어를 기반으로 하는 모든 분석용 솔루션의 핵심입니다. Numpy는 다차원 배열과 이 배열을 대상으로 여러 가지 수학적 연산을 수행하는 많은 함수들을 제공합니다. 배열은 다차원으로 배열된 데이터 블록으로서 벡터와 행렬을 구현합니다. 배열은 데이터 저장뿐만 아니라 빠른 행렬 연산(벡터화, Vectorization)에 유용하며, 특별히 데이터 과학 분야의 문제를 해결하려고 할 때 반드시 필요한 패키지 입니다.


Scipy

Scipy는 본래 트라비스 올리펀트, 페루 피터슨, 에릭 존슨이 시작한 프로젝트로, 선형 대수, 희소행렬, 신호 및 이미지 처리, 최적화, 급속 퓨리에 변환(Fast Fourier Transformation)등 다양한 종류의 과학용 알고리즘을 제공하면서 Numpy의 기능을 보완합니다.


Pandas

Pandas는 Numpy와 Scipy로 불가능한 모든 기능을 지원합니다. 특히 Pandas 특유의 객체 데이터 구조, 데이터 프레임(DataFrame), 시리즈(Series) 덕분에 서로 다른 데이터 타입으로 구성된 복잡한 테이블과 시계열 데이터를 처리할 수 있습니다. 데이터의 분할, 정제, 유실 데이터 처리, 추가, 재명명, 병합, 변환을 지원해 결국 사용자 의도에 따라 시각화가 가능하도록 합니다.


Scikit-Learn

Scikits(Scipy Toolkit)의 일부로 시작된 Scikit-learn은 파이썬을 사용하는 데이터 과학 연산의 핵심 패키지입니다. Scikit-learn은 데이터 전처리, 지도 및 비지도 학습, 모델 선택, 검증, 오차 기준에 필요한 모든 기능을 제공합니다.

  • 웹 사이트 : http://scikit-learn.org/stable/
  • 데이터 처리 : sklearn.preprocessing, sklearn.feature_extraction)
  • 모델 선택 및 검증 : sklearn.cross_validation, sklearn.grid_search, sklearn.metrics)
  • 목표 값 에측 : sklearn.linear_model

Matplotlib

Matplotlib는 배열로부터 고품질 도표(Plots)를 생성하고 그 도표를 대화형으로 시각화하기 위해 제작된 블록 모두를 포함하는 라이브러리입니다. PyLab 모듈 안에 포함된 MATLAB 방식의 도표 프레임워크를 모두 사용할 수 있습니다.


Gensim

Gensim은 병렬 분산 온라인 알고리즘을 사용하는 대형 문자 집합 분석용 오픈소스 패키지입니다. 잠재 의미 분석(Latent Semantic Analysis, LSA), 잠재 디리클레 할당(Latent Dirichlet Allocation, LDA)에 의한 주제 모델링, 구글의 지도 및 비지도 머신 러닝에서 사용하기 위해 텍스트를 벡터 특징으로 변환하는 알고리즘인 word2vec을 구현할 수 있습니다.


H2O

H2O는 빅데이터 분석용 오픈소스 프레임워크입니다. R, Python, Scala, Java 프로그래밍 언어로 사용할 수 있으며, 단독 머신 혹은 하둡 클러스터를 쉽게 사용할 수 있도록 하였습니다. 스케일 업과 스케일 다운 기능을 지원합니다.


XGBoost

XGBoost는 확장과 이식이 가능한 분산형 경사 부스팅(Gradient Boosting) 라이브러리입니다. Python, R, Java, Scala, Julia, C++를 지원하며, 단일 머신 뿐만 아니라 하둡과 스파크 클러스 모두에서 동작 가능합니다.


Theano

Theano는 다차원 배열을 포함한 수학적 표현식을 효율적으로 정의하고, 최적화하며, 평가할 수 있도록 하는 파이썬 라이브러리입니다. 기본적으로 심층 신경망(Deep Neural Networks)를 만들기 위해 필요한 모든 빌딩 블록을 제공합니다.


TensorFlow

TensorFlow는 배열이 아닌 데이터 플로 그래프를 사용해 수치 연산을 하는 오픈소스 소프트웨어 라이브러리입니다. 그래프 표현에서 노드(Node)는 수학적 연산을 나타내고, 그래프 엣지(Edge)는 노드들 사이를 이동하는 텐서라는 다차원 데이터 배열을 나타냅니다.


sknn library

sknn 라이브러리는 Pylearn2 래퍼(Wrapper)로서, Theano의 전문가가 아니더라도 심층 신경망 네트워크를 구현할 수 있도록 하였습니다.


Theanets

Theanets 패키지는 파이썬으로 작성된 딥러닝 및 신경망 툴킷으로, Theano를 사용해 연산을 가속화한다. sknn처럼 딥러닝 모델 생성을 위해 Theano 기능이 쉽게 연결될 수 있도록 합니다.


Keras

Keras는 고수준으로 최소화된 단위 신경망 라이브러리로, 파이썬으로 작성되었으며 Tensorflow 혹은 Theano상에서 사용할 수 있습니다.


확장성이란 무엇인가?

엄청난 양의 데이터는 언제나 과학자들과 데이터 분석가들이 당면하는 도전 과제였습니다. 훈련 객체의 개수를 n이라 할 때 최근 머신 러닝 알고리즘의 계산 복잡도는 O(n²), 심지어 O(n³)에 이르는데, 과거에 과학자들과 데이터 분석가들은 좀 더 효율적인 데이터 알고리즘에 의존함으로써 그런 대용량 데이터세트와 관련된 문제를 처리했습니다.

데이터 세트는 사례가 많거나 변수들이 많은 경우, 아니면 이 둘 모두가 많은 경우 크기가 커질 수 있는데, 확장 가능한 알고리즘은 문제의 크기에 따라 실행 시간이 거의 선형으로 증가하므로 이런 데이터세트를 효율적으로 처리할 수 있습니다. 따라서 이는 더 많은 시간을 더 많은 데이터와 1:1로 교환하는 문제일 뿐입니다. 하지만, 어떠한 머신 러닝 알고리즘은 대용량 데이터를 다뤄야 하는 상황에서 확장되지 않습니다. 단순히 작업이 멈춘다거나 실행 시간이 지수 함수처럼 비선형적인 형태로 증가해서 학습이 불가능한 경우가 있습니다.

근래에는 저렴한 스토리지, 대용량 RAM, 다중 프로세서 CPU의 도입으로 엄청난 변화의 물결이 있었습니다. 이러한 큰 변화의 주인공은 바로 하둡 분산 시스템(Hadoop Distributed File System) 기반의 오픈소스 프레임워크인 하둡(Hadoop), 맵리듀스(Map Reduce), 그리고 일반적인 컴퓨터 네트워크상의 병럴 처리 기법이 있습니다.

이러한 변화가 규모가 큰 문제를 해결하는 방법에 얼마나 깊고 긍정적인 영향을 미쳤는지 확인하기 위해 대용량 데이터세트의 분석을 방해했던, 방해하고 있는 요인들을 알아보도록 하겠습니다.

  • 분석에 걸리는 시간에 영향을 미치는 연산(Computing)
  • 단위 시간당 스토리지에서 메모리로 이동하는 데이터양에 영향을 미치는 I/O
  • 한 번에 처리할 수 있는 데이터양에 영향을 미치는 메모리

또한, 하드웨어가 가지는 한계는 분석 중인 데이터 유형에 따라 많은 영향을 미치게 됩니다.

  • 긴 데이터(Tall Data) : 사례의 수가 많은 데이터
  • 넓은 데이터(Wide Data) : 특징(Featuress)의 개수가 많은 데이터
  • 길고 넓은 데이터(Tall and Wide Data) : 특징과 사례가 모두 많은 데이터
  • 희소 데이터(Sparse Data) : 0 성분 개수가 많거나, 0으로 변환돌 가능성이 있는 성분 데이터가 많은 데이터

추가적으로, 데이터로 학습을 진행하기 위해서는 사용할 알고리즘이 중요합니다. 각 알고리즘마다 자신만의 특성을 가지는데, 이 특성은 편향(Bias) 혹은 분산(Variance)에 따라 서로 상이하게 영향을 받는 방법을 사용해서 데이터를 매핑하는 방식에 기인합니다. 따라서 지금까지 머신 러닝으로 해결해왔던 문제들에 관해서는 경험 혹은 실증적 검증에 근거해 특정 알고리즘이 다른 알고리즘보다 더 낫다고 판단했습니다. 규모가 큰 문제를 다룰 때는 알고리즘을 결정할 때 이외에 또 다른 사항들을 추가로 고려해야 합니다.

알고리즘이 얼마나 복잡한가?

즉, 데이터에서 행과 열의 개수가 선형 혹은 비선형 비례 관계로 연산 횟수에 영향을 미치는지 살펴봐야 합니다. 대부분의 머신 러닝 기법들은 이차(Quadratic) 혹은 삼차(Cubic) 복잡도를 갖는 알고리즘에 기반하므로 이들을 빅데이터에 적용하는 데에는 많은 제약이 따릅니다.


모델이 얼마나 많은 파라미터를(Parameters)를 갖는가?

이는 단순히 예측값들의 분산에 관한 문제(과적합)가 아닌 그 모두를 계산하는 데 걸리는 시간과 관련된 문제입니다.


최적화 과정이 병렬로 처리될 수 있는가?

다수의 노드들 혹은 CPU 코어들로 연산을 쉽게 분할할 수 있는지? 혹은 순차적인 단일 최적화 과정에 의존해야만 하는가?


해당 알고리즘은 한 번에 모든 데이터로부터 학습을 하는가? 아니면 단일 객체들(Examples) 혹은 작은 배치(Batches) 데이터를 사용할 수 있는가?

위와 같은 문제들은 다음과 같은 접근 방식을 통해 해결할 수 있습니다.

  • 스케일 업(Scale-up) : 소프트웨어 혹은 하드웨어 교체를 통해 단일 머신의 성능을 향상시키는 방법
  • 스케일 아웃(Scale-out) : 주로 스토리지 디스크와 그 외 CPU 같은 외부 자원들을 활용하는 다수의 머신들로 연산을 분산시키는 방법
  • 스케일 업 및 스케일 아웃, 최적의 스케일 업 기법과 스케일 아웃 기법을 함께 활용하는 방법


3. 데이터 선택하기 (Data Selection)
.iloc.locindex slicingpandas

특정 열 선택

DataFrame이 가지고 있는 []를 이용해 슬라이싱하여 출력하는 방법입니다. 특정 열 값만 가지고 오고 싶다면'데이터프레임명'['Column명']과 같은 형태로 입력합니다. 이는 df.A와 동일합니다. 리턴되는 값은 Series의 자료구조를 가지고 있습니다.

print(df['A']) # 'A'
print(df.A) #

특정 행 선택

특정 행 추출과 특정 행 범위 추출은 사용하는 방식이 다릅니다. 특정 행 및 행 범위 추출을 위해서는 인덱스 슬라이싱 기법을 사용해야 합니다.

print(df[0:3]) #
print(df['20130102' : '20130104']) #
print(df['20130102' : '20130102']) #

.loc (이름을 이용한 데이터 선택)

라벨의 이름을 이용하여 선택할 수 있는 .loc 속성도 있습니다. 첫 번째 인덱스 값인 '2013-01-01'에 해당하는 모든 컬럼의 값 가져오기와 같은 작업을 수행할 수 있습니다.

print(df.loc[dates[0]]) # dates[0]
print(df.loc[:, ['A', 'B']]) # , 'A' 'B'
print(df.loc['20130102':'20130104',['A','B']]) # '20130102':'20130104', 'A' 'B'

.iloc (위치를 이용한 데이터 선택)

위치를 나타내는 인덱스 번호를 사용하여 데이터를 선택할 수 있습니다.

print(df.iloc[3]) # 3
print(df.iloc[3:5, 0:2]) # 3:5 , 0:2
print(df.iloc[:, 1:3]) # , 1:3
print(df.iloc[:, 1:3].name)

조건을 이용한 데이터 선택

특정한 행이나 열에 조건을 달아 만족하는 행이나 열만 선택하여 데이터를 추출할 수 있습니다.

isin()

필터링을 해야 하는 경우에 사용합니다.

print(df[df.A > 0]) # 'A' 0
print(df[df > 0] # 0
print(df['E'] = ['one', 'one','two','three','four','three']) # df 'E'
print(df[df['E'].isin(['two', 'four'])]) # 'E' 'two', 'four'


'Machine Learning > Pandas' 카테고리의 다른 글

[Pandas] 데이터 확인하기  (2) 2018.11.29
[Pandas] 데이터 오브젝트 생성  (0) 2018.11.29
2. 데이터 확인하기 (Viewing Data)
.columns.index.T.valuedescribe()head()pandassortsort_indexsort_valuetail()Transpose

DataFrame에 들어있는 자료들을 확인하기 메서드를 몇 가지 살펴보도록 하겠습니다.

head(), tail()

DataFrame의 첫 부분, 마지막 부분의 데이터를 보고싶을 때 사용하는 메서드입니다. 파라미터로 숫자를 넣으면 해당 숫자만큼의 데이터가 출력됩니다.

import pandas as pd
import numpy as np
dates = pd.date_range('20130101', periods=6)
df = pd.DataFrame(np.random.randn(6, 4), index=dates, columns=list('ABCD'))
print('\n')
print(df.head(5))
print('\n')
print(df.tail(3))

.index / .columns / .value

DataFrame의 행를 보려면 .index를, 열을 보려면 .column, numpy 데이터를 보려면 .value 속성을 통해 확인하면 됩니다.

print('\n')
print(df.index)
print('\n')
print(df.columns)
print('\n')
print(df.values)

describe()

DataFrame에 대한 간단한 통계 정보를 출력합니다.

  • 컬럼별 데이터 개수(Count)
  • 데이터 평균 값(Mean)
  • 표준편차 (Standard)
  • 최소값 (Minimum)
  • 최대값 (Maximum)
  • 4분위수(Quantile / 25%, 50%, 75%)
print(df.describe())

.T (Transpose)

.T 속성은 DataFrame에서 행과 열을 바꾼 형태의 DataFrame을 출력합니다.

print(df.T)

sort_index() / sort_value()

sort_index()

행과 열 이름을 정렬하여 나타낼 수 있습니다. 정렬할 대상 축을 결정할 때에는 axis 파라미터를 이용합니다.  axis = 0은 행를 기준(행)으로, axis = 1 컬럼을 기준으로 정렬하겠다는 뜻입니다. 정렬의 방향은 ascending파라미터를 사용합니다. ascending = True는 오름차순, ascending = False는 내림차순을 의미합니다.

axis

  • axis = 0 # 행 기준 정렬
  • axis = 1 # 열 기준 정렬

ascending

  • ascending = True # 오름차순 정렬
  • ascending = False # 내림차순 정렬

sort_value()

DataFrame 내부에 있는 값으로 정렬할 수 있습니다.

print(df.sort_index(axis = 1, ascending = False))
print(df.sort_value(by = 'B', ascending = True))




'Machine Learning > Pandas' 카테고리의 다른 글

[Pandas] 데이터 선택하기  (0) 2018.11.29
[Pandas] 데이터 오브젝트 생성  (0) 2018.11.29
1. 데이터 오브젝트 생성
DataFrame()pandasseries()

Pandas에서 제공하는 자료 구조들을 확인하려면 https://pandas.pydata.org/pandas-docs/stable/dsintro.html#dsintro를 참고하면 됩니다.

Reference

https://dandyrilla.github.io/2017-08-12/pandas-10min/#ch1

series()

Pandas의 데이터 구조 중 하나인 Series는 다음과 같이 값들의 리스트를 넘겨주어 만들게 됩니다. 인덱스는 기본적으로 지정되는 정수 인덱스를 사용합니다.

import pandas as pd
import numpy as np
s = pd.Series([1, 3, 5, np.nan, 6, 8])
print(s)

DataFrame()

import pandas as pd
import numpy as np
# s = pd.Series([1, 3, 5, np.nan, 6, 8])
dates = pd.date_range('20130101', periods=6)
df = pd.DataFrame(np.random.randn(6, 4), index=dates, columns=list('ABCD'))
df2 = pd.DataFrame({'A': 1.,
'B': pd.Timestamp('20130102'),
'C': pd.Series(1, index=list(range(4)), dtype='float32'),
'D': np.array([3]*4, dtype='int32'),
'E': pd.Categorical(['test', 'train', 'test', 'train']),
'F': 'foo'})
# DataFrame
print(df)
print('\n')
print(df2)
# DataFrame Column
print(df2.dtypes)


'Machine Learning > Pandas' 카테고리의 다른 글

[Pandas] 데이터 선택하기  (0) 2018.11.29
[Pandas] 데이터 확인하기  (2) 2018.11.29
sklearn.pipeline

사이킷런에는 연속된 변환을 순서대로 처리할 수 있도록 도와주는 Pipeline 클래스가 존재합니다. 아래의 코드는 숫자 특성을 처리하는 간단한 파이프라인입니다.

Pipeline

파이프라인은 여러 변환 단계를 정확한 순서대로 실행할 수 있도록 하는 것입니다. 사이킷런은 연속된 변환을 순서대로 처리할 수 있도록 도와주는 Pipeline 클래스가 있습니다.

Pipeline은 연속된 단계를 나타내는 이름/추정기 쌍의 목록을 입력으로 받습니다. 마지막 단계에는 변환기와 추정기를 모두 사용할 수 있고 그 외에는 모두 변환기여야 합니다(즉 fit_transform() 메서드를 가지고 있어야 합니다). 이름은 무엇이든 상관없지만, 이중 밑줄 문자(__)는 포함하지 않아야 합니다.

파이프라인의 fit() 메서드를 호출하면 모든 변환기의 fit_transform() 메서드를 순서대로 호출하면서 한 단계의 출력을 다음 단계의 입력으로 전달합니다. 마지막 단계에서는 fit()메서드만 호출합니다.

파이프라인 객체는 마지막 추정기와 동일한 메서드를 제공합니다. 이 예에서는 마지막 추정기가 변환기 StandardScaler이므로 파이프라인이 데이터에 대해 모든 변환을 순서대로 적용하는 transform() 메서드를 가지고 있습니다(또한 fit_transform() 메서드도 가지고 있습니다).

Pipeline 예제 코드

from sklearn.pipeline import Pipeline
from sklearn.preprocessing import Imputer, StandardScaler
from sklearn.preprocessing import OnehotEncoder, CategoricalEncoder
# Pipeline
num_pipeline = Pipeline([
('selector', DataFrameSelector(num_attr)),
('imputer', Imputer(strategy = 'median')),
('std_scaler', StandardScaler())
])
# Pipeline
cat_pipeline = Pipeline([
('selector', DataFrameSelector(cat_attr)),
('cat_encoder', CategoricalEncoder(encoding = 'onehot-dense'))
])

Feature Union

위와 같이 하나의 데이터셋에서 수치형 변수, 범주형 변수에 대한 파이프라인을 각각 만들었습니다. 어떻게 두 파이프라인을 하나로 합칠 수 있을까요? 정답은 사이킷런의 FeatureUnion입니다. 변환기 목록을 전달하고 transform() 메서드를 호출하면 각 변환기의 transform() 메서드를 병렬로 실행합니다. 그런 다음 각 변환기의 결과를 합쳐 반환합니다. 숫자형과 범주형 특성을 모두 다루는 전체 파이프라인은 다음과 같습니다.

# num_pipeline cat_pipeline FeatureUnion
full_pipeline = FeatureUnion(transformer_list = [
('num_pipeline', num_pipeline),
('cat_pipeline', cat_pipeline),
])
#
housing_prepared = full_pipeline.fit_transform(housing)
print(housing_prepared)

Pipeline 전체 코드

from sklearn.pipeline import Pipeline
from sklearn.pipeline import FeatureUnion
from sklearn.preprocessing import Imputer, StandardScaler
from sklearn.preprocessing import OnehotEncoder, CategoricalEncoder
num_attr = list(housing_num)
cat_attr = ["ocean_proximity"]
# Pipeline
num_pipeline = Pipeline([
('selector', DataFrameSelector(num_attr)),
('imputer', Imputer(strategy = 'median')),
('std_scaler', StandardScaler())
])
# Pipeline
cat_pipeline = Pipeline([
('selector', DataFrameSelector(cat_attr)),
('cat_encoder', CategoricalEncoder(encoding = 'onehot-dense'))
])
# num_pipeline cat_pipeline FeatureUnion
full_pipeline = FeatureUnion(transformer_list = [
('num_pipeline', num_pipeline),
('cat_pipeline', cat_pipeline),
])
#
housing_prepared = full_pipeline.fit_transform(housing)
print(housing_prepared)


A principled machine learning framework improves accuracy of
stage II colorectal cancer prognosis 


Paper Information.

  • YEAR : 2018
  • AUTHOR : Neofytos Dimitriou 외 3명
  • JOURNAL : Nature (Digital Medicine)



Abstract

  정확한 예후는 암 환자를 위한 적절한 치료 계획을 세우기 위한 기본 요소입니다. 질병의 이질성, 병리학자 간의 다양성, 현재 병리학적 보고 시스템의 고질적인 한계로 인하여 환자 결과는 유사하게 발병된 환자 코호트 내에서 상당히 다양합니다. 이는 TNM 가이드 라인을 사용하여 2기 직결장암 환자를 분류할 때 특히 부각됩니다. 본 연구의 목적은 기계 학습을 활용하여 이러한 문제를 해결하는 것입니다. 특히, 우리는 면역 형광 이미지에서 쉽게 수집 된 다양한 유형의 특징들을 사용하는 데이터 기반 프레임워크를 도입하였습니다. 본 연구에서 개발한 모델은 173명의 직결장암 2기 환자의 사망률을 예측하는 데 탁월한 성능을 자랑합니다. 이는 기존의 임상 지침의 성능을 능가합니다.



Result

1. Full Feature set based Analysis

  각 기준 분류기의 하이퍼파라미터 값은 검증된 데이터 자료에 대해 AUROC 평균 영역을 최대화하여 학습되었습니다. Fig. 1은 결과를 요약한 것입니다. 

< Fig. 1. Average AUROC and SD of trained classifiers on the training set using 20-times repeated tenfold CV >


모든 분류기에 걸친 평균 AUROC는 5년 및 10년 예후 모두 0.89인 것으로 나타났습니다. ANOVA(One-way analysis of variance)와 THSD(Tukey's Honest Significance Difference Test)는 10년 예후에 대한 분류기들 사이에서 통계적 유의성을 나타내지 않았습니다. 통계적으로 유의한 차이는 5년 예후에 대한 나이브 베이즈(NB)와 로지스틱 회귀(LR) 기반 접근법 사이에서 발견되었습니다. 모델 선택의 중요성을 입증하기 위해 우리는 이전 섹션에서 설명한대로 학습된 하이퍼파라미터 값과 기존 문헌에서와 같이 사전 설정된 하이퍼파라미터 값을 사용하여 모든 분류기들의 성능을 비교하였습니다. 예상대로, 후자의 접근법을 사용했을 때 평균 AUROC의 감소는 각각 0.82, 0.85로 5년 및 10년 예후 모두 감소하는 것을 확인할 수 있었습니다.


2. Feature Selection

  특징의 각 하위 집합에 대한 평가는 학습 데이터에 대한 10-fold CV를 통해 수행되었습니다. 확률론적 효과로 인한 결과의 변동성을 줄이기 위해서 Dune이 제안한 방법을 적용하였습니다. 특히, 최고의 성능을 달성한 특징 서브 세트를 유지할 때마다 서로 다른 무작위 파티션을 사용하여 SFFS 및 SFBS를 40번 수행하였습니다. 이후, 발생 빈도에 기초하여 특징들을 순서화 했습니다. 빈 세트로 시작해 특징들은 평균 AUROC 순서위에 따라 추가되었으며 20회 반복된 10-fold CV를 통해 검증되었습니다. 가장 높은 평균 AUROC를 달성한 특징들의 서브 세트는 각각의 예후적 용어에 대해 선택되었습니다.

< Fig. 2. Frequency of occurrence of each feature form the 20 runs of SFFS an SFBS each for 5-year prognosis >


< Fig. 3. Frequency of occurrence of each feature from the 20 runs of SFFS and SFBS each for 10-year prognosis >


3. Experiment

  이전 섹션과 같이 분류기를 훈련시키고, 모델 선택 및 평가에 대한 동일한 접근을 수행하였습니다. 유일한 차이점은 전체 특징 세트 대신에 축소된 특징 세트가 사용된다는 것입니다. 예상대로, 가장 조밀한 수준의 분석에서 이미 상당한 성능 향상을 보였으며, 5년 및 10년 예후 모두에 대해 분류자의 평균 AUROC는 0.94에 달했습니다. 이전 연구 결과와 비교하여 10년 예후에 대한 Random Forest에서의 열등함을 제외하고는 다른 분류기에서 통계적으로 유의한 차이가 발견되지 않았습니다.

4. Final Testing

  20번 반복된 10-fold CV를 사용하여 여러 분류자의 훈련 세트 성능을 검사했습니다. SFFS와 SFBS에 의해 선택된 특징의 하위 집합에 대해 훈련된 분류기가 더 잘 분류하는 것을 확인할 수 있었습니다. 5년 및 10년 예후에서 단순하지만 최고의 성능을 발휘하는 분류기는 k-NN 기반 분류기였습니다. 예측된 예후 그룹 사이의 생존률 차이를 객관화하기 위해 Kaplan-Meier 생존 곡선을 사용하였습니다. 5년 예후에서 k-NN 기반 분류기는 AUROC 0.77을 다성하여 환자를 고위험군과 저위험군으로 분류하는데 효과적이였습니다. 10년 예후에서, 분류기는 AUROC 0.94를 달성하여 임상 표준인 0.65를 훨씬 능가하며, 10년 예후에 대해서도 88.9%의 정확도를 보였습니다.



Summary

  1. 본 연구에서는 TNM 가이드라인을 활용하여 2기 직결장암 환자를 분류하는 모델을 구축하였습니다.

  2. Feature Selection에서 차원 축소를 위해 SFFS, SFBS를 사용하여 특징의 수를 감소시켰습니다.

  3. 모델은 LSVM, RSVM, LR, RF, KNN, NB을 사용하여 각 모델의 성능을 비교하였습니다.

  4. 5년 및 10년 예후 예측에서 KNN 모델이 가장 우수한 성능을 보였습니다.

  5. 생존률 차이를 분석하기 위한 Kaplan-Meier 분석 방법에서도 AUROC 값이 임상 표준인 0.65보다 약 0.29 높은 0.94를 달성하였습니다.


A hierarchical classifier based on human blood plasma fluorescence
for non-invasive colorectal cancer screening

Paper Information.

  • YEAR : 2017
  • AUTHOR : Felipe Soares 외 2명
  • JOURNAL : Artificial Intelligence In Medicine



Abstract

  대장암의 조기 발견을 위한 분류 모델은 대장암 환자의 생존율을 증가시킵니다. 혈액 형광 분광법은 암 확인에 사용될 수 있는 많은 데이터를 제공합니다. CRC 분류를 위한 혈액 형광 데이터를 분석할 때의 주요 문제점은 적은 수의 샘플을 분석 할 때 높은 차원성을 가지는 것과 고유한 가변성입니다. 본 연구에서는 혈장 형광을 이용한 계층적 분류법을 사용하여 CRC 뿐만 아니라 선종 및 추가적인 의학적 검사가 필요할 수 있는 기타 악성 직결장의 소견을 확인할 수 있도록 하였습니다. Feature 선택 알고리즘은 높은 차원을 다루고 판별 가능한 형광 파장을 선택하기 위해 제안되었습니다. 이들은 CRC 샘플을 식별하기 위해 1차적으로 SVM 학습을 진행합니다. 나머지 표본은 건강한 피험자에 대해 훈련된 2차 SVM에 제공되어 특수한 표본을 검출하여 악성 소견을 검출하도록 하였습니다. 이 계층 설계는 SVM이라는 하나의 클래스와 함께 작은 샘플 및 높은 가변성의 영향을 줄이는 것을 목표로 하였습니다.

  결과적으로, 12,341개의 파장으로 구성된 이전 연구에서 분석된 데이터 세트를 사용하여 우수한 결과를 나타내었습니다. Sensitivity와 Specifictiy는 각각 0.87과 0.95를, 비악성소견의 경우 0.60, 0,79였습니다. 관련 연구와 비교하여 제안된 방법은 정확도가 더 높고 Feature가 적게 필요하며, CRC 검출을 비악성 연구결과로 확장하는 접근법을 제공합니다.



Dataset

  덴마크의 한 병원에서 대장 내시경 검사를 받고 있는 CRC와 관련된 증상을 보이는 환자들과 함께 실시한 연구에서 4개의 표본 그룹을 추출하였습니다. 데이터셋은 하나의 CRC 그룹과 나머지 대조군 그룹으로 구성되었습니다. 대조군 그룹은 건강한 사람, 비악성 소견을 가진 피험자, 병리학적으로 확인된 선종을 가진 피험자로 구성되었습니다.

< Fig. 1. Samples distribution according subgroups for the EEM undiluted plasma dataset >




Method

  본 연구에서 제안하는 Hierarchical Classifier(계층적 분류)는 다음과 같은 프로세스를 포함하고 있습니다. 일반적으로 다중 클래스 문제는 이진 선택 문제보다 훨씬 어렵습니다. 또한 적은 수의 샘플, 높은 차원성과 높은 변동성으로 인해 앞서 언급한 문제가 더욱 두드러집니다. 따라서, 다중 클래스 분류 문제를 해결하기 위해 2단계 계층적 설계를 사용할 것을  제안하였습니다. Fig. 1에 제안된 것과 같이 1 레벨의 이진 SVM 분류기와 2레벨의 1클래스 SVM으로 구성됩니다. 1레벨의 SVM은 잘 특징 지어진 CRC 샘플을 나머지에서 분리하는 역할을 수행합니다. 2레벨 SVM은 건강한 환자와 비교하여 비악성 발견 샘플을 이상치로 처리하는 것을 목표로 하였습니다.

< Fig. 2 Hierarchical Classifier >


  본 연구에서 SVM 모델을 채택한 이유는 스펙트럼 데이터를 사용하는 조직 분류를 위한 효과적인 접근 방법으로 판명되었기 때문입니다. SVM 알고리즘은 고차원 데이터를 처리하는 능력, 오버 피팅 위험성 감소 및 보장된 글로벌 집중 능력입니다. SVM은 여러 의료 진단 분야에 성공적으로 적용되어 형광 분광기를 기반으로 한 암 확인에서 좋은 결과를 도출하였습니다.

  또한, 본 연구에서 제안한 또 하나의 기법은 차수 감소를 위한 프로세스입니다. 기존의 연구와 달리 SVM-RFE 알고리즘은 적절한 피처를 랭크하고 선택하기 위해 사용되며, 피처 수를 줄이면서 단순하지만 정확한 모델을 구축할 수 있도록 하였습니다. SVM-RFE 알고리즘은 SVM 솔루션의 가중치 벡터 w의 계수를 사용하여 가장 돋보이는 Feature들을 랭크화 합니다. w의 큰 계수는 해당 Feature가 분류 결정에 상당한 영향을 미치므로 더 작은 기여도를 가지는 Feature를 삭제할 수 있습니다. SVM-RFE는 선형 SVM에 재귀적으로 학습되며 사전 정의된 수의 Feature가 될 때까지 반복적으로 수행됩니다. 


1. Hierarchical Classifier(SVM)

  먼저 앞서 언급한 것과 같이 2개의 SVM 분류기를 활용합니다. 먼저, 암과 암이 아닌 것의 2가지 클래스를 가지는 2진 모델을 고려하고 Feature를 하나씩 삭제하는 것을 고려하여 훈련 세트에서 SVM-RFE 알고리즘을 사용하여 파장을 순위화 합니다. 1레벨 SVM 분류기는 CRC 샘플에서 비CRC 샘플을 분리하는 역할을 수행합니다. 비 CRC로 표시된 샘플은 다음 분류 기준의 입력으로 사용됩니다. 2레벨 SVM은 암을 발견하지 못한 클래스에서 학습되어 샘플을 식별합니다. 자세한 모델은 Fig. 3에서 확인할 수 있습니다.


< Fig. 3. Overview of the proposed Method >



Result

  훈련세트에서 SVM-RFE 알고리즘을 통해 높은 부하를 보이는 44개의 Feature들과 상대적으로 낮은 부하를 보이는 21개의 특징 총 65개의 특징을 선별하였습니다. (44개의 특징이 나머지 21개의 특징보다 분류에 관련성이 높다는 것은 보장하지 못하였습니다. 또한, 낮은 부하를 보이는 특징을 추가하는 것은 분류 성능을 향상 시킨다는 연구 결과가 있었습니다.) 

  'Similarly to the binary SVM, the one-class SVM was optimized using 10-fold CV over training data, according to step 2.b of the proposed approach. The same ranking generated by SVM-RFE in the step 1 was also used to guide model optimization for the second-level classifier. A total of 65 wavelengths were included in this final model, which correspond to the same top 65 ranked features of the binary SVM. The remaining five excitation/emission pairs that were not present in the one-class are all in the same region of PARAFAC loadings previously mentioned, also suggesting that these features provide relevant information towards CRC identification.' << 정리 필요

  두 개의 분류기를 통해 훈련 된 후 계층적 분류기의 성능은 Confusion Matrix로 평가되었습니다. 84가지의 예측 중 6가지 샘플에 대해 잘못된 결과를 예측했습니다. AUC값은 0.933이였습니다.

< Fig. 4. ROC Curve for the first SVM >


  이후, 전체 계층 분류기의 성능을 평가하였습니다. 첫 번째 SVM에 의해 암으로 분류되지 않은 샘플은 다음 One-Class SVM에 입력되었습니다. CRC 샘플을 확인하는 첫 번째 단계는 0.9516의 Specificity와 0.8636의 Sensitivity를 가졌습니다. 두 번째 수준의 One-Class SVM은 각 각 0.600과 0.7955의 Specificity와 Sensitivity를 나타내었습니다.

  다른 연구와 본 연구에서 제시한 모델을 비교해 보았습니다. 본 연구에서 제시한 모델이 타 연구와 비교하여 모두 우월한 성능을 보이는 것을 확인할 수 있었습니다.


Summary

  1. 본 연구에서는 'SVM을 활용한 계층적 모델'과 'SVM-RFE'의 Feature Selection 방법을 활용하여 분류 모델을 구축했습니다.

  2. SVM 모델은 크게 이진 분류 모델과 하나의 클래스를 가지는 모델로 구분되었습니다.
     
  3. 타 연구와 비교하여 모든 부분에서의 성능이 크게 향상 되었습니다. 




Risk Prediction Model for Colorectal Cancer : National Health Insurance Corporation Study, Korea




Paper Information.

  • YEAR : 2014
  • AUTHOR : Aesun Shin 외 7명
  • JOURNAL : PLOS


Abstract

  지난 수십년 간 한국에서의 대장암 발병률과 사망률이 급속히 증가하고 있습니다. 한국인 남녀의 직결장암 예방 및 조기 발견을 위한 대장암 위험 예측 모델의 개발이 절실히 필요한 상황입니다. 본 연구에서는 대장암, 근위 결장암, 원위 대장암, 결장암 및 직장암에 대한 성별별 5년 위험 예측 모델을 구축하였습니다. 해당 모델은 국민 건강 보험 공단 건강 검진에 참여한 남성 84만 5천여명, 여성 47만 9천여명을 대상으로 구축되었습니다. 수집 대상은 30-80세 사이에 위치하며, 1996년-1997년 사이에 암에 걸리지 않은 상태여야 했습니다. 모델 검증은 C-Statistic 및 Hosmer-Lemeshow-type 카이 제곱 통계를 사용하여 구별 및 측정 능력에서 성능을 평가하였습니다.

  결과적으로 연령, 체질량, 혈청 콜레스테롤, 암의 가족력, 음주량이 남성의 모든 모델에, 여자는 연령, 신장, 고기 섭취 빈도가 모든 모델에 Feature로서 포함되었습니다. 모델은 0.69와 0.78 사이의 C-통계로 적당히 우수한 측정 능력을 나타내었습니다. C-통계는 남성 모델의 경우 일반적으로 높았지만 보정 능력은 여자 모델에서 더 좋았습니다. 



Study Population

  본 연구는 국립 암 센터의 IRB 승인을 받아 진행되었습니다. 윤리위원회는 참가자들의 동의가 필요하지 않았기 때문에 데이터 클리닝 및 분석을 포함한 모든 단계에서 익명으로 관리되는 의료 데이터를 정기적으로 수집했습니다. 크게 2개의 독립적 집단이 연구에 포함되었습니다. 첫 번째 데이터 세트는 1996년과 1997년 사이에 국민 건강 보험 공단이 제공한 건강 검진에 참여한 남성과 여성으로 구성하여 모델을 구축하였습니다. 참가자들은 알코올 섭취, 흡연 습관, 규칙적인 운동, 암의 가족력, 식이 선호도 및 육식 소비 빈도에 대한 자가 관리 설문지를 작성하도록 요청받았습니다. 여성의 경우 생식 요인을 추가적으로 작성하도록 하였습니다. 신장과 체중을 직접 측정하였고, BMI는 체중을 신장으로 나눈 값으로 계산하였습니다.

  두 번째 데이터 세트는 1998년과 1999년에 건강 검진에 참여한 참여자가 모델 검증에 사용 되었습니다. 최종 분석에 포함된 사람들은 암의 과거력이 없는 30세에서 80세 사이의 사람으로, 누락된 사람은 없었습니다. 모델 구축에 132만명, 검증에 96만명의 데이터가 사용 되었습니다.



Statistical Analysis

  남성과 여성을 위해 총 5가지 모델이 개발되었습니다. Coxph 모델은 개발 세트에서 예측 방정식을 개발하는데 사용하였습니다. 대장암 발생은 암 등록 데이터에 기록된 입원 날짜로 간주하였습니다. 각 위험 인자에 대해 연령에 따른 분석이 수행되었습니다. 나이와 이차적인 연령은 연구 참여자의 평균 연령을 빼서 중앙 집중화 하도록 하였습니다. 해당 모델에서 고려된 위험 인자는 나이, 신장, BMI, 가족력, 공복 혈당, 혈청 콜레스테롤, 흡연, 알코올 섭취량, 육류 섭취 빈도였습니다. 

  Discrimination은 생존 모델에 대한 C-통계를 계산함으로써 수량화 되었습니다. C-통계는 로지스틱 모델의 ROC 곡선 영역과 유사한 일치 측정 값입니다. 이 값은 대장암이 발생하지 않는 여성에 비해 모델이 5년간 관찰한 이후 유방암에 걸릴 위험이 높은 확률을 나타냅니다. H-L 유형 통계는 보정을 위해 사용 되었습니다. 이후 예상 확률을 Kaplan-Meier 방식으로 추정한 실제 사건 비율과 비교하였습니다. 



Result

모델의 식별 능력은 개발 및 검증 세트에서 C-통계 기법을 사용하여 측정되었습니다. 남성 모델은 0.762 ~ 0.786 범위 였고, 여성 모델은 0.678 ~ 0.763의 범위를 나타내었습니다. 왼쪽 대장 및 직장이 가장 높은 C-통계 값을 보였습니다. 위와 같은 결과는 Fig. 1에서 확인할 수 있습니다. 직장 모델에서 가장 높은 C-통계 값을 확인할 수 있었다. 우측 대장 모델은 여성에서 가장 높은 C-통계값을 나타냈습니다.

< Fig. 1. C-Statistics and H-L type Chi-square test for Colorectal Cancer >



Summary

  1. 본 연구에서는 대량의 한국인 남녀 건강 검진 데이터를 기반으로 직결장암 예방 및 조기 발견을 위한 5년 위험 모델을 구축하였습니다.

  2. 모델을 검증하기 위해 C-Statistics 방법과 H-L Chi-Square 방법을 활용하였습니다.

  3. 구축한 모델은 남성의 경우 Left Colon 지역에서 가장 높은 성능을 보였습니다. 여성은 Right Colon 지역에서 가장 높은 성능을 보였습니다.

 





A review of statistical and machine learning methods for 
modeling cancer risk using structured clinical data

Paper Information.

  • YEAR : 2018
  • AUTHOR : Aaron N. Richter 외 1명
  • JOURNAL : Artificial Intelligence In Medicine



Abstract

  시간이 지남에 따라 종양학에서 발전이 진행됨에 따라 암의 예방과 치료 여건이 점차 개선되고 있습니다. 암은 치명적인 질병으로 위험을 줄이기 위해서는 조기에 발견해야 합니다. 또한, 치료를 했더라도 재발할 위험성이 존재합니다. 예측 모델은 과거 데이터를 사용하여 암이 발견되거나 재발한 환자의 특징을 모델링 할 수 있습니다. 이러한 모델은 새로운 환자가 암 발병 또는 재발 위험 여부를 결정하기 위해 임상에서 활용할 수 있습니다. 대규모 예측 모델 구축을 위해 많은 환자에게 정형 데이터를 추출해야 합니다. 본 연구는 정형 데이터로 구성된 환자 데이터를 사용하여 암 위험 모델을 구축하는 최신 동향을 연구합니다. 통계 및 기계 학습 사용 추세와 향후 연구를 위해 간격을 측정합니다. 암 위험 예측 분야는 영향력이 큰 분야이고, 임상의와 환자 모두의 증진을 위해 지속적으로 연구되어야 할 필요성이 있습니다.



Method

  본 연구에서는 암 이외의 다른 질병에 초점을 둔 연구와 비임상 데이터, 비정형 데이터를 사용하는 연구는 제외하였습니다. Pubmed와 Google Scholar를 사용하여 '암 위험', '암 재발', '암 예측', '기계 학습', '데이터 마이닝' 등의 키워드를 활용하여 논문을 검색하였습니다. 이후, 각 논문의 관련성을 검토 한 후 최종적으로 22개의 논문을 선별하였습니다. 



Cancer Risk Model

1. Data Selection

  환자 데이터는 다양한 환경에서 추출될 수 있습니다. 본 연구에서는 정형 데이터 임상 정보를 활용하는 연구에 중점을 두고 진행되었습니다. 분자 데이터는 암 연구에서 매우 가치 있는 것으로 나타났으나, 비용 및 가용성 문제에서 대다수 환자에게 포함되지 않는 정보이기에 제외하였습니다. EHR 데이터는 환자 정보와 관련된 대규모 데이터를 수집할 수 있다는 잠재력을 가지고 있지만, 단편적인 의사 시점에서 판단된 정형 데이터가 기록될 수 있다는 점, 비정형 데이터로 기록된다는 점에서 영양가 있는 정보를 추출하기 어려워 제외하였습니다. 사회 & 라이프 스타일 데이터는 특정 암의 위험성을 모델링 하는데 중요하게 작용할 수 있습니다. 따라서 한국 국립 암 센터에서 수집한 데이터 일부를 활용하였습니다.


2. Feature

  암 위험 및 재발 예측을 위해 본 연구에서 다루고 있는 특징은 아래와 같습니다. 아래 5가지 범주를 모두 포함하는 논문은 없었으며, 대부분 2~3가지를 사용하였습니다.

  • Demographic : 환자의 데모그라픽 정보입니다. 대부분의 연구에서는 Age, Sex를 사용하였습니다.
  • Labs : 백혈구 수, 헤모글로빈, 포도당 등 채혈 시 측정할 수 있는 정보를 포함합니다.
  • Histopathologic : 종양 크기, 전이 여부, 단계 등을 포함합니다.
  • Clinical : 치료, 가족력 등 일상적으로 얻을 수 있는 임상 정보를 포함합니다.
  • Lifestyle : 흡연 상태 및 음주와 같은 소셜 정보를 포함합니다.


Statistical & ML Method

1. Statistical & ML Models

  본 연구에서 다루고 있는 모든 논문은 환자의 암 발병 및 재발 여부를 예측하는 예측 모델을 구축하지만, 사용된 기술은 연구마다 달랐습니다. 일반적으로 회귀 분석 및 생존 분석과 같은 고전적인 통계 방법이나 ANN, SVM, Decision Tree와 같은 기계 학습 바법을 사용하는 연구가 몇 있었습니다. 몇 가지 연구는 하이브리드 접근법을 사용하여 각 모델의 성능을 비교하였습니다. 

  질병의 위험이나 재발에서의 모델링은 생존 분석 문제로 프레임화 되어 있으며, 많은 연구에서 생존 분석 기술을 활용하여 예측 모델을 구성하였습니다. 이러한 방법 중 하나인 Cox Proportional Hazards는 전형적으로 시간의 흐름과 다변량 분석을 가능하게 하기 때문에 많이 선택됩니다. 이는 미래의 어떤 시점에서 일어날 사건의 확률을 모델링하는 회귀 모델입니다. 발병 위험 예측 연구에서 사건은 암의 진단이며, 시간적 요소는 연구 등록 또는 관찰 기간입니다. 재발 예측에서의 사건은 암의 재발이고, 시간적 요소는 치료 날짜입니다. 

  생존 모델의 결과를 시각화하고 해석하기 위해 Kaplan-Meier 곡선을 활용합니다. Kaplan-Meier 곡선은 여러 집단 환자의 생존 기능을 평가하고 생존 확률을 표시합니다. 이러한 방법은 새로운 환자에 대해 선택할 치료법을 결정하기 위해 치료법의 특징에 따라 환자 코호트를 비교할 수 있습니다. Kaplan-Meier 분석은 예측 모델에 국한되지 않으며 기계 학습 알고리즘으로 환자의 생존 여부 또한 알 수 있습니다. Fig. 1은 Kaplan-Meier Curve의 예시를 나타냅니다. Fig. 1은 기계 학습 모델에 따른 고위험군과 저위험군의 생존률입니다.

< Fig. 1. Example Kaplan-Meier Curve >

  로지스틱 회귀분석(LR, Logistic Regression)은 널리 사용되는 통계 모델 중 하나입니다. 이 방법을 사용하면 다 변수 종속 변수에 대한 다 변수 분석 및 모델링이 가능합니다. 하지만 이러한 회귀 모델은 선형 모델에 적합하지 않은 경우에 사용되기 어렵습니다.

  기계 학습 분야에서 인기있는 모델은 인공 신경망(ANN)입니다. ANN의 변형인 CNN은 이미지 인식과 같은 비지도학습에서 매우 효과적으로 사용될 수 있습니다. ANN은 질병 예측과 같은 지도학습에서 매우 유용하게 사용될 수 있습니다.  본 연구에서 조사한 여러 논문에서 ANN 혹은 ANN을 개량한 모델을 구축하여 사용하였습니다. 


2. Feature Reduction

  예측 모델을 학습하는 첫 번째 단계는 모델에 입력될 인풋 값을 결정하는 것입니다. 이는 대부분 임상 데이터 데이터베이스에 저장되어 있는 변수의 종류에 의해 제한되는 경우가 많습니다. 또한, 계산 및 추정의 복잡성은 모델에서 사용할 수 있는 특징의 수를 제한할 수 있는 요소입니다. 특징 축소는 임상 설정에서 사용하기 위해 모델을 배포하는 맥락에서 중요하게 작용할 수 있습니다. 예측 모델의 사용자가 예측을 진행하기 전에 변수를 수동으로 입력해야 하는 경우에는 되도록이면 적은 수의 변수가 포함되어야 합니다. 

  대부분의 연구에서는 단변수 분석을 수행하여 공변량이 출력값과 통계적으로 유의한 상관관계가 있는지 확인합니다. 이후 유의한 상관관계가 있는 변수만 후속 모델에 인풋값으로 사용됩니다. 상관관계를 파악하는 방법으로 Pearson-Correlation, Mutual-Information, Distance Correlation 등을 사용합니다. 일반적으로 회귀 모델의 해석을 위해 10개 이내의 특징을 입력하는 결과를 나타냅니다.


3. Feature Selection

  Feature Selection 방법으로 표준 상관 분석(Canonical Correlation Analysis), GA(Genetic Algorithm), SA(Simulated Annealing) 등이 있습니다. 표준 상관 분석 방법은 출력값과 가장 관련이 있는 Feature Set을 찾는 기법 중 하나입니다. Decision Tree도 Feature Selection을 위해 효과적으로 사용될 수 있습니다. 중요한 p값을 갖는 피쳐를 선택하는 것만으로도 통계 모델의 Feature Selection의 한 형태로 사용될 수 있습니다. Fig. 2는 각종 통계 및 기계학습 알고리즘과 Feature Selection 사이의 관계를 나타냅니다.

< Fig. 2. Feature Selection and Model Algorithm Methods >


4. Hybrid Model

  복잡한 모델링 문제에서는 정답이 없기 때문에 다양한 모델 옵션을 탐색하고, 어떤 모델이 가장 효과적인지를 결정해야 합니다. 또한, 하나의 기술이 아닌 다른 기술과 융합하여 사용하면 향상된 성능을 기대할 수 있습니다. 본 연구에서 프로파일링한 여러 연구는 서로 다른 ML 모델을 서로 비교하여 가장 우수한 성능을 보이는 모델을 제안하였습니다.


5. Model Evaluation

 모델의 성능 평가는 구축한 모델이 얼마나 정확하게 분류할 수 있는지를 입증하는 과정입니다. 성능 평가의 가장 기본적인 형태는 예측 정확도이며, 이는 모델이 전체 테스트 데이터를 평가합니다. 정확도 이외에도 혼동 행렬, ROC Curve, AUC Value, Sensitivity, Specificity 등 여러가지 평가 방법이 존재합니다.



Summary

  1. 본 연구에서는 암 위험과 재발 예측 모델을 구축한 문헌에 대한 포괄적인 리뷰를 제공하였습니다.

  2. 모델 구축을 위해 중요한 요소는 'Feature'와 'Model'가 있으며, 이 두 가지 요소를 어떻게 가공하여 사용하냐에 따라 전체 모델의 성능이 크게 좌우됩니다.

  3. 모델을 구축하는 데 있어서 정해진 정답은 없으며, 여러 모델들의 성능을 비교하거나 Hybrid Model을 적용하여 성능을 향상시킬 수 있습니다.

  4. 구축한 모델이 정확하게 작동하는지 확인하기 위해서는 성능 평가를 해야 합니다. 성능 평가의 종류는 Accuracy, Confusion Matrix 등 많은 방법이 존재합니다.



+ Recent posts