evalMLMethod
적합된 회귀 모델을 사용한 예측에는evalMLMethod 함수를 사용합니다. 자세한 내용은 linearRegression의 링크를 참조하십시오.
stochasticLinearRegression
stochasticLinearRegression 집계 함수는 선형 모델과 MSE 손실 함수를 사용한 확률적 경사 하강법을 구현합니다. 새 데이터 예측에는evalMLMethod를 사용합니다.
stochasticLogisticRegression
stochasticLogisticRegression 집계 함수는 이진 분류 문제를 위한 확률적 경사 하강법을 구현합니다. 새 데이터 예측에는evalMLMethod를 사용합니다.
naiveBayesClassifier
n-그램과 라플라스 스무딩을 사용하는 Naive Bayes 모델로 입력 텍스트를 분류합니다. 사용하기 전에 ClickHouse에서 모델을 미리 구성해야 합니다. 구문model_name— 사전 구성된 모델의 이름입니다. String 모델은 ClickHouse의 설정 파일에 정의되어 있어야 합니다(아래 참고).input_text— 분류할 텍스트입니다. String 입력은 제공된 그대로 처리됩니다(대소문자와 구두점 유지).
- 예측된 클래스 ID를 부호 없는 정수로 반환합니다. UInt32 클래스 ID는 모델 생성 시 정의된 범주에 해당합니다.
0은 영어를, 1은 프랑스어를 나타낼 수 있습니다. 클래스의 의미는 학습 데이터에 따라 달라집니다.
구현 세부 사항
알고리즘 이 문서를 기반으로 한 n-그램 확률을 사용하며, 관측되지 않은 n-그램을 처리하기 위해 라플라스 스무딩을 적용한 Naive Bayes 분류 알고리즘을 사용합니다. 주요 기능- 모든 크기의 n-그램을 지원합니다
- 세 가지 토큰화 모드:
byte: 원시 바이트 단위로 동작합니다. 각 바이트가 하나의 토큰입니다.codepoint: UTF‑8에서 디코딩된 유니코드 스칼라 값을 기준으로 동작합니다. 각 코드포인트가 하나의 토큰입니다.token: 연속된 유니코드 공백(정규식 \s+)을 기준으로 분할합니다. 토큰은 공백이 아닌 부분 문자열이며, 인접한 문장부호도 토큰에 포함됩니다(예: “you?”는 하나의 토큰입니다).
모델 구성
언어 감지를 위한 Naive Bayes 모델을 생성하는 예시 소스 코드는 여기에서 확인할 수 있습니다. 또한 예시 모델과 관련 구성 파일은 여기에서 확인할 수 있습니다. 다음은 ClickHouse에서 Naive Bayes 모델에 사용하는 예시 구성입니다:
모델 학습 가이드
파일 포맷
사람이 읽을 수 있는 포맷에서
n=1 및 token 모드일 때 모델은 다음과 같을 수 있습니다:
n=3 및 codepoint 모드에서는 다음과 같이 나타날 수 있습니다:
- 4바이트
class_id(UInt, 리틀 엔디언) - 4바이트
n-gram바이트 길이 (UInt, 리틀 엔디언) - 원본
n-gram바이트 - 4바이트
count(UInt, 리틀 엔디언)
mode와 n에 따라 n-그램을 추출할 수 있도록 문서를 전처리해야 합니다. 다음 단계는 전처리 과정을 설명합니다.
-
토큰화 모드에 따라 각 문서의 시작과 끝에 경계 마커를 추가합니다.
- Byte:
0x01(시작),0xFF(끝) - Codepoint:
U+10FFFE(시작),U+10FFFF(끝) - Token:
<s>(시작),</s>(끝)
(n - 1)개의 토큰을 추가합니다. - Byte:
-
token모드에서n=3인 경우의 예시:- 문서:
"ClickHouse is fast" - 처리 결과:
<s> <s> ClickHouse is fast </s> </s> - 생성된 3-그램:
<s> <s> ClickHouse<s> ClickHouse isClickHouse is fastis fast </s>fast </s> </s>
- 문서:
byte 및 codepoint 모드에서 모델 생성을 단순화하려면, 먼저 문서를 tokens으로 분리해 두는 것이 편리할 수 있습니다(byte 모드에서는 byte 목록, codepoint 모드에서는 codepoint 목록). 그런 다음 문서 앞부분에 n - 1개의 시작 토큰을 추가하고, 문서 끝부분에 n - 1개의 종료 토큰을 추가합니다. 마지막으로 n-그램을 생성하여 직렬화된 파일에 기록합니다.
assignCentroid
도입 버전: v26.8.0 벡터에 가장 가까운 (L2) 센트로이드의 id를 반환합니다. 센트로이드는 float 배열로 이루어진 상수 배열로 지정할 수 있으며, 이 경우 id는 해당 배열에서 0부터 시작하는 위치입니다. 또는cid와 vec 속성을 가진 Dictionary의 이름으로 지정할 수 있으며, 이 경우 id는 cid 값입니다.
이 함수는 비결정적입니다. 동일한 인수에 대해 서로 다른 결과를 반환할 수 있습니다.
vec— 할당할 벡터입니다. 차원이 센트로이드의 차원과 일치해야 합니다.Float32이외의 너비는 스코어링 커널이 사용하는Float32로 변환됩니다.Array(Float32)또는Array(Float64)또는Array(BFloat16)centroids— 점수를 계산할 대상 센트로이드이며, 상수여야 합니다. 크기가 동일하고 비어 있지 않은 float 배열들의 배열로 지정하며, 이 경우 id는 해당 배열에서 0부터 시작하는 위치가 됩니다. 또는UInt32에 들어맞는 unsigned integer 타입의cid속성과Array(Float32)타입의vec속성을 가진Dictionary의 이름으로 지정하며, 이 경우 id는cid가 됩니다. 딕셔너리는 한 번만 읽히며 다시 로드될 때까지 캐시됩니다.Array(Array(Float32))또는Array(Array(Float64))또는Array(Array(BFloat16))또는String
UInt32
예시
Inline 센트로이드
Query
Response
evalMLMethod
도입 버전: v20.1.0 학습된 머신러닝 모델을 입력 피처에 적용해 예측값을 생성합니다. 구문model— 학습된 머신러닝 모델입니다.AggregateFunctionStatex1, x2, ...— 예측에 사용할 특성 값입니다.Float*또는(U)Int*
Float64
예시
사용 예시
Query
Response
naiveBayesClassifier
도입 버전: v25.11.0NAIVE_BAYES 딕셔너리를 사용해 입력 텍스트를 분류합니다. dictGet(dictionary_name, class_attribute, input_text)와 동일한 예측 클래스 값을 반환합니다. 여기서 class_attribute는 딕셔너리 레이아웃에 구성된 클래스 레이블 속성의 이름입니다. dictGet와 달리 반환 유형은 클래스 속성에 선언된 유형이 아니라 항상 UInt32이며, input_text는 반드시 String이어야 합니다(키 유형 변환은 적용되지 않습니다).
이 함수는 비결정적입니다. 동일한 인수에 대해서도 서로 다른 결과를 반환할 수 있습니다.
UInt32
예시
텍스트 분류
Query
Response
naiveBayesClassifierWithAllProbs
도입 버전: v26.7.0NAIVE_BAYES 딕셔너리를 사용하여 입력 텍스트를 분류하고, 가장 확률이 높은 클래스부터 낮은 클래스까지 각 확률과 함께 모두 반환합니다.
이 함수는 비결정적입니다. 동일한 인수에 대해서도 서로 다른 결과를 반환할 수 있습니다.
Array(Tuple(UInt32, Float64))
예시
모든 클래스의 확률
Query
Response
naiveBayesClassifierWithProb
도입 버전: v26.7.0NAIVE_BAYES 딕셔너리를 사용해 입력 텍스트를 분류하고, 예측된 클래스와 해당 확률을 반환합니다.
이 함수는 비결정적입니다. 동일한 인수에 대해서도 다른 결과를 반환할 수 있습니다.
Tuple(UInt32, Float64)
예시
확률과 함께 분류하기
Query
Response