[프로그래밍 팁] SAS바이야(SAS Viya) 자동화된 피처 엔지니어링 템플릿으로 예측 모델 생성하기

인공지능, 머신러닝, 예측모델, 예측분석, 고급분석, 피쳐엔지니어링, 피처엔지니어링, 특징엔지니어링, 주성분분석, 특이값분해, 최적변환


데이터 사이언티스트들은 작업 시간의 대부분을 데이터 준비와 피처(feature) 엔지니어링에 할애합니다. 지난 블로그를 통해 데이터 준비 작업에 유용한 프로그래밍 팁을 소개해드렸는데요. 오늘은 인공지능(AI) 기반 엔터프라이즈 분석 플랫폼 ‘SAS 바이야(SAS Viya)’의 기본 템플릿 중 ‘자동화된 피처 엔지니어링 템플릿’을 활용해 손쉽게 예측 모델을 생성하는 방법을 살펴보고자 합니다.


피처는 입력과 변수(독립 변수, 설명 변수)를 의미합니다. 그리고 피처 엔지니어링은 예측 모델의 정밀도를 향상시키기 위해 학습용 원시 데이터를 기반으로 피처를 변환, 추출, 선택하거나 새로운 피처를 생성하는 작업을 말하는데요. 구체적인 예시는 다음과 같습니다.

  • 우편번호 등 카디널리티가 높은(집합 원소의 개수가 많은) 명목(Nominal) 변수의 인코딩(수치화)

  • 등간(Interval) 변수의 정규화, 그룹화(binning), 로그 변환

  • 결측 패턴에 따른 변환

  • 오토인코더(Autoencoder), 주성분 분석(PCA; Principal Component Analysis), t-SNE, 특이값 분해(SVD; Singular Value Decomposition) 등의 차원 축소

  • 계절적 트렌드를 파악하기 위해 날짜 변수를 각각 별개의 변수로 분해하고 새로운 요일, 월, 년 변수 생성


더 우수한 피처를 생성하고 선택하면 예측 모델의 정밀도가 향상될 뿐만 아니라 모델을 단순화해 모델의 해석력을 높이는 데에도 도움이 됩니다.


하지만 앞서 언급했듯이 데이터 사이언티스트들은 예측 모델링 과정에서 피처 엔지니어링 작업에 많은 시간을 소비합니다. 게다가 데이터 사이언티스트의 역량이 피처 엔지니어링의 수준을 크게 좌우하는데요.


SAS 바이야의 자동화된 피처 엔지니어링 템플릿은 이러한 문제를 해결합니다. 데이터 사이언티스트는 물론 비즈니스 사용자도 전문적인 기술 없이 피처 엔지니어링에 소요되는 시간을 줄이고 더욱 더 정밀한 예측 모델을 생성할 수 있습니다.


아래는 SAS 바이야의 모델 스튜디오(Model Studio)에 포함된 자동화된 피처 엔지니어링 템플릿입니다.


인공지능, 머신러닝, 예측모델, 예측분석, 고급분석, 피쳐엔지니어링, 피처엔지니어링, 특징엔지니어링, 주성분분석, 특이값분해, 최적변환


이 템플릿은 크게 3단계로 구성됩니다.

  1. 카디널리티가 높은 변수의 인코딩(수치화)

  2. 주성분 분석, 특이값 분해, 최적 변환, 오토인코더를 사용해 새로운 피처 생성

  3. 피처 엔지니어링 미수행/완료 데이터를 기반으로 예측 모델의 정밀도 비교


그럼 지금부터 단계별로 살펴보겠습니다.



<1단계> 카디널리티가 높은 변수의 인코딩(수치화)

이 단계의 첫 번째 노드는 ‘SAS 코드’입니다.


인공지능, 머신러닝, 예측모델, 예측분석, 고급분석, 피쳐엔지니어링, 피처엔지니어링, 특징엔지니어링, 주성분분석, 특이값분해, 최적변환


SAS 코드 노드를 사용해 SAS 프로그램을 파이프라인에 추가할 수 있습니다. 이 노드를 선택한 후 우측 화면에서 ‘코드 편집기: 열기’를 클릭하면 내용을 확인할 수 있습니다.


인공지능, 머신러닝, 예측모델, 예측분석, 고급분석, 피쳐엔지니어링, 피처엔지니어링, 특징엔지니어링, 주성분분석, 특이값분해, 최적변환


