단원 홈

Ⅲ. 데이터 모델링과 평가11차시

'비가 오면 덜 빌린다'는 규칙은
무엇을 말하고 무엇을 못 말할까

규칙은 칼을 넘은 날만 센다

9·10차시에서는 영수증 한 장을 '함께 담긴 항목'으로 보았습니다. 오늘은 하루 한 장을 그렇게 봅니다. 따릉이가 돈 353일을 {비, 포근, 대여적음} 같은 항목 묶음으로 바꾸면 '비 → 대여적음' 규칙이 나오는데, 그 숫자가 3차시의 회귀와 같은 이야기를 하는지가 오늘의 물음입니다.

  • [12데과03-04]
  • 50분네 정거장
  • 다시 쓰는 도구LinearRegression(3차시) · matplotlib
  • 자료서울 따릉이 운영일 353일(UCI)
Ⅲ 단원 지도11 / 14차시
  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14

학습 목표

  1. 개념에서

    어떤 기록이든 '한 건에 무엇이 함께 있었나'로 바꾸면 연관 규칙의 세 자를 쓸 수 있다는 것을 알고, 연속값을 자르는 자리가 결과에 들어간다는 것을 반례로 말할 수 있다.

  2. 손으로

    pandas 로 규칙 16개를 재고, 같은 규칙을 기온 구간 안에서 다시 재어 matplotlib 막대로 그릴 수 있다.

  3. 확인에서

    같은 '비'에 대해 규칙과 회귀가 하는 두 문장을 갈라 적고, 보고서의 어느 자리에 어느 문장을 쓸지 고를 수 있다.

1
여는 장면 · 5분

영수증 대신 하루 한 장

매점 영수증에서 규칙을 찾을 때 우리가 한 일은 간단했습니다. 한 장에 무엇과 무엇이 함께 담겼는지만 보고, 그것을 수천 장에 대해 세었지요. 세는 쪽에서 보면 영수증이 꼭 영수증일 필요는 없습니다. 한 건에 무엇이 함께 있었나로 바꿀 수만 있으면 어떤 기록이든 같은 자를 댈 수 있어요.

따릉이의 하루를 영수증 한 장이라고 해 봅시다. 그날의 기온·비·요일·대여 수를 항목으로 바꾸면 하루가 장바구니가 됩니다. 다만 기온과 대여 수는 '샀다 / 안 샀다'처럼 딱 갈리지 않는 숫자예요. 숫자를 항목으로 만들려면 어딘가에서 잘라야 합니다. 그리고 자르는 자리는 데이터가 아니라 분석가가 정합니다.

오늘의 말칼 — 353일의 대여 수를 크기순으로 줄 세워 아래 1/3과 위 1/3을 가르는 두 선입니다. 아래 칼보다 적게 빌린 날에 '대여적음' 도장이 붙어요. 오늘 이 쪽에서 '칼'과 '도장'은 늘 이 뜻으로 씁니다.

시정 · 가상 보고서

따릉이 대여 자료 분석 결과 — '비 → 대여적음' 향상도 1.29. 비가 오면 대여가 준다

어느 시청에 올라간 한 줄 · 이 보고서는 수업을 위해 지어낸 것입니다
그림 1㉮ 하루 세 장이 항목 묶음으로 · ㉯ 자르는 자리서울 따릉이 · 운영한 353일
하루 한 장이 항목 묶음이 된다2017-12-01−2.5°C · 비 0mm · 평일대여 9,539대→추움대여적음2018-05-0120.3°C · 비 0mm · 쉬는날대여 26,820대→포근쉬는날대여많음2018-08-1030.6°C · 비 0mm · 평일대여 23,833대→더움가운데 날은 화요일인데 자료에 공휴일로 적혀 있어 '쉬는날' 이 붙었다.오른쪽 날은 대여가 두 칼 사이라 대여 항목이 아예 없다.자르는 자리는 분석가가 정한다① 대여 수 353일을 적은 차례로 줄 세워118일117일118일↑ 아래 칼 10,405대위 칼 24,353대 ↑② 기온은 5°C 와 25°C 에서105일193일5°C55일25°C추움더움비와 쉬는날은 자료가 정한다 — 왔거나 안 왔거나그러나 네 개의 선(칼 둘 · 기온 경계 둘)은 사람이 그은 것이다.그 선이 어디 있느냐가 오늘의 답을 바꾼다.하루 한 장이 항목 묶음이 된다2017-12-01−2.5°C · 비 0mm · 평일대여 9,539대→추움대여적음2018-05-0120.3°C · 비 0mm · 쉬는날대여 26,820대→포근쉬는날대여많음2018-08-1030.6°C · 비 0mm · 평일대여 23,833대→더움가운데 날은 화요일인데 자료에 공휴일로 적혀 있어 '쉬는날' 이 붙었다.오른쪽 날은 대여가 두 칼 사이라 대여 항목이 아예 없다.자르는 자리는 분석가가 정한다① 대여 수 353일을 적은 차례로 줄 세워118일117일118일↑ 아래 칼 10,405대위 칼 24,353대 ↑② 기온은 5°C 와 25°C 에서105일193일5°C55일25°C추움더움비와 쉬는날은 자료가 정한다 — 왔거나 안 왔거나그러나 네 개의 선(칼 둘 · 기온 경계 둘)은 사람이 그은 것이다.그 선이 어디 있느냐가 오늘의 답을 바꾼다.

㉮ 첫 날은 춥고 적게 빌렸으니 {추움, 대여적음}, 둘째 날은 자료에 공휴일로 적혀 있어 {포근, 쉬는날, 대여많음}, 셋째 날은 더웠지만 대여 수가 두 칼 사이라 도장이 붙지 않아 {더움} 한 항목뿐입니다. 세 장 모두 비가 오지 않았습니다. ㉯ 하루를 이렇게 바꾸려면 선을 네 개 그어야 합니다 — 대여 수의 칼 둘, 기온 경계 둘. 자료: UCI Seoul Bike Sharing Demand(CC BY 4.0, DOI 10.24432/C5F62R) — 하루 단위로 묶어 가공. 3정거장 코드 ① · ③이 찍는 값과 같다.

