기계학습 모델 구현 보고서

신용카드 거래 데이터로 이상거래 탐지

정답이 있는데도 일부러 쓰지 않았다.
아직 아무도 본 적 없는 수법까지 찾아내려면 어떻게 해야 할까?

비지도학습 · 군집 (k-평균) 도구: 오렌지 금융 · 보안 · 핀테크

기계학습 모델 구현 보고서를 어떻게 쓰는지 보여 주는 예시 프로젝트입니다. 문항을 푸는 순서와 근거를 대는 방식을 참고하되, 내용은 자신의 프로젝트로 채웁니다. 표와 그래프의 숫자는 수업에서 원리를 확인하려고 지어낸 값이며 실제 거래 기록이 아닙니다.

기계학습 모델 구현 보고서 예시 내려받기

이 페이지의 문항 1~8을 그대로 담은 보고서 파일입니다. 내려받아 작성 방법을 확인하고 자신의 프로젝트로 바꾸어 채웁니다.

아이디어에서 설계까지

아직 아무도 본 적 없는 수법은 어떻게 미리 배울까?

정답을 쓸 수 없는 문제에 군집을 대는 이유를 따라가 봅시다.

보고서 여덟 문항은 이 여섯 단계를 따라간다 1 문제 정의 2 데이터 수집 3 데이터 전처리 4 유형· 알고리즘 선정 5 모델 생성 6 성능 평가 문항 1 · 2 문항 4 문항 3 문항 5 문항 6 · 7
문항 번호와 단계 번호가 나란히 가지 않는다. 유형과 알고리즘은 데이터를 모아 정리한 다음에 고르는 것이라 보고서에서는 문항 3이지만 실제 작업은 데이터 전처리를 마친 뒤에 한다.
1

어디서 아이디어를 얻었나 — 실생활의 불안

가족이 「새벽에 해외에서 결제되었다」는 문자를 받고 놀란 일이 있었다. 다행히 카드사가 먼저 막아 줬는데, 어떻게 그 한 건만 골라낼 수 있었는지가 궁금했다. 수많은 정상 거래 사이에서 이상한 것을 찾는 일이 어떻게 가능한지 알고 싶었다.

2

왜 기계학습인가 — 규칙은 뒷북이 된다

100만원 넘고 해외면 차단처럼 규칙을 적을 수는 있다. 그런데 규칙은 이미 벌어진 수법을 보고 만든다. 새로운 수법이 나오면 그때마다 규칙을 새로 붙여야 하고, 붙이기 전까지는 뚫린다.

3

왜 군집인가 — 정답을 안 쓰기로 했다

데이터에 정답이 있는데도 학습에 넣지 않기로 했다. 정답에 기대면 이미 아는 수법만 잘 잡는 모델이 되기 때문이다. 대신 「평소와 다른 것」을 찾게 하면 본 적 없는 수법에도 반응할 수 있다.

무엇을 풀 것인가

이상거래는 왜 규칙으로 막기 어려울까?

인공지능이 손댈 수 있는 모양으로 문제를 다시 써 봅시다.

문항 1. 문제 정의

실생활이나 학문 분야에서 인공지능으로 해결하고자 하는 문제를 구체적으로 정의하시오. 어떤 상황에서 어떤 불편함 또는 필요가 발생하는지를 포함하여 서술하시오.

카드가 도용되면 본인이 알아채기 전에 결제가 끝나 버린다. 거래는 하루에도 수없이 일어나므로 사람이 하나씩 볼 수 없고, 금액 기준 같은 규칙은 그 기준을 아는 쪽이 피해 가면 소용이 없다. 무엇보다 새로운 수법은 규칙이 만들어지기 전까지 그냥 통과한다.

그래서 거래 기록에서 「평소 패턴과 크게 다른 거래」를 스스로 찾아내는 모델을 만들고자 한다. 무엇이 사기인지 미리 알려 주지 않고도 튀는 거래를 골라 사람이 확인하게 하는 것이 목적이다.

자기점검 체크리스트

  • ☑ 해결하고자 하는 문제가 실생활 또는 학문 분야와 연관되어 구체적으로 제시되어 있다.
  • ☑ 문제가 발생하는 상황(불편함·필요성)이 명확하게 서술되어 있다.

무엇이 들어가고 무엇이 나오는가

모델이 내놓는 것은 「이상거래」일까?

입력과 출력을 못 박으면 만들 것의 윤곽이 잡힙니다.

문항 2. 모델 설명 (입력 → 출력)

