- 대회 본선은 2019년 11월 13일 오후 6시부터 9시까지 세 시간이었고, 분석 파일과 보고서를 11월 15일 12시까지 메일로 제출하는 방식이었다(한 시간 늦을 때마다 5점 감점). 두 문항 모두 비즈니스 이해 → 데이터 탐색 → 모형화·적용의 6단계 절차로 풀었다.
- 모형 목록은 내가 고른 것이 아니라 문제가 지정했다. 문항 1은 판별분석·의사결정나무·로지스틱·SVM(EC Miner만), 문항 2는 JMP에서 MLR·PCA 활용·PLS, EC Miner에서 MLR·PCR·PLS·SVR를 넣으라는 빈 결과표가 문제와 함께 주어졌다. 그래서 이 보고서의 판단이 걸린 지점은 모형 선택이 아니라 전처리·해석·두 도구의 대조였다.
- 문항 1의 결측은 빈칸이 아니라 물음표 문자열로 들어와 있었다. Workclass 2,799행, Occupation 2,809행, Native-country 855행이 결측이었고 세 조건의 합집합이 3,618행이어서, 48,842행 중 이를 제외한 45,224행으로 분석했다. 태생 국가 41개 수준은 지역 7개 수준으로 묶었다.
- 분류에서는 EC Miner SVM의 검증 오분류율 13.99%가 가장 낮았다. 그런데 전체 오분류율 개선(로지스틱 20.92% → SVM 13.99%)의 실체는 소수 클래스였다 — 실제 5만 불 이상을 맞힌 비율이 로지스틱 30.23%에서 SVM 63.12%로 올랐다.
- 회귀에서는 SVR이 검증 R² 0.93414 · RMSE 4.39259 · MAE 3.32241로 가장 좋았고, 주성분 기반 PCR이 0.83673으로 가장 나빴다. 두 문항 모두에서 차원 축소 모형이 원 변수 모형보다 나빴다 — 문항 1 판별분석도 주성분 23.1846% 대 원 변수 22.7379%였다.
| 3시간 | 본선 분석 시간 | 2019.11.13 18:00~21:00 · 보고서 제출 11.15 12:00 · 최종 발표 11.20 |
| 45,224행 | 문항 1 분석 데이터 | 원본 48,842행 중 결측 3,618행 제외 · 예측변수 12개 |
| 9,567행 | 문항 2 분석 데이터 | JMP 기준(문제 설명과 EC Miner 합계는 9,568) · 변수 5개 |
| 오분류율 13.99% | 분류 최고 성능 | SVM(EC Miner, Test 1/3) — CART 14.00% · Logistic 20.92% · LDA 28.58% |
| R² 0.93414 | 회귀 최고 성능 | SVR(EC Miner, Test 20%) RMSE 4.39259 · MAE 3.32241 — SVR > MLR > PLS > PCR |
| 1위 수상 | 수상 | 2019.11 · 대회 규정의 명칭은 '최우수상 1명', 이력서·포트폴리오 기재는 '대상(1위)' |
세 시간짜리 현장 대회였고, 모형 목록은 문제가 지정했다
작업용 덱 첫 장에 대회 일정이 그대로 남아 있다. 분석 시간은 세 시간, 보고서 제출은 이틀 뒤, 늦으면 시간당 5점 감점이었다.
한양대학교 스마트팩토리랩 소속으로 참가한 빅데이터 분석 경진대회의 보고서다. 작업용 덱 1번 슬라이드에 운영 규정이 적혀 있다.
| 항목 | 내용 |
|---|---|
| 경진대회 | 2019년 11월 13일(수) 오후 6:00 ~ 9:00 |
| 최종 제출 | 2019년 11월 15일(금) 오전 12:00 — 한 시간 늦을 때마다 5점 감점 |
| 제출 방법 | 분석 파일 및 보고서 메일 송부 |
| 최종 발표 | 2019년 11월 20일(수) |
| 시상 | 최우수상 1명 · 우수상 2명 · 장려상 3명 · 참가상(수상자 제외 참가자 전원), 총 상금 300만원 |
즉 두 문항의 데이터를 처음 열어 모형까지 돌리는 데 주어진 시간이 세 시간이었고, 이후 이틀은 보고서를 쓰는 시간이었다. 제출 보고서는 66장, 그 뒤에 남아 있는 작업용 덱은 82장이다. 작업용 덱에는 보고서에서 잘라 낸 중간 화면이 그대로 남아 있다.
두 문항 모두 보고서 목차에 적힌 아래 6단계로 동일하게 풀었다. 단계 이름은 CRISP-DM의 앞부분과 겹치지만, 보고서 어디에도 그 이름은 쓰여 있지 않다.
| 단계 | 세부 절차 |
|---|---|
| 01 비즈니스 이해 | 1. 분석목적 설립 · 2. 주요 변수 확인 |
| 02 데이터 탐색 | 3. 데이터 전처리 및 정제 · 4. 탐색적 데이터 분석 |
| 03 모형화 및 적용 | 5. 모형개발 및 모형의 검증 · 6. 결과의 해석 및 인사이트 추출 |
| 문항 | 과제 | 데이터 | 문제 유형 |
|---|---|---|---|
| 01 | 성인 연간 수익 분류 | 미국 성인 대상 인구통계 정보. 48,842행 중 결측 3,618행 제외 → 45,224행 | 이진 분류 (연간 수익 5만 불 이상/미만) |
| 02 | 보고서 제목은 '공정상태 분류' | 복합형 화력 발전소 최적 상황 시 전력 생산량 2006~2011, 9,568행, 5개 변수 | 실제로는 회귀 (시간당 전력 생산량 PE 예측) |
여기서 먼저 적어 둘 것이 있다. 어떤 모형을 쓸지는 내가 고른 것이 아니다. 문항 1의 분석모델 목록(판별 분석 · 의사결정 Tree · Logistic · SVM은 EC Miner에서만)과 문항 2의 결과표 — JMP는 MLR·PCA 활용·PLS, EC Miner는 랜덤 80% Model / 20% Test로 MLR·PCR·PLS·SVR — 는 R²와 RMSE 칸이 비어 있는 채로 문제와 함께 주어졌다. 채점 대상은 그 칸을 채우는 능력이 아니라 전처리와 해석이었다는 뜻이고, 그래서 이 글에서 길게 적는 것도 모형 성능표가 아니라 전처리 판단과 오분류 행 탐색이다.
문항 2의 제목이 '공정상태 분류'인 것은 원본 보고서 표기를 그대로 따른 것이다. 분석목적은 '전력 생산량 예측'이라고 같은 슬라이드에 적혀 있고 실제로 수행한 것도 회귀이므로, 이 글에서는 회귀로 다룬다.
문항 1 전처리 — 결측은 물음표 문자열로 들어와 있었다
48,842행에서 3,618행을 덜어 낸 근거는 필터 화면 한 장에 남아 있고, 그 3,618행이 정확히 어느 열에서 나왔는지는 제외 전후의 도수분포를 맞대 보면 떨어진다.
원본 데이터의 결측은 빈칸이 아니라 물음표 문자열이었다. 그래서 결측을 세기 전에 이 문자열을 결측으로 인식시키는 처리가 먼저 필요했다.
JMP 데이터 필터 화면을 열면 결측이 어느 열에 얼마나 있었는지가 보인다. 열별 요약과 필터 조건은 다음과 같았다.
| 열 | 비결측 N | 결측 수 | 범주 수 |
|---|---|---|---|
| Workclass | — | 2,799 (물음표 수준) | 9 (물음표 포함) |
| Occupation | 46,033 | 2,809 | 14 (필터 패널은 물음표를 한 수준으로 세어 15) |
| Native-country | 47,987 | 855 | 41 |
| Native-country(수정) | 47,987 | 855 | 7 |
| Education_num | 48,842 | 0 | 16 |
| Marital-status · Relationship · Race · Sex | 48,842 | 0 | 7 · 6 · 5 · 2 |
| Capital-gain · Capital-loss · Hours-per-week | 48,842 | 0 | — |
필터 창은 Workclass의 물음표 2,799건과 Occupation의 물음표 2,809건을 OR로 묶은 조건을 보여 주고, 그 아래로 스크롤된 조건까지 합쳐 3,618개의 행이 일치했다고 적혀 있다. 행 창에는 모든 행 48,842 · 선택됨 3,618 · 제외 3,618 · 숨김 0으로 찍혀 있다. 세 열의 결측을 단순히 더하면 6,463이지만 겹치는 행이 많아 합집합은 3,618이었고, 이 3,618행을 제외한 45,224행이 이후 모든 분석의 모집단이다.
같은 화면에서 제외 전 Workclass의 9개 수준 개수도 읽힌다.
| Workclass 수준 | 제외 전 (48,842) | 제외 후 (45,224) |
|---|---|---|
| 물음표 | 2,799 | — |
| Never-worked | 10 | — |
| Private | 33,906 | 33,309 |
| Self-emp-not-inc | 3,862 | 3,796 |
| Local-gov | 3,136 | 3,100 |
| State-gov | 1,981 | 1,946 |
| Self-emp-inc | 1,695 | 1,646 |
| Federal-gov | 1,432 | 1,406 |
| Without-pay | 21 | 21 |
세 가지가 읽힌다. 첫째, ??? 2,799 + Never-worked 10 = 2,809는 Occupation의 결측 수와 정확히 같다 — 직장형태가 없거나 일한 적이 없는 사람은 직업도 비어 있었다는 뜻이고, 그래서 결측 제외 후 Workclass는 9수준이 아니라 7수준이 되었다. 즉 Workclass 결측은 Occupation 결측에 통째로 포함되므로 두 열만으로는 2,809행밖에 빠지지 않는다.
둘째, 그러면 3,618의 나머지 809행이 어디서 왔는지가 표에서 확인된다. 제외 전후로 줄어든 Workclass 수준별 개수를 더하면 Private 597 + Self-emp-not-inc 66 + Self-emp-inc 49 + Local-gov 36 + State-gov 35 + Federal-gov 26 = 809다. 직장형태와 직업은 멀쩡한데 태생 국가만 비어 있던 행들이고, Native-country 결측 855건 중 이미 Occupation 결측이던 46건을 뺀 수와 맞는다. 결국 제외 조건은 Occupation 물음표 ∪ Native-country 물음표 = 2,809 + 855 − 46 = 3,618이었다.
셋째, Without-pay 21건은 한 건도 줄지 않았다. 무급 노동자는 직업과 태생 국가가 모두 기록되어 있었다.
연속형 변수의 평균도 제외 전후로 달라졌다. Capital-gain은 1079.0676262 → 1101.3816, Capital-loss는 87.502313583 → 88.5915, Hours-per-week는 40.422382376 → 40.937931로 셋 다 조금씩 올라갔다. 결측 3,618행은 무작위로 빠진 것이 아니라 수입과 근로시간이 상대적으로 낮은 쪽에 몰려 있었다는 뜻인데, 이 편향을 보정하지는 않았다. 세 시간 안에 두 문항을 끝내야 하는 조건에서 결측 대치는 시도하지 않고 제외로 갔다.
나머지 전처리는 세 가지였다. (1) 태생 국가 41개 수준을 Centeral America · East Asia · East Europe · North America · South America · South-East&Central Asia · West Europe 7개 지역으로 묶어(첫 수준의 철자는 원본 표기 그대로다) Native-country(수정)를 만들었다. (2) 목표변수를 5만 불 이하 0 / 이상 1의 명목형 이산값으로 바꾸었다. (3) Education_num(Education과 중복)과 fnlwgt(샘플링 가중치)를 분석에서 제외해 예측변수 12개를 남겼다.

