Python으로 Click Prediction 모델 만들기

Click Prediction 모델 만들기

Click Prediction 모델은 사용자가 클릭할 가능성이 높은 광고를 예측하는 기계학습 모델을 말합니다.

광고 뿐만 아니라 쇼핑몰의 상품배열이나 노출, 검색 결과의 노출 여부나 랭킹에서도 많이 쓰입니다.

네이버쇼핑, 쿠팡 같은 이커머스(e-commerce)에서도 매우 중요하게 쓰이는 기계학습 콤포넌트입니다.

Python을 사용하여 Click Prediction 모델을 만드는 간단한 예제입니다.

데이터 불러오기

Click Prediction 모델을 만들기 위해서는 먼저 데이터를 불러와야 합니다. 이번 예제에서는 Kaggle에서 제공하는 Click Prediction 데이터를 사용하겠습니다. 데이터는 다음과 같은 링크에서 다운로드할 수 있습니다: https://www.kaggle.com/c/avazu-ctr-prediction/data.

import pandas as pd

data = pd.read_csv('train.csv', nrows=100000)

여기서 train.csv는 데이터 파일의 경로를 의미합니다. nrows 파라미터를 사용하여 데이터의 일부분만 불러올 수 있습니다.

데이터 전처리

모델을 만들기 위해서는 데이터를 전처리해야 합니다. 이번 예제에서는 데이터에서 필요한 feature만 추출하고, 범주형 변수를 One-Hot Encoding하는 것으로 전처리를 마칩니다.

features = ['C1', 'banner_pos', 'site_category', 'app_category', 'device_type', 'device_conn_type']
data = pd.get_dummies(data[features])

데이터에서 features에 해당하는 feature만 추출하고, pd.get_dummies() 함수를 사용하여 범주형 변수를 One-Hot Encoding합니다.

모델 학습

전처리된 데이터를 기반으로 모델을 학습합니다. 이번 예제에서는 LightGBM이라는 머신러닝 라이브러리를 사용하여 모델을 학습합니다.

import lightgbm as lgb

X = data.drop('click', axis=1)
y = data['click']

train_data = lgb.Dataset(X, label=y)

params = {
    'objective': 'binary',
    'metric': 'auc',
    'boosting_type': 'gbdt',
}

model = lgb.train(params, train_data, num_boost_round=100)

전처리된 데이터에서 click feature를 제외한 나머지 feature를 X에 저장하고, click feature를 y에 저장합니다. 그리고 lgb.Dataset() 함수를 사용하여 학습 데이터를 생성합니다. 생성된 학습 데이터를 기반으로 모델을 학습합니다.

모델 평가

학습된 모델을 평가합니다. 이번 예제에서는 AUC(Area Under the Curve)를 사용하여 모델을 평가합니다.

from sklearn.metrics import roc_auc_score

y_pred = model.predict(X)
roc_auc_score(y, y_pred)

AUC가 높을수록 모델의 성능이 좋다는 것을 의미합니다.

모델 예측

학습된 모델을 사용하여 Click Prediction을 수행합니다.

test_data = pd.read_csv('test.csv')
test_data = pd.get_dummies(test_data[features])

y_pred = model.predict(test_data)

test.csv 파일을 불러와서 전처리를 한 후, 학습된 모델로 Click Prediction을 수행합니다.

이상으로 Python을 사용하여 Click Prediction 모델을 만드는 예제를 마치겠습니다.

이 예제를 참고하여, 다양한 Click Prediction 만들어 볼 수 있겠습니다.

그리고, 이 예제에서는 LightGBM 라이브러리를 사용하여 모델을 학습하였지만, 다른 머신러닝 라이브러리 또한 사용할 수 있습니다. 이를 통해, 다양한 머신러닝 라이브러리를 비교하여 어떤 라이브러리가 Click Prediction 모델에 더 적합한지 알아볼 수 있습니다.

매크로 평균(Macro-average)과 마이크로 평균(Micro-average)

머신 러닝 분야에서 평가 지표는 모델이 얼마나 잘 동작하는지를 측정하는 데 중요한 역할을 합니다. 이 중에서도 다중 클래스 분류 문제에서는 클래스별 성능을 평가하는 데 있어서 다양한 방법들이 있습니다. 그 중에서도 대표적으로 사용되는 방법으로는 Macro-average와 Micro-average가 있습니다.

Macro-average 매크로 평균

