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로 변환되지 않은 유일한 기능은 '시간'과 '금액'입니다.
- '시간' 기능에는 각 거래와 데이터 세트의 첫 번째 거래 사이에 경과된 시간이 초 단위로 포함됩니다.
- '금액'은 거래 금액입니다. 이 기능은 예에 따라 달라지는 비용에 민감한 학습에 사용할 수 있습니다.
- 'Class' 기능은 응답 변수이며 사기의 경우 값 1을, 그렇지 않은 경우 0을 취합니다.
이 데이터 세트는 빅데이터 마이닝 및 사기 감지에 관한 Worldline과 ULB ( Université Libre de Bruxelles)의 머신러닝 그룹 (http://mlg.ulb.ac.be)의 연구 협력을 통해 수집되고 분석되었습니다.
관련 주제에 관한 현재 및 과거 프로젝트에 대한 자세한 내용은 https://www.researchgate.net/project/Fraud-detection-5 및 DefeatFraud 프로젝트 페이지에서 확인할 수 있습니다.
인용:
Andrea Dal Pozzolo, Olivier Caelen, Reid A. 존슨과 지안루카 본템피가 불균형 분류를 위한 언더샘플링을 통한 확률 보정 In Symposium on Computational Intelligence and Data Mining (CIDM), IEEE, 2015
Dal Pozzolo, Andrea; Caelen, Olivier; Le Borgne, Yann-Ael; Waterschoot, Serge; Bontempi, Gianluca. Learned lessons in credit card fraud detection from a practitioner perspective, Expert systems with applications,41,10,4915-4928,2014, Pergamon
Dal Pozzolo, Andrea; Boracchi, Giacomo; Caelen, Olivier; Alippi, Cesare; Bontempi, Gianluca. Credit card fraud detection: a realistic modeling and a novel learning strategy, IEEE transactions on neural networks and learning systems,29,8,3784-3797,2018,IEEE
Dal Pozzolo, Andrea Adaptive Machine learning for credit card fraud detection ULB MLG PhD thesis (G. Bontempi)
Carcillo, Fabrizio; Dal Pozzolo, Andrea; Le Borgne, Yann-Aël; Caelen, Olivier; Mazzer, Yannis; Bontempi, Gianluca. Scarff: a scalable framework for streaming credit card fraud detection with Spark, Information fusion,41, 182-194,2018,Elsevier
Carcillo, Fabrizio; Le Borgne, Yann-Aël; Caelen, Olivier; Bontempi, Gianluca. Streaming active learning strategies for real-life credit card fraud detection: assessment and visualization, 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 Cards Fraud Detection, INNSBDDL 2019: Recent Advances in Big Data and Deep Learning, pp 78-88, 2019
Fabrizio Carcillo, Yann-Aël Le Borgne, Olivier Caelen, Frederic Oblé, Gianluca Bontempi Combining Unsupervised 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단계: 실행
위의 문을 실행합니다. 완료하는 데 몇 분 정도 걸립니다.
러닝이 완료된 후 주요 사항 확인

- 탐색기 패널에 모델이 생성됩니다.
- 쿼리 결과 패널에는 ML SQL을 처리하는 데 걸린 시간이 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. 축하합니다
축하합니다. 지도 머신러닝을 사용하여 첫 번째 모델을 만들고 평가하고 예측했습니다.
이제 로지스틱 회귀 모델을 만드는 데 필요한 주요 단계를 알게 되었습니다.
다음 단계
예측에 사용되는 다른 방법을 확인해 보세요.