문항 1 — 45,224행의 분포: 극소 수준과 0에 몰린 두 변수
편중이 큰 상위 수준만 보고 넘어가면 표본이 수십 건인 수준들과, 90% 분위수까지 0인 변수를 놓친다.
제외 후 12개 변수의 분포 출력(N = 45,224)을 그대로 복원하면 다음과 같다.
| 변수 | 수준 (개수 · 확률) |
|---|---|
| Workclass (7수준) | Private 33,309 (0.73653) · Self-emp-not-inc 3,796 (0.08394) · Local-gov 3,100 (0.06855) · State-gov 1,946 (0.04303) · Self-emp-inc 1,646 (0.03640) · Federal-gov 1,406 (0.03109) · Without-pay 21 (0.00046) |
| Education (16수준) | HS-grad 14,783 (0.32688) · Some-college 9,900 (0.21891) · Bachelors 7,570 (0.16739) · Masters 2,514 (0.05559) · Assoc-voc 1,960 (0.04334) · 11th 1,619 (0.03580) · Assoc-acdm 1,507 (0.03332) · 10th 1,223 (0.02704) · 7th-8th 823 (0.01820) · Prof-school 785 (0.01736) · 9th 676 (0.01495) · 12th 577 (0.01276) · Doctorate 544 (0.01203) · 5th-6th 449 (0.00993) · 1st-4th 222 (0.00491) · Preschool 72 (0.00159) |
| Marital-status (7수준) | Married-civ-spouse 21,057 (0.46562) · Never-married 14,598 (0.32279) · Divorced 6,297 (0.13924) · Separated 1,411 (0.03120) · Widowed 1,277 (0.02824) · Married-spouse-absent 552 (0.01221) · Married-AF-spouse 32 (0.00071) |
| Occupation (14수준) | Craft-repair 6,021 (0.13314) · Prof-specialty 6,008 (0.13285) · Exec-managerial 5,984 (0.13232) · Adm-clerical 5,540 (0.12250) · Sales 5,409 (0.11960) · Other-service 4,808 (0.10632) · Machine-op-inspct 2,970 (0.06567) · Transport-moving 2,316 (0.05121) · Handlers-cleaners 2,046 (0.04524) · Farming-fishing 1,480 (0.03273) · Tech-support 1,420 (0.03140) · Protective-serv 976 (0.02158) · Priv-house-serv 232 (0.00513) · Armed-Forces 14 (0.00031) |
| Relationship (6수준) | Husband 18,668 (0.41279) · Not-in-family 11,702 (0.25876) · Own-child 6,626 (0.14652) · Unmarried 4,788 (0.10587) · Wife 2,091 (0.04624) · Other-relative 1,349 (0.02983) |
| Race (5수준) | White 38,904 (0.86025) · Black 4,228 (0.09348) · Asian-Pac-Islander 1,304 (0.02883) · Amer-Indian-Eskimo 435 (0.00962) · Other 353 (0.00781) |
| Sex (2수준) | Male 30,529 (0.67506) · Female 14,695 (0.32494) |
| Native-country(수정) (7수준) | North America 41,720 (0.92253) · Centeral America 1,513 (0.03346) · South-East&Central Asia 593 (0.01311) · West Europe 575 (0.01271) · East Asia 391 (0.00865) · East Europe 232 (0.00513) · South America 200 (0.00442) |
편중된 상위 수준만 보고 넘어갈 때 놓치는 것은 극소 수준의 존재다. Married-AF-spouse 32건, Armed-Forces 14건, Without-pay 21건, Preschool 72건처럼 표본이 수십 건인 수준들이 뒤에서 로지스틱 모수추정값의 표준오차를 키우고(Education의 Preschool 수준은 추정값 5.6412에 표준오차 3.6638로 유의하지 않게 나온다) 트리 분할에서 다른 수준과 한 덩어리로 묶인다.
연속형 네 변수의 분위수와 요약통계량은 다음과 같았다.
| 변수 | 최소 | 10% | 25% | 중앙값 | 75% | 90% | 97.5% | 99.5% | 최대 | 평균 | 표준편차 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Age | 17 | 22 | 28 | 37 | 47 | 57 | 67 | 76 | 90 | 38.547806 | 13.217627 |
| Capital-gain | 0 | 0 | 0 | 0 | 0 | 0 | 8,614 | 99,999 | 99,999 | 1101.3816 | 7506.2677 |
| Capital-loss | 0 | 0 | 0 | 0 | 0 | 0 | 1,887 | 2,258 | 4,356 | 88.5915 | 404.94757 |
| Hours-per-week | 1 | 25 | 40 | 40 | 45 | 55 | 70 | 85 | 99 | 40.937931 | 12.007251 |
여기서 이 문항 전체의 해석을 지배하는 사실 하나가 나온다. Capital-gain은 90% 분위수까지 0이고 97.5% 분위수가 8,614다. 표본의 90% 이상에서 직장 외 수입이 0인 변수인데, 뒤에 나올 로지스틱 효과 요약에서 이 변수가 LogWorth 569.163으로 1위를 차지한다. '직장 외 수입이 있어야 다른 변수들의 영향이 커진다'는 프로파일러 해석은 이 분포 모양 — 대부분 0이고 소수만 큰 값을 갖는 형태 — 때문에 나온 것이다. Capital-loss도 같은 모양이고, Hours-per-week는 25%·50% 분위수가 모두 40으로 표본의 상당수가 정확히 주 40시간이었다.

문항 1 탐색 — 두 변수만 놓고 보면 틀린다
성별과 인종은 단변량 그림에서 눈에 띄었지만, 12개 변수를 함께 넣자 기여도 9위와 12위로 밀렸다.
목표변수와 각 변수를 하나씩 대응시켜 본 결과를 정리하면 다음과 같다.
| 변수 | 관찰 |
|---|---|
| 평행좌표 그림 | 5만 불 이하와 이상 사이에 특이점 현상의 특별한 차이는 없었으나, 이상인 쪽에서 Capital-gain이 99999인 값이 있음을 확인했다 |
| 나이 | 5만 불 이상인 사람들의 평균 연령이 더 높다. 다만 사분위 분포는 이하인 쪽이 더 넓다 |
| 교육수준 | 취학 전이 5만 불 이하 비율이 가장 높고 12th까지도 이하가 많다. 고등학교 졸업, 전문대 순으로 이상 비율이 늘고, 학사 < 석사 < 박사 순으로 5만 불 이상이 많았다 |
| 결혼여부 | 기혼이 5만 불 이상 비율이 가장 높고 이혼·사별이 그다음이었다 |
| 직업 | 경영 관련(Exec-managerial)과 교수·전문직(Prof-specialty)의 5만 불 이상 비율이 상당히 높고, 판매·수리원도 높았다 |
| 인종·성별 | 인디언·에스키모·흑인·기타에서 이하 비율이 높고, 성별에서도 비율 차이가 보였다 |
결혼여부 결과에는 곧바로 반론이 붙었다. 결혼하지 않은 사람은 연령층이 낮고, 연령이 낮으면 수입이 낮다. 기혼-고수입의 관계가 사실은 나이의 효과일 수 있다. 그래서 연령을 17–27 · 27–35 · 35–42 · 42–51 · 51–90 다섯 구간으로 나눈 뒤 구간마다 결혼여부별 비율을 다시 그렸다. 어느 연령 구간에서도 기혼(Married-civ-spouse)의 5만 불 이상 비율이 같은 구간의 다른 결혼 상태보다 높게 유지되었다. 다만 가장 어린 17–27 구간은 어느 수준이든 5만 불 이상이 드물어 차이가 얇게만 보인다. 나이로 설명되는 효과가 아니었다.
인종·성별에 대해서는 보고서에 이렇게 적었다 — 두 변수만 비교하는 것은 사전 탐색이고 모든 변수의 영향을 함께 고려해야 한다. 그 확인이 JMP의 예측 변수 선별이었다.
| 순위 | 예측 변수 | 기여도 | 부분 |
|---|---|---|---|
| 1 | Marital-status | 2604.58 | 0.2353 |
| 2 | Relationship | 2459.85 | 0.2223 |
| 3 | Capital-gain | 1615.17 | 0.1459 |
| 4 | Education | 1246.62 | 0.1126 |
| 5 | Age | 1143.33 | 0.1033 |
| 6 | Occupation | 1127.67 | 0.1019 |
| 7 | Hours-per-week | 392.87 | 0.0355 |
| 8 | Capital-loss | 219.48 | 0.0198 |
| 9 | Sex | 126.72 | 0.0114 |
| 10 | Workclass | 85.85 | 0.0078 |
| 11 | Native-country(수정) | 25.16 | 0.0023 |
| 12 | Race | 20.28 | 0.0018 |
단변량 탐색에서 눈에 띄던 성별·인종이 9위(0.0114)와 12위(0.0018)로 내려앉고, 기혼여부·가족관계·직장 외 수입·교육·나이가 상위를 차지했다. Race의 부분 기여도 0.0018은 Marital-status의 0.2353의 130분의 1이다.