구현하려는 인공지능 모델을 설명하시오. 이 모델은 어떤 데이터를 입력받아, 어떤 결과를 출력하는가? 입력과 출력을 중심으로 모델의 역할을 구체적으로 서술하시오.

  • ■ 입력: 거래 한 건의 금액(만원)과 그날의 거래 횟수 — 숫자 두 개
  • ■ 출력: 군집 번호와 그 군집 중심까지의 거리

모델은 「이 거래는 사기입니다」라고 말하지 않는다. 말할 수가 없다 — 무엇이 사기인지 배운 적이 없기 때문이다. 모델이 하는 일은 거래를 덩어리로 묶고, 각 거래가 자기 덩어리의 중심에서 얼마나 떨어져 있는지 측정하는 것까지다.

「거리가 이만큼 넘으면 확인 대상」이라고 선을 긋는 것은 사람이다. 선을 어디에 두느냐에 따라 같은 모델이 전혀 다른 결과를 낸다.

모델은 거리까지만 준다. 선을 긋는 것은 사람이다 입력 금액 175만원 그날 거래 1회 학습된 모델 군집 B 중심까지 거리 0.61 사람이 그은 선 군집 B면 확인 대상 → 결제 보류 이 거래는 실제로는 정상이었다. 선을 그은 대가가 여기서 나온다

자기점검 체크리스트

  • ☑ 만들고자 하는 모델의 입력 데이터(종류·형태)가 명확히 제시되어 있다.
  • ☑ 모델이 출력하는 결과(레이블·수치·군집 등)가 구체적으로 서술되어 있다.
  • ☑ 입력과 출력을 통해 모델의 역할이 명확하게 드러난다.

어떤 방법으로 풀 것인가

정답이 있는데도 안 쓰는 것이 말이 될까?

두 번의 질문으로 유형이 정해지고, 정해진 유형이 도구를 정합니다.

문항 3. 기계학습 유형 및 구현 도구 선택

위에서 구상한 모델을 구현하기 위해 아래 ①, ② 순서대로 선택하고 그 이유를 서술하시오. ① 기계학습 유형: 지도학습과 비지도학습 중 이 모델에 적합한 유형을 선택하고, 분류·군집·예측 등의 개념을 활용하여 그 이유를 설명하시오. ② 구현 도구: ①에서 선택한 유형을 구현하기 위해 티처블머신·코랩·오렌지 중 어떤 도구를 선택했는지 밝히고, 그 이유를 서술하시오.

유형은 취향이 아니라 두 번의 질문으로 정해진다 학습에 정답(레이블)을 쓸 것인가? 아니오 예 비지도학습 군집 ↑ 이 프로젝트 지도학습 출력이 숫자인가, 범주인가? 숫자 범주 예측 (회귀) 분류
보통은 첫 질문이 「정답이 있는가」다. 여기서는 정답이 있는데도 쓰지 않기로 정했으므로 질문을 「쓸 것인가」로 바꿔 읽는다. 가는 길은 같지만 이유가 다르다.

① 기계학습 유형: 비지도학습 — 군집 (k-평균)

이 데이터에는 어느 거래가 이상이었는지가 적혀 있다. 그런데도 학습에는 넣지 않기로 했다. 이유는 셋이다.

  • 정답에 기대면 이미 아는 수법만 배운다. 실제 상황에서 무서운 것은 처음 보는 수법인데, 그것은 과거 데이터에 정답이 붙어 있을 수 없다.
  • 이상거래가 4%뿐이라 분류 모델의 점수를 믿기 어렵다. 이렇게 한쪽으로 쏠린 데이터로 분류를 학습하면 「전부 정상」이라고만 답해도 정확도 96%가 나온다. 숫자는 좋아 보이는데 아무것도 잡지 못한다.
  • 내가 알고 싶은 것은 「이 거래가 사기인가」보다 「평소와 얼마나 다른가」다. 그것은 덩어리를 만들고 중심에서의 거리를 측정하는 일이므로 군집이 맞다.

그러면 갖고 있는 정답은 어디에 쓰는가? 학습이 끝난 뒤 결과가 실제와 얼마나 맞았는지 확인하는 데만 쓴다. 학습 단계에서 보여 주지 않았으므로 모델은 정답을 본 적이 없고, 이것은 반칙이 아니라 평가다. 다만 이 확인 결과를 보고 k나 기준선을 계속 고쳐 나가면 정답이 슬며시 학습에 새어 든다. 그때부터는 성능이 과장된다.

② 구현 도구: 오렌지(Orange)

