1. 소개
이 실습에서는 콘솔을 사용하여 BigQuery로 테이블 형식 데이터로 모델을 학습시키고 서빙합니다. 이 오퍼링은 SQL 기반 모델 서빙 및 학습에 추가되는 서비스입니다. BigQuery ML을 사용하면 BigQuery에서 SQL 쿼리를 사용하여 머신러닝 모델을 만들고 실행할 수 있습니다. BigQuery ML의 목표는 SQL 실무자가 기존 도구를 사용하여 모델을 빌드할 수 있도록 지원하여 머신러닝을 대중화하고 데이터 이동의 필요성을 제거하여 개발 속도를 향상시키는 것입니다.
학습할 내용
- BigQuery에서 사용 가능한 데이터 살펴보기
- 콘솔을 사용하여 BigQuery에서 SQL로 모델 만들기
- 생성된 모델의 결과 평가
- 허위 거래인지 또는 모델이 만들어지지 않은 경우 거래 예측
2. 데이터 정보
데이터 세트에는 2013년 9월에 유럽의 카드 소지자가 신용카드로 거래한 데이터가 포함되어 있습니다. 이 데이터 세트는 2일 동안 발생한 거래를 나타내며 284,807건의 거래 중 492건의 사기가 발생했습니다. 매우 불균형하며 포지티브 클래스 (사기)가 전체 거래의 0.172% 를 차지합니다.
여기에는 PCA 변환의 결과인 숫자 입력 변수만 포함됩니다. 비밀유지 문제로 인해 데이터의 원래 기능과 자세한 배경 정보를 제공해 드릴 수 없습니다.
- 특성 V1, V2, ... V28은 PCA로 얻은 주요 구성요소이며 PCA로 변환되지 않은 유일한 특성은 '시간'입니다. '금액'입니다.
- '시간' 기능 에는 각 트랜잭션과 데이터 세트의 첫 번째 트랜잭션 사이에 경과된 시간(초)이 포함됩니다.
- 특성 '금액'은 거래 금액입니다. 이 특성은 예시에 따라 비용에 기반한 학습에 사용할 수 있습니다.
- 특성 '클래스'는 응답 변수로, 사기의 경우 값 1, 그렇지 않은 경우 0을 사용합니다.
이 데이터 세트는 빅데이터 마이닝 및 사기 감지에 관한 ULB ( Université Libre de Bruxelles)의 Worldline과 머신러닝 그룹 (http://mlg.ulb.ac.be)의 연구 협력을 통해 수집 및 분석되었습니다.
관련 주제와 관련된 현재 및 과거 프로젝트에 관한 자세한 내용은 https://www.researchgate.net/project/Fraud-detection-5 및 DefeatFraud 프로젝트 페이지를 참고하세요.
인용:
안드레아 달 포졸로, 올리비에 칼렌, 레이드 A. 존슨과 지안루카 본템피 불균형 분류를 위한 언더샘플링으로 확률 보정. Symposium on Computational Intelligence and Data Mining (CIDM), IEEE, 2015년
달 포졸로, 안드레아, 칼렌, 올리비에 Le Borgne, Yann-Ael 워터스쿠트, 세르지 본템피, 지안루카. 실무자의 관점에서 신용카드 사기 감지에 대한 교훈, 애플리케이션을 사용하는 Expert 시스템,41,10,4915~4928,2014, Pergamon
달 포졸로, 안드레아, 자코모 보라치, 칼렌, 올리비에 알리피, 세사레 본템피, 지안루카. 신용카드 사기 감지: 사실적인 모델링 및 새로운 학습 전략, 신경망 및 학습 시스템에서의 IEEE 트랜잭션,29,8,3784~3797,2018,IEEE
달 포졸로, 안드레아 신용카드 사기 감지를 위한 적응형 머신러닝 ULB MLG 박사 논문 (G. Bontempi)
파브리지오 카르실로, 달 포졸로, 안드레아, 르 보르뉴, 얀-아엘 칼렌, 올리비에 메이저, 야니스 본템피, 지안루카. Scarff: Spark를 사용한 신용카드 사기 감지 스트리밍을 위한 확장 가능한 프레임워크, Information fusion,41, 182-194,2018,Elsevier
파브리지오 카르실로, 르 보르뉴, 얀-아엘 칼렌, 올리비에 본템피, 지안루카. 실제 신용카드 사기 감지를 위한 능동적 학습 전략 스트리밍: 평가 및 시각화, International Journal of Data Science and Analytics, 5,4,285-300,2018,Springer International Publishing
Bertrand Lebichot, Yann-Aël Le Borgne, Liyun He, Frederic Oblé, Gianluca Bontempi Deep-Learning Domain Adaptation Techniques for Credit Card Fraud Detection, INNSBDDL 2019: Recent Advances in Big Data and Deep Learning, pp 20188,
파브리지오 카르실로, 얀-아엘 르 보르뉴, 올리비에 칼렌, 프레데릭 오블레, 지안루카 본템피 Combining UnDirecting and Supervised Learning in Credit Card Fraud Detection Information Sciences, 2019년
3. 환경 설정
이 Codelab을 실행하려면 결제가 사용 설정된 Google Cloud Platform 프로젝트가 필요합니다. 프로젝트를 만들려면 여기의 안내를 따르세요.
- BigQuery API 사용 설정
BigQuery로 이동하고 아직 사용 설정되지 않은 경우 사용 설정을 선택합니다. 이 정보는 모델을 만드는 데 필요합니다.
4. 데이터 탐색하기
1단계: BigQuery로 이동하기
https://cloud.google.com/console에서 BigQuery 찾기
2단계: 쿼리를 사용하여 데이터 탐색하기
편집기에 아래의 SQL 쿼리를 입력하여 공개 데이터 세트의 데이터를 검토합니다 .
SELECT * FROM `bigquery-public-data.ml_datasets.ulb_fraud_detection` LIMIT 5
3단계: 실행
쿼리를 실행하려면 위의 실행 명령어를 누르세요.
결과
쿼리 결과 패널에 있으며 다음과 같이 표시됩니다. 데이터는 다를 수 있음
관련 열과 출력을 살펴봅니다.
여러 쿼리를 실행하여 데이터가 분산되는 방식을 이해할 수 있습니다. 몇 가지 예는 다음과 같습니다.
SELECT count(*) FROM `bigquery-public-data.ml_datasets.ulb_fraud_detection`
where Class=0;
SELECT count(*) FROM `bigquery-public-data.ml_datasets.ulb_fraud_detection`
where Class=1;
5. 출력 데이터 세트 만들기
1단계: 모델 생성을 위한 데이터 세트 만들기
- 탐색기 패널 - 왼쪽에서 현재 작업 중인 프로젝트를 선택하고 프로젝트 옆에 있는 점 3개를 클릭합니다.
- 오른쪽 상단에서 데이터 세트 만들기를 클릭합니다.
- 데이터 세트 이름, 보관, 위치 등의 세부정보를 입력하세요. 이 설정 사용
6. 로지스틱 회귀 모델 만들기
1단계: 명세서 만들기
쿼리 창에서 모델 생성을 위해 아래 쿼리를 입력합니다. 이 문장의 주요 옵션을 이해하세요. 이 링크에서 설명했습니다.
INPUT_LABEL_COLS는 예측 라벨을 나타냅니다.
AUTO_CLASS_WEIGHTS는 불균형 데이터 세트에 사용됩니다.
MODEL_TYPE은 이 경우에 사용되는 알고리즘이 로지스틱 회귀임을 나타냅니다.
DATA_SPLIT_METHOD는 학습 데이터와 테스트 데이터 간의 분할을 나타냅니다.
CREATE OR REPLACE MODEL advdata.ulb_fraud_detection
TRANSFORM(
* EXCEPT(Amount),
SAFE.LOG(Amount) AS log_amount
)
OPTIONS(
INPUT_LABEL_COLS=['class'],
AUTO_CLASS_WEIGHTS = TRUE,
DATA_SPLIT_METHOD='seq',
DATA_SPLIT_COL='Time',
MODEL_TYPE='logistic_reg'
) AS
SELECT
*
FROM `bigquery-public-data.ml_datasets.ulb_fraud_detection`
2단계: 실행
위의 문을 실행합니다. 완료하는 데 몇 분 정도 걸립니다.
실행 완료 후 주요 사항 확인
- 탐색기 패널에 모델이 생성됩니다.
- 쿼리 결과 패널에는 SQL 문과 유사하게 ML SQL을 처리하는 데 걸린 시간이 표시됩니다.
- 쿼리 결과 패널에는 '모델로 이동' 링크도 있어 살펴볼 수 있습니다.
3단계: 탐색
'모델로 이동' 또는 탐색기 패널을 클릭하여 만든 모델을 살펴보세요. 탭에서는 생성된 모델, 학습, 평가 등에 관한 정보를 확인할 수 있습니다. 결과 검토
다음 섹션에서 자세히 살펴보겠습니다.
로지스틱 회귀에 관한 자세한 내용은 여기를 참고하세요.
7. 모델 평가 측정항목 살펴보기
이 단계에서는 모델의 성능을 살펴보겠습니다.
모델 학습 작업이 완료되면 방금 학습시킨 모델을 클릭하고 평가 탭을 살펴봅니다. 여기에는 많은 평가 측정항목이 있습니다. 여기에서는 roc_auc 하나에만 집중하겠습니다.
SELECT * FROM ML.EVALUATE(MODEL advdata.ulb_fraud_detection)
결과는 다음과 같습니다. roc_auc는 일반적으로 불균형 데이터 세트에서 더 중요함
결과에 대해 자세히 알아보기 위해 여기에서 ML.Evaluate 문서를 찾아보세요.
8. 특정 시간에 대한 클래스 예측
새 쿼리 작성을 누르고 아래 SQL을 실행합니다. 확인된 시간에 허위 금액이 있습니다. 예측이 제대로 작동하는지
SELECT Amount, predicted_class_probs, Class
FROM ML.PREDICT( MODEL advdata.ulb_fraud_detection,
(SELECT * FROM `bigquery-public-data.ml_datasets.ulb_fraud_detection` WHERE Time = 85285.0)
)
다음과 같은 결과가 표시됩니다 (숫자가 다를 수 있음).
이 경우에는 관련 라벨의 확률과 함께 금액이 표시됩니다. 여기서 클래스 열은 실제 결과를 나타냅니다.
ML.PREDICT에 대해 자세히 알아보기 여기 보기
9. 삭제
이 실습에서 만든 리소스를 삭제하려면 왼쪽에 있는 탐색기 패널에서 데이터 세트를 엽니다.
오른쪽 상단에서 데이터 세트 삭제를 클릭합니다.
데이터 세트 이름을 다시 입력하여 세부정보를 확인합니다. 이 경우에는 advdata입니다.
10. 축하합니다
축하합니다. 지도 머신러닝을 사용하여 첫 번째 모델을 만들고 평가 및 예측했습니다.
지금까지 로지스틱 회귀 모델을 만드는 데 필요한 주요 단계를 알아봤습니다.
다음 단계
예측과 관련된 다른 방법도 확인해 보세요.