배깅은 나란히 세운 나무들의 흔들림을 평균으로 달래고, 부스팅은 앞 나무가 틀린 문제를 다음 나무가 다시 풉니다. 둘 다 여러 모델을 쓰지만 줄이려는 오차가 다릅니다.
풀고 시작
문제 1. 배깅과 부스팅의 가장 큰 차이로 알맞은 것은?
배깅은 부트스트랩 표본마다 모델을 따로 만들어 합치므로 병렬로 만들 수 있고 주로 분산을 줄입니다. 부스팅은 앞 모델의 실수를 다음 모델이 보완하도록 순서대로 만들어 주로 편향을 줄입니다.
앙상블: 여럿이 함께 답하기
12강에서 의사결정나무는 데이터가 조금만 바뀌어도 모양이 크게 달라진다고 했습니다. 앙상블(ensemble)은 이런 모델을 여러 개 만들어 예측을 합치는 방법입니다. 분류라면 다수결 투표로, 숫자 예측이라면 평균으로 합칩니다. 서로 다른 방향으로 틀리는 모델들을 합치면 오차가 서로 상쇄되어, 하나만 쓸 때보다 안정되고 정확해집니다.
배깅(bagging)은 bootstrap aggregating의 줄임말로, 레오 브라이먼(Leo Breiman)이 1996년에 제안했습니다. 11강의 부트스트랩으로 훈련 데이터를 여러 벌 만들고, 벌마다 모델을 만들어 결과를 합칩니다. 모델끼리 서로 기다릴 필요가 없어 병렬로 만들 수 있고, 데이터에 따라 크게 흔들리는 불안정한 모델일수록 효과가 큽니다. 배깅이 주로 줄이는 것은 분산입니다.
부스팅(boosting)은 모델을 차례로 만듭니다. 먼저 단순한 모델, 곧 약한 학습기를 하나 만들고, 이 모델이 틀린 관측치에 가중치를 높여 다음 모델이 그 문제에 집중하게 합니다. 이렇게 쌓은 모델들을 가중 합산합니다. 에이다부스트(AdaBoost)가 이런 방식이고, 앞 모델이 남긴 잔차를 다음 모델이 맞히도록 하는 것이 그래디언트 부스팅(gradient boosting)입니다. XGBoost와 LightGBM이 그래디언트 부스팅을 빠르게 구현한 도구입니다. 부스팅은 주로 편향을 줄이며 성능이 뛰어나지만, 너무 많이 쌓으면 과대적합되고 잡음이나 이상값에 끌려가기 쉽습니다.
랜덤포레스트(random forest)는 브라이먼이 2001년에 배깅을 한 걸음 더 밀고 나간 방법입니다. 부트스트랩 표본으로 나무를 여럿 만드는 것은 배깅과 같지만, 마디를 나눌 때마다 변수 가운데 일부만 무작위로 골라 그 안에서 분리를 찾습니다. 모든 나무가 가장 강한 변수 하나로 첫 분리를 하는 일을 막아 나무끼리의 상관을 낮추고, 그만큼 평균의 효과가 커집니다. 부트스트랩에서 빠진 약 36.8퍼센트의 관측치로 따로 평가 데이터를 두지 않고도 성능을 재는데, 이를 OOB(out-of-bag) 오차라고 합니다. 변수마다 예측에 얼마나 기여했는지 보여 주는 변수 중요도도 함께 얻습니다.
인공신경망: 가중합과 활성화의 층
인공신경망(artificial neural network)은 뇌의 신경세포에서 착안한 모델입니다. 기본 단위인 뉴런은 입력마다 가중치를 곱해 더하고 편향을 더한 뒤, 그 값을 활성화 함수에 넣어 출력을 냅니다. 뉴런을 입력층, 은닉층, 출력층으로 쌓으면 신경망이 됩니다.
1958년 프랭크 로젠블랫의 퍼셉트론은 은닉층이 없는 단층 구조였습니다. 단층 퍼셉트론은 직선 하나로 가를 수 있는 문제만 풀 수 있어, 두 입력이 서로 다를 때만 참인 XOR 문제를 풀지 못한다는 한계가 1969년에 지적되었습니다. 은닉층을 둔 다층 퍼셉트론과, 출력의 오차를 뒤에서 앞으로 전달해 가중치를 고치는 역전파(backpropagation) 알고리즘이 1986년에 널리 알려지면서 이 한계를 넘었습니다.
활성화 함수
출력 범위
쓰임
시그모이드
0에서 1
이진 분류의 출력
tanh
−1에서 1
은닉층
ReLU
0 이상(음수는 0)
깊은 신경망의 은닉층
소프트맥스
0에서 1, 합이 1
셋 이상 범주의 출력
학습은 손실 함수를 줄이는 방향으로 가중치를 조금씩 고치는 경사하강법으로 합니다. 한 번에 얼마나 고칠지가 학습률이고, 훈련 데이터 전체를 한 바퀴 도는 것이 에포크입니다. 층이 깊을 때 시그모이드를 쓰면 역전파로 전달되는 기울기가 점점 작아져 앞쪽 층이 거의 배우지 못하는 기울기 소실이 생기는데, ReLU가 이를 누그러뜨립니다.
신경망은 복잡한 비선형 관계를 잘 잡지만 약점도 뚜렷합니다. 가중치만 보고는 왜 그런 예측을 했는지 알기 어려운 블랙박스이고, 초기값에 따라 결과가 달라지며, 은닉 노드가 너무 많으면 과대적합됩니다. 입력의 단위가 다르면 학습이 불안정하므로 표준화를 먼저 합니다. 과대적합은 검증 오차가 늘기 시작하면 멈추는 조기 종료, 가중치에 벌점을 주는 가중치 감쇠로 막습니다. R에서는 은닉층 하나짜리 신경망을 nnet 패키지로 만듭니다.
인출 문제
문제 1. 랜덤포레스트가 배깅과 다른 점으로 옳은 것은?
랜덤포레스트는 배깅에 분리 변수의 무작위 선택을 더해 나무끼리의 상관을 낮춥니다. 틀린 관측치에 가중치를 높이는 것은 부스팅입니다.
문제 2. OOB 오차에 관한 설명으로 옳은 것은?
각 나무는 자기 부트스트랩 표본에 없던 약 36.8퍼센트의 관측치를 본 적이 없으므로, 이 관측치로 평가하면 처음 보는 데이터로 잰 성능과 비슷해집니다.
문제 3. 단층 퍼셉트론이 풀지 못하는 문제로 알려진 것은 무엇입니까?
XOR은 두 입력이 다를 때만 참이라 직선 하나로 가를 수 없습니다. 은닉층을 둔 다층 퍼셉트론이 이 문제를 풉니다.
문제 4. 셋 이상의 범주를 분류하는 신경망의 출력층에 알맞은 활성화 함수는 무엇입니까?
소프트맥스는 출력마다 0과 1 사이의 값을 주고 그 합을 1로 맞춰 범주별 확률로 읽게 합니다. 이진 분류라면 시그모이드를 씁니다.
더 풀기
출제기준의 세부항목을 따라 이 강의 범위에서 새로 낸 문제입니다. 모의고사도 여기에서 뽑습니다.
묶음 1
문제 1. 앙상블이 하나의 모델보다 나은 이유로 가장 알맞은 것은?
여러 모델이 같은 실수를 하지 않는다면 투표나 평균에서 개별 오차가 줄어듭니다. 그래서 모델끼리 서로 다를수록 앙상블의 효과가 큽니다.
문제 2. 분류 문제에서 앙상블이 여러 모델의 예측을 합치는 대표적인 방법은 무엇입니까?
분류는 가장 많은 모델이 고른 범주로 정하는 다수결 투표를 하고, 숫자 예측은 평균을 냅니다.
문제 3. 배깅이라는 이름이 뜻하는 것은 무엇입니까?
배깅은 bootstrap aggregating의 줄임말로, 부트스트랩 표본마다 모델을 만들어 합친다는 방법 자체를 이름에 담고 있습니다.
문제 4. 배깅과 랜덤포레스트를 제안한 사람은 누구입니까?
레오 브라이먼이 1996년에 배깅을, 2001년에 랜덤포레스트를 제안했습니다. 로젠블랫은 퍼셉트론을 만든 사람입니다.
문제 5. 배깅이 특히 효과적인 모델은 어떤 모델입니까?
배깅은 흔들림, 곧 분산을 평균으로 줄이는 방법이라 의사결정나무처럼 불안정한 모델에 효과가 큽니다. 이미 안정된 모델은 합쳐도 나아질 여지가 적습니다.
문제 6. 배깅이 주로 줄이는 오차는 무엇입니까?
배깅은 여러 모델을 평균해 데이터에 따라 흔들리는 정도를 줄이므로 분산을 줄입니다. 편향을 주로 줄이는 것은 부스팅입니다.
문제 7. 부스팅이 모델을 만드는 방식으로 옳은 것은?
부스팅은 순서가 있어 앞 모델의 결과를 보고 다음 모델을 만듭니다. 변수 일부를 무작위로 고르는 것은 랜덤포레스트입니다.
문제 8. 그래디언트 부스팅에서 다음 모델이 맞히도록 하는 대상은 무엇입니까?
그래디언트 부스팅은 지금까지의 예측이 틀린 만큼, 곧 잔차를 다음 모델이 맞히게 해 오차를 차례로 줄여 갑니다.
문제 9. 부스팅의 약점으로 가장 알맞은 것은?
부스팅은 틀린 관측치에 계속 집중하므로, 그 관측치가 잡음이나 이상값이라면 그것까지 맞추려다 과대적합됩니다.
문제 10. XGBoost와 LightGBM은 어떤 방법을 빠르게 구현한 도구입니까?
두 도구는 그래디언트 부스팅을 대용량에서 빠르고 효율적으로 돌리도록 만든 구현체입니다.
묶음 2
문제 1. 랜덤포레스트에서 분리마다 변수 일부만 무작위로 고르는 이유는 무엇입니까?
나무들이 서로 비슷하면 평균을 내도 흔들림이 크게 줄지 않습니다. 변수를 무작위로 제한하면 나무들이 서로 달라져 평균의 효과가 커집니다.
문제 2. 랜덤포레스트가 함께 제공하는 정보로, 각 변수가 예측에 얼마나 기여했는지를 보여 주는 것은 무엇입니까?
랜덤포레스트는 변수를 흔들었을 때 성능이 얼마나 떨어지는지 등으로 변수 중요도를 계산해, 블랙박스에 가까운 앙상블을 조금이나마 해석하게 해 줍니다.
문제 3. 랜덤포레스트에서 OOB 관측치의 비율은 대략 얼마입니까?
부트스트랩에서 한 관측치가 뽑히지 않을 확률이 약 36.8퍼센트이므로 나무마다 그만큼의 관측치가 OOB로 남습니다.
문제 4. 신경망 뉴런 하나가 출력을 내는 과정으로 옳은 것은?
뉴런은 가중합에 편향을 더하고, 활성화 함수로 비선형 변환을 해 출력을 냅니다. 활성화 함수가 없으면 층을 쌓아도 결국 직선 하나와 같습니다.
문제 5. 인공신경망의 층 구성으로 옳은 것은?
신경망은 입력을 받는 입력층, 중간에서 특징을 만드는 은닉층, 예측을 내는 출력층으로 이뤄집니다. 마디의 구분은 의사결정나무의 용어입니다.
문제 6. 퍼셉트론을 처음 제안한 사람과 시기로 옳은 것은?
프랭크 로젠블랫이 1958년에 퍼셉트론을 제안했습니다. 은닉층이 없는 단층 구조라 XOR 같은 문제를 풀지 못했습니다.
문제 7. 다층 신경망 학습에서 역전파가 맡는 역할로 옳은 것은?
역전파는 출력에서 생긴 오차가 각 가중치에 얼마나 책임이 있는지를 거꾸로 계산해 가중치를 고치게 합니다. 이것으로 다층 신경망을 학습할 수 있게 되었습니다.
문제 8. 시그모이드 함수의 출력 범위로 옳은 것은?
시그모이드는 어떤 입력이든 0과 1 사이로 눌러 주므로 이진 분류의 확률 출력에 씁니다. 음수 1에서 1은 tanh의 범위입니다.
문제 9. 입력이 음수면 0을, 양수면 그대로를 내는 활성화 함수는 무엇입니까?
ReLU는 계산이 간단하고 양수 쪽에서 기울기가 줄지 않아 깊은 신경망의 은닉층에 널리 씁니다.
문제 10. 층이 깊은 신경망에서 시그모이드를 쓸 때 생기는 기울기 소실의 뜻으로 옳은 것은?
시그모이드의 기울기는 최대 0.25라 여러 층을 곱하면 기울기가 급격히 작아집니다. ReLU는 양수에서 기울기가 1이라 이 문제를 누그러뜨립니다.
묶음 3
문제 1. 경사하강법에서 학습률이 뜻하는 것은 무엇입니까?
학습률이 너무 크면 최솟값을 지나쳐 발산하고, 너무 작으면 학습이 매우 느립니다. 데이터를 몇 바퀴 도는지는 에포크 수입니다.
문제 2. 에포크(epoch)의 뜻으로 옳은 것은?
에포크는 훈련 데이터 전체를 한 번 모두 사용해 가중치를 고친 단위입니다. 보통 여러 에포크를 돌며 학습합니다.
문제 3. 신경망에 넣기 전에 입력 변수를 표준화하는 이유로 가장 알맞은 것은?
연봉처럼 숫자가 큰 변수와 나이처럼 작은 변수가 섞이면 경사하강법이 한쪽으로 치우쳐 느리고 불안정해집니다. 의사결정나무와 달리 신경망은 표준화가 필요합니다.
문제 4. 은닉 노드를 지나치게 많이 둔 신경망에서 생기기 쉬운 문제는 무엇입니까?
은닉 노드가 많으면 모델이 매우 유연해져 훈련 데이터의 잡음까지 외웁니다. 너무 적으면 반대로 과소적합됩니다.
문제 5. 검증 오차가 늘기 시작하는 시점에 학습을 멈춰 과대적합을 막는 방법은 무엇입니까?
조기 종료는 훈련 오차는 계속 줄어도 검증 오차가 늘기 시작하면 학습을 멈춥니다. 가지치기는 의사결정나무의 과대적합 처방입니다.
문제 6. 인공신경망의 약점으로 가장 알맞은 것은?
신경망은 수많은 가중치가 얽혀 있어 예측의 이유를 설명하기 어려운 블랙박스입니다. 대신 복잡한 비선형 관계를 잘 잡습니다.
문제 7. 신경망의 결과가 실행할 때마다 조금씩 달라지는 주된 이유는 무엇입니까?
초기값이 다르면 경사하강법이 서로 다른 지역 최솟값에 도달할 수 있습니다. 그래서 난수 씨앗을 고정하거나 여러 번 학습해 비교합니다.
문제 8. R에서 은닉층 하나짜리 신경망을 만드는 대표적인 패키지는 무엇입니까?
nnet은 은닉층이 하나인 순전파 신경망을 만듭니다. rpart는 의사결정나무, mice는 다중 대치 패키지입니다.
문제 9. 가중치 감쇠(weight decay)가 과대적합을 줄이는 원리로 알맞은 것은?
가중치 감쇠는 8강의 릿지처럼 가중치 크기에 벌점을 줘 모델을 단순하게 유지합니다.
문제 10. 앙상블과 인공신경망에 관한 진술로 옳지 않은 것은?
부스팅은 앞 모델의 실수를 보고 다음 모델을 차례로 만들어 주로 편향을 줄입니다. 독립으로 만들어 분산을 줄이는 것은 배깅입니다. 나머지 셋은 옳은 진술입니다.