.. role:: raw-html-m2r(raw) :format: html generalizedLinearRegression ==================================================================================================== 개요 ---------------------------------------------------------------------------------------------------- generalizedLinearRegression(일반화선형회귀) 를 이용하여 예측 모델을 학습하는 알고리즘에 대한 설명서입니다. 설명 ---------------------------------------------------------------------------------------------------- 선형회귀 모델의 종속변수(=Y)는 정규 분포를 따른다고 가정하여 만든 모델입니다. 일반화 선형 모델(generalized linear regression)은 선형회귀 모델을 확장하여 종속변수의 분포가 정규 분포외에 다른 확률분포(이항분포, 포아송 분포 등)도 고려한 확장 모델이라고 할 수 있습니다. 이 때 종속변수의 family 분포(gaussian, binomial, poisson, gamma and tweedie) 는 사용자가 결정해야합니다. Examples ---------------------------------------------------------------------------------------------------- generalizedLinearRegression 알고리즘으로 주택 가격의 예측에 적용한 예제입니다. 예제에 사용하는 데이터는 keras 의 dataset 중 하나인 boston housing 데이터입니다. 보스턴 시 주택의 가격 데이터로 여러 개의 측정지표들 (예를 들어, 범죄율, 학생/교사 비율 등) 13개를 독립변수(X)로 포함하고, 보스턴 인근의 주택 가격의 중앙값(median value) 1개를 종속변수(Y)로 하여 총 14개의 변수로 구성 되어 있습니다. 데이터 출처 : https://keras.io/api/datasets/#usage_6 - 데이터 .. image:: ../images/GLM01.png :scale: 40% :alt: GLM 01 | 필드 설명 .. list-table:: :header-rows: 1 * - 속성 - 설명 * - crim - 마을별 범죄율 * - zn - 주거지의 비율 * - indus - 공업 지의 비율 * - chas - 강변 위치 여부 * - nox - 대기 중 질소 산화물 농도 * - rm - 가구당 방의 개수 * - age - 1940년 전에 지어진 집의 비율 * - dis - 일터와의 평균 거리 * - rad - 고속도로 접근성 * - tax - 재산세율 * - ptratio - 마을 별 학생-교사 비율 * - b - 흑인 주거 비율 * - lstat - 저소득층 주거 비율 * - medv - 집값 중간값 - 데이터 전처리 - 13개 변수중 범주형변수 chas(강의 경계일 때는 1,아닐 때는 0) 를 제외하고, 각각의 변수들은 측정값의 단위가 다르기 때문에 스케일링이 필요합니다. - 종속변수(Y) 인 주택가격 중간값인 medv 는 고가 주택일 수록 예측값과 실제값의 차이가 클 수 있습니다. 따라서 medv 는 ``로그변환`` 합니다. .. code-block:: none * | scaler standard crim to s_crim, zn to s_zn, indus to s_indus, nox to s_nox, rm to s_rm, age to s_age, dis to s_dis, rad to s_rad, tax to s_tax, ptratio to s_ptratio, b to s_b, lstat to s_lstat | sql "select *, log(10, medv) as log10_medv from angora" .. image:: ../images/GLM02.png :scale: 40% :alt: GLM 02 - 모델 학습 1차 : fit GeneralizedLinearRegression - 1차 모델은 scaling한 변수 12개 + 범주형 변수 chas 를 설명 변수(X) 총 13개로 GeneralizedLinearRegression 알고리즘의 예측모델을 생성합니다. - GeneralizedLinearRegression 은 13개 feature 변수들 중에서 종속 변수인 주택가격(log10_medv)에 영향을 주는 변수를 선택할 수 있도록 통계량(pValues)을 제공합니다. - pValues 가 0.05 보다 작은 s_zn, s_indus, s_age, s_rad 를 FEATURE에서 제외해서 다시 모델링을 해봅니다. .. code-block:: none .. 데이터변환 ..| fit GeneralizedLinearRegression FEATURES s_crim, s_zn, s_indus, chas, s_nox, s_rm, s_age, s_dis, s_rad, s_tax, s_ptratio, s_b, s_lstat LABEL log10_medv maxIter=30 regParam=0.1 fitIntercept=True solver=irls # family model 은 Gaussian(=default) 로 합니다. .. image:: ../images/GLM03.png :scale: 40% :alt: GLM 03 - 모델 학습 2차 - 2차 모델은 s_zn, s_indus, s_age, s_rad 를 빼고 예측모델을 생성 / 저장합니다. .. code-block:: none .. 데이터변환 .. | fit GeneralizedLinearRegression FEATURES s_crim, chas, s_nox, s_rm, s_dis, s_tax, s_ptratio, s_b, s_lstat LABEL log10_medv maxIter=30 regParam=0.1 fitIntercept=True solver=irls INTO model_GLM .. image:: ../images/GLM04.png :scale: 40% :alt: GLM 04 - 테스트 데이터로 예측 : predict - predict로 model_GLM 에 테스트 데이터를 입력받아 주택가격을 예측하는 명령어 예제입니다. - 실제값 log10_medv 와 예측값 prediction 의 예측오차와 예측오차제곱근(RMSE)를 같이 구합니다. .. code-block:: none .. 데이터변환 .. | predict model_GLM s_crim, chas, s_nox, s_rm, s_dis, s_tax, s_ptratio, s_b, s_lstat | sql "select log10_medv, prediction, (log10_medv - prediction ) as estimateErr, sqrt(log10_medv - prediction ) as sqrt_estimateErr from angora" .. image:: ../images/GLM06.png :scale: 40% :alt: GLM 06 Parameters ---------------------------------------------------------------------------------------------------- .. code-block:: none SparkGeneralizedLinearRegression_command : FEATURES fields LABEL l_field params INTO_model .. list-table:: :header-rows: 1 * - 이름 - 설명 - 필수/옵션 * - FEATURES fields - 학습에 사용될 특징 column을 입력 받습니다. - 필수 * - LABEL l_fiedls - 학습에 사용될 라벨 column을 입력 받습니다. - 필수 * - params - *알고리즘 옵션을 지정해줍니다. - 필수 * - INTO_model - 모델을 저장해주는 예약어 입니다. :raw-html-m2r:`
`\ 경로 (\ **/B-IRIS/USERS/dani/ML/**\ )에 모델, 모델 메타 데이터가 저장됩니다.\ :raw-html-m2r:`
`\ 예 : into modelA - 옵션 *알고리즘 옵션 .. list-table:: :header-rows: 1 * - 이름 - 설명 - 기본값 * - 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 ---------------------------------------------------------------------------------------------------- .. code-block:: none 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]+)