먼저 예측

353일 가운데 비 온 날은 100일입니다. 이 100일마다 기온이 거의 같고 요일 종류도 같은 맑은 날을 하나씩 짝지어 견준다고 해 봅시다. 비 온 날이 덜 빌린 짝은 몇 쌍일까요? 그리고 그 가운데 '비 → 대여적음' 규칙이 도장으로 알아본 짝은 몇 쌍일까요? 숫자 둘을 적어 두세요 — 2정거장 실험실에서 이 예측을 잠그고 맞대어 봅니다.

체크포인트 1

하루가 항목 묶음으로 바뀌는 것을 보았고, 숫자를 자르는 자리를 사람이 정한다는 것을 알았다. 예측 두 숫자를 적어 두었다.

다음 정거장 · 개념 15분 →
2
개념 · 15분

규칙이 세는 것과, 규칙이 붙들지 않는 것

2-1쇼핑 밖의 연관 분석 — 자르는 자리는 사람이 정한다

Ⅲ-9 에서 가져옴세 자를 그대로 씁니다. 지지도 = 전체 가운데 X와 Y가 함께 있는 몫 · 신뢰도 = X가 있는 건 가운데 Y도 있는 몫 · 향상도 = 신뢰도 ÷ Y의 원래 몫. 향상도 1은 '관계없음', 1보다 크면 '더 자주 함께'입니다.

연관 분석이 요구하는 것은 딱 하나입니다 — 한 건이 항목의 묶음이어야 한다는 것. 영수증이든 하루든 진료 기록이든, 그 모양으로만 바꿔 놓으면 세 자가 그대로 돕니다. 그래서 오늘 우리는 하루를 {비, 포근, 대여적음} 같은 묶음으로 바꿉니다.

문제는 기온과 대여 수예요. 비는 왔거나 안 왔거나로 갈리지만, 기온 18.4°C 는 '포근'도 '더움'도 아닙니다. 그래서 선을 긋습니다 — 5°C와 25°C. 대여 수도 마찬가지로 아래 1/3과 위 1/3에서 자릅니다. 그 선을 데이터가 알려 준 것이 아니라, 자르는 사람이 골랐다는 점이 오늘 내내 따라다닙니다.

선을 옮기면 답도 조금씩 움직입니다. 뒤에서 실제로 옮겨 볼 거예요 — 기온 경계를 25°C에서 28°C로 한 칸만 밀면, '더움' 칸에서 재던 향상도가 아예 계산되지 않습니다(3정거장 코드 ⑤).

표 1오늘 쓰는 항목 일곱, 그리고 그 선을 누가 그었나
항목만드는 규칙몇 날선을 그은 사람
비그날 강수량이 0mm보다 많다100일자료가 정한다 — 왔거나 안 왔거나
쉬는날토·일이거나 자료에 공휴일로 적혀 있다코드 ①이 센다자료가 정한다 — 달력에 있다
추움기온 < 5°C105일분석가가 정한다 — 왜 5인가?
포근5°C ≤ 기온 < 25°C193일분석가가 정한다
더움기온 ≥ 25°C55일분석가가 정한다 — 25인가 28인가
대여많음대여 수가 위 칼 24,353대 이상118일분석가가 정한다 — 위 1/3
대여적음대여 수가 아래 칼 10,405대 이하118일분석가가 정한다 — 아래 1/3

두 칼 사이에 있는 117일에는 대여 항목이 아예 붙지 않습니다. 353일의 1/3이 규칙 입장에서는 '많지도 적지도 않은 날'로 빠져 있다는 뜻이에요 — 뒤에서 이것이 크게 작용합니다. 자료: 원장 실측(Pyodide 0.26.4) — 3정거장 코드 ① · ③이 찍는 값과 같다

2-2규칙은 다른 조건을 붙들지 않는다

'비 → 대여적음'의 향상도 1.29는 비 온 날과 모든 날을 견준 값입니다. 기온이 같은 날끼리 견준 값이 아니에요. 그러면 기온대 안에서 따로 재면 어떤 값이 나올까요? 전체로 한 번, 추움·포근·더움 안에서 한 번씩, 모두 네 번 재 보았습니다.

그림 2㉮ 천장 — 더 오를 자리가 있는가 · ㉯ 전체 값은 어디서 오나대여적음 · 353일
100칸 = 그 구간의 모든 날칠한 만큼 = 대여적음 비율100% = 천장추움105일90%모든 날96%비 온 날향상도 1.06 · 천장 1.105 (23/24 대 95/105)포근193일11%모든 날32%비 온 날향상도 2.78 · 천장 8.77 (19/60 대 22/193)더움55일2%모든 날6%비 온 날향상도 3.44 · 천장 55 (1/16 대 1/55)천장 = 100% ÷ 바닥 비율추움은 바닥이 이미 90% 라 1.105배까지만 오를 수 있다.같은 1.06 과 3.44 가 같은 눈금 위의 값이 아니다.100칸 = 그 구간의 모든 날칠한 만큼 = 대여적음 비율100% = 천장추움105일90%모든 날96%비 온 날향상도 1.06 · 천장 1.105 (23/24 대 95/105)포근193일11%모든 날32%비 온 날향상도 2.78 · 천장 8.77 (19/60 대 22/193)더움55일2%모든 날6%비 온 날향상도 3.44 · 천장 55 (1/16 대 1/55)천장 = 100% ÷ 바닥 비율추움은 바닥이 이미 90% 라 1.105배까지만 오를 수 있다.같은 1.06 과 3.44 가 같은 눈금 위의 값이 아니다.전체 값은 세 구간을 섞은 값모든 날 353일추움 10595포근 19322더움 551비 온 날 100일추움 2423포근 6019더움 161118 / 353 = 33% ↔ 43 / 100 = 43%43% ÷ 33% = 1.29두 기둥 모두 추움 칸이 짙다 — 그 칸의 1.06 이 전체 값을 누른다.전체 값은 세 구간을 섞은 값모든 날 353일추움 10595포근 19322더움 551비 온 날 100일추움 2423포근 6019더움 161118 / 353 = 33% ↔ 43 / 100 = 43%43% ÷ 33% = 1.29두 기둥 모두 추움 칸이 짙다 — 그 칸의 1.06 이 전체 값을 누른다.

