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. 타 연구와 비교하여 모든 부분에서의 성능이 크게 향상 되었습니다. 




+ Recent posts