문항 1 — 연속형 네 변수는 서로 무관했고, 주성분은 55.6%만 설명했다
다변량 분석은 연속형 네 변수만 대상으로 했고, 결과는 상관이 사실상 없다는 것이었다.
상관행렬은 다음과 같았다(행별 방법으로 추정했다고 출력에 명시되어 있다).
| Age | Capital-gain | Capital-loss | Hours-per-week | |
|---|---|---|---|---|
| Age | 1.0000 | 0.0772 | 0.0569 | 0.0716 |
| Capital-gain | 0.0772 | 1.0000 | −0.0314 | 0.0822 |
| Capital-loss | 0.0569 | −0.0314 | 1.0000 | 0.0545 |
| Hours-per-week | 0.0716 | 0.0822 | 0.0545 | 1.0000 |
상관계수의 절댓값 최대가 0.0822(Capital-gain–Hours-per-week)다. 네 변수는 서로 거의 독립이었다. 이어서 수행한 주성분 분석의 고유값은 이렇다.
| 성분 | 고유값 | 설명 비율 | 누적 |
|---|---|---|---|
| 성분 1 | 1.1917 | 29.8% | 29.8% |
| 성분 2 | 1.0306 | 25.8% | 55.6% |
| 성분 3 | 0.8978 | — | — |
| 성분 4 | 0.8798 | — | — |
고유값이 1을 넘는 성분이 둘이어서 '주성분 2개 채택'이 나왔지만, 그 둘이 설명하는 것은 전체 변동의 55.6%뿐이다. 부하량 그림에서 Age와 Hours-per-week가 성분 1 축에 거의 겹쳐 놓이고, Capital-loss는 성분 2의 양(+0.8) 방향, Capital-gain은 음(−0.6) 방향으로 서로 반대편에 놓였다. 스크리 그림도 1.19에서 0.88까지 완만하게 떨어져 꺾임이 없다.
이 숫자들이 있어야 뒤에 나오는 결과 하나가 설명된다 — 주성분을 저장해 다시 돌린 판별분석의 오분류율(23.1846%)이 원 변수 판별분석(22.7379%)보다 나빴다. 상관이 0.08 이하인 변수들을 두 축으로 압축하면 없앨 중복이 없는 대신 44.4%의 변동을 그냥 잘라 내는 셈이기 때문이다.

문항 1 — 이상값 311건 중 229건이 하나의 값이었다
이상값을 지웠는지가 아니라, 지우지 않기로 한 근거를 어디서 찾았는지가 이 절의 내용이다.
분위수 범위 이상값 탐색을 꼬리 분위수 0.1 · Q 3으로 수행했다. 이상값 정의는 1분위수와 3분위수로부터 분위수 간 범위의 Q배를 넘는 값이고, 12개 변수 중 이상값이 나온 것은 Capital-gain 하나뿐이었다.
| 열 | 10% 분위수 | 90% 분위수 | 낮은 임계 | 높은 임계 | 이상값 수 |
|---|---|---|---|---|---|
| Capital-gain | 0 | 5,013 | −15,039 | 20,052 | 311 |
여기서 앞 절의 분위수 표와 어긋나 보이는 값이 하나 있다. 분포 출력에서 Capital-gain의 90% 분위수는 0인데 이 표에는 5,013으로 적혀 있다. 이유는 같은 화면에 JMP가 직접 적어 두었다 — 중앙값에서의 큰 그룹을 방지하기 위해 일부 분위수가 늘려졌습니다. 표본의 90% 이상이 0이라 10%·90% 분위수가 모두 0이 되면 임계값이 0으로 붕괴하므로, JMP가 위쪽 분위수를 0이 아닌 값까지 밀어 올린 것이다. 임계값은 그렇게 얻은 5,013으로 계산되어 있다 — 낮은 임계 0 − 3 × 5,013 = −15,039, 높은 임계 5,013 + 3 × 5,013 = 20,052.
높은 임계 20,052를 넘은 311건의 값 분포가 함께 출력되었다 — 22040(1건), 25124(4건), 25236(14건), 27828(56건), 34095(4건), 41310(3건), 99999(229건). 즉 이상값 311건 중 229건이 99999라는 하나의 값이고, 나머지도 여섯 개의 특정 값에 몰려 있다. 연속적으로 흩어진 극단값이 아니라 소수의 값에 뭉쳐 있는 형태였다.
9모음값 탐색 결과도 함께 실려 있다.
| 열 | 개수 | 가장 높은 9모음값 | 90% 분위수 |
|---|---|---|---|
| Capital-gain | 229 | 99,999 | 5,013 |
| Hours-per-week | 123 | 99 | 55 |
Hours-per-week에도 주 99시간이 123건 있었다. 두 변수 모두 상한에 값이 뭉쳐 있는 형태 — 조사 상한에서 잘린 값으로 보이는 구조 — 였지만, 이상값으로 처리해 제외하지는 않았다. 근거는 데이터 창을 직접 열어 확인한 것이었다. 99999를 가진 행(행 번호 26826)이 Never-married · Prof-specialty · Not-in-family · White · Male이었고, 전문직처럼 실제로 높은 수입을 내는 직업이므로 잘못 입력된 값이 아니라고 판단했다.
지금 다시 보면 이 판단에는 빈틈이 있다. 229건이 정확히 같은 값 99999라는 것은 실제 수입의 분포라기보다 상한 절단(top coding)의 흔적으로 읽는 편이 자연스럽고, 그렇다면 '제외하지 않는다'와 '그 값을 그대로 회귀·트리에 넣는다'는 다른 결정이다. 작업용 덱의 같은 슬라이드에도 ‘나중에 해볼 것’이라는 메모가 남아 있다. 대회 시간 안에는 대안(상한 지시변수 추가, 절단 회귀)을 시도하지 못했다.

문항 1 모형 (1) — 판별분석 22.7%에서 의사결정나무 15.2%로
선형 판별 경계로는 22.7%가 한계였고, 조건부 분할로 바꾸자 오분류율이 3분의 2로 줄었다. 과적합이 없었다는 것은 ROC 두 벌로 확인했다.
판별분석은 사전확률을 발생횟수에 비례하도록 설정해(0: 0.7521, 1: 0.2479) 수행했다.
| 모형 | 개수 | 오분류 수 | 오분류 비율 | 엔트로피 R² | −2×로그 우도 |
|---|---|---|---|---|---|
| 판별분석 (원 변수) | 45,224 | 10,283 | 22.7379% | 0.14483 | 43,314.5 |
| 판별분석 (주성분 저장 후) | 45,224 | — | 23.1846% | 0.14150 | — |
원 변수 판별분석의 혼동행렬은 다음과 같았다. 실제 1(5만 불 이상) 11,210건 중 2,100건만 맞혔다 — 재현율 18.7%다.
| 실제 → 예측 | 0 | 1 |
|---|---|---|
| 0 | 32,841 | 1,173 |
| 1 | 9,110 | 2,100 |
의사결정나무는 정확도 향상이 멈추는 최소의 분할까지 분할했다. 첫 분할은 Marital-status로, (Married-civ-spouse, Married-AF-spouse) 14,231건과 (Widowed, Divorced, Married-spouse-absent, Separated, Never-married) 16,229건으로 갈렸다(루트 G² 33,991.26, LogWorth 1466.8856).
| 측도 | 훈련 | 검증 | 정의 |
|---|---|---|---|
| 엔트로피 R² | 0.4185 | 0.4204 | 1 − Loglike(모형)/Loglike(0) |
| 일반화 R² | 0.5558 | 0.5566 | (1−(L(0)/L(모형))^(2/n))/(1−L(0)^(2/n)) |
| 평균 −Log p | 0.3266 | 0.3227 | Σ −Log(ρ[j])/n |
| RASE | 0.3232 | 0.3199 | √(Σ(y[j]−ρ[j])²/n) |
| 평균 절대 편차 | 0.2091 | 0.2064 | Σ |y[j]−ρ[j]|/n |
| 오분류 비율 | 0.1516 | 0.1457 | Σ (ρ[j]≠ρMax)/n |
| N | 30,218 | 15,006 |
22.7%에서 15.2%로 떨어졌다. 목표변수와 변수들의 관계가 선형 판별 경계보다 조건부 분할에 잘 맞았다는 뜻이다.
오분류율만으로는 모형이 상위 구간을 얼마나 잘 골라내는지 알 수 없어 ROC와 Lift를 훈련·검증 두 벌로 확인했다.
| 훈련 | 검증 | |
|---|---|---|
| ROC 곡선 아래 면적 | 0.8998 | 0.8962 |
| Lift 최대 (5만 불 이상 클래스) | 약 4.0 (부분 0.05 부근) | 약 4.0 (부분 0.05 부근) |
| Lift 최대 (5만 불 미만 클래스) | 약 1.33 | 약 1.33 |
훈련 0.8998과 검증 0.8962의 차이가 0.0036이고 오분류 비율도 0.1516 대 0.1457이다. '정확도 향상이 멈추는 최소의 분할'까지만 자른 결과 과적합이 사실상 없는 상태였다는 것이 두 지표에서 함께 확인된다.
Lift 곡선은 다른 이야기를 한다. 5만 불 이상 클래스의 Lift가 상위 5% 구간에서 4.0에 근접한다 — 모형 점수 상위 5%만 뽑으면 무작위 추출보다 약 4배 밀도로 고소득자를 골라낼 수 있다는 뜻이고, 부분 0.30에서도 2.5 부근을 유지한다. 반면 5만 불 미만 클래스는 1.33을 넘지 못한다. 오분류율 14~15%라는 단일 숫자보다 이 비대칭이 모형의 쓸모를 더 정확히 말해 준다.


