Skip to main content

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=1token 모드일 때 모델은 다음과 같을 수 있습니다:
n=3codepoint 모드에서는 다음과 같이 나타날 수 있습니다:
사람이 읽을 수 있는 형식은 ClickHouse에서 직접 사용되지 않으므로, 아래에 설명된 바이너리 형식으로 변환해야 합니다. 바이너리 형식 세부 정보 각 n-그램은 다음 형식으로 저장됩니다.
  1. 4바이트 class_id (UInt, 리틀 엔디언)
  2. 4바이트 n-gram 바이트 길이 (UInt, 리틀 엔디언)
  3. 원본 n-gram 바이트
  4. 4바이트 count (UInt, 리틀 엔디언)
전처리 요구 사항 문서 코퍼스에서 모델을 생성하기 전에, 지정된 moden에 따라 n-그램을 추출할 수 있도록 문서를 전처리해야 합니다. 다음 단계는 전처리 과정을 설명합니다.
  1. 토큰화 모드에 따라 각 문서의 시작과 끝에 경계 마커를 추가합니다.
    • Byte: 0x01 (시작), 0xFF (끝)
    • Codepoint: U+10FFFE (시작), U+10FFFF (끝)
    • Token: <s> (시작), </s> (끝)
    참고: 문서의 앞과 뒤에 각각 (n - 1)개의 토큰을 추가합니다.
  2. token 모드에서 n=3인 경우의 예시:
    • 문서: "ClickHouse is fast"
    • 처리 결과: <s> <s> ClickHouse is fast </s> </s>
    • 생성된 3-그램:
      • <s> <s> ClickHouse
      • <s> ClickHouse is
      • ClickHouse is fast
      • is fast </s>
      • fast </s> </s>
bytecodepoint 모드에서 모델 생성을 단순화하려면, 먼저 문서를 tokens으로 분리해 두는 것이 편리할 수 있습니다(byte 모드에서는 byte 목록, codepoint 모드에서는 codepoint 목록). 그런 다음 문서 앞부분에 n - 1개의 시작 토큰을 추가하고, 문서 끝부분에 n - 1개의 종료 토큰을 추가합니다. 마지막으로 n-그램을 생성하여 직렬화된 파일에 기록합니다.
마지막 수정일 2026년 6월 10일