generalizedLinearRegression

개요

Linaer Regression에서 각각의 column에 대한 중요도를 뽑아내지 못 하여 해당 알고리즘을 추가 했습니다.

설명

비 정규 분포를 따르는 응답에 적용하기 위해 일반화 선형 모델(generalized linear regression)을 사용합니다. family 분포도는 사용자가 스스로 결정해야합니다.

Examples

집값에 대한 샘플데이터 입니다.

indus rm dis tax lstat medv
2.309999943 6.574999809 4.090000153 296 4.980000019 24
7.070000172 6.421000004 4.967100143 242 9.140000343 21.60000038
7.070000172 7.184999943 4.967100143 242 4.03000021 34.70000076
2.180000067 6.998000145 6.062200069 222 2.940000057 33.40000153
속성 설명
CRIM 마을별 범죄율
ZN 주거지의 비율
INDUS 공업 지의 비율
CHAS 강변 위치 여부
NOX 대기 중 질소 산화물 농도
RM 가구당 방의 개수
AGE 1940년 전에 지어진 집의 비율
DIS 일터와의 평균 거리
RAD 고속도로 접근성
TAX 재산세율
PTRATIO 마을 별 학생-교사 비율
B 흑인 주거 비율
LSTAT 저소득층 주거 비율
MEDV 집값 중간값

fit으로 generalized linear regression 적용해 분류 하는 모델을 생성하는 명령어 예제입니다.

* | fit GeneralizedLinearRegression FEATURES rm,tax,indus,lstat,dis LABEL medv maxIter=100 regParam=0.1 fitIntercept=True solver=irls INTO modelB
features estimate coefficientStandardErrors tValues pValues space dispersion rmse r2 mae
intercept 8.3766 3.431 2.4415 0.015

28.2425 5.2828 0.6694 3.7289
rm 4.7425 0.432 10.9786 0

None None None None
tax -0.0078 0.002 -3.8132 0.0002

None None None None
indus -0.1239 0.0612 -2.0267 0.0432

None None None None
lstat -0.6136 0.0499 -12.29 0

None None None None
dis -0.8767 0.161 -5.4454 0

None None None None

predict로 modelB에 샘플 데이터를 다시 넣어 예측하는 명령어 예제입니다.

* | predict modelB rm,tax,indus,lstat,dis

fit_predict로 generalized linear regression 적용해 분류 하는 모델을 생성하고 예측하는 명령어 예제입니다.

* | fit_predict GeneralizedLinearRegression FEATURES rm,tax,indus,lstat,dis LABEL medv maxIter=100 regParam=0.1 fitIntercept=True solver=irls INTO modelB
indus rm dis tax lstat medv prediction
2.309999943 6.574999809 4.090000153 296 4.980000019 24 30.327170453
7.070000172 6.421000004 4.967100143 242 9.140000343 21.60000038 26.105575673
7.070000172 7.184999943 4.967100143 242 4.03000021 34.70000076 32.864401681
2.180000067 6.998000145 6.062200069 222 2.940000057 33.40000153 34.881037647

Parameters

SparkGeneralizedLinearRegression_command : FEATURES fields LABEL l_field params INTO_model
이름 설명 필수/옵션
FEATURES fields 학습에 사용될 특징 column을 입력 받습니다. 필수
LABEL l_fiedls 학습에 사용될 라벨 column을 입력 받습니다. 필수
params *알고리즘 옵션을 지정해줍니다. 필수
INTO_model 모델을 저장해주는 예약어 입니다.
경로 (/B-IRIS/USERS/dani/ML/)에 모델, 모델 메타 데이터가 저장됩니다.
예 : into modelA
옵션

*알고리즘 옵션

이름 설명 기본값
maxIter 학습 반복 수 100
regParam 정규화 계수 값 0.0
fitintercept 훈련 데이터에 대한 증간된 표현을 사용할지 안 할지 정해주는 Boolean (편향을 학습에 사용할지 안 할지) True
tol 최적화 함수에 대한 반복 수렴 오차 값. 1e-06
solver 최적화 알고리즘을 정합니다. irls
family 모델에 사용되는 오류 분포 (gaussian, binomial, poisson, gamma and tweedie) gaussian
link 선형적인 예측과 분포 함수의 평균사이의 관계를 제공해주는 함수 (identity, log, inverse, logic, probit, cloglog, sort) identity

Parameters BNF

SparkGeneralizedLinearRegression_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]+)

Problems

  • 구현 문제인지, 다른 문제인지 확인 불가

    File"/Users/jungjunhwang/Desktop/work/code/fit_work/SparkGenerlizedLinearRegression.py", line 245, in modeling eval_dict['pValues'] = summary.pValues
    
    File "/Users/jungjunhwang/spark-2.2.0-bin hadoop2.7/python/pyspark/ml/regression.py", line 1719, in pValues
        return self._call_java("pValues")
    
    IllegalArgumentException: u'requirement failed: degreesOfFreedom must be positive, but got -4.0'
    

    로컬 테스트시 column의 갯수 혹은 column들의 관계에 따라 pValue 값을 계산하지 못함.

    Data-Discovery-Service 서버 테스트 시 정상작동 그러나, 값이 정확한지 확인 불가.

    <angora Test Command>
    ... | fit SparkGeneralizedLinearRegression features * LABEL medv maxIter=100 INTO modelD
    
  • 값이 정확한지 확인 불가.

    <angora Test Command>
    ... | fit SparkGeneralizedLinearRegression FEATURES rm,tax,indus,lstat,crim,age,b,rad LABEL medv maxIter=100 regParam=0.1 fitIntercept=True INTO modelD
    

Data-Discovery-Service_TEST

Coeffiecient estimate standError tValues pValues
intercept -3.3659 0.4538 11.2661 0.0
rm 5.1128 0.0041 -3.5127 0.0005
tax -0.0144 0.0604 0.7848 0.433
indus 0.0474 0.057 -9.8506 0.0
lstat -0.5619 0.0368 -1.9531 0.0514
crim -0.0719 0.0123 1.3831 0.1673
age 0.017 0.003 3.1231 0.0019
b 0.0094 0.0717 2.8293 0.0049
rad 0.2028 3.6905 -0.9121 0.3622