문항 1 모형 (2) — 좌·우 서브트리를 끝까지 읽으면 임계값이 서로 다르다
노드마다 개수·G²·LogWorth가 붙어 있어, 같은 변수가 결혼 상태에 따라 다른 임계값으로 쓰였다는 것이 보인다.
루트가 Marital-status로 갈린 뒤 좌·우 서브트리는 각각 한 장씩 캡처되어 있다. 두 서브트리의 개수 합은 14,231 + 16,229 = 30,460이다.
좌측 노드 — Marital-status(Married-civ-spouse, Married-AF-spouse) · 개수 14,231 · G² 19,580.562 · LogWorth 574.12466
| 층 | 분할 | 개수 | G² | LogWorth |
|---|---|---|---|---|
| 1 | Education(Prof-school, Doctorate, Masters, Bachelors) | 4,182 | 4,929.0114 | 120.53696 |
| 2 | Capital-gain ≥ 5178 | 615 | 14.841618 | — |
| 2 | Capital-gain < 5178 | 3,567 | 4,490.8186 | 58.746666 |
| 3 | Capital-loss ≥ 1825 | 370 | 112.60019 | — |
| 3 | Capital-loss < 1825 | 3,197 | 4,166.4069 | 30.163529 |
| 4 | Occupation(사무·판매·전문·경영 계열 7수준) | 2,842 | 3,571.458 | — |
| 4 | Occupation(생산·운송·서비스 계열 6수준) | 355 | 465.29021 | — |
| 1 | Education(Assoc-acdm 이하 12수준) | 10,049 | 12,812.44 | 301.474 |
| 2 | Capital-gain ≥ 5178 | 484 | 112.43227 | — |
| 2 | Capital-gain < 5178 | 9,565 | 11,723.711 | 115.61694 |
| 3 | Occupation(사무·판매·전문·경영 계열 6수준) | 3,795 | 5,167.9452 | 39.676141 |
| 4 | Capital-loss ≥ 1848 | 181 | 155.93847 | 27.79922 |
| 5 | Capital-loss < 2002 / ≥ 2002 | 145 / 36 | 11.946555 / 40.48813 | — |
| 4 | Capital-loss < 1848 | 3,614 | 4,866.4679 | 34.136171 |
| 5 | Age ≥ 31 | 3,036 | 4,161.1021 | 21.798458 |
| 6 | Hours-per-week ≥ 35 / < 35 | 2,751 / 285 | 3,797.4963 / 287.98014 | — |
| 5 | Age < 31 | 578 | 590.4572 | — |
| 3 | Occupation(생산·운송·서비스 계열 8수준) | 5,770 | 6,134.7254 | 48.02708 |
| 4 | Education(Assoc-acdm, Assoc-voc, Some-college, HS-grad, 12th) | 4,534 | 5,205.1628 | 38.779951 |
| 5 | Age ≥ 29 | 3,955 | 4,739.623 | 31.561147 |
| 6 | Capital-loss ≥ 1848 | 138 | 162.43143 | 28.961252 |
| 7 | Capital-loss < 2002 / ≥ 2002 | 98 / 40 | 26.825343 / 30.141613 | — |
| 6 | Capital-loss < 1848 | 3,817 | 4,459.3659 | — |
| 5 | Age < 29 | 579 | 335.74025 | — |
| 4 | Education(10th 이하 7수준) | 1,236 | 732.77652 | — |
우측 노드 — Marital-status(Widowed, Divorced, Married-spouse-absent, Separated, Never-married) · 개수 16,229 · G² 8,065.93 · LogWorth 551.51337
| 층 | 분할 | 개수 | G² | LogWorth |
|---|---|---|---|---|
| 1 | Capital-gain ≥ 7262 | 317 | 95.555946 | — |
| 1 | Capital-gain < 7262 | 15,912 | 6,331.6748 | 198.54333 |
| 2 | Education(Doctorate, Prof-school, Masters, Bachelors) | 3,336 | 2,794.5137 | 68.08356 |
| 3 | Age ≥ 28 | 2,376 | 2,366.2209 | 39.994251 |
| 4 | Hours-per-week ≥ 44 / < 44 | 873 / 1,503 | 1,099.9319 / 1,133.0575 | — |
| 3 | Age < 28 | 960 | 209.63113 | — |
| 2 | Education(Assoc-acdm 이하 12수준) | 12,576 | 2,871.275 | 56.406724 |
| 3 | Age ≥ 29 | 7,145 | 2,350.1205 | 34.181438 |
| 4 | Occupation(전문·경영·보호·공예·기술·운송·판매 7수준) | 3,304 | 1,638.1351 | — |
| 4 | Occupation(사무·양식·기계·처리·기타서비스·가정부 6수준) | 3,841 | 567.80367 | — |
| 3 | Age < 29 | 5,431 | 340.2838 | — |
두 서브트리를 나란히 놓으면 이런 것들이 드러난다.
- Capital-gain 임계가 다르다 — 기혼 쪽은 5178, 미혼·이혼 쪽은 7262에서 갈렸다. 같은 직장 외 수입이라도 결혼 상태에 따라 5만 불을 가르는 지점이 달랐다.
- Age 임계가 다르다 — 기혼 쪽은 29와 31, 미혼 쪽은 28과 29였다. 나이 경계가 28~31에 몰려 있다.
- Hours-per-week 임계도 갈렸다 — 기혼 쪽은 35시간, 미혼 고학력 쪽은 44시간이었다.
- 기혼 쪽 G²가 두 배 이상 크다 — 개수는 14,231 대 16,229로 비슷한데 G²는 19,580.562 대 8,065.93이다. 미혼·이혼 집단은 이미 5만 불 미만으로 쏠려 있어 더 쪼갤 불순도가 적었고, 실제로 우측 서브트리는 좌측보다 얕게 끝났다.
이 표를 만들면서 확인하지 못한 것이 하나 있다. 좌·우 노드 개수의 합은 30,460인데 적합 상세 정보의 훈련 N은 30,218이다. 242행 차이가 나며, 서로 다른 실행 결과가 보고서에 섞여 들어간 것으로 보인다.
문항 1 모형 (3) — 로지스틱: AUC 0.905, 그리고 뒤집힌 변수 순위
같은 데이터에서 '어느 변수가 중요한가'의 답이 모형 종류에 따라 순서까지 바뀌었다.
전체 모형 검정과 적합도는 다음과 같았다.
| 모형 | −1×로그 우도 | DF | 카이제곱 | Prob>ChiSq |
|---|---|---|---|---|
| 차이 | 10,635.558 | 60 | 21,271.12 | <.0001* |
| 전체 | 14,689.475 | |||
| 축소 | 25,325.033 |
| 측도 | 값 |
|---|---|
| 엔트로피 R²(U) | 0.4200 |
| 일반화 R² | 0.5569 |
| RASE | 0.3227 |
| 오분류 비율 | 0.1520 |
| AICc / BIC | 29,501.1 / 30,032.8 |
| N | 45,224 |
훈련 혼동행렬과 AUC는 이랬다.
| 실제 → 예측 | 0 | 1 | 클래스별 재현율 |
|---|---|---|---|
| 0 | 31,582 | 2,432 | 92.85% |
| 1 | 4,440 | 6,770 | 60.39% |
AUC는 0.90533으로 의사결정나무의 훈련 AUC 0.8998보다 오히려 높았다. 5만 불 이상 클래스의 재현율도 60.39%로, 판별분석의 18.7%와는 다른 수준이다.
모수추정값 중 유의성이 뚜렷했던 항을 옮기면 다음과 같다. 목표변수 코딩상 음의 추정값이 5만 불 이상 쪽으로 미는 방향이다.
| 항 | 추정값 | 표준 오차 | 카이제곱 | Prob>ChiSq |
|---|---|---|---|---|
| 절편 | 6.27155612 | 0.3208783 | 382.01 | <.0001* |
| Capital-gain | −0.0003181 | 8.7083e-6 | 1334.6 | <.0001* |
| Hours-per-week | −0.0288011 | 0.0013711 | 441.22 | <.0001* |
| Capital-loss | −0.0006456 | 3.1158e-5 | 429.26 | <.0001* |
| Age | −0.0249779 | 0.0013875 | 324.07 | <.0001* |
| Sex[Female] | 0.35674044 | 0.032546 | 120.15 | <.0001* |
| Marital-status[Never-married] | 1.11044294 | 0.1019708 | 118.59 | <.0001* |
| Occupation[Exec-managerial] | −0.9255265 | 0.0913084 | 102.74 | <.0001* |
| Marital-status[Married-civ-spouse] | −1.6176709 | 0.1705345 | 89.98 | <.0001* |
| Education[Prof-school] | −2.3649177 | 0.2692588 | 77.14 | <.0001* |
| Education[Doctorate] | −2.3408914 | 0.2753546 | 72.27 | <.0001* |
| Occupation[Prof-specialty] | −0.6733612 | 0.0941806 | 51.12 | <.0001* |
| Education[Masters] | −1.7587939 | 0.2534852 | 48.14 | <.0001* |
| Occupation[Farming-fishing] | 0.83945748 | 0.1267491 | 43.86 | <.0001* |
| Native-country(수정)[North America] | −0.3914239 | 0.0752989 | 27.02 | <.0001* |
| Occupation[Priv-house-serv] | 1.84957854 | 0.7012236 | 6.96 | 0.0083* |
| Education[Preschool] | 5.64120439 | 3.6638406 | 2.37 | 0.1236 |
| Occupation[Armed-Forces] | −0.3505205 | 0.8286979 | 0.18 | 0.6723 |
표 아래쪽 세 행이 앞에서 말한 극소 수준의 결과다. Priv-house-serv(232건) 0.7012 · Education[Preschool](72건) 3.6638 · Armed-Forces(14건) 0.8287로, 같은 종류의 다른 항들과 자릿수가 다르다. 나머지 직업 항의 표준오차는 0.09~0.13이고 나머지 교육수준 항은 0.25~0.44이므로, 각각 다섯 배에서 아홉 배, 여덟 배에서 열다섯 배다. 셋 다 카이제곱이 7 이하로 떨어져 Preschool과 Armed-Forces는 유의하지 않게 나왔다.
그리고 이 문항에서 가장 흥미로운 지점이 효과 요약이다.
| 순위 | 소스 | LogWorth | JMP 예측변수 선별에서의 순위 |
|---|---|---|---|
| 1 | Capital-gain | 569.163 | 3위 (기여도 1615.17) |
| 2 | Education | 302.641 | 4위 (1246.62) |
| 3 | Occupation | 170.282 | 6위 (1127.67) |
| 4 | Hours-per-week | 99.376 | 7위 (392.87) |
| 5 | Capital-loss | 97.112 | 8위 (219.48) |
| 6 | Age | 72.308 | 5위 (1143.33) |
| 7 | Relationship | 65.427 | 2위 (2459.85) |
| 8 | Workclass | 38.422 | 10위 (85.85) |
| 9 | Marital-status | 31.755 | 1위 (2604.58) |
| 10 | Sex | 27.863 | 9위 (126.72) |
| 11 | Native-country(수정) | 8.827 | 11위 (25.16) |
| 12 | Race | 4.071 | 12위 (20.28) |
예측변수 선별에서 1·2위였던 Marital-status와 Relationship이 로지스틱 효과 요약에서는 9위·7위로 내려앉고, 3위였던 Capital-gain이 1위로 올라선다. 의사결정나무는 실제로 Marital-status를 루트 분할로 골랐는데, 로지스틱에서는 같은 변수의 기여가 Capital-gain의 18분의 1이다. 조건부 분할에 강한 변수와 선형 로그오즈에 강한 변수가 다르다는 것을 두 표가 나란히 보여 준다. 변수 중요도를 하나의 순위표로 보고하는 관행이 왜 위험한지가 여기 있다.
JMP 세 모형의 훈련 성능을 한 표로 모으면 이렇다.
| 모형 | 오분류 비율 | 엔트로피 R² | AUC |
|---|---|---|---|
| 판별분석 (원 변수) | 22.7379% | 0.14483 | — |
| 판별분석 (주성분) | 23.1846% | 0.14150 | — |
| 로지스틱 | 15.20% | 0.4200 | 0.90533 |
| 의사결정나무 | 15.16% 훈련 / 14.57% 검증 | 0.4185 / 0.4204 | 0.8998 / 0.8962 |