표 형태의 CSV를 그대로 읽어 들이고, k-Means 결과에 중심까지의 거리를 열로 붙여 주는 기능이 있어 「얼마나 튀는가」를 숫자로 꺼낼 수 있다. Preprocess 블록의 Normalize Features로 열의 자를 맞출 수 있는 것도 중요했다. 금액과 횟수는 자릿수가 달라 그대로 두면 금액 하나로만 나뉜다. 티처블머신은 사진·소리를 다루는 도구라 표 데이터에 맞지 않고, 코랩은 같은 일을 할 수 있지만 코드를 직접 써야 해서 이번 목적에는 과하다.

자기점검 체크리스트

  • ☑ 지도학습 또는 비지도학습 중 하나를 명확히 선택하였다.
  • ☑ 분류·군집·예측 등의 개념을 활용하여 유형 선택 이유가 논리적으로 서술되어 있다.
  • ☑ 구현 도구를 선택하고 그 이유가 기계학습 유형과 연결되어 설명되어 있다.

무엇으로 배우게 할 것인가

정답이 있는 데이터인데 왜 비지도학습일까?

레이블을 학습에서 빼고 검증에만 쓰는 방법을 봅시다.

문항 4. 데이터 설명

모델 학습에 사용한 데이터를 설명하시오. 데이터의 출처·유형·수량·특성 등을 작성하고, 필요한 경우 스크린샷을 첨부하시오.

  • • 출처: 공개 데이터 플랫폼에 올라온 카드 거래 데이터셋 (누구인지 알 수 없게 처리된 자료, 이용 조건을 확인하고 내려받음)
  • • 유형: 수치형 정형 데이터 (CSV, 특성 2개 + 검증용 정답 1개)
  • • 수량: 거래 500건 — 실제로는 정상 480건 / 이상 20건 (4%)
  • • 학습에 넣은 열: 거래 금액(만원), 그날의 거래 횟수 — 두 개뿐
  • • 학습에서 뺀 열: 이상 여부. 파일에는 있지만 k-Means 블록에 연결하지 않았다. 결과를 확인할 때만 다시 붙인다.
금액(만원) | 그날 거래 횟수 | [이상 여부]
───────────┼────────────────┼────────────
    3.2    |       2        |   정상
  148.0    |       8        |   이상
    1.8    |       1        |   정상
   92.5    |       6        |   이상
    5.0    |       2        |   정상
(이하 495건 생략 / 전체 500건)
(대괄호 열은 학습에 넣지 않았다)

실제 수행평가 때는 여기에 데이터셋 내려받기 화면 및 오렌지 열 설정 화면 스크린샷을 붙입니다.

정답을 빼 두고 쓰는 것이 왜 조심스러운가

  • 블록을 연결하지 않는 것만으로는 부족하다. 오렌지에서 열의 역할을 「meta」로 지정해 두어야 계산에서 확실히 빠진다. 그냥 두면 이상 여부가 숫자로 섞여 들어가 사실상 정답을 보고 나누게 된다.
  • 확인해 보고 k를 바꾸는 순간 경계가 흐려진다. 탐지율을 보고 k를 2에서 3으로, 다시 2로 되돌리는 식으로 맞춰 가면 정답이 조금씩 학습에 새어 든다. 그렇게 얻은 90%는 실제 상황에서 나올 수 없는 숫자다.
  • 금액과 횟수는 자릿수가 다르다. 금액은 0~200이고 횟수는 0~12라 그대로 두면 사실상 금액 하나로만 나뉜다. 같은 자로 맞춘 뒤에 실행한다.
  • 거래 기록은 생활을 드러낸다. 언제 어디서 얼마를 썼는지는 그 사람의 하루를 그린다. 누구인지 알 수 없게 처리된 자료를 썼고, 사람을 특정할 수 있는 열은 애초에 열지 않았다.

자기점검 체크리스트

  • ☑ 데이터의 출처(직접 촬영·공개 데이터셋·직접 수집 등)가 명시되어 있다.
  • ☑ 데이터의 유형(이미지·텍스트·수치 등)과 수량이 구체적으로 서술되어 있다.
  • ☑ 학습에 사용된 데이터 화면 또는 데이터 목록 스크린샷이 첨부되어 있다.

모델은 무엇을 배웠는가

탐지율 90%는 어떻게 측정한 숫자일까?

학습에 쓰지 않은 정답으로 결과를 확인하는 법을 봅시다.

문항 5. 학습 결과

