결정 임계값
Coddy Machine Learning 여정의 지도 학습 섹션에 포함된 레슨. 58개 중 17번째.
predict는 확률이 0.5라는 임계값을 넘으면 yes라고 합니다. 하지만 결함이 있는 화면을 놓치는 비용이 한 번 더 확인하는 비용보다 클 수 있습니다. 임계값을 낮춰 보세요:
오경보는 정상 화면을 표시한 경우입니다. 비교 연산으로 원하는 임계값을 선택하세요:
proba = model.predict_proba(X_test)[:, 1]
flag = proba >= 0.3 # True: 이 화면을 확인기준을 낮추면 실제 사례를 더 많이 포착하고 오경보도 늘어나며, 기준을 높이면 그 반대가 됩니다. 확률은 바뀌지 않고 기준점만 바뀝니다.
각 실수에 따른 비용을 기준으로 선택하세요.
챌린지
중급항공사는 승객이 연결 항공편을 놓칠 가능성이 있으면 착륙하기도 전에 항공편을 재예약합니다. 시작 코드는 connections.csv로 모델을 학습하고 임계값을 읽습니다.
- 테스트 승객이 연결 항공편을 놓칠 확률을 구합니다.
- 0.5, 그다음 임계값에 대해 재예약된 승객 수, 실제로 놓친 승객 중 잡아낸 수(전체 놓친 승객 수 기준), 불필요한 재예약 수를 셉니다.
- 임계값마다 한 줄씩 출력합니다.
다른 항공사 데이터와 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())
# 아래에 코드를 작성하세요
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
지도 학습의 모든 레슨
직접 연습해 보세요: 온라인 Python 컴파일러