메인 콘텐츠로 건너뛰기

stochasticLinearRegression

도입된 버전: v20.1.0 이 함수는 확률적 선형 회귀를 구현합니다. 다음 사용자 지정 매개변수를 지원합니다:
  • 학습률
  • L2 정규화 계수
  • 미니 배치 크기
또한 가중치를 업데이트하는 몇 가지 메서드도 제공합니다:
  • Adam (기본값)
  • 단순 SGD
  • Momentum
  • Nesterov
사용법 이 함수는 두 단계로 사용합니다. 먼저 모델을 학습시키고, 그다음 새 데이터에 대해 예측합니다.
  1. 학습
학습에는 다음과 같은 쿼리를 사용할 수 있습니다:
CREATE TABLE IF NOT EXISTS train_data
(
    param1 Float64,
    param2 Float64,
    target Float64
) ENGINE = Memory;

CREATE TABLE your_model ENGINE = Memory AS SELECT
stochasticLinearRegressionState(0.1, 0.0, 5, 'SGD')(target, x1, x2)
AS state FROM train_data;
여기서는 train_data 테이블에도 데이터를 삽입해야 합니다. 매개변수의 개수는 고정되어 있지 않으며, linearRegressionState에 전달되는 인수의 개수에 따라서만 달라집니다. 모두 숫자 값이어야 합니다. 예측하도록 학습하려는 대상 값이 들어 있는 컬럼은 첫 번째 인수로 삽입된다는 점에 유의하십시오.
  1. 예측
상태를 테이블에 저장한 후에는 이를 예측에 여러 번 사용할 수 있으며, 다른 상태와 머지하여 새롭고 더 나은 모델을 만들 수도 있습니다.
WITH (SELECT state FROM your_model) AS model SELECT
evalMLMethod(model, x1, x2) FROM test_data
이 쿼리는 예측값 컬럼을 반환합니다. evalMLMethod의 첫 번째 인수는 AggregateFunctionState 객체이고, 그다음 인수들은 피처 컬럼입니다. test_datatrain_data와 같은 테이블이지만 대상 값은 포함하지 않을 수 있습니다. 참고
  1. 두 모델을 머지하려면 다음과 같은 쿼리를 만들 수 있습니다:
SELECT state1 + state2 FROM your_models
여기서 your_models 테이블에는 두 모델이 모두 포함되어 있습니다. 이 쿼리는 새로운 AggregateFunctionState 객체를 반환합니다.
  1. -State combinator를 사용하지 않으면 모델을 저장하지 않고도 생성된 모델의 가중치를 가져와 자체 용도로 사용할 수 있습니다.
SELECT stochasticLinearRegression(0.01)(target, param1, param2)
FROM train_data
이와 같은 쿼리를 실행하면 모델이 학습되고 가중치가 반환됩니다. 앞의 값들은 모델의 매개변수에 해당하는 가중치이며, 마지막 값은 바이어스입니다. 따라서 위 예시에서 쿼리는 3개의 값으로 이루어진 컬럼을 반환합니다. 구문
stochasticLinearRegression([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 — 경사 하강을 한 번 수행하기 위해 그래디언트를 계산하고 합산할 요소 수를 설정합니다. 순수 확률적 하강에서는 요소 1개를 사용하지만, 작은 배치(약 10개 요소)를 사용하면 경사 하강 단계가 더 안정적입니다. 기본값은 15입니다. UInt64
  • method — 가중치를 갱신하는 메서드입니다: Adam(기본값), SGD, Momentum, Nesterov. MomentumNesterov는 계산량과 메모리 사용량이 약간 더 많지만, 수렴 속도와 확률적 경사 메서드의 안정성 측면에서 유용할 수 있습니다. const String
  • target — 예측하도록 학습할 대상 값(종속 변수)입니다. 숫자여야 합니다. Float*
  • x1, x2, ... — 특성 값(독립 변수)입니다. 모두 숫자여야 합니다. Float*
반환 값 학습된 선형 회귀 모델의 가중치를 반환합니다. 앞의 값들은 모델의 매개변수에 해당하며, 마지막 값은 바이어스입니다. 예측에는 evalMLMethod를 사용합니다. Array(Float64) 예시 모델 학습
Query
CREATE TABLE your_model
ENGINE = Memory
AS SELECT
stochasticLinearRegressionState(0.1, 0.0, 5, 'SGD')(target, x1, x2)
AS state FROM train_data
Response
학습된 모델 상태를 테이블에 저장합니다
예측하기
Query
WITH (SELECT state FROM your_model) AS model SELECT
evalMLMethod(model, x1, x2) FROM test_data
Response
테스트 데이터에 대한 예측값을 반환합니다
모델 가중치 가져오기
Query
SELECT stochasticLinearRegression(0.01)(target, x1, x2) FROM train_data
Response
상태를 저장하지 않고 모델 가중치를 반환합니다
관련 항목
마지막 수정일 2026년 6월 10일