㉮ 추운 날은 원래 90%가 대여적음입니다. 비가 와서 96%가 되어도 향상도는 1.06 — 약한 관계가 아니라 천장(1.105)에 닿아 있는 것입니다. 포근한 날은 바닥이 11%라 천장이 8.77까지 열려 있어 2.78이 나옵니다. ㉯ 그래서 전체 1.29는 '비의 크기'가 아니라 바닥이 서로 다른 세 칸을 섞은 값입니다. 자료: 원장 실측(PHENOMENA 4 · LEDGER Ⅲ-11) — 3정거장 코드 ③이 찍는 표와 같은 값

표 2같은 규칙을 네 번 잰 값비 → 대여적음
어느 칸에서비 온 날 중 적음그 칸 전체 중 적음향상도천장
전체 353일43 / 100 (43%)118 / 353 (33%)1.292.99
추움 < 5°C23 / 24 (96%)95 / 105 (90%)1.061.105
포근 5~25°C19 / 60 (32%)22 / 193 (11%)2.788.77
더움 ≥ 25°C1 / 16 (6%)1 / 55 (2%)3.4455

네 값 모두 1보다 큽니다 — 방향은 뒤집히지 않습니다. 그런데 크기는 1.06에서 3.44까지 벌어져요. 향상도의 눈금이 칸마다 다르기 때문입니다(천장 1.105 ↔ 55). 그래서 향상도는 늘 '어느 칸 안에서 쟀는지'와 함께 적습니다. 자료: 원장 실측 — 3정거장 코드 ③ 출력. 천장 = 그 칸의 날 수 ÷ 그 칸의 대여적음 날 수(353÷118 · 105÷95 · 193÷22 · 55÷1)

Ⅱ-13 에서 가져옴합쳐 보면 뒤집히는 일(심슨의 역설)은 회귀나 교차표만의 이야기가 아닙니다. 규칙도 조건을 붙들지 않으므로 같은 일이 생길 수 있어요. 다행히 이 자료에서는 어느 경계로 잘라도 방향이 뒤집히지 않았습니다 — 그러나 그것을 확인해 보기 전에는 알 수 없습니다(코드 ⑤).

2-3칸이 작으면 향상도가 춤춘다

표 2의 맨 아랫줄을 다시 보세요. 더운 날 55일 가운데 '대여적음' 도장이 붙은 날은 딱 하루입니다. 그 하루가 마침 비 온 날이었고, 그래서 향상도가 3.44로 가장 크게 나왔어요.

그 하루는 2018년 8월 29일입니다. 기온 25.0°C에 비가 43.0mm 내렸고 9,184대가 나갔지요. 아래 칼이 10,405대니까, 이 날이 1,222대만 더 빌렸더라면 도장이 떨어집니다. 그러면 더움 칸의 대여적음은 0일이 되고, 향상도는 0 ÷ 0 — 계산할 수 없게 됩니다.

9차시에서 본 '드문 것의 함정'이 그대로 돌아온 것입니다. 그때는 영수증이 적어서였고, 지금은 칸을 쪼개서예요. 쪼갤수록 칸 안의 날 수가 줄고, 날 수가 줄면 하루가 값을 흔듭니다.

규칙향상도 옆에는 날 수를 반드시 함께 적는다 — 3.44가 아니라 3.44 (16일 중 1일)라고 쓴다.

더움 55일대여적음은 하루
8월 29일
도장 붙은 날 1칼까지 1,221대

자료: 원장 실측 — 그 하루가 2018-08-29(25.0°C · 43.0mm · 9,184대)

추움 · 향상도와 천장
1.06추움 향상도
vs
1.105추움 천장
추움 1.06천장 1.105포근 2.78 · 천장 8.77

천장 바로 밑이다 — 약한 관계가 아니라 오를 자리가 없는 것.

8월 29일 · 도장이 붙은 자리
9,184대그날 대여
↔
10,405대아래 칼
9,184대아래 칼 10,405이 틈이 1,221대

겨우 1,221대 차이로 도장이 붙었다.

경계를 25°C에서 28°C로
3.44더움 향상도
→
0 ÷ 0계산 불가
25°C 경계28°C 경계3.440 ÷ 0계산 불가→

선을 3°C 밀었을 뿐인데 값이 사라진다(코드 ⑤).

100쌍을 견준 방향
82쌍덜 빌린 짝
인데
23쌍규칙이 본 짝
덜 빌린 짝 82더 빌린 짝 18

덜 빌린 82쌍 가운데 59쌍은 규칙의 눈에 안 보인다 — 칼을 못 넘었기 때문.

자료: 원장 실측(LEDGER Ⅲ-11) — 위 네 쌍의 숫자는 모두 3정거장 코드 ③ · ④ · ⑤와 아래 실험실이 찍는 값이다.

표 2의 네 값은 모두 '비 온 날 묶음'과 '그 칸 전체'를 견준 값입니다. 그런데 하루 대 하루로 견주면 어떻게 보일까요? 실험실에서 직접 이어 봅니다 — 비 온 날마다 요일 종류가 같고 기온이 거의 같은 맑은 날을 하나 골라 끈으로 잇고, 두 날에 붙은 도장을 맞대어 보는 판입니다.

시뮬레이터

쌍둥이 날

비 온 날마다 기온이 같은 맑은 날을 손으로 잇는다 — 덜 빌린 82쌍 가운데 규칙이 본 짝은 23쌍뿐

  1. 1예측 둘을 고르고 [잠그기]
  2. 2물방울(비 온 날)을 눌러 맑은 쌍둥이에 끈을 잇는다 — 여덟 쌍
  3. 3나머지를 한꺼번에 짝짓고, 도장을 다시 찍어 본다
예측 ① 100쌍 가운데 덜 빌린 짝
예측 ② 그 가운데 규칙이 도장으로 본 짝
짝 잇기
규칙이 도장을 찍는 자리
렌즈 — 어느 칸 안에서 볼까
353일 · 가로는 기온, 세로는 대여 수물방울이 비 온 날 100일