수집한 데이터로 모델을 학습시킨 결과를 서술하시오. 학습이 완료된 화면 또는 학습 결과를 스크린샷으로 첨부하고, 수치나 지표를 포함하여 결과의 의미를 간략히 설명하시오.

이 결과를 직접 만들어 보려면 — 오렌지에서 잇는 순서

  1. File 블록으로 거래 CSV를 불러온 뒤, 이상 여부 열의 역할을 meta로 바꾼다. 이 한 단계가 이 프로젝트의 전제 전부다. 빠뜨리면 정답을 보고 나누게 된다.
  2. Preprocess 블록을 잇고 Normalize Features를 고른다. 금액과 횟수의 자릿수가 달라서, 빠뜨리면 사실상 금액 하나로만 나뉜다.
  3. k-Means 블록을 잇고 k=2로 둔다. 평소 패턴 한 덩어리와 거기서 벗어난 덩어리를 나누려는 것이다.
  4. Scatter Plot으로 두 덩어리가 실제로 나뉘었는지 눈으로 본다. 나뉘지 않으면 k-평균으로 풀 문제가 아니다.
  5. 여기서 처음으로 meta에 넣어 둔 이상 여부를 꺼내 군집 결과와 비교한다. 이 확인은 한 번만 한다 — 결과를 보고 k를 바꾸기 시작하면 정답이 학습에 새어 든다.

이 상자는 보고서에 쓰는 답이 아니라 따라 해 보라는 안내다.

■ 모델이 내놓은 것 (정답을 보지 않고)

  • 군집 A (476건): 중심 금액 8.5만원 / 그날 거래 2.6회
  • 군집 B (24건): 중심 금액 142만원 / 그날 거래 8회
  • 산점도에서 대부분이 왼쪽 아래에 빽빽하게 모이고 오른쪽 위에 몇 건이 떨어져 있다.

여기까지가 모델의 출력이다. 어느 쪽이 이상인지는 아직 모른다. 다만 24건짜리 작은 덩어리가 「평소와 다른 쪽」이라고 보는 것이 자연스럽다.

■ 학습에 쓰지 않은 정답과 비교해 본 결과

  군집 A (평소 쪽) 군집 B (튀는 쪽)
실제 정상 (480건) 474 6
헛걸음
실제 이상 (20건) 2
놓침
18
  • 실제 이상 20건 중 18건을 군집 B가 담았다 — 탐지율 90%
  • 정상 480건 중 6건이 군집 B에 잘못 들어갔다 — 헛걸음 1.25%
  • 놓친 2건은 금액이 크지 않은 이상거래였다. 평소 패턴과 겹쳐 있으면 이 방법으로는 보이지 않는다.

실제 수행평가 때는 여기에 오렌지 k-Means 결과 및 Scatter Plot 화면 스크린샷을 붙입니다.

이 90%를 어떻게 읽어야 하는가

이것은 「모델의 정확도」가 아니다. 모델은 맞히려고 한 적이 없다. 그냥 덩어리를 나눴을 뿐이다. 90%는 「내가 튄다고 본 쪽이 실제 이상거래와 얼마나 겹쳤는가」를 나중에 측정해 본 숫자다.

정답을 학습에 넣지 않았기 때문에 이 숫자에 뜻이 있다. 만약 이상 여부를 열로 넣고 실행했다면 90%보다 훨씬 높은 숫자가 나왔을 텐데, 그것은 아는 답을 다시 읽은 것이라 새로운 수법에 대해서는 아무것도 말해 주지 못한다.

다만 이 방법이 통한 것은 이 데이터의 이상거래가 「금액이 크고 횟수가 많은」 뚜렷한 모양이었기 때문이다. 평소 거래와 섞여 있는 이상거래는 k-평균이 찾지 못한다 — 놓친 2건이 그것이다.

그날 거래 횟수 군집 A (평소 쪽) 군집 B (튀는 쪽) 중심 0 4 8 12 0 50 100 150 200 거래 금액(만원) 정상인데 튀는 쪽으로 간 거래 175만원 · 그날 1회
왼쪽 아래에 빽빽한 덩어리가 평소 거래이고, 오른쪽 위에 흩어진 것이 튀는 거래다. 주황 동그라미는 금액만 컸을 뿐 그날 한 번뿐인 정상 거래인데, 금액 축에서 너무 멀어 튀는 쪽으로 끌려갔다.

