> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-fix-nav-issues.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

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

# stochasticLogisticRegression

<div id="stochasticLogisticRegression">
  ## stochasticLogisticRegression
</div>

도입 버전: v20.1.0

이 함수는 확률적 로지스틱 회귀를 구현합니다.
이 함수는 이진 분류 문제에 사용할 수 있으며, [`stochasticLinearRegression`](/ko/reference/functions/aggregate-functions/stochasticLinearRegression)과 동일한 사용자 지정 매개변수를 지원하고 같은 방식으로 동작합니다.

**사용법**

이 함수는 다음 두 단계로 사용합니다:

1. 피팅

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

```sql theme={null}
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] 범위에 있어야 합니다.

2. 예측

저장된 상태를 사용해 객체의 레이블이 `1`일 확률을 예측할 수 있습니다.

```sql theme={null}
WITH (SELECT state FROM your_model) AS model SELECT
evalMLMethod(model, param1, param2) FROM test_data
```

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

확률 임곗값도 설정할 수 있으며, 이를 통해 요소를 서로 다른 레이블에 할당할 수 있습니다.

```sql theme={null}
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)
```

그러면 결과는 레이블입니다.

`test_data`는 `train_data`와 같은 테이블(table)이지만 대상 값을 포함하지 않을 수 있습니다.

**구문**

```sql theme={null}
stochasticLogisticRegression([learning_rate, l2_regularization_coef, mini_batch_size, method])(target, x1, x2, ...)
```

**인수**

* `learning_rate` — 경사 하강 단계 수행 시 스텝 크기에 곱해지는 계수입니다. 학습률이 너무 크면 모델의 가중치가 무한대로 발산할 수 있습니다. 기본값은 `0.00001`입니다. [`Float64`](/ko/reference/data-types/float)
* `l2_regularization_coef` — 과적합을 방지하는 데 도움이 될 수 있는 L2 정규화 계수입니다. 기본값은 `0.1`입니다. [`Float64`](/ko/reference/data-types/float)
* `mini_batch_size` — 경사 하강의 한 단계를 수행하기 위해 그래디언트를 계산하고 합산할 요소 수를 설정합니다. 순수 확률적 하강법은 요소 1개를 사용하지만, 작은 배치(약 10개 요소)를 사용하면 그래디언트 단계가 더 안정적입니다. 기본값은 `15`입니다. [`UInt64`](/ko/reference/data-types/int-uint)
* `method` — 가중치를 업데이트하는 메서드입니다: `Adam`(기본값), `SGD`, `Momentum`, `Nesterov`. `Momentum`과 `Nesterov`는 계산량과 메모리를 조금 더 사용하지만, 수렴 속도와 확률적 경사 하강 메서드의 안정성 측면에서 유용합니다. [`String`](/ko/reference/data-types/string)
* `target` — 대상 이진 분류 레이블입니다. 범위는 \[-1, 1]이어야 합니다. [`Float`](/ko/reference/data-types/float)
* `x1, x2, ...` — 특성 값(독립 변수)입니다. 모두 숫자여야 합니다. [`Float`](/ko/reference/data-types/float)

**반환 값**

학습된 로지스틱 회귀 모델의 가중치를 반환합니다. 예측에는 `evalMLMethod`를 사용하며, 이 함수는 데이터가 레이블 `1`을 가질 확률을 반환합니다. [`Array(Float64)`](/ko/reference/data-types/array)

**예시**

**모델 학습**

```sql title=Query theme={null}
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
```

```response title=Response theme={null}
훈련된 모델 상태를 테이블에 저장합니다
```

**예측하기**

```sql title=Query theme={null}
WITH (SELECT state FROM your_model) AS model
SELECT
evalMLMethod(model, x1, x2)
FROM test_data
```

```response title=Response theme={null}
테스트 데이터에 대한 확률 값을 반환합니다
```

**임계값 기반 분류**

```sql title=Query theme={null}
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)
```

```response title=Response theme={null}
확률 임계값(threshold)을 사용하여 이진 분류 레이블을 반환합니다
```

**관련 항목**

* [stochasticLinearRegression](/ko/reference/functions/aggregate-functions/stochasticLogisticRegression)
* [선형 회귀와 로지스틱 회귀의 차이점.](https://stackoverflow.com/questions/12146914/what-is-the-difference-between-linear-regression-and-logistic-regression)