SAS 코드 노드에서는 먼저 20~1,000 레벨의 카디널리티가 높은 변수, 즉 고윳값이 너무 많은 명목 변수를 식별합니다. 최저 레벨과 최대 레벨의 값을 업데이트하면 이 범위를 쉽게 변경할 수 있습니다. 그 다음 수치 변수(TRANSFORM = LEVELENCODE)를 지정하고 이 변수들에 대해서만 레벨(수준) 인코딩을 수행합니다. 이때 변환하려면 ‘데이터 마이닝 사전 처리’에 있는 ‘변환’ 노드를 실행해야 하기 때문에 ‘변환’ 노드가 연결되어 있습니다.


레벨 인코딩에서는 명목 변수를 수치 변수로 변환합니다. 이 방법은 카디널리티가 높은 변수를 활용할 때 특히 편리한데요. 대부분의 머신러닝 알고리즘에서 이 변수들이 컴퓨팅 리소스의 부하를 높이는 경우가 많기 때문입니다. 먼저 명목 변수의 레벨을 알파벳순으로 정렬하고, 각 레벨에 숫자(1부터 시작)를 오름차순으로 할당합니다.



<2단계> 최적 변환, 주성분 분석, 특이값 분해, 오토인코더를 사용해 새로운 피처 생성


인공지능, 머신러닝, 예측모델, 예측분석, 고급분석, 피쳐엔지니어링, 피처엔지니어링, 특징엔지니어링, 주성분분석, 특이값분해, 최적변환


2단계에서는 다음과 같이 3가지의 자동 피처 엔지니어링 기법이 적용됩니다.


(1) 최적 변환: 이 노드는 ‘데이터 마이닝 사전 처리’에 있는 ‘변환’ 노드를 사용해 모든 등간 변수에 대한 ‘최적(Best)’의 변환을 수행합니다. 각 등간 변수를 순위 기준(타겟과의 상관관계 등)에 따라 단일 변수의 변환(역변환, 표준화, 중심화, 로그 변환 등)과 비교해 가장 순위가 높은 변환을 선택합니다.


인공지능, 머신러닝, 예측모델, 예측분석, 고급분석, 피쳐엔지니어링, 피처엔지니어링, 특징엔지니어링, 주성분분석, 특이값분해, 최적변환


(2) 피처 추출 – 주성분 분석(PCA): 이 노드는 ‘데이터 마이닝 사전 처리’에 있는 ‘피처 추출’ 노드를 사용해 등간 입력 변수에 대한 피처 추출 방법을 자동’으로 지정합니다. ‘자동’으로 지정되면 등간 입력 변수의 전체 개수가 500개 이하일 경우 주성분 분석이 적용되고, 이외에는 특이값 분해가 적용됩니다.


인공지능, 머신러닝, 예측모델, 예측분석, 고급분석, 피쳐엔지니어링, 피처엔지니어링, 특징엔지니어링, 주성분분석, 특이값분해, 최적변환


(3) 피처 추출 – 오토인코더(Autoencoder): 이 노드에서는 오토인코더를 사용해 피처를 추출합니다. 피처 추출의 모든 입력 변수(등간, 명목)가 사용되는데요. 오토인코더는 비지도 학습 기술로 입력 데이터를 재구성하기 위해 사용할 수 있는 피처의 세트를 학습하는 것이 목적입니다. 즉 신경망은 타겟(출력) 뉴런을 입력 뉴런과 동일하게 설정하고 학습합니다.


이 노드에서는 중간 은닉층이 10으로 설정되어 있기 때문에 10개의 새로운 피처가 생성됩니다.


인공지능, 머신러닝, 예측모델, 예측분석, 고급분석, 피쳐엔지니어링, 피처엔지니어링, 특징엔지니어링, 주성분분석, 특이값분해, 최적변환



<3단계> 피처 엔지니어링 미수행/완료 데이터를 기반으로 예측 모델의 정밀도 비교

마지막 단계에서는 그래디언트 부스팅을 활용한 5개의 예측 모델이 생성됩니다.


인공지능, 머신러닝, 예측모델, 예측분석, 고급분석, 피쳐엔지니어링, 피처엔지니어링, 특징엔지니어링, 주성분분석, 특이값분해, 최적변환

  • 카디널리티가 높은 변수의 레벨 인코딩 + 피처 추출(주성분 분석)이 완료된 데이터를 기반으로 한 모델

  • 카디널리티가 높은 변수의 레벨 인코딩 + 최적 변환이 완료된 데이터를 기반으로 한 모델

  • 카디널리티가 높은 변수의 레벨 인코딩 + 피처 추출(오토인코더)이 완료된 데이터를 기반으로 한 모델

  • 카디널리티가 높은 변수의 레벨 인코딩이 완료된 데이터를 기반으로 한 모델

  • 원본 데이터(피처 엔지니어링 미수행)를 기반으로 한 모델