쌍둥이 날 = 비 온 날 하루마다 평일/쉬는날이 같고 기온이 가장 가까운 맑은 날 하나. 손으로 이을 때는 기온이 ±1°C 안인 후보만 켜진다 — 그보다 멀면 끈이 튕긴다(기온의 몫이 섞이기 때문).

규칙이 본 짝 = 비 온 날에는 '대여적음' 도장이 붙었는데 쌍둥이 날에는 안 붙은 짝. 둘 다 붙었거나 둘 다 안 붙은 짝은 규칙의 눈에 같은 날이라 카드가 포개진다.

이은 짝0/ 100쌍
덜 빌린 짝—
규칙이 본 짝—
짝 평균(대)—
전체 향상도1.29
점수0
도전 1 ★

100쌍을 다 이은 뒤, 규칙이 못 본 짝 가운데 가장 크게 줄어든 짝을 띠에서 찾아 눌러라. 가장 큰 손실은 규칙이 보았을까?

도전 2 ★★

도장 118장을 그대로 둔 채 전체 향상도를 2 위로 올려라. 칼을 내려 도장을 더 찍는 것은 반칙 — 찍는 자리만 바꿀 수 있다.

도전 3 ★

더움 칸의 향상도 3.44를 계산할 수 없게 만들어라 — 칼도 기온 경계도 건드리지 말고, 딱 하루만 바꿔서.

자료: 서울 따릉이 운영일 353일(date · 기온 · 강수 · 쉬는날 · 대여 수)을 쪽 안에 실었다 — 3정거장 코드가 읽는 ../data/seoul_bike_daily.csv와 같은 값이다. 짝짓기·도장·향상도는 판이 그 자리에서 다시 센다(원장 값과 대조해 띄운다).

마지막 [곱셈 띠 보기]에서 본 것을 확인 문제 6에 적어 제출 →

2-4같은 물음, 두 방법 — 규칙과 회귀

실험실에서 손으로 지은 '기온이 같은 짝'은 사실 3차시 회귀가 속으로 하던 일입니다. 회귀는 기온과 쉬는날을 붙들어 둔 채 비의 몫만 떼어 냈고, 우리는 그 '붙들어 둠'을 짝짓기로 다시 지은 것이지요. 두 방법이 같은 '비'에 대해 하는 말을 나란히 놓아 봅니다.

그림 3같은 자료, 두 가지 재는 법㉮ 규칙 · ㉯ 회귀
규칙칼로 갈라 도장을 찍고, 비율을 센다위 칼 24,353대아래 칼 10,405대대여많음가운데 — 도장 없음대여적음"비 온 날 100일 가운데 43일에 도장 —원래의 1.29배"칼을 넘지 못한 하루는 아무리 크게 줄어도규칙의 눈에는 아무 일도 없던 날이다.회귀다른 몫을 붙든 채 틈을 잰다이 틈같은 기온맑은 날비 온 날가로 = 기온 · 세로 = 대여 수"기온과 쉬는날이 같다면 비 온 날은−6,571대"353일을 한 줄로 요약하므로, 조합(비+더움)이따로 두드러지는 자리는 말하지 않는다.규칙칼로 갈라 도장을 찍고, 비율을 센다위 칼 24,353대아래 칼 10,405대대여많음가운데 — 도장 없음대여적음"비 온 날 100일 가운데 43일에 도장 —원래의 1.29배"칼을 넘지 못한 하루는 아무리 크게 줄어도규칙의 눈에는 아무 일도 없던 날이다.회귀다른 몫을 붙든 채 틈을 잰다이 틈같은 기온맑은 날비 온 날가로 = 기온 · 세로 = 대여 수"기온과 쉬는날이 같다면 비 온 날은−6,571대"353일을 한 줄로 요약하므로, 조합(비+더움)이따로 두드러지는 자리는 말하지 않는다.

규칙은 비율을 말하고 회귀는 대수를 말합니다. 규칙은 조합(비+더움)을 그대로 보여 주지만 붙들어 두는 것이 없고, 회귀는 붙들어 두는 대신 353일을 한 줄로 요약합니다. 둘 다 인과를 말하지는 않습니다 — 비가 대여를 줄였다는 것을 증명한 것이 아니라, 그렇게 함께 나타났다는 것을 잰 것입니다. 자료: 원장 실측 — 1.29는 코드 ③, −6,571대는 코드 ④의 회귀 계수

향상도를 읽는 나침반 — 네 가지를 차례로

  1. 무엇을 셌나대여 수가 아니라 도장이 붙은 날 수다 — 칼을 넘지 못한 날은 세지 않았다
  2. 무엇과 견줬나비 온 날을 어느 묶음과 견줬나 — 모든 날인가, 같은 기온대인가
  3. 몇 날인가그 칸에 몇 날이 들어 있나 — 한두 날이면 값이 춤춘다
  4. 못 붙든 것기온·계절·요일이 그 칸 안에서 여전히 섞여 있지 않나

그래서 '향상도가 크면 관계가 더 세다'도 틀릴 수 있습니다. 포근한 날의 2.78은 비 온 60일 가운데 19일이 만든 값이고, 더운 날의 3.44는 비 온 16일 가운데 단 하루가 만든 값입니다. 크기만 보면 3.44가 더 세 보이지만, 날 수를 함께 보면 이야기가 뒤집힙니다.

체크포인트 2

향상도가 무엇과 무엇을 견준 값인지 말할 수 있고, 손으로 이은 짝에서 규칙이 못 보는 손실을 보았다. 이제 같은 값을 코드로 다시 잰다.

다음 정거장 · 손으로 20분 →
3
손으로 · 20분

하루를 장바구니로 바꿔, 규칙을 네 번 잰다

오늘의 장비

연관 규칙은 도구가 없다 — 집합과 나눗셈 두 번으로 센다

오늘은 새 라이브러리를 받지 않습니다. scikit-learn 에는 연관 규칙이 없어요. 순위·상관·교차표처럼 이것도 pandas 와 파이썬이 맡는 자리입니다. 대신 3차시의 LinearRegression 과 Ⅱ-6 의 matplotlib 을 다시 꺼내 나란히 놓습니다 — 그 칸은 처음 실행에 몇 초 멈춥니다(고장이 아닙니다).