자기점검 체크리스트

  • ☑ 학습이 완료된 모델 화면 또는 학습 결과 스크린샷이 첨부되어 있다.
  • ☑ 모델의 학습 결과를 확인할 수 있는 수치나 지표가 언급되어 있다.
  • ☑ 학습 결과의 의미(모델이 잘 학습되었는지 여부 등)가 서술되어 있다.

새로운 값을 넣으면 맞히는가

큰돈을 한 번 쓴 사람은 어떻게 될까?

정상인데 눈에 띄는 거래를 넣어 봅시다.

문항 6. 테스트 및 결과 분석

학습된 모델에 새로운 데이터를 직접 입력하여 성능을 테스트하시오. 테스트 전 예상했던 결과와 실제 결과를 비교하고, 차이가 발생했다면 그 원인을 분석하시오.

■ 테스트 1 — 전형적인 평소 거래 (2.5만원 / 그날 3회)

  • 예상: 군집 A
  • 실제 출력: 군집 A, 중심까지 거리 0.04 — 아주 가깝다
  • 예상대로였다.

■ 테스트 2 — 전형적인 도용 패턴 (150만원 / 그날 9회)

  • 예상: 군집 B
  • 실제 출력: 군집 B, 중심까지 거리 0.09
  • 예상대로였다. 큰 금액과 잦은 횟수가 겹치면 뚜렷하게 나뉜다.

■ 테스트 3 — 큰돈을 한 번 쓴 정상 거래 (가전 구매 175만원 / 그날 1회)

  • 예상: 횟수가 1회뿐이니 군집 A에 남기를 기대했다.
  • 실제 출력: 군집 B — 군집 B까지 0.61, 군집 A까지 0.84
  • 정상 거래가 확인 대상으로 잡혔다. 두 거리가 다 크다는 점도 눈에 띈다.

■ 분석

테스트 3은 모델이 고장 난 것이 아니라 이 방법의 성질이다. k-평균은 「사기인가」를 보는 것이 아니라 「평소와 얼마나 다른가」만 본다. 큰돈을 한 번 쓰는 일은 드물지만 나쁜 일은 아니다. 그런데 드문 것과 나쁜 것을 구별하는 능력이 이 모델에는 없다.

더 눈여겨볼 것은 두 중심까지의 거리가 0.61과 0.84로 둘 다 멀다는 점이다. 어느 덩어리에도 잘 안 맞는다는 뜻인데, 모델은 그래도 가까운 쪽 하나를 골라 답을 낸다. 그래서 군집 번호만 보면 안 되고 거리를 함께 봐야 한다. 거리가 둘 다 멀면 「판단 보류」로 두는 것이 맞다.

반대 방향의 구멍도 있다. 문항 5에서 놓친 2건은 금액이 크지 않은 이상거래였다. 도용하는 쪽이 소액으로 여러 날에 나눠 쓰면 평소 덩어리 안에 묻혀 버린다. 이것은 데이터를 더 모아서 풀리는 문제가 아니다. 모델이 무엇을 보는지 알면 그것을 피해 갈 수 있기 때문이다.

자기점검 체크리스트

  • ☑ 학습에 사용하지 않은 새로운 데이터로 테스트를 수행하였다.
  • ☑ 테스트 전 예상 결과와 실제 결과가 모두 서술되어 있다.
  • ☑ 예상과 실제 사이에 차이가 있다면 그 원인이 분석되어 있다. (차이가 없으면 이유 서술)

어디에 쓰고 무엇을 고칠 것인가

막는 것과 물어보는 것은 어떻게 다를까?

쓸모와 한계를 나란히 놓고, 개선해도 남는 어려움까지 봅시다.

문항 7. 기대 효과 및 개선 사항

기대 효과: 이 모델을 자신의 관심 분야(예: 의료·환경·스포츠 등)에 적용한다면 어떤 효과를 기대할 수 있는지 서술하시오. 개선 사항: 현재 모델의 한계를 바탕으로, 성능을 향상시키기 위해 필요한 개선사항을 구체적으로 서술하시오.

기대 효과

관심 분야: 금융 · 보안

규칙을 새로 붙이지 않아도 평소와 다른 거래를 골라낼 수 있다. 수법이 바뀌어도 「평소와 다르다」는 성질은 그대로이므로, 처음 보는 방식에도 반응할 여지가 있다.

같은 방법을 기계 고장 조짐이나 이상 접속 탐지에도 쓸 수 있다. 「나쁜 것의 목록」 대신 「평소의 모습」을 기준으로 삼기 때문이다.

개선 사항