5개의 모델을 생성한 후 성능을 비교하는데요. 그래디언트 부스팅은 매우 효과적인 지도 학습 알고리즘이며, 다른 알고리즘보다 예측 정밀도가 높아 많이 사용됩니다.  


이 모델들은 모두 자동 조율(Auto Tuning) 기능을 통해 하이퍼파라미터의 최적값을 자동으로 감지하고 가장 적합한 모델을 생성합니다. 단, 자동 조율은 처리 시간을 늘리기 때문에 필요 시 기능을 ‘off’ 모드로 변경할 수 있습니다.


인공지능, 머신러닝, 예측모델, 예측분석, 고급분석, 피쳐엔지니어링, 피처엔지니어링, 특징엔지니어링, 주성분분석, 특이값분해, 최적변환



템플릿 사용 시 유의사항

이 템플릿을 더 효율적으로 사용하려면 먼저 모델 스튜디오에서 Class 레벨의 최대값(기본값: 20)을 늘리고 카디널리티가 높은 변수를 분석에 포함시켜야 합니다.


그러기 위해서는 프로젝트를 새로 생성할 때 아래 ‘새로운 프로젝트’ 창에서 ‘고급’을 클릭합니다.


인공지능, 머신러닝, 예측모델, 예측분석, 고급분석, 피쳐엔지니어링, 피처엔지니어링, 특징엔지니어링, 주성분분석, 특이값분해, 최적변환


그리고 ‘새로운 프로젝트 설정’ 화면에서 ‘최대 Class 레벨’ 값을 변경합니다.

아래는 기본값 20을 1000으로 변경한 예시입니다.


인공지능, 머신러닝, 예측모델, 예측분석, 고급분석, 피쳐엔지니어링, 피처엔지니어링, 특징엔지니어링, 주성분분석, 특이값분해, 최적변환


이 템플릿을 사용하더라도 새롭게 생성된 피처(변수) 중 하나가 원본 데이터의 피처(변수)보다 뛰어날 것이라고 보장할 수는 없습니다. 학습용 원본 데이터는 다양하기 때문에 이 템플릿이 모든 데이터에서 효과적이라고 단정할 수 없는데요.


SAS 바이야의 모델 스튜디오를 사용하면 간단한 마우스 클릭만으로 사전 정의된 다양한 기능 노드(데이터 사전 처리, 지도 학습 기법 등)를 활용해 자동 피처 엔지니어링을 위한 파이프라인을 효율적으로 만들 수 있습니다. 템플릿의 가장 큰 이점이죠!


다양한 템플릿을 통해 피처 엔지니어링을 자동화하면 데이터 세트의 가치 유무를 파악할 수 있는 힌트를 얻을 수 있어 시간을 단축하고, 결과적으로 기업은 더 낮은 비용으로 신속하게 의사결정을 내릴 수 있습니다.


SAS는 포레스터 리서치(Forrester Research)가 최근 발행한 ‘포레스터 웨이브: 2017년 1분기 예측 분석 및 머신러닝 솔루션(The Forrester Wave™: Predictive Analytics and Machine Learning Solutions, Q1 2017)’에서 리더로 선정됐습니다. SAS 바이야 기반의 ‘SAS 비주얼 데이터 마이닝 앤드 머신러닝(SAS VDMML; SAS Visual Data Mining and Machine Learning)’ 등 SAS의 고급 분석 솔루션은 솔루션 오퍼링, 전략, 시장 입지 3개 평가 항목 모두에서 14개 업체 중 가장 높은 점수를 기록했는데요.


인공지능, 머신러닝, 예측모델, 예측분석, 고급분석, 피쳐엔지니어링, 피처엔지니어링, 특징엔지니어링, 주성분분석, 특이값분해, 최적변환


SAS 웹사이트에서 통합된 단일 인메모리 프로세싱 환경에서 피처 엔지니어링은 물론 데이터 랭글링, 데이터 탐색 및 시각화, 최신 통계, 데이터 마이닝, 머신러닝 기법을 모두 제공하는 SAS 솔루션에 대해 자세히 확인해보세요!





저자

마코토 우네미 l SAS 비즈니스 개발 그룹


편집

김광래 박사 l SAS코리아 고급분석/머신러닝