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 |
모델을 저장해주는 예약어 입니다. |
옵션 |
*알고리즘 옵션
이름 |
설명 |
기본값 |
---|---|---|
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 |