Macro-average는 클래스별 성능 지표를 각각 계산한 후 평균을 내는 방식입니다. 이 방법은 클래스별 데이터 셋이 균등하게 분포되어 있을 때 적합합니다. 예를 들어, 10개의 클래스가 있는 다중 클래스 분류 문제에서 5개의 클래스는 100개의 데이터를 가지고 있고, 나머지 5개의 클래스는 10개의 데이터만 가지고 있다고 가정해 봅시다. 이 경우, Macro-average는 모든 클래스의 성능을 동일하게 취급하므로, 각 클래스의 데이터 수에 관계 없이 모든 클래스가 동일한 비중으로 반영됩니다.

다음은 Macro-average를 계산하는 과정입니다. 클래스 개수가 k개라고 할 때,

  1. 클래스별로 TP(True Positive), FP(False Positive), FN(False Negative), TN(True Negative)를 계산합니다.
  2. Precision, Recall, F1-score 등 성능 지표를 클래스별로 계산합니다.
  3. 클래스별로 계산된 지표들을 모두 더한 후 클래스 수(k)로 나눕니다.

Micro-average 마이크로 평균

Micro-average는 클래스별로 성능 지표를 계산하기 전에 모든 클래스를 하나의 클래스로 간주하고 전체적인 성능 지표를 계산합니다. 이 방법은 클래스별 데이터 수가 다르더라도 모든 클래스의 성능을 동일하게 고려하므로, 클래스별 데이터 수가 차이가 많이 나는 문제에서 유용합니다.

다음은 Micro-average를 계산하는 과정입니다.

  1. 전체 데이터셋에서 TP, FP, FN, TN을 계산합니다.
  2. Precision, Recall, F1-score 등 성능 지표를 전체 데이터셋에 대해 계산합니다.

이제 간단한 예시를 들어보겠습니다. 다음과 같은 3개의 클래스(0, 1, 2)가 있고, 각각의 클래스에 대해 TP, FP, FN, TN의 개수가 다음과 같다고 가정해 봅시다.

클래스TPFPFNTN
0102385
1154781
281494

이 경우, Macro-average와 Micro-average를 각각 계산해 보겠습니다.

Macro-average 계산

  1. 클래스별 TP, FP, FN, TN 계산
클래스TPFPFNTN
0102385
1154781
281494
  1. 클래스별 Precision, Recall, F1-score 계산
클래스PrecisionRecallF1-score
00.83330.76920.8000
10.78950.68180.7317
20.88890.66670.7619
  1. 모든 클래스의 지표를 더한 후 클래스 수로 나눔

$$ \text{Macro-average Recall} = \frac{0.7692+0.6818+0.6667}{3} = 0.706 \\\\ \text{Macro-average F1-score} = \frac{0.8000+0.7317+0.7619}{3} = 0.764 $$

Micro-average 계산

1. 전체 데이터셋에서 TP, FP, FN, TN 계산

전체 데이터셋TPFPFNTN
33714260

2. 전체 데이터셋에서 Precision, Recall, F1-score 계산

$$ \text{Micro-average Precision} = \frac{33}{33+7} = 0.825 \\\\ \text{Micro-average Recall} = \frac{33}{33+14} = 0.702 \\\\ \text{Micro-average F1-score} = 2 \times \frac{0.825 \times 0.702}{0.825 + 0.702} = 0.759 $$

이처럼 average Micro-average는 다중 클래스 분류 문제에서 클래스별 성능을 평가하는 데 사용되는 방법 중 두 가지입니다. Macro-average는 클래스별 데이터셋이 균등하게 분포되어 있을 때 유용하며, Micro-average는 클래스별 데이터 수가 차이가 많이 나는 문제에서 유용합니다.

계산 법의 선택

어떤 방법을 선택할지는 데이터셋의 특성에 따라 달라질 수 있습니다.

예를 들어, 클래스별로 데이터 수가 크게 차이가 나지 않고 균등하게 분포된 경우에는 Macro-average를 사용하는 것이 적절할 수 있습니다.

반면에 클래스별로 데이터 수가 크게 차이가 나는 경우에는 Micro-average가 더 적절할 수 있습니다.

클래스별로 데이터가 균등한지 아닌지는 카이제곱검정을 하면 알 수 있습니다.