한계: 특성이 두 개뿐이라 시간대·장소·평소 소비액 같은 것이 빠져 있다. 드문 것과 나쁜 것을 구별하지 못하고, 평소 덩어리에 묻힌 이상거래는 놓친다.

개선 방향: ① 그 사람의 평소와 비교하도록 바꾼다 — 절대 금액이 아니라 「평소보다 몇 배」를 쓰면 큰돈을 자주 쓰는 사람이 매번 걸리지 않는다. ② 시간대·장소를 특성으로 넣는다. ③ 거리가 두 중심 모두에서 먼 건은 「판단 보류」로 따로 뺀다.

개선해도 남는 어려움

두 오류의 대가가 다르고, 누가 치르는지도 다르다. 놓치면 돈을 잃는다. 헛걸음이면 정상 거래가 그 자리에서 막힌다 — 병원비일 수도, 급하게 치러야 할 값일 수도 있다. 기준을 조이면 놓치는 것이 줄고 헛걸음이 늘며, 풀면 그 반대다. 이 데이터에서는 헛걸음 6건과 놓침 2건이었는데, 어느 쪽을 더 줄일지는 성능이 정해 주지 않는다.

「막는다」와 「물어본다」는 전혀 다른 일이다. 결제를 바로 취소하는 것과 확인 문자를 보내는 것은 같은 모델로 둘 다 할 수 있지만, 틀렸을 때 그 사람이 치르는 대가가 완전히 다르다. 자동으로 막을수록 빠르지만, 그만큼 모델이 틀렸을 때 되돌릴 기회가 없어진다.

그리고 이 문제에는 상대가 있다. 모델이 큰 금액과 잦은 횟수를 본다는 것이 알려지면, 도용하는 쪽은 소액으로 나눠 쓰는 쪽으로 옮겨 간다. 쓰레기나 기온처럼 가만히 있는 대상과 달리, 여기서는 모델을 피하려는 쪽이 함께 움직인다. 그래서 한 번 잘 만들어 두면 끝나는 일이 아니고, 성능을 올려서 완전히 닫을 수 있는 문제도 아니다.

자기점검 체크리스트

  • ☑ 자신의 관심 분야가 명시되고, 모델 적용 시 기대되는 효과가 구체적으로 서술되어 있다.
  • ☑ 현재 모델의 한계 또는 부족한 점이 언급되어 있다.
  • ☑ 성능 향상을 위한 개선사항(데이터 확충·모델 변경·파라미터 조정 등)이 제시되어 있다.

무엇이 남았는가

만들기 전과 후, 무엇이 달라졌을까?

점수가 아니라 생각의 변화를 적는 자리입니다.

문항 8. 소감

기계학습 모델을 직접 구현하는 과정에서 달라진 생각, 어려웠던 점, 새롭게 알게 된 것, 또는 느낀 점을 자유롭게 서술하시오.

가장 이상하게 느껴진 것은 정답이 있는데 일부러 쓰지 않는다는 점이었다. 처음에는 그게 손해처럼 보였다. 그런데 이상거래가 4%뿐이라 「전부 정상」이라고만 답해도 정확도가 96%가 된다는 걸 계산해 보고 생각이 바뀌었다. 높은 점수가 아무것도 잡지 못한 결과일 수 있다는 게 놀라웠다.

탐지율 90%를 적으면서도 조심스러웠다. 이건 모델이 맞힌 점수가 아니라, 내가 튄다고 본 쪽이 실제와 얼마나 겹쳤는지를 나중에 측정해 본 숫자였다. 그리고 이 결과를 보고 k를 여러 번 바꿔 맞췄다면 그 90%는 가짜가 됐을 것이다. 확인은 한 번만 해야 한다는 것을 배웠다.

테스트 3에서 가전을 산 정상 거래가 걸렸을 때가 인상적이었다. 모델은 「드문 것」을 찾을 뿐 「나쁜 것」을 찾는 게 아니었다. 두 말이 다르다는 걸 그때 처음 또렷하게 알았다.

마지막으로 이 문제에는 상대가 있다는 점이 계속 남았다. 쓰레기나 기온은 모델을 피해 다니지 않는데, 도용하는 쪽은 모델이 무엇을 보는지 알면 그걸 피해 간다. 잘 만들어 놓으면 끝나는 문제가 아니라는 것이 이번 실습에서 가장 크게 남았다.

자기점검 체크리스트

  • ☑ 기계학습 구현 과정에서 새롭게 알게 된 것 또는 달라진 생각이 포함되어 있다.
  • ☑ 자신의 경험을 바탕으로 진솔하게 작성되어 있다.