문항 1 모형 (4) — EC Miner 네 모형: 개선은 소수 클래스에서 왔다
같은 데이터를 두 번째 소프트웨어에 올려 훈련 2/3 · 검증 1/3으로 다시 풀었다. 그리고 JMP와 결과가 갈리는 지점이 나왔다.
같은 데이터를 두 번째 소프트웨어에 올려, 문항 1·2 각각에 대해 훈련용 2/3와 검증용 1/3으로 나눠 네 모형을 돌렸다.
표를 읽기 전에 한 가지. 제출 보고서에서 두 번째 모형이 실린 슬라이드의 제목은 앞 장과 똑같이 ‘EC 마이너: Logistic’이지만, 그 안에 붙은 결과 창의 이름은 LDA다. 제목이 복사되면서 고쳐지지 않은 것으로 보고, 아래 표에는 창에 찍힌 이름대로 적었다.
| 모형 | Model (2/3) 오분류 수 | Model 오분류율 | Test (1/3) 오분류 수 | Test 오분류율 |
|---|---|---|---|---|
| Logistic | 6,204 | 20.58% | 3,154 | 20.92% |
| LDA (판별분석) | 8,736 | 28.98% | 4,308 | 28.58% |
| CART | 4,253 | 14.11% | 2,111 | 14.00% |
| SVM | 4,215 | 13.98% | 2,109 | 13.99% |
클래스별로 보면 차이가 분명해진다.
| 모형 (Test 1/3) | 실제 0 → 예측 0 | 실제 0 → 예측 1 | 실제 1 → 예측 0 | 실제 1 → 예측 1 |
|---|---|---|---|---|
| Logistic | 10,770 (95.58%) | 498 (4.42%) | 2,656 (69.77%) | 1,151 (30.23%) |
| LDA | 8,441 (74.91%) | 2,827 (25.09%) | 1,481 (38.90%) | 2,326 (61.10%) |
| CART | 10,577 (93.87%) | 691 (6.13%) | 1,420 (37.30%) | 2,387 (62.70%) |
| SVM | 10,563 (93.74%) | 705 (6.26%) | 1,404 (36.88%) | 2,403 (63.12%) |
전체 오분류율의 개선(20.92% → 13.99%)은 대부분 소수 클래스를 잡아내는 능력에서 왔다. 실제 1을 맞힌 비율이 로지스틱 30.23%에서 SVM 63.12%로 두 배 넘게 올랐고, 그 대가로 실제 0을 틀리는 비율은 4.42%에서 6.26%로 조금 올랐다. LDA는 반대 방향의 극단이다 — 실제 1을 61.10%나 맞히지만 실제 0을 25.09%나 틀려 전체 오분류율이 28.58%로 가장 나쁘다.
두 도구를 병행했기 때문에 드러난 것이 하나 더 있다. JMP에서는 로지스틱(15.20%)과 의사결정나무(15.16%)가 사실상 동급이었는데, EC Miner에서는 Logistic 20.92% 대 CART 14.00%로 7%p나 벌어졌다. 같은 모형 계열이라도 소프트웨어의 기본 설정 — 범주형 변수 코딩, 정지 규칙 — 에 따라 결과가 이만큼 달라진다. 한 도구의 결과만 보고 '로지스틱은 트리보다 나쁘다'고 적었다면 틀린 결론이 됐을 것이다.