또한, Macro-average는 클래스별 성능을 독립적으로 평가하기 때문에, 각 클래스가 동등하게 중요한 경우에 적합합니다. 반면에 Micro-average는 모든 클래스가 동일한 중요도를 가지는 것이 아니라, 전체적인 성능이 중요한 경우에 적합합니다.

마지막으로, Macro-average와 Micro-average는 모델의 성능을 평가하기 위해 단독으로 사용하기 보다는, 다른 지표와 함께 사용하는 것이 좋습니다. 또한, 클래스별로 데이터 수가 매우 작거나 없는 경우에는 이를 해결하기 위해 Weighted average 방법을 사용하기도 합니다. 이는 클래스별 데이터 수를 고려하여 평균을 계산하는 방법으로, Macro-average와 Micro-average의 중간 형태라고 볼 수 있습니다. 이러한 방법들을 적절히 사용하여 다중 클래스 분류 모델의 성능을 정확하게 평가할 수 있습니다.

round, ceil, floor, truncate의 차이

숫자를 다룰 때 가장 많이 사용하는 함수 들은 “floor”, “truncate”, “ceil”, “round”입니다. 이 함수들은 수학적인 개념을 기반으로 하고 있으며, 숫자를 다룰 때 유용하게 사용됩니다. 이번 포스트에서는 “floor”, “truncate”, “ceil”, “round” 함수의 차이점과 각각의 사용 예시에 대해 살펴보겠습니다.

floor 함수

“floor” 함수는 입력된 숫자보다 작거나 같은 가장 큰 정수를 반환합니다. 예를 들어, 3.14의 floor 값은 3이 됩니다.

pythonCopy codeimport math

print(math.floor(3.14))  # 3
print(math.floor(-3.14)) # -4

truncate 함수

“truncate” 함수는 입력된 숫자의 소수점 이하를 제거하여 반환합니다. 양수인 경우 “floor” 함수와 같은 결과를 출력하고, 음수인 경우 “ceil” 함수와 같은 결과를 출력합니다. 예를 들어, 3.14의 truncate 값은 3이 됩니다.

import math

def truncate(n, decimals=0):
    multiplier = 10 ** decimals
    return int(n * multiplier) / multiplier

print(truncate(3.14))  # 3.0
print(truncate(-3.14)) # -3.0

ceil 함수

“ceil” 함수는 입력된 숫자보다 크거나 같은 가장 작은 정수를 반환합니다. 예를 들어, 3.14의 ceil 값은 4가 됩니다.

import math

print(math.ceil(3.14))  # 4
print(math.ceil(-3.14)) # -3

round 함수

“round” 함수는 입력된 숫자를 반올림하여 반환합니다. “round” 함수는 두 개의 인수를 받습니다. 첫 번째 인수는 반올림할 숫자이고, 두 번째 인수는 반올림할 자릿수입니다. 예를 들어, 3.14를 소수점 첫째 자리에서 반올림한 값은 3.1이 됩니다.

import math

print(round(3.14))   # 3
print(round(3.75))   # 4
print(round(-3.14))  # -3
print(round(3.141592, 2)) # 3.14

결론

이상으로 “floor”, “truncate”, “ceil”, “round” 함수의 차이점과 사용 예시에 대해 알아보았습니다. 이 함수들은 숫자를 다룰 때 매우 유용하며, 데이터 분석, 수치 계산 등 다양한 분야에서 사용됩니다. 적절한 함수를 사용하여 정확하고 효율적인 작업을 수행할 수 있도록 노력해야 합니다.

파이썬 커맨드라인 어플리케이션 패키지 – Python command-line packages

파이썬 커맨드라인 어플리케이션 패키지

커맨드라인 어플리케이션은 콘솔 어플리케이션 이라고도 합니다. 커맨드라인 어플리케이션은 텍스트 인터페이스로 사용하도록 설계된 컴퓨터 프로그램입니다.  이 그 예입니다. 커맨드라인 어플리케이션은 일반적으로 다양한 인자를 입력값으로 받습니다. 파라미터로 받기도 하고 서브커맨드, 옵션, 플래그, 스위치로도 받습니다.

유명한 커맨드라인 어플리케이션을 모아봤습니다:

  • grep – 평문 데이터 검색 유틸리티
  • curl – URL 구문으로 데이터를 전달하기 위한 도구
  • httpie – 커맨드라인 HTTP 클라이언트로서 cURL보다 사용자 친화적인 대체품
  • Git – 분ㄴ산 버전 컨트롤 시스템
  • Mercurial – 주로 파이썬으로 작성된 분산 버전 컨트롤 시스템

