Menu
CoddyTech

결정 임계값

Coddy Machine Learning 여정의 지도 학습 섹션에 포함된 레슨. 58개 중 17번째.

predict는 확률이 0.5라는 임계값을 넘으면 yes라고 합니다. 하지만 결함이 있는 화면을 놓치는 비용이 한 번 더 확인하는 비용보다 클 수 있습니다. 임계값을 낮춰 보세요:

결함일 확률에 따라 일렬로 놓인 휴대폰 화면 14개: 결함이 있는 사각형 6개, 정상인 점 8개. 임계값이 0.5일 때 결함 6개 중 4개를 잡아내고 오탐 1개가 발생합니다. 0.3일 때는 결함 6개 모두를 잡아내고 오탐 4개가 발생합니다

오경보는 정상 화면을 표시한 경우입니다. 비교 연산으로 원하는 임계값을 선택하세요:

proba = model.predict_proba(X_test)[:, 1]
flag = proba >= 0.3  # True: 이 화면을 확인

기준을 낮추면 실제 사례를 더 많이 포착하고 오경보도 늘어나며, 기준을 높이면 그 반대가 됩니다. 확률은 바뀌지 않고 기준점만 바뀝니다.

각 실수에 따른 비용을 기준으로 선택하세요.

challenge icon

챌린지

중급

항공사는 승객이 연결 항공편을 놓칠 가능성이 있으면 착륙하기도 전에 항공편을 재예약합니다. 시작 코드는 connections.csv로 모델을 학습하고 임계값을 읽습니다.

  1. 테스트 승객이 연결 항공편을 놓칠 확률을 구합니다.
  2. 0.5, 그다음 임계값에 대해 재예약된 승객 수, 실제로 놓친 승객 중 잡아낸 수(전체 놓친 승객 수 기준), 불필요한 재예약 수를 셉니다.
  3. 임계값마다 한 줄씩 출력합니다.

다른 항공사 데이터와 0.25를 사용하면:

Threshold 0.5: 9 rebooked, 7 of 15 misses caught, 2 needless rebookings
Threshold 0.25: 21 rebooked, 13 of 15 misses caught, 8 needless rebookings

직접 해보기

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression

# 승객당 한 행: 환승 대기 시간과 도착편 지연 시간은 분 단위, 터미널 변경 여부(1 또는 0), 위탁 수하물 수; missed는 1 또는 0
trips = pd.read_csv("connections.csv")
features = ["layover_min", "delay_min", "terminal_change", "checked_bags"]
X_train, X_test, y_train, y_test = train_test_split(trips[features], trips["missed"], test_size=0.25, random_state=0)
model = LogisticRegression(max_iter=1000)
model.fit(X_train, y_train)
threshold = float(input())

# 아래에 코드를 작성하세요
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

지도 학습의 모든 레슨

직접 연습해 보세요: 온라인 Python 컴파일러