문항 1 — 틀린 예측만 따로 모아 다시 분석했다
이 보고서에서 가장 시간을 많이 쓴 부분은 성능표가 아니라 오분류 행의 부분집합이었다.
모형이 틀린 행만 부분집합으로 만들어 변수별로 다시 분석했다. 결과는 다음과 같았다.
| 변수 | 오분류 행에서 발견한 패턴 | 해석 |
|---|---|---|
| Capital-gain | 오분류 행들은 직장 외 수입이 높은 사람에 대해 1이 높게 나타났다 | 다른 변수들이 0을 가리키는데도 직장 외 수입이 많아 5만 불 이상인 사람을 틀렸다 |
| Workclass | '이하'라고 오분류한 행들은 직장형태가 대부분 Private였다 | 개인 일을 하는 사람의 수입은 예측하기 어렵다 |
| Education | 오분류된 사람 중 5만 불 이상을 받는 쪽은 직장에서 버는 돈이 아니라 지출(Capital-loss)이 많았고, 학사·석사 학위자와 전문대 재학자가 많았다 | 고학력·고지출 집단이 모형의 사각지대였다 |
| Marital-status | 기혼자인데 실제로는 5만 불 이상인 사람을 0으로 분류한 오분류가 많았다 | 1위 예측 변수인 결혼여부가 오히려 오분류를 만드는 지점이 있었다 |
| Occupation | 경영(Exec-managerial)과 교수·전문직(Prof-specialty)의 오분류율이 높았다 | 5만 불 이상 비율이 높은 직업일수록 그 안의 분산도 커서 예측이 어렵다 |
이어서 예측 프로파일러로 변수 간 상호작용을 확인했다.
- 의사결정나무 프로파일러 — Capital-gain(직장 외 수입)이 있어야 다른 변수들의 영향이 커진다.
- 로지스틱 프로파일러 — 나이가 많아지면 다른 변수들의 영향력이 줄어든다. Capital-gain이 없는 사람은 다른 변수의 영향을 적게 받고 5만 불 이하인 경우가 많으며, Capital-gain이 조금 있는 사람이 다른 변수들의 영향을 많이 받는다.
- 직업별 프로파일러 — 14개 직업을 각각 나눠 프로파일러를 다시 확인했다.
직업별 프로파일러가 이 문항에서 가장 공을 들인 부분이다. 원본에는 14개 직업의 번호와 한글 대역이 함께 적혀 있고, 일반적인 번역과 다른 항목이 있어(Farming-fishing을 '양식업', Handlers-cleaners를 '처리기 클리너', Prof-specialty를 '전문'으로 적었다) 표로 남겨 둔다.
| # | Occupation | 원본의 한글 대역 | 표본 수 | 교육수준의 영향도 |
|---|---|---|---|---|
| 4 | Exec-managerial | 경영진 | 5,984 | 상대적으로 교육수준에 영향을 받는다 |
| 10 | Prof-specialty | 전문 | 6,008 | 교육에 영향을 많이 받는다 |
| 5 | Farming-fishing | 양식업 | 1,480 | 상대적으로 영향을 덜 받는다 |
| 6 | Handlers-cleaners | 처리기 클리너 | 2,046 | 상대적으로 영향을 덜 받는다 |
| 9 | Priv-house-serv | 가정부 | 232 | 교육수준에 영향을 많이 받지 않는다 |
| 1 · 3 · 7 · 8 · 11 · 12 · 13 · 14 | Adm-clerical · Craft-repair · Machine-op-inspct · Other-service · Protective-serv · Sales · Tech-support · Transport-moving | 사무 행정 · 공예 수리 · 기계 조작 · 기타 서비스 · 보호 서비스 · 판매 · 기술 지원 · 운송 이동 | 976 ~ 6,021 | 보고서에 별도 언급 없음 |
| 2 | Armed-Forces | 군 | 14 | 보고서에 별도 언급 없음 |
이 문항의 결론은 변수의 영향도가 전역적으로 고정된 값이 아니라 다른 변수의 수준에 따라 달라진다는 것이었다. 단일 계수표만으로는 보이지 않는 구조였고, 프로파일러를 직업 14개로 쪼개서 하나씩 확인해야 드러났다.
동시에 이 분석의 한계도 표에서 그대로 보인다. '가정부는 교육수준에 거의 영향을 받지 않는다'는 관찰은 232건 위에서 나온 것이고, 그 직업의 로지스틱 표준오차는 0.7012로 다른 직업 항의 다섯 배가 넘는다. Armed-Forces는 14건이라 프로파일러 곡선 자체를 신뢰할 수 없다. 관찰의 신뢰도가 직업마다 크게 달랐다는 사실은 도수분포와 표준오차를 나란히 놓아야 드러나는데, 대회 보고서에는 그 대조를 적지 못했다.

문항 2 — 9,568인가 9,567인가: 데이터와 기술통계
결측도 없고 이상값도 없는 데이터였다. 대신 문제 설명의 행 수와 JMP 출력의 행 수가 하나 어긋났다.
문항 2의 데이터는 복합형 화력 발전소가 최적 상황일 때의 전력 생산량 기록 9,568개(2006~2011)였다. 변수는 다섯이다.
| 변수명 | 의미 및 범위 |
|---|---|
| AT | 시간당 평균 온도, 1.81℃ ~ 37.81℃ |
| V | 시간당 평균 배기 압력, 25.36 ~ 81.56 cm Hg |
| AP | 시간당 평균 주변 압력, 992.89 ~ 1033.3 millibar |
| RH | 시간당 평균 습도, 25.56% ~ 100.16% |
| PE | 시간당 전력 생산량 (목표변수), 420.2 ~ 495.76 MW |
결측값 탐색 결과 AT·V·AP·RH 네 열의 결측 수가 모두 0이었다. 이상값도 문항 1과 같은 설정(꼬리 분위수 0.1 · Q 3)으로 탐색했는데 네 열 모두 0건이었다.
| 열 | 10% 분위수 | 90% 분위수 | 낮은 임계 | 높은 임계 | 이상값 수 |
|---|---|---|---|---|---|
| AT | 9.338 | 29.242 | −50.374 | 88.954 | 0 |
| V | 39.72 | 71.58 | −55.86 | 167.16 | 0 |
| AP | 1006.04 | 1020.82 | 961.692 | 1065.17 | 0 |
| RH | 52.746 | 91 | −62.016 | 205.762 | 0 |
같은 기준을 두 문항에 똑같이 적용했더니 한쪽에서는 311건이 나오고 다른 쪽에서는 0건이 나왔다. 문항 1의 Capital-gain은 90% 분위수가 5,013인데 최대가 99,999이고, 문항 2의 AT는 90% 분위수 29.242에 높은 임계가 88.954로 실제 최대(37.11)보다 한참 위에 있다. 센서로 측정한 물리량과 자기보고식 설문 항목의 차이가 이 표 한 장에 그대로 나온다.
기술통계 전체를 복원하면 다음과 같다.
| 측도 | AT (℃) | V (cm Hg) | AP (millibar) | RH (%) | PE (MW) |
|---|---|---|---|---|---|
| 최대값 (100%) | 37.11 | 81.56 | 1033.3 | 100.16 | 495.76 |
| 97.5% | 32 | 75.08 | 1025.68 | 97.106 | 486.528 |
| 90.0% | 29.242 | 71.58 | 1020.82 | 91 | 479.022 |
| 75.0% | 25.72 | 66.54 | 1017.26 | 84.83 | 468.43 |
| 50.0% (중앙값) | 20.35 | 52.08 | 1012.94 | 74.97 | 451.52 |
| 25.0% | 13.51 | 41.74 | 1009.1 | 63.32 | 439.75 |
| 10.0% | 9.338 | 39.72 | 1006.038 | 52.746 | 433.43 |
| 2.5% | 6.13 | 37.492 | 1002.302 | 42.17 | 428.892 |
| 최소값 (0%) | 1.81 | 25.36 | 992.89 | 25.56 | 420.26 |
| 평균 | 19.651883 | 54.30717 | 1013.2611 | 73.306628 | 454.3635 |
| 표준편차 | 7.4525904 | 12.707854 | 5.935886 | 14.599222 | 17.067247 |
| N | 9,567 | 9,567 | 9,567 | 9,567 | 9,567 |
여기서 두 가지가 확인된다.
- JMP 쪽 실제 분석 N은 9,567이다. 문제 설명의 데이터 규모는 9,568개인데 JMP 분포와 MLR 적합 요약(관측값 수 9,567), 단계별 회귀의 DFE 9,565(= 9,567 − 2)가 모두 9,567에 맞춰져 있다. 그런데 EC Miner 쪽 ANOVA 표의 합계 자유도를 역산하면 Model 7,654행 + Test 1,914행 = 9,568로 딱 맞는다. 결측이 없다고 보고했으므로 JMP에서 한 행이 왜 빠졌는지는 원본에 나타나지 않는다.
- MLR의 중심화 값이 이 평균들이다. 뒤에 나오는 교호작용항의 AT−19.6519, V−54.3072, AP−1013.26, RH−73.3066은 각각 위 표의 평균을 반올림한 값이다. 중심화가 임의의 상수가 아니라 표본 평균이었다는 사실이 이 표를 붙여야 확인된다.
분포 모양도 함께 읽을 수 있다. V는 40 부근과 65~70 부근에 봉우리가 두 개 있는 이봉 분포이고(중앙값 52.08이 두 봉우리 사이의 골에 놓인다), PE는 435~445 구간에 가장 두꺼운 봉우리가 있는 우측 꼬리 분포다.