클릭(Click)

click 은 최소한의 코드만으로 커맨드라인 인터페이스를 구성할 수 있도록 해주는 파이썬 패키지입니다. 이 “Command-Line Interface Creation Kit” 은 상세한 설정이 가능하지만 그냥 기본값으로 사용해도 아주 좋습니다.

닥옵트(docopt)

docopt 는 가볍고도 아주 파이썬다운 패키지로서 포직스 스타일의 사용법을 파싱하여 커맨드라인 인터페이스를 직관적이고도 쉽게 만들 수 있게 해주는 라이브러리입니다.

플락(Plac)

Plac 은 파이선 표준 라이브러리 argparse 를 선언형 인터페이스를 사용해 그 복잡성을 숨기는 간단한 랩퍼입니다. 매개변수 파서는 명령형으로 작성할 필요가 없습니다. 그냥 추론됩니다. 이 모듈은 복잡한 걸 원치 않는 사용자, 프로그래머, 시스템 관리자, 과학자 및 일회용 스크립트를 작성하는 대신 커맨드라인 인터페이스를 빠르고 간단하게 개발하고자 하는 사람들을 대상으로합니다.

클리프(Cliff)

Cliff 는 커맨드라인 프로그램을 개발하기 위한 프레임워크입니다. setuptools를 엔트리포인트로 사용하여 서브캐맨드, 출력 포맷터 및 기타 확장을 제공합니다. 이 프레임워크는 svn 과 git 처럼 다단계 명령을 만드는 데 사용됩니다. 여기서 메인 프로그램은 몇 가지 기본적인 인자값 구문 분석을 처리한 다음 서브커맨드를 호출하여 작업을 수행합니다.

시멘트(Cement)

Cement 는 진보된 CLI 어플리케이션 프레임워크입니다. 그 목표는 간단한 커맨드라인 애플리케이션과 복잡한 커맨드라인 어플리케이션 모두를 위한 표준 및 기능이 풍부한 플랫폼을 도입하고 품질 저하없이 신속한 개발 요구 사항을 지원하는 것입니다. 시멘트는 유연하며 그 사용 사례는 간단한 마이크로 프레임워크에서 복잡한 대규모 프레임워크에 이르기까지 다양합니다.

파이썬 파이어(Python Fire)

Python Fire 는 파이썬 객체를 전혀 사용하지 않고도 자동으로 커맨드라인 인터페이스를 생성하는 라이브러리입니다. 커맨드라인에서 파이썬 코드를 보다 쉽게 디버깅하고, 기존 코드에 대한 CLI 인터페이스를 생성하고 REPL에서 인터렉티브하게 코드를 탐색하고, 파이썬과 Bash(아니면 다른 쉘) 간의 전환을 단순화 할 수 있습니다.

아호코라식 Aho-corasick

Ahocorasick은 1975년에 Alfred V. Aho와 Margaret J. Corasick이 고안한 문자열 검색 알고리즘입니다.

입력 텍스트 내에서 유한한 문자열 집합(사전)의 요소를 찾는 사전 매칭 알고리즘의 한 종류로, 모든 문자열을 동시에 매칭합니다.

좀 쉽게 말하면 입력한 긴 문자열에서 찾아냈으면 하는 문자열이 있다면 모두 빠르게 찾아주는 알고리즘입니다.

찾아야 하는 문자열은 미리 정해야 하고 수십만개에서 수백만까지도 쓸 수 있습니다.

Aho-Corasick 알고리즘은 Trie 자료구조를 기반으로합니다. Trie 자료구조는 문자열 검색에 효과적인 자료구조이지만, 문자열 검색이 일어날 때마다 트리를 전부 탐색해야 하는 단점이 있습니다. Aho-Corasick 알고리즘은 이러한 단점을 보완하기 위해, Trie 자료구조를 미리 전처리하여 특정 문자열 집합에서 상호작용하는 부분을 최적화합니다.

Aho-Corasick 알고리즘은 다음과 같은 단계를 거쳐 작동합니다.

  1. 문자열 집합을 Trie 자료구조로 변환합니다.
  2. Trie 자료구조를 이용하여 Failure 함수를 생성합니다. Failure 함수는 각 Trie 노드에서 어떤 문자가 올 때 다음으로 이동해야 할 노드를 결정합니다.
  3. 문자열 검색을 위해 Aho-Corasick 알고리즘은 주어진 문자열을 탐색하면서, Trie 자료구조를 탐색합니다. Failure 함수를 이용하여 검색을 가속화합니다.

