체크포인트
Write a query to determine available seasons and games
/ 10
Create a labeled machine learning dataset
/ 10
Create a machine learning model
/ 20
Evaluate model performance and create table
/ 10
Using skillful ML model features
/ 10
Train the new model and make evaluation
/ 10
Run a query to create a table ncaa_2018_predictions
/ 10
Run queries to create tables ncaa_2019_tournament and ncaa_2019_tournament_predictions
/ 20
Google 머신러닝을 사용한 브라켓톨로지
- GSP461
- 개요
- 설정 및 요건
- 작업 1. BigQuery 콘솔 열기
- 작업 2. NCAA '3월의 광란'
- 작업 3. BigQuery에서 NCAA 공개 데이터 세트 찾기
- 작업 4. 쿼리를 작성하여 이용 가능한 시즌 및 경기 확인
- 작업 5. 머신러닝의 특성 및 라벨 이해
- 작업 6. 라벨이 지정된 머신러닝 데이터 세트 만들기
- 작업 7. 머신러닝 모델을 만들어 시드와 팀 이름을 기반으로 승자 예측
- 작업 8. 모델 성능 평가
- 작업 9. 예측 실행
- 작업 10. 모델의 2018 NCAA 토너먼트 결과 예측 적중률 확인
- 작업 11. 모델의 예측에는 한계가 있음
- 작업 12. 숙련된 ML 모델 기능 사용
- 작업 13. 새로운 특성 미리보기
- 작업 14. 선택한 측정항목 해석
- 작업 15. 새로운 모델 학습시키기
- 작업 16. 새로운 모델의 성능 평가
- 작업 17. 모델이 학습한 내용 확인
- 작업 18. 예측
- 작업 19. 예측 결과 분석
- 작업 20. 2018년 3월, 이변이 발생한 경기 확인
- 작업 21. 모델 성능 비교
- 작업 22. 2019년 '3월의 광란' 예측
- 수고하셨습니다
GSP461
개요
BigQuery는 Google의 완전 관리형, NoOps(무인 운영), 저비용 분석 데이터베이스입니다. BigQuery를 사용하면 인프라를 관리하지 않고 데이터베이스 관리자가 없어도 테라바이트 단위의 데이터를 쿼리할 수 있습니다. BigQuery는 SQL을 사용하고 사용한 만큼만 지불하는 종량제 모델을 활용합니다. BigQuery는 데이터를 분석하여 의미 있고 유용한 정보를 찾는 데 집중할 수 있게 해줍니다.
BigQuery ML을 사용하면 데이터 분석가가 SQL 지식을 사용하여 데이터가 이미 BigQuery에 있는 위치에서 머신러닝 모델을 빠르게 구축할 수 있습니다.
BigQuery에는 NCAA 농구 경기, 팀, 선수에 대해 공개적으로 사용 가능한 데이터 세트가 있습니다. 2009년까지의 경기 데이터에서는 플레이 바이 플레이 기록 및 박스 스코어 기록이 제공되며, 최종 스코어는 1996년까지 기록되어 있습니다. 1894~5 시즌까지의 승패 데이터가 추가로 제공되는 팀도 있습니다.
이 실습에서는 BigQuery ML을 사용하여 프로토타입을 제작하고, 학습을 진행하고, 평가를 마친 후 NCAA 농구 토너먼트에서 두 팀을 선정해 '승자'와 '패자'를 예측해봅니다.
실습할 내용
이 실습에서는 다음 작업을 수행하는 방법을 배웁니다.
- BigQuery를 사용하여 공개 NCAA 데이터 세트에 액세스하기
- NCAA 데이터 세트를 탐색하며 이용 가능한 데이터의 스키마와 범위에 익숙해지기
- 기존 데이터를 준비하여 특성 및 라벨로 변환하기
- 데이터 세트를 학습 및 평가 하위 집합으로 분할하기
- BigQuery ML을 사용하여 NCAA 토너먼트 데이터 세트를 기반으로 모델 빌드하기
- 새로 만든 모델을 사용하여 NCAA 토너먼트 승자 예측하기
기본 요건
이 실습은 중급 수준의 실습으로, SQL 및 언어 키워드를 사용해 본 경험이 있어야 시작할 수 있습니다. BigQuery에 익숙하면 더욱 좋습니다. 이 영역에서 좀 더 빠르게 진행하고 싶다면 이 실습을 시도하기 전에 다음과 같은 실습 중 하나 이상을 수행하시기 바랍니다.
설정 및 요건
실습 시작 버튼을 클릭하기 전에
다음 안내를 확인하세요. 실습에는 시간 제한이 있으며 일시중지할 수 없습니다. 실습 시작을 클릭하면 타이머가 시작됩니다. 이 타이머에는 Google Cloud 리소스를 사용할 수 있는 시간이 얼마나 남았는지 표시됩니다.
실무형 실습을 통해 시뮬레이션이나 데모 환경이 아닌 실제 클라우드 환경에서 직접 실습 활동을 진행할 수 있습니다. 실습 시간 동안 Google Cloud에 로그인하고 액세스하는 데 사용할 수 있는 새로운 임시 사용자 인증 정보가 제공됩니다.
이 실습을 완료하려면 다음을 준비해야 합니다.
- 표준 인터넷 브라우저 액세스 권한(Chrome 브라우저 권장)
- 실습을 완료하기에 충분한 시간---실습을 시작하고 나면 일시중지할 수 없습니다.
실습을 시작하고 Google Cloud 콘솔에 로그인하는 방법
-
실습 시작 버튼을 클릭합니다. 실습 비용을 결제해야 하는 경우 결제 수단을 선택할 수 있는 팝업이 열립니다. 왼쪽에는 다음과 같은 항목이 포함된 실습 세부정보 패널이 있습니다.
- Google Cloud 콘솔 열기 버튼
- 남은 시간
- 이 실습에 사용해야 하는 임시 사용자 인증 정보
- 필요한 경우 실습 진행을 위한 기타 정보
-
Google Cloud 콘솔 열기를 클릭합니다(Chrome 브라우저를 실행 중인 경우 마우스 오른쪽 버튼으로 클릭하고 시크릿 창에서 링크 열기를 선택합니다).
실습에서 리소스가 가동되면 다른 탭이 열리고 로그인 페이지가 표시됩니다.
팁: 두 개의 탭을 각각 별도의 창으로 나란히 정렬하세요.
참고: 계정 선택 대화상자가 표시되면 다른 계정 사용을 클릭합니다. -
필요한 경우 아래의 사용자 이름을 복사하여 로그인 대화상자에 붙여넣습니다.
{{{user_0.username | "Username"}}} 실습 세부정보 패널에서도 사용자 이름을 확인할 수 있습니다.
-
다음을 클릭합니다.
-
아래의 비밀번호를 복사하여 시작하기 대화상자에 붙여넣습니다.
{{{user_0.password | "Password"}}} 실습 세부정보 패널에서도 비밀번호를 확인할 수 있습니다.
-
다음을 클릭합니다.
중요: 실습에서 제공하는 사용자 인증 정보를 사용해야 합니다. Google Cloud 계정 사용자 인증 정보를 사용하지 마세요. 참고: 이 실습에 자신의 Google Cloud 계정을 사용하면 추가 요금이 발생할 수 있습니다. -
이후에 표시되는 페이지를 클릭하여 넘깁니다.
- 이용약관에 동의합니다.
- 임시 계정이므로 복구 옵션이나 2단계 인증을 추가하지 않습니다.
- 무료 체험판을 신청하지 않습니다.
잠시 후 Google Cloud 콘솔이 이 탭에서 열립니다.
BigQuery 콘솔 열기
- Google Cloud 콘솔에서 탐색 메뉴 > BigQuery를 선택합니다.
Cloud 콘솔의 BigQuery에 오신 것을 환영합니다라는 메시지 상자가 열립니다. 이 메시지 상자에서는 빠른 시작 가이드 및 출시 노트로 연결되는 링크가 제공됩니다.
- 완료를 클릭합니다.
BigQuery 콘솔이 열립니다.
작업 1. BigQuery 콘솔 열기
-
Cloud 콘솔에서 탐색 메뉴를 열고 BigQuery를 선택합니다.
-
완료를 클릭하여 베타 UI로 이동합니다. 프로젝트 ID가 다음과 유사하게 탐색기 탭에 설정되어 있는지 확인합니다.
프로젝트 옆에 있는 확장 노드 화살표를 클릭해도 데이터베이스나 테이블이 표시되지 않을 것입니다. 이는 아직 추가한 프로젝트가 없기 때문입니다.
다행히 BigQuery에는 가용 공개 데이터 세트가 다양하게 마련되어 있어 이를 활용해 작업할 수 있습니다. 이제 NCAA 데이터 세트에 대해 알아보고 이 데이터 세트를 BigQuery에 추가하는 방법을 살펴보겠습니다.
작업 2. NCAA '3월의 광란'
NCAA(National Collegiate Athletic Association, 전미 대학 체육 협회)는 미국에서 매년 남자부와 여자부, 이렇게 두 종류의 중요한 대학 농구 토너먼트를 개최합니다. 3월에 열리는 NCAA 남자부 농구 토너먼트에는 68개 팀이 참가해 싱글 엘리미네이션(single-elimination) 방식으로 맞대결을 펼치며, 단 한 팀만이 '3월의 광란' 최종 우승자의 타이틀을 거머쥡니다.
NCAA에서는 남자부/여자부 농구 경기 및 선수의 시즌 및 파이널 토너먼트 통계가 포함된 공개 데이터 세트를 제공합니다. 2009년까지의 경기 데이터에서는 플레이 바이 플레이 기록 및 박스 스코어 기록이 제공되며, 최종 스코어는 1996년까지 기록되어 있습니다. 1894~5 시즌까지의 승패 데이터가 추가로 제공되는 팀도 있습니다.
- 이 데이터 세트에 대한 더 자세한 정보나 활용 방법을 알아보려면 Google Cloud 마케팅 광고 캠페인에서 실시간 인사이트 예측에 관한 내용을 확인하세요. 올해 토너먼트에 대한 최신 정보는 Google Cloud '3월의 광란' 인사이트에서 볼 수 있습니다.
작업 3. BigQuery에서 NCAA 공개 데이터 세트 찾기
-
이 단계에서는 BigQuery 콘솔에 접속한 상태여야 합니다. 탐색기 탭에서 + 추가 버튼을 클릭한 다음 공개 데이터 세트를 선택합니다.
-
검색창에서 NCAA 농구를 입력하고 Enter 키를 누릅니다. 하나의 검색 결과가 나타나면 데이터 세트 보기를 클릭합니다.
이렇게 하면 데이터 세트가 로드된 BigQuery 탭이 새로 열립니다. 이 탭에서 작업을 계속해도 되고, 이 탭을 닫은 다음 다른 탭에서 본인의 BigQuery 콘솔을 새로 고쳐 공개 데이터 세트를 불러와도 됩니다.
- bigquery-public-data > ncaa_basketball 데이터 세트를 확장하면 테이블이 표시됩니다.
데이터 세트에 테이블 10개가 표시될 것입니다.
-
mbb_historical_tournament_games
를 클릭한 다음 미리보기를 클릭하면 데이터의 샘플 행을 볼 수 있습니다. -
세부정보를 클릭하면 테이블에 대한 메타데이터를 확인할 수 있습니다.
페이지가 다음과 비슷하게 표시됩니다.
작업 4. 쿼리를 작성하여 이용 가능한 시즌 및 경기 확인
이제 간단한 SQL 쿼리를 작성하여 얼마나 많은 시즌과 경기를 mbb_historical_tournament_games
테이블에서 탐색할 수 있는지 측정해 보겠습니다.
- 테이블 세부정보 섹션 위에 있는 쿼리 편집기에서 다음을 복사하여 해당 필드에 붙여넣습니다.
- 실행을 클릭합니다. 잠시 후 다음과 비슷한 결과가 표시됩니다.
- 출력된 결과까지 스크롤하여 시즌의 수와 시즌당 진행된 경기의 수를 적어놓습니다. 이 정보는 다음 질문에 답하는 데 사용됩니다. 또한 페이지 나누기 화살표 근처 오른쪽 하단을 보면 몇 개의 행이 반환되었는지도 쉽게 파악할 수 있습니다.
내 진행 상황 확인하기를 클릭하여 목표를 확인합니다.
배운 내용 테스트하기
다음은 지금껏 다룬 개념에 대한 이해를 돕기 위한 객관식 문제입니다. 최선을 다해 풀어보세요.
작업 5. 머신러닝의 특성 및 라벨 이해
이 실습의 최종 목표는 과거에 진행되었던 경기 이력 정보를 사용하여 주어진 NCAA 남자부 농구 토너먼트 대진의 승자를 예측하는 것입니다. 머신러닝에서 데이터의 각 열은 결과(토너먼트 경기에서는 승 또는 패)를 결정하는 데 도움을 주며 이를 특성이라고 지칭합니다.
예측하고자 하는 데이터의 열은 라벨이라고 합니다. 머신러닝 모델은 특성 간의 상관관계를 '학습'하여 라벨의 결과를 예측합니다.
이 과거 데이터 세트에서 특성이 될 수 있는 항목은 다음과 같습니다.
- 시즌
- 팀 이름
- 상대 팀 이름
- 팀 시드(순위)
- 상대 팀 시드
미래 경기에 대해 예측하고자 하는 라벨은 팀의 승패 여부인 경기의 결과입니다.
배운 내용 테스트하기
다음은 지금껏 다룬 개념에 대한 이해를 돕기 위한 객관식 문제입니다. 최선을 다해 풀어보세요.
작업 6. 라벨이 지정된 머신러닝 데이터 세트 만들기
머신러닝 모델을 빌드하려면 많은 양의 고품질 학습 데이터가 필요합니다. 다행히도 NCAA 데이터 세트는 탄탄해서 이를 바탕으로 효과적인 모델을 빌드하는 데 손색이 없습니다.
-
BigQuery 콘솔로 돌아가겠습니다. 실행했던 쿼리의 결과가 그대로 남아 있을 것입니다.
-
왼쪽 메뉴에서 테이블 이름을 클릭하여
mbb_historical_tournament_games
테이블을 엽니다. 로드가 완료되면 미리보기를 클릭합니다. 페이지가 다음과 비슷하게 표시됩니다.
배운 내용 테스트하기
다음은 지금껏 다룬 개념에 대한 이해를 돕기 위한 객관식 문제입니다. 최선을 다해 풀어보세요.
-
데이터 세트를 살펴보면 데이터 세트의 행 하나에
win_market
및lose_market
열이 둘 다 있는 것을 발견할 수 있습니다. 단일 경기의 기록을 양 팀의 기록으로 쪼개면 각 행을 '승자'와 '패자'로 라벨을 지정할 수 있습니다. -
다음 쿼리를 복사해 쿼리 편집기에 붙여넣은 다음 실행을 클릭합니다.
다음과 같은 출력이 표시됩니다.
내 진행 상황 확인하기를 클릭하여 목표를 확인합니다.
결과에서 어떤 특성이 사용 가능한지 알게 되었다면 데이터 세트에 대한 이해를 돕는 다음 문제를 풀어보세요.
작업 7. 머신러닝 모델을 만들어 시드와 팀 이름을 기반으로 승자 예측
데이터 탐색을 마쳤으니 이제 머신러닝 모델을 학습시킬 시간입니다.
- 아래 질문에 답변하며 이 섹션을 정리하세요.
모델 유형 선택하기
이 문제를 해결하기 위해서 분류 모델을 빌드해보겠습니다. 승 또는 패, 이렇게 클래스가 2개 있는 경우는 이진 분류 모델이라고도 부릅니다. 팀은 경기에서 승리하거나 패배하게 됩니다.
원한다면 이번 실습을 마치고 예상 모델을 사용하여 팀이 획득하는 총 점수를 예상해볼 수도 있겠지만, 이번 실습에서 중점적으로 다룰 내용은 아닙니다.
현재 예측이 진행되는지 아니면 분류가 진행되는지 쉽게 알 수 있는 방법은 예측하고 있는 데이터의 라벨 유형(열)을 살펴보는 것입니다.
- 라벨 유형이 숫자 열(예: 판매량 또는 경기에서의 득점)이라면 예측을 수행합니다.
- 라벨 유형이 문자열 값이면 분류를 수행합니다(이 행은 클래스 내의 행일 수도, 다른 클래스 내의 행일 수도 있음).
- 클래스(예: 우승, 패배, 무승부)가 3개 이상인 경우 다중 클래스 분류를 수행하는 것입니다.
여기서 다루는 분류 모델은 로지스틱 회귀라고 하는, 널리 사용되는 통계 모델을 사용하여 머신러닝을 수행합니다.
각각의 가능한 개별 라벨 값의 확률을 생성하는 모델이 필요하며, 이번 실습의 경우 이 값은 '승리' 또는 '패배'입니다. 로지스틱 회귀는 이러한 목적을 달성하기 위한 출발점으로 삼기에 좋은 모델 유형입니다. 다행인 점은 모델 학습이 진행되는 동안 ML 모델이 수학적 계산과 최적화를 모두 수행한다는 것입니다. 이런 게 바로 컴퓨터의 진정한 장점이죠!
BigQuery ML을 사용하여 머신러닝 모델 만들기
BigQuery에서 분류 모델을 만들려면 SQL 문 CREATE MODEL
을 작성하고 몇 가지 옵션만 제공하면 됩니다.
하지만 먼저 프로젝트 내에 모델을 저장할 공간을 확보해야 합니다.
- 탐색기 탭에서 프로젝트 ID 옆에 있는 작업 보기 아이콘을 클릭하고 데이터 세트 만들기를 선택합니다.
- 그러면 데이터 세트 만들기 대화 상자가 열립니다. 데이터 세트 ID를
bracketology
로 설정하고 데이터 세트 만들기를 클릭합니다.
- 이제 쿼리 편집기에서 다음 명령어를 실행합니다.
이 코드를 살펴보면 SQL 단 몇 줄만으로 모델을 만든 것을 알 수 있습니다. 여기서 가장 중요한 옵션은 분류 작업의 모델 유형으로 logistic_reg를 선택하는 것입니다.
모델 학습에는 3~5분이 소요됩니다. 작업이 완료되면 다음과 같이 출력됩니다.
- 콘솔 오른쪽에 있는 모델로 이동 버튼을 클릭합니다.
내 진행 상황 확인하기를 클릭하여 목표를 확인합니다.
모델 학습 세부정보 보기
- 모델 세부정보에서 아래로 스크롤하여 학습 옵션 섹션으로 이동하면 모델이 학습하기 위해 실제로 수행했던 반복 내용을 볼 수 있습니다.
머신러닝을 사용해 본 경험이 있다면 OPTIONS
문에서 값을 정의하여 이런 하이퍼파라미터(모델 실행 전 설정되는 옵션)를 모두 맞춤설정할 수 있습니다.
머신러닝을 처음 사용해 본다고 하더라도 설정되지 않은 모든 옵션에 대해서는 BigQuery ML이 기본값을 알아서 설정하므로 별다른 작업을 하지 않아도 됩니다.
자세히 알아보려면 BigQuery ML 모델 옵션 목록을 참조하세요.
모델 학습 통계 보기
머신러닝 모델은 알려진 특성과 알려지지 않은 라벨 간의 상관관계를 '학습'합니다. '순위 시드' 또는 '학교 이름' 등의 일부 특성이 경기가 진행된 요일 등 다른 데이터 열(특성)보다 승/패를 결정하는 데 더 큰 영향을 미친다는 것은 누구나 직관적으로 추측할 수 있습니다.
머신러닝 모델은 이러한 직관 없이 학습 프로세스를 시작하고 각 특성의 가중치를 일반화하여 무작위로 부여합니다.
학습 프로세스를 거치면서 모델은 각 특성에 가장 알맞은 가중치를 부여하는 경로를 최적화합니다. 학습을 실행할 때마다 모델은 학습 데이터 손실 및 평가 데이터 손실을 최소화하기 위해 노력합니다.
평가에 대한 최종 손실이 학습에 대한 최종 손실에 비해 현저히 높다면 모델이 일반화 가능한 관계를 학습하는 대신 과적합 상태이거나 학습 데이터를 기억하고 있는 것입니다.
학습 탭을 클릭하고 보기 옵션 아래에서 테이블을 선택하면 모델이 수행한 학습의 횟수를 조회할 수 있습니다.
각 실행 명령마다 모델은 약 20초 동안 학습을 3회 반복합니다. 조회 결과는 다양할 것입니다.
모델이 특성의 어떤 부분을 학습했는지 확인하기
학습을 마치면 가중치를 조사하여 어떤 특성이 모델에 가장 중요했는지 볼 수 있습니다.
- 쿼리 편집기에서 다음 명령어를 실행합니다.
다음과 유사한 결과가 출력됩니다.
보시다시피, 팀의 시드 숫자가 매우 낮거나(1, 2, 3) 매우 높으면(14, 15, 16) 모델이 승패를 판단할 때 높은 가중치(최대 1.0)를 부여합니다. 시드 숫자가 낮은 팀은 토너먼트에서 좋은 성적을 낼 것이라고 예상하므로 이는 직관적으로 타당합니다.
"IF
시드가 1이면 THEN
팀에 80% 높은 승률을 적용한다"와 같이 SQL에 하드코딩된 IF THEN
문을 잔뜩 만들지 않았다는 점이 머신러닝의 강력한 힘입니다. 머신러닝은 하드코딩된 규칙과 논리에서 탈피해 스스로 관계를 학습합니다. 자세한 내용은 BQML 문법 가중치 문서를 확인하세요.
작업 8. 모델 성능 평가
모델의 성능을 평가하려면 학습된 모델에 ML.EVALUATE
를 실행하기만 하면 됩니다.
- 쿼리 편집기에서 다음 명령어를 실행합니다.
다음과 비슷한 출력이 표시됩니다.
값을 보면 정확도가 약 69%입니다. 50%보다 높은 확률이지만 개선의 여지가 있습니다.
작업 9. 예측 실행
2017 시즌까지의 과거 데이터(현재 보유한 모든 데이터)를 가지고 모델을 학습시켰으니 이제 2018 시즌 결과를 예측해보겠습니다. 데이터 과학 팀에서 2018 토너먼트 대진표를 별도의 테이블로 제공했는데, 이것은 원본 데이터 세트에는 없는 내용입니다.
예측을 실행하는 것은 매우 간단합니다. 학습된 모델에서 ML.PREDICT
를 호출하고 예측하고자 하는 데이터 세트에 전달하면 됩니다.
- 쿼리 편집기에서 다음 명령어를 실행합니다.
잠시 후 다음과 비슷한 결과가 표시됩니다.
내 진행 상황 확인하기를 클릭하여 목표를 확인합니다.
이제 원본 데이터 세트와 함께 다음 3개의 열이 새로 추가된 것을 볼 수 있습니다.
- 예측된 라벨
- 예측된 라벨 옵션
- 예측된 라벨 확률
2018년 '3월의 광란' 토너먼트 결과가 나와 있으니 예측 결과를 토대로 모델이 얼마나 잘 예측했는지 알아보도록 하겠습니다. (팁: 2019년 '3월의 광란' 토너먼트를 예측하려면 2019년 시드 및 팀 이름이 있는 데이터 세트를 전달하면 됩니다. 아직 경기가 진행되지 않았으므로 당연히 라벨 열은 비어 있습니다. 그러니 한번 예측해 보세요.)
작업 10. 모델의 2018 NCAA 토너먼트 결과 예측 적중률 확인
- 쿼리 편집기에서 다음 명령어를 실행합니다.
다음과 비슷한 출력이 표시됩니다.
예측 134개(3월 토너먼트 경기 67개) 중에서 38개 결과가 틀렸습니다. 2018 토너먼트 대진에서는 전체적으로 70%의 적중률을 보였습니다.
작업 11. 모델의 예측에는 한계가 있음
3월의 광란 토너먼트에는 모델이 예측하기 무척 힘들고 아슬아슬한 승리나 놀라운 이변으로 이어지는 다른 요소나 특성이 너무나도 많습니다.
2017 토너먼트에서 모델의 예측 결과와 완전히 다른 가장 놀라운 이변을 찾아보겠습니다. 모델이 80% 이상의 신뢰도로 예측했는데 결과는 틀렸던 경기를 찾아볼 것입니다.
- 쿼리 편집기에서 다음 명령어를 실행합니다.
다음과 같은 결과가 표시됩니다.
UMBC의 라이언 오돔 감독도 경기 후에 "믿을 수 없다는 말밖에 할 말이 없네요."라고 했을 정도입니다. 자세한 내용은 2018 UMBC 대 버지니아 남자 농구 경기 기사를 참조하세요.
요약
- 경기 결과를 예측하는 머신러닝 모델을 만들어보았습니다.
- 시드와 팀 이름을 주 특성으로 사용하여 경기력을 평가한 결과 69%의 정확성을 보였습니다.
- 2018 토너먼트 결과를 예측해보았습니다.
- 예측 결과를 분석하여 유용한 정보를 얻었습니다.
다음 도전과제는 시드와 팀 이름을 특성으로 사용하지 '않고' 더 나은 모델을 빌드하는 것입니다.
작업 12. 숙련된 ML 모델 기능 사용
이번 실습 파트 2에서는 새로 제공되는 더욱 상세한 특성을 사용하여 두 번째 ML 모델을 빌드해보겠습니다.
BigQuery ML을 사용한 ML 모델 빌드에 익숙해졌으니 데이터 과학 팀에서 모델이 학습할 새로운 팀 측정항목을 만들어 포함시킨 새로운 플레이 바이 플레이 데이터 세트를 제공해주었습니다. 예를 들면 다음과 같습니다.
- 과거 플레이 바이 플레이 분석에 기반한 시간대별 득점 효율
- 시간대별 볼 점유
정교한 특성을 사용하여 새로운 ML 데이터 세트 만들기
- 쿼리 편집기에서 다음 명령어를 실행합니다.
잠시 후 다음과 비슷한 결과가 표시됩니다.
내 진행 상황 확인하기를 클릭하여 목표를 확인합니다.
작업 13. 새로운 특성 미리보기
- 콘솔 오른쪽에 있는 테이블로 이동 버튼을 클릭합니다. 그런 다음 미리보기 탭을 클릭합니다.
테이블이 다음과 비슷하게 표시됩니다.
출력 결과가 위 스크린샷과 똑같지 않더라도 괜찮습니다.
작업 14. 선택한 측정항목 해석
- 이제 예측을 수행하는 데 도움을 주는 몇 가지 중요한 라벨에 대해 배워보겠습니다.
opp_efficiency_rank
상대 팀의 효율성 순위: 모든 팀 중 상대 팀의 시간대별 득점 효율성(볼 점유 100당 득점)의 순위입니다. 순위 숫자가 낮을수록 좋습니다.
opp_pace_rank
상대 팀의 페이스 순위: 모든 팀 중 상대 팀의 볼 점유(40분간 점유 횟수) 순위입니다. 순위 숫자가 낮을수록 좋습니다.
이제 팀의 득점력과 볼 점유력에 대한 유용한 정보가 담긴 특성으로 두 번째 모델을 학습시킬 수 있습니다.
모델이 '과거 기록을 토대로 강팀을 기억하는 경우'를 방지하기 위한 추가 조치로, 이번 차세대 모델에서는 팀 이름과 시드를 배제하고 측정항목에만 집중하겠습니다.
작업 15. 새로운 모델 학습시키기
- 쿼리 편집기에서 다음 명령어를 실행합니다.
잠시 후 다음과 유사한 결과가 출력됩니다.
작업 16. 새로운 모델의 성능 평가
- 모델의 성능을 평가하려면 쿼리 편집기에서 다음 명령어를 실행합니다.
다음과 비슷한 결과가 출력됩니다.
그 결과 다른 특성으로 새로운 모델을 학습시킨 결과 정확성이 약 75%로 원래 모델보다 5% 정도 올랐습니다.
이번 실습은 머신러닝에서 고품질의 특성 데이터 세트가 모델의 정확성에 얼마나 큰 차이를 만들 수 있는지 확실히 알게 된 시간이었습니다.
내 진행 상황 확인하기를 클릭하여 목표를 확인합니다.
작업 17. 모델이 학습한 내용 확인
- 승/패 결과를 도출할 때 모델은 어떤 특성에 가장 가중치를 부여할까요? 쿼리 편집기에서 다음 명령어를 실행합니다.
다음과 비슷한 결과가 출력됩니다.
(승/패에) 가장 크게 영향을 주는 특성이 목록 앞에 위치하도록 가중치 절대값을 기준으로 순서를 정했습니다.
결과에서 볼 수 있듯이 상위 3개 특성은 pace_stat_diff
, eff_stat_diff
, eff_rating_diff
입니다. 조금 더 자세히 알아보도록 하겠습니다.
pace_stat_diff
실제 통계상 양 팀 간 (40분당 볼 점유)의 차이입니다. 모델에 따르면 경기 결과를 도출하는 데 가장 큰 영향을 미친 요소입니다.
eff_stat_diff
실제 통계상 양 팀 간 (볼 점유 100회당 순 득점)의 차이입니다.
eff_rating_diff
득점 효율성의 정규화된 평가에서 보이는 양 팀 간 차이입니다.
모델이 예측 시에 가중치를 높게 부여하지 않은 특성은 무엇일까요? 바로 '시즌'입니다. 위 가중치 순서 중 마지막입니다. 이 모델은 시즌(2013, 2014, 2015) 특성이 경기 결과 예측에 그다지 도움이 되지 않는다고 보고 있습니다. '2014년'이라는 요소가 어떤 팀에도 특별하게 작용하지 않았습니다.
팀이 얼마나 효율적으로 득점했는지보다도 팀의 페이스(얼마나 볼을 잘 컨트롤했느냐 여부)에 모델이 더 높은 가치를 부여했다는 점이 무척 흥미롭습니다.
작업 18. 예측
- 쿼리 편집기에서 다음 명령어를 실행합니다.
다음과 비슷한 결과가 출력됩니다.
내 진행 상황 확인하기를 클릭하여 목표를 확인합니다.
작업 19. 예측 결과 분석
정확한 경기 결과를 알고 있으므로 새로운 테스팅 데이터 세트를 사용한 예측에서 모델이 어느 부분을 틀렸는지 알 수 있습니다.
- 쿼리 편집기에서 다음 명령어를 실행합니다.
쿼리에서 반환된 기록 수에서 볼 수 있듯 모델은 2018 토너먼트 총 매치업 중에서 48개 매치업(24경기) 결과를 잘못 예측했으며 정확성은 64%입니다. 2018년은 이변이 가득한 해였나 봅니다. 어떤 이변이 발생했는지 알아보겠습니다.
작업 20. 2018년 3월, 이변이 발생한 경기 확인
- 쿼리 편집기에서 다음 명령어를 실행합니다.
다음과 같은 결과가 출력됩니다.
가장 큰 이변은 이전 모델에서도 찾았던 것과 동일한 경기인 UMBC 대 버지니아 대학(Virginia)의 경기입니다. 이번이 '가장 심한 광란의' 3월이었나요? 기사에서 이변이 가득한 해였던 2018년 전체에 대해 자세히 알아보세요. 2019년에도 이렇게 이변이 가득할까요?
작업 21. 모델 성능 비교
단순 모델(시드 비교)은 잘못 예측했는데 고급 모델은 정확히 예측한 경기가 있는지 알아볼까요?
- 쿼리 편집기에서 다음 명령어를 실행합니다.
다음과 같은 결과가 출력됩니다.
모델 예측 결과 플로리다 주립대학(Florida St.)(시드 09)이 재비어 대학(Xavier)(시드 01)을 상대로 이변을 일으킬 것이라 했는데 예측이 맞았습니다.
페이스와 슈팅 효율성 등 보다 정교한 새 특성을 기반으로 한 새로운 모델은 이변을 정확하게 예측해냈습니다. 시드 순위에 따르면 다른 결과가 나와야 했었음에도 말이죠. YouTube에서 경기 하이라이트를 시청해 보세요.
작업 22. 2019년 '3월의 광란' 예측
2019년 대회의 팀과 시드 순위를 알고 있으니 앞으로 벌어질 경기 결과를 예측해봅시다.
2019년 데이터 탐색하기
- 다음 쿼리를 실행하여 최상위 시드를 찾으세요.
다음과 같은 결과가 출력됩니다.
모든 가능한 경기의 행렬 만들기
토너먼트가 진행됨에 따라 어떤 팀이 서로 맞붙을지 모르는 상황이기 때문에 팀을 모든 팀과 맞붙여보겠습니다.
SQL에서 특정 팀을 한 테이블에서 모든 다른 팀과 맞붙게 하는 쉬운 방법은 바로 CROSS JOIN입니다.
- 아래 쿼리를 실행하여 토너먼트에서 가능한 팀 경기를 모두 불러오세요.
2018 팀 통계(페이스, 효율성) 추가하기
예측 수행하기
내 진행 상황 확인하기를 클릭하여 목표를 확인합니다.
예측 결과 가져오기
- 여기서 모델 결과를 필터링하여 듀크 대학(Duke)의 가능한 경기 전체를 보겠습니다. 스크롤하여 듀크 대학(Duke) 대 노스다코타 주립대학(Dakota St.) 경기를 찾으세요.
정보: 2019년 3월 22일 듀크 대학(Duke)(1)이 노스다코타 주립대학(North Dakota St.)(16)을 상대로 승리할 확률이 88.5%입니다.
위에 있는 school_ncaa 필터를 변경하여 대진표에서 매치업 결과를 예측해보세요. 모델의 신뢰도를 적어 보면서 경기를 즐기시기 바랍니다!
수고하셨습니다
BigQuery ML을 사용하여 NCAA 남자부 농구 토너먼트 승리 팀을 예측해 보았습니다.
다음 단계/더 학습하기
- 농구 측정항목 및 분석에 대해 더 자세히 알아보고 싶으신가요? Google Cloud NCAA 토너먼트 광고 및 예측을 담당한 팀의 추가 분석을 확인하세요.
- 다음 실습을 확인하세요.
Google Cloud 교육 및 자격증
Google Cloud 기술을 최대한 활용하는 데 도움이 됩니다. Google 강의에는 빠른 습득과 지속적인 학습을 지원하는 기술적인 지식과 권장사항이 포함되어 있습니다. 기초에서 고급까지 수준별 학습을 제공하며 바쁜 일정에 알맞은 주문형, 실시간, 가상 옵션이 포함되어 있습니다. 인증은 Google Cloud 기술에 대한 역량과 전문성을 검증하고 입증하는 데 도움이 됩니다.
설명서 최종 업데이트: 2024년 3월 19일
실습 최종 테스트: 2024년 3월 19일
Copyright 2024 Google LLC All rights reserved. Google 및 Google 로고는 Google LLC의 상표입니다. 기타 모든 회사명 및 제품명은 해당 업체의 상표일 수 있습니다.