세 자를 세는 모양

바구니 = [{"비", "포근"}, {"추움"}, …]
N = len(바구니)

sup = lambda s: sum(
    1 for b in 바구니 if s <= b) / N
# s <= b — s 가 b 의 부분집합인가

오늘 쓰는 것 넷

set
하루의 항목 묶음 — {"비", "포근"}
<=
부분집합인가 — {"비"} <= 바구니
quantile
대여 수를 아래·위 1/3에서 자른다
pd.cut
기온을 추움·포근·더움으로 자른다

10차시와 다른 셋

  1. 한 건 = 하루영수증 대신 날짜. 항목 수가 셋~넷으로 적다
  2. 항목을 내가 만든다숫자를 자르는 자리가 곧 항목 이름
  3. 결과도 항목이다'대여적음'이 규칙의 오른쪽에 온다

대가 — 자르는 자리를 내가 정한다는 것은 결과에 내 선택이 들어간다는 뜻입니다(미션 ① 도전 · 코드 ⑤).

1

하루를 항목 묶음으로 — 칼을 손으로 놓는다

5분

코드 ①은 353일을 항목 묶음으로 바꿉니다. 빈칸 ①에는 대여 수를 두 칼로 가르는 두 줄이 들어가요. 채우기 전에 예측해 보세요 — '대여적음' 도장이 붙는 날은 353일 가운데 몇 일일까요? 그리고 '대여많음'은 그보다 많을까요, 적을까요, 같을까요?

기본 아래칼·위칼은 이미 만들어져 있습니다. 빈칸 ① 두 줄에 위 칼 이상이면 '대여많음', 아래 칼 이하면 '대여적음'이 되는 조건을 채우고 ▶ 실행하세요. r["rentals"] 가 그날 대여 수입니다.

도전 quantile([1 / 3, 2 / 3]) 을 quantile([0.25, 0.75]) 로 바꿔 보세요. 칼이 10,405 / 24,353대에서 6,967 / 26,285대로 벌어지고 대여적음이 118일에서 89일로 줍니다. 그런데 이렇게 자르고 규칙을 다시 재도 '비 → 대여적음' 향상도는 1.29에서 1.31로 거의 그대로예요 — 자르는 자리를 옮겨도 결론이 버티는지 보는 첫 시험입니다(코드 ⑤로 이어집니다).

탐구 만약 이 자료를 받은 사람이 '대여적음'을 아래 10%로 정했다면, 규칙은 무엇을 더 잘 말하고 무엇을 더 못 말하게 될까요? 자르는 자리를 정할 때 무엇을 근거로 삼아야 할지 생각해 보세요.

이 코드에서 데이터가 정해 준 항목은 하나뿐이고, 나머지는 가 정했다. 그래서 보고서에는 를 반드시 함께 적어야 한다.

확인 문제 4에 적어 제출 →
2

규칙 16개 — 세 자를 한꺼번에 읽는다

5분

코드 ②는 조건 여덟 가지(비 · 쉬는날 · 추움 · 포근 · 더움 · 비+더움 · 비+포근 · 포근+쉬는날)마다 '대여많음'과 '대여적음' 두 결과로 규칙을 만들어 16줄을 찍습니다. '비 → 대여적음'의 향상도는 1보다 얼마나 클까요? 2배? 3배? 숫자 하나를 먼저 적어 두세요.

기본 코드 ②는 채워져 있습니다. 그대로 ▶ 실행하고, 출력 16줄에서 향상도 > 1.5 인 줄과 < 0.7 인 줄에 표시하세요. 그 가운데 둘을 골라 해석 한 줄씩 적습니다.

도전 조건들 목록에 ("비", "쉬는날") 을 더해 다시 실행해 보세요. 비 오는 주말은 어느 쪽으로 기우나요? 그 줄의 지지도를 함께 보고 그 값을 믿어도 될 만큼 날이 많은지 판단하세요.

탐구 '추움 → 대여많음'의 향상도가 0.00입니다. 지지도도 0.000이에요. 이것은 '추운 날에는 절대 많이 안 빌린다'는 뜻일까요, 아니면 다른 뜻일까요? 105일이라는 날 수와 함께 생각해 보세요.

'더움 → 대여많음 1.52'를 보고 라고 보고하면 안 된다. 향상도가 말한 것은 뿐이고, '더움' 칸에는 도 함께 들어 있기 때문이다.

확인 문제 1에 적어 제출 →
3

같은 규칙을 기온 구간 안에서 다시 — 막대 넷

5분

이제 '비 → 대여적음'만 골라 전체로 한 번, 기온 구간마다 한 번씩 모두 네 번 잽니다. 구간 안에서 재면 전체(1.29)보다 커질까요, 작아질까요? 세 구간이 모두 같은 쪽으로 움직일까요?

기본 코드 ③은 채워져 있습니다. ▶ 실행해 표 넉 줄과 막대그림을 보세요. 막대 이름 아래에 비 온 날 수가 함께 적혀 있고, 주황 점선이 향상도 1 = 관계없음 자리입니다. (matplotlib 을 처음 받는 칸이라 첫 실행이 몇 초 멈춥니다.)

도전 경계 = [-99, 5, 25, 99] 의 25 를 28 로 바꿔 보세요. 더움 막대가 사라지고 표에 nan 이 찍힙니다 — 그 칸의 대여적음이 0일이 되어 0 ÷ 0 이 되었기 때문입니다. 오류가 아니라, 계산할 수 없다는 정직한 표시예요.

탐구 세 구간의 막대 높이가 1.06 · 2.78 · 3.44 로 다릅니다. 이 셋을 '비의 힘'의 크기 순서로 읽어도 될까요? 표 2의 천장 칸을 옆에 놓고 다시 판단해 보세요.

전체 1.29 가 구간 값들보다 작게 나온 까닭은 때문이고, 더움의 3.44 를 그대로 믿기 어려운 까닭은 때문이다. 보고서에는 향상도 옆에 를 함께 적는다.

확인 문제 2에 적어 제출 →
4

