본문으로 바로가기
본문으로 바로가기

stochasticLogisticRegression

stochasticLogisticRegression

도입된 버전: v20.1

이 함수는 확률적 로지스틱 회귀(Stochastic Logistic Regression)를 구현합니다. 이진 분류 문제에 사용할 수 있으며, stochasticLinearRegression과 동일한 사용자 정의 매개변수를 지원하고 동일한 방식으로 작동합니다.

사용법

함수는 두 단계로 사용됩니다:

  1. 모형 적합

피팅에는 다음과 같은 쿼리를 사용할 수 있습니다:

CREATE TABLE IF NOT EXISTS train_data
(
    param1 Float64,
    param2 Float64,
    target Float64
) ENGINE = Memory;

CREATE TABLE your_model ENGINE = Memory AS SELECT
stochasticLogisticRegression(0.1, 0.0, 5, 'SGD')(target, x1, x2)
AS state FROM train_data;

여기서는 train_data 테이블에 데이터를 삽입해야 합니다. 매개변수의 개수는 고정되어 있지 않으며, logisticRegressionState에 전달되는 인수의 개수에 따라 결정됩니다. 모든 값은 숫자 값이어야 합니다. 예측하려는 목표 값을 포함하는 컬럼은 첫 번째 인수로 삽입됩니다.

예측된 레이블은 [-1, 1] 범위에 있어야 합니다.

  1. 예측하기

저장된 상태를 사용하여 객체가 1 레이블을 가질 확률을 예측할 수 있습니다.

WITH (SELECT state FROM your_model) AS model SELECT
evalMLMethod(model, param1, param2) FROM test_data

쿼리는 확률 컬럼을 반환합니다. evalMLMethod의 첫 번째 인수는 AggregateFunctionState 객체이고, 그 다음은 특성(feature) 컬럼들입니다.

확률 경계값을 설정하여 요소를 서로 다른 레이블에 할당할 수 있습니다.

SELECT result < 1.1 AND result > 0.5 FROM
(WITH (SELECT state FROM your_model) AS model SELECT
evalMLMethod(model, param1, param2) AS result FROM test_data)

그러면 결과는 레이블(label)이 됩니다.

test_datatrain_data와 유사한 테이블이지만 목표 값을 포함하지 않을 수 있습니다.

구문

stochasticLogisticRegression([learning_rate, l2_regularization_coef, mini_batch_size, method])(target, x1, x2, ...)

인수

  • learning_rate — 경사 하강법 단계를 수행할 때 단계 길이에 곱해지는 계수입니다. 학습률이 너무 크면 모델의 가중치가 무한대로 발산할 수 있습니다. 기본값은 0.00001입니다. Float64
  • l2_regularization_coef — 과적합을 방지하는 데 도움이 될 수 있는 L2 정규화 계수입니다. 기본값은 0.1입니다. Float64
  • mini_batch_size — 한 번의 경사 하강법(gradient descent) 단계를 수행하기 위해 기울기를 계산하고 합산할 요소의 개수를 설정합니다. 완전한 확률적 경사 하강법은 한 개의 요소만 사용하지만, 약 10개 정도의 작은 배치를 사용하면 경사 하강 단계가 더 안정적입니다. 기본값은 15입니다. UInt64
  • method — 가중치를 갱신하는 방법입니다: 기본값은 Adam이며, SGD, Momentum, Nesterov를 사용할 수 있습니다. MomentumNesterov는 계산과 메모리가 조금 더 많이 필요하지만, 확률적 경사 하강법의 수렴 속도와 안정성을 높이는 데 유용합니다. String
  • target — 이진 분류용 타깃 레이블입니다. 값은 [-1, 1] 범위 내에 있어야 합니다. Float
  • x1, x2, ... — 특성 값(독립 변수)입니다. 모두 숫자 타입이어야 합니다. Float

반환 값

학습된 로지스틱 회귀 모델의 가중치를 반환합니다. 예측에는 evalMLMethod를 사용하세요. 이 함수는 객체가 레이블 1을 가질 확률을 반환합니다. Array(Float64)

예시

모델 학습

CREATE TABLE your_model
ENGINE = MergeTree
ORDER BY tuple()
AS SELECT
stochasticLogisticRegressionState(1.0, 1.0, 10, 'SGD')(target, x1, x2)
AS state FROM train_data
Saves trained model state to table

예측 수행하기

WITH (SELECT state FROM your_model) AS model
SELECT
evalMLMethod(model, x1, x2)
FROM test_data
Returns probability values for test data

임계값 기반 분류

SELECT result < 1.1 AND result > 0.5
FROM (
WITH (SELECT state FROM your_model) AS model SELECT
evalMLMethod(model, x1, x2) AS result FROM test_data)
Returns binary classification labels using probability threshold

함께 보기