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) 데이터

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 부터 시작하는 정수형 변수로 변환합니다.

* | 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 모델 저장소에 저장합니다.

... | 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 결과

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

... | 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 결과

Logistic Regression 1
  • eval 결과

all_count

correct_count

wrong_count

accuracy

50

48

2

96

Parameters

... | fit LogisticRegression FEATURES fields LABEL l_fields INTO_model

이름

설명

필수/옵션

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)
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

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