같은 물음을 회귀에게도 — 그리고 쌍둥이 날

5분

1정거장에서 적어 둔 내 예측입니다. 실험실에서 이미 답을 보았지요 — 이번에는 코드가 같은 값을 찍는지 봅니다.

기본 코드 ④는 같은 물음을 두 가지로 잽니다. (가) 3차시의 LinearRegression 으로 기온·쉬는날을 붙들고 잰 비의 몫, (나) 비 온 날마다 요일 종류가 같고 기온이 가장 가까운 맑은 날을 찾아 하루 대 하루로 견준 차이. ▶ 실행해 두 숫자를 확인하세요. (scikit-learn 을 받는 칸이라 첫 실행이 몇 초 멈춥니다.)

도전 짝을 고르는 줄에서 후보 = 맑은[맑은["쉬는날"] == r["쉬는날"]] 의 거르기를 빼고 후보 = 맑은 으로 바꿔 보세요. 덜 빌린 짝이 82에서 78 로, 짝 평균이 −6,937에서 −6,672대로 움직이고 100쌍 가운데 48쌍이 평일과 쉬는날을 맞바꾼 짝이 됩니다. 반대로 회귀에서 쉬는날 열을 빼면 비의 몫은 −6,571에서 −6,554대로 거의 안 움직여요 — 두 방법이 '붙들어 두는' 방식이 다르기 때문입니다.

탐구(집에서) 칼과 기온 경계를 여러 가지로 바꿔 가며 향상도 넷을 다시 재는 칸입니다. 어느 설정에서 결론이 흔들리는지 눈으로 찾아보세요.

다섯 줄 어디에서도 방향은 뒤집히지 않습니다(모두 1보다 큼). 움직이는 것은 크기예요 — 포근이 1.87에서 3.03까지 오갑니다. 그리고 5·28°C 줄의 더움 칸은 nan 입니다.

시청이 '비 오는 날 대책 예산'을 정한다면 의 문장을 쓰고, '어떤 날에 특히 두드러지나'를 찾는다면 의 문장을 쓴다. 어느 쪽이든 은 말하지 못한다.

확인 문제 5에 표를 채우고 제출 →
체크포인트 3

규칙을 네 번 재었고, 같은 물음을 회귀와 쌍둥이 날로도 재었다. 자르는 자리를 바꿔 결론이 버티는지도 확인했다.

다음 정거장 · 정리·확인 10분 →
4
정리·확인 · 10분

오늘의 탐험 일지

  1. 찾은 것

    하루도 장바구니가 된다 — 그러나 숫자를 항목으로 바꾸는 순간 자르는 자리라는 사람의 선택이 결과 안으로 들어온다.

  2. 도구의 한계

    향상도는 칼을 넘은 날만 센다. 기온이 같은 맑은 날보다 덜 빌린 82쌍 가운데 규칙이 알아본 것은 23쌍뿐이었다.

  3. 보고의 규칙

    향상도 옆에 셋을 함께 적는다 — 어느 칸에서 쟀나 · 그 칸에 몇 날인가 · 자른 자리는 어디인가.

✍️ 문제마다 답을 쓰고 제출하기를 누르세요. 제출하면 모범 답안이 열리고, 제출한 답은 선생님께 전달됩니다.

1. 코드 ②에서 '더움 → 대여많음'의 향상도가 1.52로 나왔다. 이것을 "더우면 사람들이 자전거를 더 탄다"로 보고하면 무엇을 놓치는지 쓰시오.
📖 모범 답안

향상도는 인과가 아니라 함께 나타난 빈도다. 1.52는 "더운 날에는 '대여많음' 도장이 원래보다 1.52배 자주 붙었다"는 말일 뿐, 더위가 대여를 늘렸다는 증거가 아니다.

'더움'이라는 칸에는 더위 말고도 방학 · 긴 낮 · 나들이철이 함께 들어 있다. 어느 것의 몫인지 이 숫자는 가려 주지 않는다. 게다가 구간이 25°C 위를 통째로 묶고 있어서, 아주 더운 날에는 오히려 줄어드는 움직임이 있더라도 한 칸 안에 가려진다.

그래서 보고할 때는 "더운 날에 대여많음이 더 자주 나타났다(55일 중 ○일)"처럼 센 것을 그대로 쓰고, 까닭을 말하려면 다른 조건을 붙들고 재는 방법(회귀)이나 다른 자료가 더 필요하다고 밝힌다.

2. '비 → 대여적음'을 전체로 재면 1.29인데, 기온 구간 안에서 재면 추움 1.06 · 포근 2.78 · 더움 3.44였다. ① 전체 값이 구간 값들보다 작게 나온 까닭을 쓰고, ② 보고서에는 어느 값을 어떻게 쓸지 쓰시오.
📖 모범 답안

① 구간마다 '대여적음'의 바닥 비율이 다르기 때문이다. 추운 날은 비가 오지 않아도 이미 105일 중 95일(90%)이 대여적음이라, 비가 와서 96%가 되어도 올라갈 자리가 1.105배뿐이다(천장). 반면 포근한 날은 바닥이 11%라 천장이 8.77까지 열려 있어 2.78이 나온다. 전체 1.29는 이렇게 바닥이 서로 다른 세 칸을 한 덩어리로 섞은 값이라, 가장 큰 칸이자 천장이 낮은 추움 쪽으로 눌린 것이다.

(비가 특정 계절에 몰려서가 아니다. 비 온 날의 기온 분포는 추움 24% · 포근 60% · 더움 16%로, 모든 날의 30% · 55% · 16%과 거의 같다.)

② 기온대별 값을 날 수와 함께 쓴다 — "포근한 날 2.78(60일 중 19일) · 추운 날 1.06(24일 중 23일) · 더운 날 3.44(16일 중 1일)". 전체 값 1.29만 쓰면 비의 관계를 실제보다 작게 말하게 되고, 구간 값만 쓰면 천장이 다른 칸들을 같은 눈금으로 견주는 셈이 된다. 네 값 모두 1보다 크므로 방향(비 오면 대여적음이 더 자주)은 흔들리지 않는다는 점도 함께 적는다.

