.. role:: raw-html-m2r(raw)
:format: html
logisticRegression(LBFGS)
====================================================================================================
Logistic Regression 학습 알고리즘 파라미터 설명서 입니다.
개요
----------------------------------------------------------------------------------------------------
Logistic Regression 은 데이터가 특정 카테고리에 속할지를 0과 1사이의 연속적인 확률로 예측하는 회귀(regression) 알고리즘 중 하나입니다.
일반적인 회귀 모형은 값(Y)을 예측할 때 사용하지만, Logistic Regression 은 확률에 기반하여 특정 데이터가 어떤 카테고리에 속할지를 결정하게 되어 결국에는 분류(classification) 문제를 해결하는데 사용됩니다.
Logistic Regression 은 주로 0,1 을 구분하는 이진 분류에 많이 사용되지만, 현재(2021.04월) IRIS 에서는 3개 class 이상의 multi-class 분류만을 지원하고 있습니다.
Examples
----------------------------------------------------------------------------------------------------
붓꽃 데이터의 Sepal_Length,Sepal_Width,Petal_Length,Petal_Width 4개의 feature 컬럼으로 setosa, vercicolor, virginica 3개의 종(Species) 을 분류하는 모델을 생성하고, 저장합니다.
그리고 테스트 데이터로 생성한 분류 모델을 통해 예측을 해보고, 모델의 정확도를 검증해 보는 예제입니다.
- 학습 데이터 : 붓꽃(iris) 데이터
.. list-table::
:header-rows: 1
* - Sepal_Length
- Sepal_Width
- Petal_Length
- Petal_Width
- Species
* - 5.1
- 3.5
- 1.4
- 0.2
- setosa
* - 4.9
- 3.0
- 1.4
- 0.2
- setosa
* - 6.6
- 2.9
- 4.6
- 1.3
- vercicolor
* - ...
- ...
- ...
- ...
- ...
- 데이터 정규화 및 전처리 과정
- Sepal_Length,Sepal_Width,Petal_Length,Petal_Width 4개 필드를 ``scaler minmax`` 명령어로 0 에서 1사이의 값으로 scaling 합니다.
- text 형인 Species 필드를 ``indexer`` 명령어로 0 부터 시작하는 정수형 변수로 변환합니다.
.. code-block:: none
* | scaler minmax Sepal_Length to Sepal_Length_s, Sepal_Width to Sepal_Width_s,
Petal_Length to Petal_Length_s, Petal_Width to Petal_Width_s
| indexer Species to new_Species | typecast new_Species integer
- 학습 모델 생성 및 저장
- 정규화 변환한 Sepal_Length_s,Sepal_Width_s,Petal_Length_s,Petal_Width_s 4개 필드 대상으로 3개의 종(Species)으로 분류하는 모델을 만듭니다.
- "LogisticRegression_model_iris" 라는 학습 모델 이름으로 ML 모델 저장소에 저장합니다.
.. code-block:: none
... | fit LogisticRegression FEATURES fields1,fields2,, LABEL 라벨컬럼 maxIter=100 (regParam=0.1 fitIntercept=True) INTO LogisticRegression_model_iris
# example : iris 붓꽃데이터 예시
... | fit LogisticRegression FEATURES Sepal_Length_s,Sepal_Width_s,Petal_Length_s,Petal_Width_s LABEL new_Species INTO LogisticRegression_model_iris
- fit 결과
.. list-table::
:header-rows: 1
* - features
- space
- accurary
- precision
- f1
- recall
* - intercept
- \|
- 0.981
- 0.981
- 0.981
- 0.981
* - Sepal_Length_s
- \|
-
-
-
-
* - Sepal_Width_s
- \|
-
-
-
-
* - Petal_Length_s
- \|
-
-
-
-
* - Petal_Width_s
- \|
-
-
-
-
- 테스트 데이터로 군집 예측 : predict
.. code-block:: none
... | predict LogisticRegression_model_iris Sepal_Length_s,Sepal_Width_s,Petal_Length_s,Petal_Width_s
# 예측 결과의 검증까지 하는 경우
... | predict LogisticRegression_0412 Sepal_Length_s, Sepal_Width_s, Petal_Length_s, Petal_Width_s
| eval classification new_Species prediction
- predict 결과
.. image:: ../images/Logistic_iris_1.png
:scale: 40%
:alt: Logistic Regression 1
- eval 결과
.. list-table::
:header-rows: 1
* - all_count
- correct_count
- wrong_count
- accuracy
* - 50
- 48
- 2
- 96
Parameters
----------------------------------------------------------------------------------------------------
.. code-block:: none
... | fit LogisticRegression FEATURES fields LABEL l_fields INTO_model
.. list-table::
:header-rows: 1
* - 이름
- 설명
- 필수/옵션
* - FEATURES
- 학습에 사용될 특징 column을 입력 받습니다.
- 필수
* - LABEL
- 학습에 사용될 라벨 column을 입력 받습니다.
- 필수
* - fields
- 특징 column들의 이름입니다.
- 필수
* - l_fields
- 라벨 column들의 이름입니다.
- 필수
* - params
- 알고리즘 setting 파라미터들입니다.
- 옵션
* - INTO_model
- ``INTO model_name``\ 으로 이루어져 있습니다. 경로 (\ **/Biris/angora/ml**\ )에 모델 메타 데이터와 함께 저장합니다.
- 필수
* - maxIter
- 학습 반복 수 (default : 100)
- 옵션
* - regParam
- 정규화 계수 값 (default : 0.0)
- 옵션
* - elasticNetParam
- 정규화 함수 타입 (default : L2)\ :raw-html-m2r:`
`\ ``0.0~1.0`` : 1.0에 가까울수록 'L1' 타입, 0.0에 가까울수록 'L2' 타입
- 옵션
* - fitintercept
- 훈련 데이터에 대한 증간된 표현을 사용할지 안 할지 정해주는 Boolean (편향을 학습에 사용할지 안 할지 default : True)
- 옵션
* - tol
- L-BFGS에 대한 반복 수렴 오차 값 (default : 1e-06)
- 옵션
* - threshold
- 이진 분류되는 임계 값 (default : 0.5)
- 옵션
Parameters BNF
----------------------------------------------------------------------------------------------------
.. code-block:: none
SparkRandomForestRegression_command : FEATURES fields LABEL l_field params INTO_model
fields : field
| fields COMMA field
field : WORD
| TIMES
| MINUS WORD
l_field : WORD
params : param
| params param
param : WORD EQUALS WORD
| WORD EQUALS DOUBLE
| WORD EQUALS LBRACKET words RBRACKET
| WORD EQUALS LBRACKET doubles RBRACKET
words : WORD
| words COMMA WORD
doubles : DOUBLE
| doubles COMMA DOUBLE
INTO_model : INTO WORD
WORD : \w+
COMMA : \,
FEATURES : FEATURES | features
LABEL : LABEL | label
INTO : INTO
EQUALS : \=
TIMES : \*
MINUS : \-
LBRACKET : \[
RBRACKET : \]
DOUBLE : [-+]?[0-9]+(\.([0-9]+)?([eE][-+]?[0-9]+)?|[eE][-+]?[0-9]+)
params : maxIter=100, regParam=0.0, elasticNetParam=0.0, tol=1e-06, fitIntercept=True, threshold=0.5