[SAS E-miner 활용하기]
이번 연재에서는 신경망(Neural Network)에서 사용되는 활성함수(Activation Function)의 종류와 역할에 대해서 자세히 알아보고 실제 데이터를 활용하여 SAS E-miner 신경망 노드의 속성 패널에서 여러 활성함수를 설정해보며 결과를 비교해보겠습니다.
[INTRODUCTION]
신경망에서 사용되는 함수는 크게 3가지가 있습니다.
결합함수 (Combination Function)
활성함수 (Activation Function)
오차함수 (Error Function)
신경망에서 각 위 3가지 함수가 하는 역할을 간단하게 살펴보고 활성함수에 대해 조금 더 자세히 알아보겠습니다.
그림1. 신경망
위 그림과 수식을 살펴보면, 입력층(Input Layer)의 값들을 결합함수(Combination Function)가 선형결합(Linear Combination)을 한 뒤 1번 위치에서 그 값들을 다시 활성함수가 비선형결합(Nonlinear Combination)을 하는 과정을 통해 은닉층(Hidden Layer)에 도달하고 2번 위치에서 앞의 과정을 다시 한번 은닉층으로부터 반복하여 출력층(Target Layer)으로 결과값을 도출하게 됩니다. 해당 결과값을 실제값과 비교하여 오차함수(Error Function)를 통해 오차를 계산하고 역전파(Backpropagation)을 통해 가중치 값들을 갱신하는 과정을 일정 수준 이하에 도달할 때까지 반복하게 됩니다.
활성함수는 결합함수가 입력층 또는 은닉층의 값들을 선형결합을 한 값들에 대해 다시 비선형결합(보통 S모양의 Sigmoidal)하여 은닉층 또는 출력층으로 결과값들을 내보내는 함수입니다. 비선형함수를 사용하기 때문에 최적의 계수를 추정하는 과정에는 수치 해석적인 반복적 최적화방법(Iterative Method for Optimization)을 사용하게 되는데 로지스틱 회귀에서는 계수에 대한 해석이 쉽고 명확한 것과는 달리 신경망에서는 계수에 대한 설명과 해석이 어렵다는 단점의 근본적인 원인이 됩니다. 이러한 사실 때문에 “블랙박스”라는 수식어가 따라다니기도 합니다.
[METHODOLOGY]
그림2. 신경망 속성 패널
SAS E-miner에서 Activation Function에 대한 설정을 하려면 신경망 노드의 "속성패널"에서 신경망(Network) 탭 오른쪽에 위치한 ... 버튼을 클릭하면 다음과 같은 창이 열립니다.
그림3. 신경망 활성함수 설정 변경 창
E-miner에서는 신경망의 구조(Architecture) 중 MLP(Multi-layer Perceptron)을 Default로 사용하기 때문에 은닉층에 대한 활성함수는 Grayed-out 되어 있습니다. 그 이유는 MLP에서 대부분의 경우에 높은 Performance를 보이는 함수(Combination Function : Linear, Activation Function : Tanh)를 사용하기 때문입니다. 분석의 목적에 따라 또는 신경망에 대한 높은 이해도를 가지고 있다면 구조 탭에서 “사용자 정의”를 선택하여 여러 설정들을 자유롭게 변경하면서 진행하면 되겠습니다. 이번 연재에서는 MLP 구조 안에서 변경 가능한 Target Layer Activation Function에 대해 자세히 알아보겠습니다.
Activation Function |
Range |
Equation |
Identity |
(-∞, ∞) |
|
Linear |
(-∞, ∞) |
|
Exponential |
(0, ∞) |
|
Reciprocal |
(0, ∞) |
|
Square |
[0, ∞] |
|
Logistic |
(0, 1) |
|
Mlogistic |
(0, 1) |
|
Softmax |
(0, 1) |
|
Gauss |
(0, 1] |
|
Sine |
[-1, 1] |
|
Cosine |
[-1, 1] |
|
Elliott |
(-1, 1) |
|
Tanh |
(-1, 1) |
|
ArcTan |
(-1, 1) |
표1. SAS E-miner에서 사용가능한 활성함수들의 범위와 함수식
LAYER |
FUNCTION |
TARGET VALUE |
NAME |
HIDDEN LAYER |
ACTIVATION |
. |
TANH |
COMBINATION |
. |
LINEAR |
|
TARGET LAYER |
ACTIVATION |
INTERVAL |
IDENTITY |
ORDINAL |
LOGISTIC |
||
NOMINAL |
MLOGISTIC |
||
COMBINATION |
LINEAR |
LINEAR |
표2. 신경망의 타겟변수의 종류에 따른 Default 활성함수
SAS E-miner 에서는 같이 사용되는 결합함수에 따라 그리고 타겟 변수의 분포와 종류에 따라서 각기 다른 활성함수를 Default 값으로 사용하고 있습니다. Default 값이 대부분의 경우에 좋은 Performance를 보이지만, 타겟 변수의 분포에 적절하면서 Default 값보다 Performance가 더 좋다면 분석가의 목적에 따라 다른 활성함수를 사용할 수 있습니다.
[DATA DESCRIBTION]
이제부터 실제 데이터에 적용하여 Default보다 더 나은 활성함수가 있을지 알아보겠습니다. 이번 연재에서 사용할 “BUYTEST” 데이터는 24개월 동안 제품을 60$ 이상 구매한 10,000명에게DM(Direct Mailing)을 발송하고 그에 따른 응답 여부등의 데이터들로 구성되어 있습니다. DM에 응답할 가능성이 높은 고객에게 발송하여 응답률을 높이고 발송비용을 최소화하는 것이 목적입니다.
분류 |
변수 |
변수의 내용 |
고객번호 |
ID |
고객번호 |
인구속성 |
AGE |
나이(년) |
INCOME |
년수입(단위:천달러) |
|
MARRIED |
1: 결혼, 0: 미혼 |
|
SEX |
F: 여자, M: 남자 |
|
COA6 |
6개월 간의 주소변경 여부(1: 주소변경, 0) |
|
OWNHOME |
집의 소유 여부(1: 소유, 0) |
|
지역속성 |
LOC |
거주지, A-H |
CLIMATE |
거주지의 기온(10, 20, 30) |
|
거래회수 |
BUY6 |
최근 6개월 간의 구입회수 |
BUY12 |
최근 12개월 간의 구입회수 |
|
BUY18 |
최근 18개월 간의 구입회수 |
|
거래금액 |
VALUE24 |
지난 24개월 간의 구입총액 |
신용상태 |
FICO |
신용점수 |
거래속성 |
ORGSRC |
고객분류(C,D,I,O,P,R,U) |
DISCBUY |
할인고객여부(1: 할인고객, 0) |
|
RETURN24 |
지난 24개월 간 상품의 반품 여부(1: 반응, 0) |
|
반응 |
RESPOND |
DM에 대한 반응 여부(1: 반응, 0) |
PURCHTOT |
DM에 의한 구입총액 |
|
C1-C7 |
DM에 의한 품목별 구입액 |
표3. BUYTEST 데이터셋 설명
그림5. 변수 편집
그림6. RESPOND 변수 분포
Target Variable인 RESPOND는 범주별 빈도가 상이한 계급불균형자료(Imbalanced Data)입니다. 따라서 모델을 비교할 시에 단순히 오분류율로 판단하기보다는 계급불균형을 어느정도 해소한 뒤 민감도(Sensitivity)와 특이도(Specificity), ROC와 AUC등을 확인하여 최종적으로 모델을 선정 및 분석을 진행하는 것이 가장 바람직합니다.
그림6. 요약통계량과 데이터 전처리 방향 설정
연속형 변수들의 경우 심하진 않지만 분포왜곡이 존재하고 결측값도 존재합니다. 또한 범주형의 경우 결측값에 대한 적절한 처리가 필요해 보입니다. 따라서 E-miner 에서 제공하는 결측값 처리 노드 (Impute) 와 변수변환(Transform Variables) 노드의 평균값대체, 로그변환 등을 사용하여 결측값과 분포왜곡을 해소시켜주어야 합니다.
[PREDICTIVE MODELING]
앞서 살펴보았듯이 분포왜곡과 결측값에 대해 해당하는 결측값 처리, 변수변환 노드와 세부옵션을 설정하여 처리해주었습니다. 그리고 데이터분할은 학습용 (Training)70, 평가용(Validation) 30으로 분할하였습니다. 그 다음으로는 이 데이터에 모델을 적합할 때 가장 중요한 개념인 계급불균형(Imbalanced Date)을 해소하기 위해 Over-Sampling 기법을 적용하였습니다. 이에 대한 내용은 이전 연재에서 굉장히 자세하게 설명되어 있으니 해당 연재를 참고하시기 바랍니다.
그림7. 활성함수별 최적 은닉마디 수 탐색
그림8. 각 활성함수 별 최적의 은닉마디값을 적용하여 모델 비교
그림7, 그림8의 Diagram을 이용하여 각 활성함수마다 최적의 은닉마디 수를 탐색, 적용하여 각 활성함수 별 신경망 모델을 비교해보았습니다. 먼저 Reciprocal 함수의 경우 연속형 변수로만 구성도 해보는 등 여러 시도를 해보았지만 알 수 없는 이유로 오류가 반복되어 제외하였습니다.
그림9. ArcTan 은닉마디 수=25 오분류율=0.0766, 민감도=0
최적의 은닉마디 수와 활성함수별 모델을 비교할 시에 주의해야할 점이 있습니다. 그림9 처럼 오분류율은 7퍼센트 남짓이지만 소수계급인 1을 모두 분류하지 못하였기에 오분류율이 작게 나온 것입니다. 그러므로 오분류율 뿐만 아니라 민감도, 특이도, ROC, AUC 값들을 함께 확인하여 최종적으로 모델을 선정해야 합니다.
[GOODNESS OF FIT]
Activation Function |
Hidden Units (은닉마디 수) |
Sensitivity |
Specificity |
MR |
RR |
Identity |
64 |
0.808696 |
0.21328 |
0.741086 |
0.258914 |
Linear |
64 |
0.808696 |
0.21328 |
0.741086 |
0.258914 |
Exponential |
64 |
0.656522 |
0.422952 |
0.559147 |
0.440853 |
Reciprocal |
X |
X |
X |
X |
X |
Square |
64 |
0.943478 |
0.079755 |
0.854049 |
0.145951 |
Logistic |
6 |
0.317391 |
0.756045 |
0.277574 |
0.722426 |
Mlogistic |
64 |
0.713043 |
0.479971 |
0.502166 |
0.497834 |
Softmax |
64 |
0.713043 |
0.479971 |
0.502166 |
0.497834 |
Gauss |
1 |
1 |
0 |
0.923359 |
0.076641 |
Sine |
50 |
0.630435 |
0.486828 |
0.502166 |
0.497834 |
Cosine |
50 |
0.630435 |
0.486828 |
0.502166 |
0.497834 |
Elliot |
9 |
0.995652 |
0.003609 |
0.92036 |
0.07964 |
Tanh |
9 |
0.665217 |
0.453627 |
0.530157 |
0.469843 |
ArcTan |
9 |
0.995652 |
0.004331 |
0.919693 |
0.080307 |
Mlogistic (NO SAMPLING) |
64 |
0 |
0.999278 |
0.077308 |
0.922692 |
표4. 활성함수별 결과 지표 비교표
그림9. ROC CURVE
그림10. ROC 값
표4에서 볼 수 있듯이 각 활성함수 별 최적의 은닉마디 수를 설정하여 모델비교 노드의 결과를 정리해보았습니다. 민감도와 특이도, ROC곡선까지 전체적으로 보았을 때 그 결과 Mlogistic, Softmax 활성함수를 사용한 모델이 가장 나은 Performance를 보였습니다. 오분류율 또는 정분류율만 보았을 때는 Performance가 떨어지는 모델이 분명하지만 계급불균형 데이터에서는 표4의 결과처럼 민감도와 특이도 그리고 그림9, 그림10의 결과와 같이 ROC곡선을 보고 판단해야 합니다. 따라서 Nominal 타겟 변수에 대한 Default 값인 Mlogistic 을 다른 활성함수들과 비교해보며 최종 모델로 선정할 수 있을 것입니다.
[CONCLUSION]
이번 연재에서는 신경망의 활성함수에 대해 알아보았고 여러 활성함수를 각각 적용한 신경망 모델을 데이터에 적합 및 비교해보았습니다. 타겟 변수의 분포와 종류에 따라 다른 활성함수를 사용해야함을 알 수 있었고 실제 데이터를 적용하여 범주형 타겟 변수일 때 사용하는 활성함수의 Default 값과 일치하는 결과인 Mlogistic을 최종 모델의 활성함수로 선정할 수 있었습니다. 최근의 연구에서는 ReLu, Leaky ReLu, Maxout 등 더 좋은 성능을 보인다고 알려진 활성함수가 계속해서 나오고 있는데 어떤 활성함수가 꼭 정답만은 아닙니다. 수없이 반복비교해 가면서 조금이라도 더 나은, 좋은 방법, 해법을 찾아가는 과정이라 생각하면서 이번 연재 마치도록 하겠습니다.
[REFERENCE]
[2] Randall Matignon. Neural Network Modeling using SAS Enterprise Miner. AuthorHouse, 2005
[3] Randall Matignon. Data Mining Using SAS Enterprise Miner. John Wiley & Sons, 2007
[4] 빅데이터 분석을 위한 데이터마이닝 방법론 / 강현철 외 5명 / 자유아카데미 / 2014년 3월 5일
this is great , but in english would be much appreciated
Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
Register now!