덧붙임 — 실험실에서 도장을 '칼로' 대신 '비슷한 날 사이에서'(기온 ±2°C 안의 이웃과 견줘 가장 적게 빌린 날부터) 찍어 보면, 도장 118장은 그대로인데 네 값이 2.09 · 1.79 · 2.23 · 2.22로 모인다. 1.06에서 3.44까지 벌어지던 춤은 비가 만든 것이 아니라 칼이 만든 것이었다.

3. 더운 날 안에서 '비 → 대여적음' 향상도가 3.44로 가장 컸다. 이 숫자로 "더운 날에 비가 오면 대여가 세 배 넘게 줄어든다"고 보고해도 되는가? 되지 않는다면 그 까닭을 두 가지 쓰시오.
📖 모범 답안

안 된다.

첫째, 단위가 다르다. 향상도는 '대여적음 도장이 붙는 비율이 원래의 몇 배'이지 '대여 수가 몇 배 준다'가 아니다. 대여가 얼마나 주는지는 대수를 재는 방법이 말한다 — 회귀 −6,571대, 쌍둥이 날 100쌍의 평균 −6,937대.

둘째, 그 칸이 너무 작다. 더움 55일 가운데 대여적음은 단 1일(2018-08-29)이고 그 하루가 마침 비 온 날이다. 그 하루가 1,222대만 더 빌렸어도 향상도는 0 ÷ 0 이 되어 계산조차 안 된다. 하루가 값을 통째로 만드는 숫자는 그대로 보고하지 않는다.

보고한다면 "더운 날 16일 중 비 온 날의 대여적음은 1일 — 날이 적어 값을 신뢰하기 어렵다"처럼 날 수를 함께 적고 한계를 밝힌다.

4. 우리는 기온을 '추움 < 5°C ≤ 포근 < 25°C ≤ 더움'으로, 대여 수를 아래·위 1/3로 잘랐다. ① 경계를 바꾸면 결과가 바뀌는 것은 이 분석의 약점인가? ② 코드 ⑤에서 본 것을 근거로, 보고서에 무엇을 적어야 하는지 쓰시오.
📖 모범 답안

① 약점이라기보다 연속값을 항목으로 바꾸는 분석이면 반드시 따라오는 성질이다. 자르는 순간 분석가의 선택이 결과 안으로 들어온다. 문제는 선택이 있다는 것이 아니라 그 선택을 감추는 것이다.

② 코드 ⑤는 설정 다섯 가지로 같은 규칙을 다시 잰다. 경계를 0·25°C 로 하면 1.29 / 1.00 · 1.87 · 3.44, 10·25°C 로 하면 1.29 / 1.24 · 2.96 · 3.44, '비'를 1mm 이상으로 하면 1.26 / 1.11 · 3.03 · 4.23 이다. 어느 설정에서도 방향은 뒤집히지 않고(모두 1보다 크다) 크기만 움직인다. 다만 5·28°C 로 옮기면 더움 칸의 향상도가 nan — 그 칸의 대여적음이 0일이 되어 계산할 수 없다.

그러므로 보고서에는 ⓐ 사용한 경계(5·25°C · 아래·위 1/3 · 비는 0mm 초과)를 밝히고, ⓑ 경계를 몇 가지로 바꿔 본 결과를 함께 싣고, ⓒ 그때도 결론(방향)이 유지되는지를 적는다. 자르는 자리를 누가 정했는지 읽는 사람이 알 수 있어야 한다.

5. 같은 '비'에 대해 규칙과 회귀가 한 말을 아래 표로 정리하시오. 그리고 시청이 '비 오는 날 대여 감소 대책 예산'을 정할 때 어느 문장을 써야 하는지, 그 까닭과 함께 쓰시오.
방법내놓은 문장붙들어 둔 것못 붙든 것
규칙
(향상도)
회귀
(계수)
쌍둥이 날
(짝 견주기)
📖 모범 답안

규칙 — "비 온 날 100일 가운데 43일에 '대여적음' 도장이 붙었다(원래의 1.29배)." 붙들어 둔 것: 없다(비 온 날을 모든 날과 그냥 견준다). 못 붙든 것: 기온·계절·요일 — 그리고 칼을 못 넘은 날의 손실은 아예 세지 않는다.

회귀 — "기온과 쉬는날이 같다면 비 온 날은 −6,571대." 붙들어 둔 것: 기온 · 쉬는날(모형에 넣은 것). 못 붙든 것: 모형에 안 넣은 것들, 그리고 353일을 한 줄로 요약하므로 조합(비+더움)이 따로 두드러지는 자리는 말하지 않는다.

쌍둥이 날 — "요일 종류가 같고 기온이 거의 같은 맑은 날과 견주면 100쌍 평균 −6,937대, 덜 빌린 짝 82쌍." 붙들어 둔 것: 기온(±1°C 안) · 요일 종류. 못 붙든 것: 짝을 못 맞춘 나머지 — 계절·행사·그날의 다른 사정.

예산이라면 회귀(또는 쌍둥이 날)의 문장을 쓴다. 예산은 "몇 대가 주나"라는 크기가 필요한데, 규칙은 크기를 말하지 않고 '비율의 배수'만 말한다. 규칙은 "어떤 조건에서 특히 두드러지나"를 찾는 데 쓰되 날 수를 함께 본다. 어느 쪽도 비가 대여를 줄였다는 인과는 증명하지 않는다는 것도 밝힌다.

6. 실험실의 곱셈 띠에서 본 것이다.
· 비+포근 → 대여적음 0.95 = 포근의 힘 0.34 × 포근 안에서 잰 비 2.78
· 비+추움 → 대여적음 2.87 = 추움의 힘 2.71 × 추움 안에서 잰 비 1.06
① 두 조건을 붙인 규칙의 향상도를 이렇게 쪼개 읽을 수 있는 까닭을 쓰고, ② '비+포근 → 대여적음 0.95'만 보고 "포근한 날에는 비가 와도 대여가 줄지 않는다"고 읽으면 왜 틀리는지 쓰시오.
📖 모범 답안