문항 2 — 네 변수와 PE의 관계, 주성분 1개, 그리고 MLR
변수 하나씩 PE에 대응시켜 보니 AT만 선형이었고 V는 굽어 있었다. 그 굽음이 뒤에 교호작용항으로 들어갔다.
그래프 빌더의 평활 곡선으로 변수 하나씩 PE와의 관계를 확인했다.
| 변수 | PE와의 관계 |
|---|---|
| AT (평균온도) | 반비례하는 선형적 경향. 평활 곡선이 AT 5 부근의 PE 493에서 AT 31 부근의 PE 428까지 거의 직선으로 떨어진다 |
| V (평균 배기압력) | 비선형적 경향. 곡선이 V 40에서 44 사이에 493에서 462까지 급락한 뒤 45~70 구간에서 완만해지고, 71 부근에서 되꺾여 아래로 돌아간다 |
| AP (평균 주변압력) | 비례하는 경향 |
| RH (평균 습도) | 비례하는 경향 |
변수 간 산점도 행렬에서는 AT–V가 상향 곡선, AP–AT · AP–V · RH–AT가 하향 곡선의 경향을 보였다. 주성분 분석과 요인분석 결과 주성분은 1개였다.
| 성분 | 고유값 | 설명 비율 | 누적 |
|---|---|---|---|
| 성분 1 | 2.4392 | 61% | 61% |
| 성분 2 | 0.9084 | 22.7% | 83.7% |
| 성분 3 | 0.5499 | — | — |
| 성분 4 | 0.1026 | — | — |
부하량 그림에서 AT와 V가 성분 1의 양(+) 방향에 거의 겹쳐 놓이고, AP는 성분 1 음·성분 2 음 방향, RH는 성분 1 음·성분 2 양(+0.72) 방향에 놓였다. 문항 1의 고유값(최대 1.1917, 누적 55.6%)과 대조하면 차이가 분명하다 — 문항 2의 네 설명변수는 실제로 하나의 축을 61%까지 공유했고, 문항 1의 네 변수는 서로 거의 독립이었다. 같은 '주성분 분석'이라는 절차가 두 문항에서 전혀 다른 진단을 내놓은 셈이다.
다중선형회귀(MLR)는 변수를 표본 평균으로 중심화한 뒤 2·3·4차 교호작용항까지 모두 넣어 적합했다. 효과 요약을 LogWorth 내림차순으로 보면 이렇다.
| 순위 | 소스 | LogWorth | p 값 |
|---|---|---|---|
| 1 | AT | 1739.783 | 0.00000 |
| 2 | V | 318.467 | 0.00000 |
| 3 | RH | 112.162 | 0.00000 |
| 4 | AT*V | 107.303 | 0.00000 |
| 5 | AP | 71.826 | 0.00000 |
| 6 | AT*V*AP | 28.828 | 0.00000 |
| 7 | V*AP | 19.520 | 0.00000 |
| 8 | AT*RH | 10.756 | 0.00000 |
| 9 | AP*RH | 6.437 | 0.00000 |
| 10 | AT*AP | 3.963 | 0.00011 |
| 11 | AT*V*AP*RH | 3.396 | 0.00040 |
| 12 | V*RH | 2.490 | 0.00324 |
| 13 | AT*V*RH | 1.600 | 0.02513 |
| 14 | AT*AP*RH | 0.388 | 0.40904 |
| 15 | V*AP*RH | 0.197 | 0.63605 |
AT의 LogWorth 1739.783은 2위 V(318.467)의 5.5배다. 4위에 이미 2차 교호작용 AT*V(107.303)가 AP 주효과(71.826)보다 앞서 올라온 것도 눈에 띈다 — 단독 주효과보다 온도-배기압력의 상호작용이 더 큰 기여를 했다는 뜻이고, V가 PE와 비선형 관계를 보인다는 탐색 결과와 이어진다. 15개 항 중 유의하지 않게 나온 것은 AT*AP*RH(p = 0.40904)와 V*AP*RH(p = 0.63605) 둘뿐이었지만, 이 두 항도 모형에서 빼지 않았다.
모수 추정값은 절편을 포함해 16행 전체가 이렇게 나왔다. 교호작용항의 이름에 중심화 값이 그대로 붙어 있어 어떤 상수로 뺐는지도 읽힌다.
| 항 | 추정값 | 표준 오차 | t 비 | Prob>|t| | VIF |
|---|---|---|---|---|---|
| 절편 | 251.27138 | 14.56093 | 17.26 | <.0001* | — |
| AT | −1.816557 | 0.016231 | −111.9 | <.0001* | 7.6869183 |
| V | −0.308623 | 0.007773 | −39.70 | <.0001* | 5.1268032 |
| AP | 0.2595906 | 0.014287 | 18.17 | <.0001* | 3.7786931 |
| RH | −0.125053 | 0.005464 | −22.88 | <.0001* | 3.3436802 |
| (AT−19.6519)*(V−54.3072) | 0.0201469 | 0.000901 | 22.36 | <.0001* | 2.2788742 |
| (AT−19.6519)*(AP−1013.26) | −0.010044 | 0.002595 | −3.87 | 0.0001* | 6.8494596 |
| (V−54.3072)*(AP−1013.26) | 0.0131046 | 0.001418 | 9.24 | <.0001* | 5.5846819 |
| (AT−19.6519)*(RH−73.3066) | −0.00607 | 0.000901 | −6.73 | <.0001* | 4.9685327 |
| (V−54.3072)*(RH−73.3066) | 0.0016847 | 0.000572 | 2.95 | 0.0032* | 5.3813434 |
| (AP−1013.26)*(RH−73.3066) | −0.005426 | 0.001066 | −5.09 | <.0001* | 4.0501672 |
| (AT−19.6519)*(V−54.3072)*(AP−1013.26) | −0.001565 | 0.000138 | −11.33 | <.0001* | 5.2460977 |
| (AT−19.6519)*(V−54.3072)*(RH−73.3066) | 0.0001076 | 0.000048 | 2.24 | 0.0251* | 3.8475123 |
| (AT−19.6519)*(AP−1013.26)*(RH−73.3066) | −0.000123 | 0.000149 | −0.83 | 0.4090 | 6.6530576 |
| (V−54.3072)*(AP−1013.26)*(RH−73.3066) | 4.8881e-5 | 0.000103 | 0.47 | 0.6361 | 6.6986264 |
| (AT−19.6519)*(V−54.3072)*(AP−1013.26)*(RH−73.3066) | 3.0043e-5 | 8.487e-6 | 3.54 | 0.0004* | 4.3658763 |
주효과의 부호에서 탐색 단계와 어긋나는 것이 하나 있다. 변수 하나씩 볼 때 RH는 PE와 비례했는데, 네 변수와 교호작용항을 함께 넣은 회귀에서 RH의 계수는 −0.125053(t = −22.88)으로 음수다. 습도가 높은 시간대는 대체로 온도가 낮은 시간대이므로(산점도 행렬의 RH–AT 하향 경향) 단변량에서 보이던 양의 관계는 온도를 통한 것이었고 온도를 함께 넣자 부호가 뒤집힌 것으로 읽힌다. 보고서는 이 뒤집힘을 따로 언급하지 않았다. 문항 1에서 성별·인종이 단변량과 다변량에서 다르게 보인 것과 같은 종류의 일이 여기서는 부호로 나타났다.
| 측도 | 값 |
|---|---|
| R² | 0.937454 |
| Adj-R² | 0.937382 |
| RMSE | 4.270848 |
| 반응 평균 | 454.3635 |
| 관측값 수 | 9,567 |
| 최대 VIF | 7.6869183 (AT) |
VIF는 모두 10 이하여서 그대로 진행했고, 스튜던트화 잔차 대 예측값 그림에도 경향이 없었다. 그런데 적합 결여 표에는 판정할 수 없는 상태가 남아 있다.
| 소스 | DF | 제곱합 | 평균 제곱 |
|---|---|---|---|
| 적합 결여 | 9,510 | 173,902.70 | 18.2863 |
| 순수 오차 | 41 | 0.00 | 0.0000 |
| 총 오차 | 9,551 | 173,902.70 |
순수 오차 제곱합이 0.00이다. 설명변수 조합이 완전히 겹치는 반복 관측이 41 자유도만큼 있었는데 그 안에서 PE가 전혀 흔들리지 않았다는 뜻이고, 그래서 적합 결여 검정의 F 비가 계산되지 않았다(Prob > F 칸이 비어 있다). 잔차 그림과 VIF만으로 모형을 통과시켰지만, 적합 결여를 통계적으로 판정할 수는 없는 상태였다.