Aho-Corasick 알고리즘은 문자열 검색에 효율적이며, 자연어 처리, 네트워크 보안, DNA 염기서열 검색 등 다양한 분야에서 활용됩니다.

Aho-coriaskc은 다중 패턴 매칭(Multiple Pattern Matching)을 해결할 수 있는 방법 중 하나입니다.

하나 이상의 패턴 문자열을 동시에 검색하는 것을 다중 패턴 매칭이라고 하는데 대부분의 문자열 처리 분야에서 매우 중요한 문제 중 하나입니다.

예를 들어, 특정 문자열에서 여러 개의 단어를 찾는 작업을 수행하려면, 이 문자열에서 각 단어를 개별적으로 검색하는 것보다 모든 단어를 한 번에 검색하는 것이 효율적입니다. 이를 위해 다중 패턴 매칭 알고리즘을 사용할 수 있습니다.

다중 패턴 매칭 알고리즘에는 여러 가지 방법이 있는데 대표적인 알고리즘으로는 Aho-Corasick, Rabin-Karp, Boyer-Moore 등이 있습니다. 이들 알고리즘은 각각의 특성과 장단점을 가지고 있으며, 특정한 상황에 맞는 알고리즘을 선택해 쓰는 것이 좋습니다.

참고자료

Python FastAPI

Python의 FastAPI에 대한 소개입니다.

FastAPI는 Python 3.6 이상으로 API를 빌드하기 위한 최신 고성능 웹 프레임워크입니다. FastAPI는 파이썬 표준 타입 힌트를 기반으로 하여 자동 문서화, 데이터 검증, 비동기 지원 등의 기능을 제공합니다.

FastAPI는 Flask나 Django와 같은 다른 웹 프레임워크보다 개발 속도가 200%~300% 빨라진다고 주장합니다. 또한 Node.js나 Go와 비슷한 수준의 성능을 자랑합니다.

FastAPI를 사용하려면 먼저 fastapi 모듈과 uvicorn 서버를 설치해야 합니다3.

pip install fastapi
pip install uvicorn

그 다음, app 객체를 생성하고 app.get 데코레이터를 사용하여 URL과 함수를 연결할 수 있습니다. 예를 들어, ‘/’ URL에 접속하면 ‘Hello World’라는 텍스트를 반환하는 함수를 정의할 수 있습니다.

from fastapi import FastAPI

app = FastAPI()

@app.get('/')
def hello_world():
    return 'Hello World'

마지막으로, uvicorn 명령어로 웹 서버를 실행할 수 있습니다. 이때 포트 번호나 리로드 옵션 등을 설정할 수 있습니다.

uvicorn main:app --reload --port 9999

이렇게 하면 간단한 FastAPI 예제 코드가 완성됩니다. 이 코드는 9999번 포트에서 실행되며, 브라우저에서 http://localhost:9999/ 에 접속하면 ‘Hello World’라는 텍스트가 나타납니다.

SQL의 DDL, DML, DCL

SQL의 DDL, DML, DCL에 대한 간략한 설명입니다.

SQL은 Structured Query Language의 약자로, 데이터베이스에서 데이터를 정의하고 조작하고 제어하는 데 사용하는 언어입니다. SQL은 크게 다음과 같은 세 가지 종류로 나눌 수 있습니다.

  • DDL(Data Definition Language): 데이터베이스나 테이블 등의 객체를 생성하거나 변경하거나 삭제하는 데 사용합니다. CREATE, ALTER, DROP, TRUNCATE 등이 있습니다.
  • DML(Data Manipulation Language): 테이블에 저장된 데이터를 조회하거나 삽입하거나 수정하거나 삭제하는 데 사용합니다. SELECT, INSERT, UPDATE, DELETE 등이 있습니다.
  • DCL(Data Control Language): 데이터베이스에 접근하거나 객체를 사용할 수 있는 권한을 부여하거나 취소하는 데 사용합니다. GRANT, REVOKE 등이 있습니다.

예제 코드는 다음과 같습니다.

-- DDL 예제
CREATE TABLE student ( -- 테이블 생성
    id INT PRIMARY KEY,
    name VARCHAR(20),
    major VARCHAR(20)
);

ALTER TABLE student ADD phone VARCHAR(15); -- 테이블 변경