① 향상도는 비율의 나눗셈이라 가운데 항이 지워지기 때문이다. '비+포근 → 대여적음'의 향상도는 (비 온 포근한 날의 적음 비율) ÷ (모든 날의 적음 비율)인데, 여기에 '포근한 날의 적음 비율'을 분모·분자에 한 번씩 끼워 넣으면 (포근한 날의 적음 ÷ 모든 날의 적음) × (비 온 포근한 날의 적음 ÷ 포근한 날의 적음) 으로 갈라진다. 앞이 포근이라는 조건 자체의 힘(0.34), 뒤가 포근한 날 안에서 잰 비의 힘(2.78)이다. 추움도 같은 방식으로 2.87 = 2.71 × 1.06 이 된다. (반올림한 값끼리 곱하면 0.34 × 2.78 = 0.945 처럼 끝자리가 조금 어긋난다 — 갈라 읽는 뜻을 보는 것이 목적이다.)

② 0.95가 1 근처인 것은 비의 힘이 없어서가 아니라, 반대 방향으로 센 두 힘이 곱해져 서로 지웠기 때문이다. 포근이라는 조건은 대여적음을 크게 끌어내리고(0.34), 그 안에서 비는 크게 끌어올린다(2.78). 둘을 곱하면 1 근처가 되지만, "비가 와도 안 줄었다"는 말은 어디에도 없다. 비의 몫을 보려면 같은 기온대 안에서 잰 2.78을 봐야 한다. 반대로 비+추움 2.87은 커 보이지만 그 대부분이 추움의 몫(2.71)이고 비의 몫은 1.06뿐이다 — 두 조건을 붙인 규칙의 향상도는 어느 조건의 몫인지 그 자체로는 말해 주지 않는다.

+
더 알아보기

'함께 세기'가 가는 다른 길 둘

마리우스테나르디에미리엘 주교자베르장발장한 장면에 함께 나오면 선을 잇는다선이 굵을수록 함께 나온 장면이 많다 · 점 = 인물 · 무리 = 자주 함께 도는 사람들
방법 더 깊이

소설 속 인물도 '함께' 세어 본다

컴퓨터 과학자 도널드 커누스는 1993년 책 『스탠퍼드 그래프베이스』를 내면서 빅토르 위고의 소설 『레 미제라블』을 자료로 만들어 실었습니다. 등장인물 77명을 점으로 놓고, 한 장면에 함께 나온 두 사람마다 선을 그은 것이지요. 함께 나온 횟수는 선의 굵기가 됩니다. 이 자료는 지금도 관계망 분석을 가르칠 때 가장 먼저 꺼내는 예제입니다.

오늘 우리가 한 일과 출발점이 같습니다 — 한 건 안에 무엇과 무엇이 함께 있었나를 세는 것. 영수증이 한 건이면 연관 분석, 장면이 한 건이면 관계망이 됩니다. 다만 가는 길이 갈려요. 연관 분석은 방향이 있는 규칙(X → Y)과 향상도로 가고, 관계망은 방향 없는 연결과 '누가 가운데인가'(중심성)로 갑니다.

함정도 나눠 씁니다. 장발장은 거의 모든 장면에 나오니 누구와도 선이 이어집니다. 그래서 '연결이 많다'가 곧 '그 사람과 관계가 세다'는 아니에요 — 10차시에서 가장 강해 보이던 규칙이 사실 가장 잘 팔리는 상품 때문이었던 것과 똑같은 자리입니다. 관계망에서는 이것을 막으려고 연결 수 대신 기대보다 얼마나 더 붙어 있나를 재는 자를 따로 씁니다.

도해: 가운데 장발장에서 네 무리로 선을 그은 모양 예시다 — 점의 자리와 선은 그림을 위해 배치한 것이고, 인물 77명과 '한 장면에 함께 나오면 선을 긋는다'는 규칙이 원자료의 것이다. · 출처: D. E. Knuth, The Stanford GraphBase, ACM Press, 1993

'비 온 날' 이라는 칸 하나에 함께 담기는 것들비 온 날한 칸으로 묶은 날들판매가 줄었다기온계절요일 구성행사·휴일해가 지는 시각줄어든 몫이 어느 것의 몫인지 칸 하나로는 가릴 수 없다.하나만 다르고 나머지가 같은 날끼리 견주거나, 나머지를 함께 재는 모델이 필요하다.오늘 판의 '쌍둥이 날' 과 3차시의 회귀가 각각 그 두 가지 길이다.
현장

"비 오는 날엔 매출이 준다"는 말

유통·외식 업계에서는 날씨와 판매를 잇는 분석을 흔히 날씨 마케팅이라고 부릅니다. "기온이 몇 도를 넘으면 무엇이 더 팔린다", "비 오는 날에는 배달이 는다" 같은 문장이 그렇게 나와요. 오늘 우리가 쓴 자를 그대로 대면, 이런 문장은 대부분 '비 온 날 묶음'과 '모든 날'을 견준 값입니다.

그런데 '비 온 날'이라는 칸 하나에는 비만 담기지 않습니다. 비 오는 날은 대체로 기온이 다르고, 장마철이면 계절이 쏠리고, 요일 구성도 우연히 한쪽으로 기웁니다. 해가 일찍 지기도 하고요. 그러니 "비 온 날 매출이 줄었다"에서 줄어든 몫이 어느 것의 몫인지 칸 하나로는 가릴 수 없습니다. 오늘 추움 구간에서 본 것처럼, 칸을 섞으면 값이 실제보다 작게도 크게도 나옵니다.

가릴 길은 오늘 둘을 보았습니다. 하나는 하나만 다르고 나머지가 같은 날끼리 견주는 것(쌍둥이 날), 다른 하나는 나머지를 함께 재는 모델을 세우는 것(회귀)입니다. 그래서 날씨와 판매를 잇는 기사를 읽을 때 물어볼 것은 셋입니다 — 무엇과 견줬나 · 몇 날치인가 · 무엇을 붙들어 두었나.

도해: '비 온 날'이라는 칸 하나에 기온·계절·요일 구성·행사와 휴일·해가 지는 시각이 함께 딸려 오는 구조를 그렸다. 특정 기업·상품의 수치가 아니라 섞이는 모양을 보이는 그림이다.