문항 2 — 차원 축소 두 방법은 왜 졌는가
PCR은 전진선택이 한 단계에서 멈췄고, PLS는 요인 네 개를 다 쓰고서야 MLR을 겨우 따라잡았다.
PCA를 활용한 회귀는 주성분을 저장한 뒤 최소 BIC를 정지 규칙으로 삼은 전진선택 단계별 회귀로 적합했다.
| SSE | DFE | RMSE | R² | Adj-R² | Cp | p | AICc | BIC |
|---|---|---|---|---|---|---|---|---|
| 456,738.89 | 9,565 | 6.9102142 | 0.8361 | 0.8361 | 2 | 2 | 64,140.01 | 64,161.5 |
| 모수 | 추정값 | nDF | SS | F 비 | Prob>F |
|---|---|---|---|---|---|
| 절편 (잠금·입력됨) | 454.363498 | 1 | 0 | 0.000 | 1 |
| 주성분1 (입력됨) | −9.9922709 | 1 | 2,329,750 | 48,789.49 | 0 |
단계 기록에는 1단계에서 주성분1이 추가되고, 2단계에서 그것이 최선으로 특정되며 끝났다고 남아 있다. 즉 최소 BIC 기준의 전진선택이 한 단계에서 멈췄다 — 두 번째 주성분을 넣으면 BIC가 나빠지므로 넣지 않았다는 것이다. 절편 454.363498은 PE의 표본 평균과 같고, 계수 −9.9922709의 부호는 성분 1이 AT·V 쪽 양의 방향이라는 부하량과 짝을 이룬다(온도와 배기압력이 높아지는 방향으로 성분 1이 커질 때 전력 생산량이 줄어든다). 네 변수를 한 축으로 압축하면 R² 0.8361에서 더 늘어날 여지가 통계적으로 없었고, 원 변수 MLR의 0.937454와 0.10 이상 벌어졌다.
부분최소제곱(PLS)에서는 알고리즘 선택이 장비 제약에 걸렸다. NIPALS가 가장 안정적인 알고리즘 중 하나지만 컴퓨터 사양이 따라주지 않아 여러 번 시도해도 실행되지 않았고, 정확도는 다소 떨어지지만 SIMPLS를 썼다. 두 알고리즘의 차이를 따로 조사해 SIMPLS도 사용할 수 있음을 확인한 뒤 진행했다.
요인 수는 0부터 4까지 올리며 PRESS · van der Voet T² · Q² · 변동 설명량을 한 표에서 보고 정했다.
| 요인 수 | 제곱근 평균 PRESS | van der Voet T² | Prob > T² | 누적 Q² | R²X | 누적 R²X | R²Y | 누적 R²Y |
|---|---|---|---|---|---|---|---|---|
| 0 | 1.000105 | 4533.4434 | <.0001* | −0.000209 | 0.000000 | 0.000000 | 0.000000 | 0.000000 |
| 1 | 0.369911 | 1226.5378 | <.0001* | 0.863166 | 0.607896 | 0.607896 | 0.863260 | 0.863260 |
| 2 | 0.307669 | 551.12771 | <.0001* | 0.987047 | 0.154601 | 0.762497 | 0.042178 | 0.905437 |
| 3 | 0.289115 | 359.52665 | <.0001* | 0.998917 | 0.164137 | 0.926634 | 0.011070 | 0.916507 |
| 4 | 0.267170 | 0.000000 | 1.0000 | 0.999923 | 0.073366 | 1.000000 | 0.012189 | 0.928696 |
요인 수를 4로 정한 근거는 두 가지다. 제곱근 평균 PRESS가 요인 4에서 최소(0.267170)가 되고, van der Voet T²가 요인 4에서 0(Prob 1.0000)이 되어 최소 PRESS 모형과 유의한 차이가 없어진다 — 요인 3까지는 모두 p < .0001로 기각되었다. 설명변수가 넷이므로 요인 4는 곧 X 변동 100%를 쓰는 것이다. 예측식 PE 대 실제 PE 산점도에서 RMSE 4.13을 얻었다.
이 표에서 새로 읽히는 것은 요인 1이 이미 Y 변동의 86.3260%를 잡는다는 점이다. 요인 2·3·4가 추가로 기여한 것은 4.2178 + 1.1070 + 1.2189 = 6.5437%p에 불과하다. 반대로 X 변동은 요인 1이 60.7896%, 요인 2가 15.4601%, 요인 3이 16.4137%, 요인 4가 7.3366%로 고르게 나뉘었다. Y를 설명하는 방향은 사실상 첫 잠재변수 하나에 몰려 있고 — 주성분 1개가 61%를 설명한다는 PCA 결과와 같은 이야기다 — 나머지 요인은 X 쪽 변동만 채운다.
VIP 대 계수 그림에서 0.8 기준선을 넘는 변수는 둘뿐이었다.
| 변수 | VIP (근사) | 계수 (근사) | VIP 0.8 기준 |
|---|---|---|---|
| AT | 1.30 | −0.87 | 넘음 |
| V | 1.19 | −0.17 | 넘음 |
| AP | 0.72 | +0.03 | 미달 |
| RH | 0.61 | −0.20 | 미달 |
MLR 효과 요약에서 AT 1739.783 · V 318.467이 1·2위였던 것과 정확히 같은 순서다. 선형회귀의 LogWorth와 PLS의 VIP라는 서로 다른 두 지표가 같은 두 변수를 지목했다는 교차 확인이 된다.
JMP 세 모형의 결과를 정리하면 이렇다.
| 모델링 | R² | RMSE | 모형에 들어간 성분·요인 수 |
|---|---|---|---|
| MLR | 0.937454 | 4.270848 | 원 변수 4개 + 교호작용 11항 |
| PLS (SIMPLS) | 0.928696 | 4.13 | 잠재요인 4개 |
| PCA 활용 (단계별 회귀) | 0.8361 | 6.9102142 | 주성분 1개 |
차원 축소가 왜 졌는지가 오른쪽 열에 있다. PLS는 요인 네 개를 전부 써서 X 변동 100%를 소진하고서야 MLR에 근접했고, PCR은 BIC가 한 개 이상을 허락하지 않았다. 설명변수가 넷뿐인 문제에서 차원을 줄이는 일은 애초에 얻을 것이 없는 작업이었다.

문항 2 — EC Miner 네 모형, 최종 비교, 그리고 대상
두 번째 도구에서 같은 네 모형을 돌리자 JMP와 순위가 한 자리 뒤집혔다. 그 이유가 자유도 열에 남아 있었다.
EC Miner에서는 데이터를 랜덤 80% Model / 20% Test로 나누고 MLR·PCR·PLS·SVR 네 모형을 각각 적합해 평가했다. ANOVA 표의 자유도를 역산하면 Model 7,654행 · Test 1,914행으로 합이 9,568이다.
| 모델링 | 분할 | 회귀 DF | 잔차 평균제곱 | R² | RMSE | MAE | MAPE |
|---|---|---|---|---|---|---|---|
| MLR | Model | 4 | 20.76287 | 0.92865 | 4.55514 | 3.61055 | 0.79639 |
| MLR | Test | 4 | 20.83642 | 0.92906 | 4.55873 | 3.67843 | 0.81080 |
| PCR | Model | 4 | 47.74325 | 0.83593 | 6.90739 | 5.53401 | 1.21389 |
| PCR | Test | 4 | 47.95571 | 0.83673 | 6.91595 | 5.60906 | 1.23122 |
| PLS | Model | 2 | 39.88478 | 0.86290 | 6.31420 | 5.02489 | 1.10207 |
| PLS | Test | 2 | 39.71028 | 0.86466 | 6.29667 | 5.09444 | 1.11808 |
| SVR | Model | 4 | 17.22572 | 0.94080 | 4.14903 | 3.13441 | 0.69071 |
| SVR | Test | 4 | 19.34539 | 0.93414 | 4.39259 | 3.32241 | 0.73162 |
SVR이 네 모형 중 가장 좋았다. 검증 RMSE 4.39259 · MAE 3.32241 · MAPE 0.73162로, PE의 평균이 454 MW인 데이터에서 평균 절대 오차 3.3 MW · 상대 오차 0.73%다. 훈련(0.94080)과 검증(0.93414)의 R² 차이가 0.0067로 과적합도 크지 않았다.
그런데 JMP와 EC Miner에서 PLS의 성적이 달랐다. JMP PLS는 R² 0.928696이었는데 EC Miner PLS는 0.86290에 그친다. 그 이유가 회귀 자유도 열에 남아 있다 — 다른 세 모형은 DF 4인데 PLS만 DF 2다. JMP에서는 PRESS와 van der Voet T²를 보고 요인 수를 4로 정했지만, EC Miner에서는 잠재요인 두 개로 적합된 것으로 보인다. 같은 이름의 모형이 두 도구에서 다른 것을 적합하고 있었다는 뜻이고, 이 차이를 발견한 것은 결과표 숫자가 아니라 옆에 붙어 있던 자유도였다.
두 도구를 종합한 최종 순위는 SVR > MLR > PLS > PCR이었다.
| 모델링 | JMP R² | EC Miner 검증 R² | 두 도구 일치 여부 |
|---|---|---|---|
| SVR | — (JMP 미수행) | 0.93414 | — |
| MLR | 0.937454 | 0.92906 | 일치 |
| PLS | 0.928696 | 0.86466 | 불일치 (요인 수 차이) |
| PCR | 0.8361 | 0.83673 | 일치 |
정리하면 두 문항에서 같은 결론이 나왔다. 문항 1의 판별분석은 원 변수 22.7379% 대 주성분 23.1846%, 문항 2의 회귀는 MLR 0.937454 대 PCR 0.8361이었다. 차원 축소가 항상 이득은 아니다 — 다만 두 문항에서 이유가 정반대였다. 문항 1은 압축할 중복이 없어서(상관 최대 0.0822) 잃기만 했고, 문항 2는 중복이 커서(주성분 1개가 61%) 한 축으로 눌리는 순간 나머지 39%에 들어 있던 예측 정보를 버렸다.
이 보고서로 2019년 11월 빅데이터 분석 경진대회에서 1위를 받았다. 상의 명칭은 자료마다 갈린다 — 작업용 덱에 옮겨 적힌 대회 규정의 시상 항목은 '최우수상 1명 · 우수상 2명 · 장려상 3명'이고, 이력서와 포트폴리오에는 '대상(1위)'으로 적혀 있다. 상장이 남아 있지 않아 어느 쪽이 맞는지는 확인하지 못했고, 확실한 것은 순위뿐이다.

여기서 배운 것
- 지표 하나로 판단하지 않는다. SVM의 오분류율 13.99%는 로지스틱의 20.92%보다 좋지만, 실제로 개선된 것은 소수 클래스 재현율(30.23% → 63.12%)이었다. 전체 정확도만 보고했다면 무엇이 좋아졌는지 말할 수 없었다.
- 차원 축소는 목적이 아니라 수단이다. 두 문항 모두 주성분 기반 모형이 원 변수 모형보다 나빴는데, 문항 1은 압축할 중복이 없어서(상관 최대 0.0822) 잃기만 했고 문항 2는 중복이 너무 커서 한 축에 눌리며 예측 정보를 버렸다. 이유가 정반대인데 결론은 같았다.
- 같은 이름의 모형이 도구마다 다른 것을 적합한다. EC Miner PLS의 회귀 자유도가 2, JMP PLS의 요인 수가 4였다는 사실은 결과표의 R² 숫자에는 보이지 않고 옆 칸의 자유도에만 남아 있었다. 도구를 두 개 쓴 값어치는 성능 비교가 아니라 이 불일치를 발견한 데 있었다.
- 틀린 예측을 들여다보는 것이 성능표를 내는 것보다 많은 것을 말해 준다. 오분류 행만 부분집합으로 만들어 다시 분석해 '개인 사업자의 수입은 예측하기 어렵다', '변수의 영향도는 다른 변수의 수준에 따라 달라진다'는 해석을 얻었다.
- 전처리 판단은 기록해 두어야 나중에 검증된다. '이상값 311건 중 229건이 99999라서 제외하지 않았다'는 결정은 지금 다시 보면 상한 절단의 흔적을 실제 값으로 취급한 것일 수 있다. 임계값과 값 분포를 캡처해 두었기에 지금 그 판단을 되짚을 수 있다.