DROP TABLE student; -- 테이블 삭제

TRUNCATE TABLE student; -- 테이블 내용 삭제

-- DML 예제
SELECT * FROM student; -- 테이블 조회

INSERT INTO student VALUES (1, 'Kim', 'Computer Science', '010-1234-5678'); -- 테이블 삽입

UPDATE student SET phone = '010-8765-4321' WHERE id = 1; -- 테이블 수정

DELETE FROM student WHERE id = 1; -- 테이블 삭제

-- DCL 예제
GRANT SELECT ON student TO user1; -- user1에게 student 테이블 조회 권한 부여

REVOKE SELECT ON student FROM user1; -- user1에게서 student 테이블 조회 권한 취소

Python MySQL warning – Data truncated for column

Python MySQL을 쓰다가 다음과 같은 에러를 만날 때가 있습니다. Pandas의 데이터를 MySQL 테이블 넣거나 할 때 생기는 문제입니다. 경고이기 때문에 큰 문제는 없지만 경고 메세지를 화실하게 해결하고 싶을 때가 있습니다.

Data truncated for column ~

다음과 같이 해결하면 됩니다.

해결책

  • VARCHAR인 경우에는길이를 늘려준다.
  • Numeric이면 소숫점이 몇자리까지 허용인지 보고 미리 round 처리해준다.

비용 이상감지 – Cost Anomaly Detection

비용이상감지

비용 이상감지는 이상감지를 비용과 밀접한 관련이 있는 데이터에 하는 것입니다.

이상감지는 시간에 따른 흐름과 추세의 패턴이 있는 시계열 데이터가 과거의 패턴에서 많이 벗어났는지를 감지하는 모델을 말합니다.

이상감지는 통계적 모델, 기계학습, AI 등 모든 종류의 모델을 다 사용합니다.

이상감지는 주로 사고를 미리 감지하기 위한 것이 많은데 온라인 서비스의 다운 징후, 온라인 서비스 사용자 또는 트래픽의 급증과 급감, 각종 공장 또는 장치의 사고나 고장 위험 등을 위해서 모델을 만들고 운영합니다.

BI와 대시보드, 그라파나, 키바나 같은 것에 연동하거나 별도의 시각화를 만들기도 합니다.

이상감지의 세부 갈래 중 하나인 비용이상감지는 사고 중에서도 비용지불에 대한 이상감지에 중점을 둡니다.

전기료, 수도요금, 클라우드서비스 비용 등과 같은 것입니다.

하지만 전기료, 수도요금은 실시간으로 데이터를 추적하기 어렵고 특별히 이상이 발생하기 어렵기 때문에 이상감지가 유용하지 않습니다. 대신 최근에 많이 사용되는 클라우드 비용 관리에는 큰 효과가 있습니다.

클라우드 비용 이상감지

비용이상감지를 사용하면 클라우드 비용의 과다 지출에 대한 사전 징후를 미리 감지해서 비용 낭비를 방지할 수 있습니다. 체크해야 할 항목이 매우 많기 때문에 어떻게 운영하느냐에 따라 다르겠지만 전체 비용에 대해서 비용을 구성하는 모든 하위 지표를 모니터링해서 그중에 문제를 발생시키는 가장 이상한 지표들을 빨리 감지하는 용도로 쓸 수 있습니다.

광고 캠페인의 비용 이상감지

그외에 광고 캠페인의 운영에 대한 지출 비용에 대한 이상여부를 감지하는데도 사용할 수 있습니다.

광고 캠페인은 최대 지출 비용을 정해두고 사용하는 경우에는 예상했던 기간보다 더 빨리 광고비가 소진되는 것을 발견해서 이상 징후를 감지하고 캠페인 중에 최대 비용을 정하지 않고 신용카드를 등록한 후 집행된 만큼 지불하는 경우에는 매우 유용합니다.

이상감지 – 랜덤컷포레스트 러스트 소스 Random Cut Forest Rust

랜덤컷포레스트 (Random Cut Forest)는 AWS에서 만든 이상감지모델입니다.

감지가 매우 정확한 편이지만 처리 속도가 매우 느린 알고리즘입니다.

랜덤컷포레스트의 Rust소스를 github에서 발굔해서 여겨에 소개합니다.

https://github.com/aws/random-cut-forest-by-aws/tree/main/Rust/src

아직 실행은 해보지 못했습니다.