0 / 0
영어 버전 문서로 돌아가기

노트북의 SPSS 예측 분석 분류 및 회귀 알고리즘

마지막 업데이트 날짜: 2024년 10월 04일
노트북의 SPSS 예측 분석 분류 및 회귀 알고리즘

노트북에서 일반화 선형 모형, 선형 회귀, 선형 지원 벡터 기계, 무작위 트리 또는 CHAID SPSS 예측 분석 알고리즘을 사용할 수 있습니다.

일반화 선형 모델

일반화 선형 모델(GLE)은 다양한 유형의 데이터에 대해 흔히 사용되는 분석 알고리즘입니다. 이는 정규 분포 목표에 대한 선형 회귀, 2진 또는 다항 목표에 대한 로지스틱 모델, 가산 데이터에 대한 로그 선형 모델과 같이 널리 사용되는 통계 모델을 포함할 뿐만 아니라, 매우 포괄적인 모델 형성을 통해 그 외의 많은 유용한 통계 모델 또한 포함합니다. 일반화 선형 모델은 모델 빌드 외에 변수 선택, 분포 및 연결 함수의 자동 선택, 그리고 모델 평가 통계 등의 다른 유용한 기능도 제공합니다. 이 모델에는 LASSO, 능선 회귀, 탄성 네트 등과 같은 정규화에 대한 옵션이 있습니다. 매우 광범위한 데이터를 처리할 수도 있습니다.

분포 및 연결 함수를 선택하는 방법에 대한 세부사항은 분포 및 연결 함수 조합을 참조하십시오.

코드 예 1:

이 예는 지정된 분포 및 연결 함수, 지정된 효과, 절편, 시행 ROC 곡선, 인쇄 상관 행렬을 포함하는 GLE 설정을 보여줍니다. 이 시나리오는 모델을 빌드한 후 스코어링합니다.

Python 예:

from spss.ml.classificationandregression.generalizedlinear import GeneralizedLinear
from spss.ml.classificationandregression.params.effect import Effect

gle1 = GeneralizedLinear(). \
    setTargetField("Work_experience"). \
    setInputFieldList(["Beginning_salary", "Sex_of_employee", "Educational_level", "Minority_classification", "Current_salary"]). \
    setEffects([
        Effect(fields=["Beginning_salary"], nestingLevels=[0]),
        Effect(fields=["Sex_of_employee"], nestingLevels=[0]),
        Effect(fields=["Educational_level"], nestingLevels=[0]),
        Effect(fields=["Current_salary"], nestingLevels=[0]),
        Effect(fields=["Sex_of_employee", "Educational_level"], nestingLevels=[0, 0])]). \
    setIntercept(True). \
    setDistribution("NORMAL"). \
    setLinkFunction("LOG"). \
    setAnalysisType("BOTH"). \
    setConductRocCurve(True)

gleModel1 = gle1.fit(data)
PMML = gleModel1.toPMML()
statXML = gleModel1.statXML()
predictions1 = gleModel1.transform(data)
predictions1.show()

코드 예 2:

이 예는 지정되지 않은 분포 및 연결 함수, 그리고 전진 단계적 방법을 사용한 변수 선택을 포함하는 GLE 설정을 보여줍니다. 이 시나리오는 전진 단계적 방법을 사용하여 분포, 연결 함수 및 효과를 선택한 후, 모델을 빌드하고 스코어링합니다.

Python 예:

from spss.ml.classificationandregression.generalizedlinear import GeneralizedLinear
from spss.ml.classificationandregression.params.effect import Effect

gle2 = GeneralizedLinear(). \
    setTargetField("Work_experience"). \
    setInputFieldList(["Beginning_salary", "Sex_of_employee", "Educational_level", "Minority_classification", "Current_salary"]). \
    setEffects([
        Effect(fields=["Beginning_salary"], nestingLevels=[0]),
        Effect(fields=["Sex_of_employee"], nestingLevels=[0]),
        Effect(fields=["Educational_level"], nestingLevels=[0]),
        Effect(fields=["Current_salary"], nestingLevels=[0])]). \
    setIntercept(True). \
    setDistribution("UNKNOWN"). \
    setLinkFunction("UNKNOWN"). \
    setAnalysisType("BOTH"). \
    setUseVariableSelection(True). \
    setVariableSelectionMethod("FORWARD_STEPWISE")

gleModel2 = gle2.fit(data)
PMML = gleModel2.toPMML()
statXML = gleModel2.statXML()
predictions2 = gleModel2.transform(data)
predictions2.show()

코드 예 3:

이 예는 지정되지 않은 분포, 지정된 연결 함수, LASSO 방법을 사용한 변수 선택, 양방향 상호작용 감지, 자동 벌점 매개변수 선택을 포함하는 GLE 설정을 보여줍니다. 이 시나리오는 효과에 대한 양방향 상호작용을 감지하고, LASSO 방법을 사용하여 분포를 선택하고 자동 벌점 매개변수 선택을 사용해 효과를 선택한 후, 모델을 빌드하고 스코어링합니다.

Python 예:

from spss.ml.classificationandregression.generalizedlinear import GeneralizedLinear
from spss.ml.classificationandregression.params.effect import Effect

gle3 = GeneralizedLinear(). \
    setTargetField("Work_experience"). \
    setInputFieldList(["Beginning_salary", "Sex_of_employee", "Educational_level", "Minority_classification", "Current_salary"]). \
    setEffects([
        Effect(fields=["Beginning_salary"], nestingLevels=[0]),
        Effect(fields=["Sex_of_employee"], nestingLevels=[0]),
        Effect(fields=["Educational_level"], nestingLevels=[0]),
        Effect(fields=["Current_salary"], nestingLevels=[0])]). \
    setIntercept(True). \
    setDistribution("UNKNOWN"). \
    setLinkFunction("LOG"). \
    setAnalysisType("BOTH"). \
    setDetectTwoWayInteraction(True). \
    setUseVariableSelection(True). \
    setVariableSelectionMethod("LASSO"). \
    setUserSpecPenaltyParams(False)

gleModel3 = gle3.fit(data)
PMML = gleModel3.toPMML()
statXML = gleModel3.statXML()
predictions3 = gleModel3.transform(data)
predictions3.show()

선형 회귀

선형 회귀 모델은 연속형 목표, 그리고 연속형이거나 범주형일 수 있는 하나 이상의 예측변수 간의 예측 관계를 분석합니다.

선형 회귀 모델의 특성에는 자동 상호작용 효과 감지, 전진 단계적 모델 선택, 진단 검사, 추정평균(EMMEANS)에 기반한 비정상 카테고리 감지가 있습니다.

코드 예:

Python 예:

from spss.ml.classificationandregression.linearregression import LinearRegression

le = LinearRegression(). \
    setTargetField("target"). \
    setInputFieldList(["predictor1", "predictor2", "predictorn"]). \
    setDetectTwoWayInteraction(True). \
    setVarSelectionMethod("forwardStepwise")

leModel = le.fit(data)
predictions = leModel.transform(data)
predictions.show()

선형 지원 벡터 머신

선형 서포트 벡터 머신(LSVM)은 레이블 지정된 훈련 데이터 세트로부터 입력-출력 맵핑 함수를 생성하는 지도 학습 방법을 제공합니다. 이 맵핑 함수는 분류 함수 또는 회귀 함수일 수 있습니다. LSVM은 대규모(레코드의 수 및 변수(매개변수)의 수 측면에서) 문제점을 해결하기 위해 디자인되었습니다. 이 머신의 특성 공간은 문제점의 입력 공간과 같으며, 한 레코드에 있는 영이 아닌 요소의 평균 수가 작은 희소 데이터를 처리할 수 있습니다.

코드 예:

Python 예:

from spss.ml.classificationandregression.linearsupportvectormachine import LinearSupportVectorMachine

lsvm = LinearSupportVectorMachine().\
    setTargetField("BareNuc").\
    setInputFieldList(["Clump", "UnifSize", "UnifShape", "MargAdh", "SingEpiSize", "BlandChrom", "NormNucl", "Mit", "Class"]).\
    setPenaltyFunction("L2")

lsvmModel = lsvm.fit(df)
predictions = lsvmModel.transform(data)
predictions.show()

무작위 트리

랜덤 트리는 강력한(정확한) 예측 모델을 생성하는 효과적인 접근법입니다. 분류 또는 회귀 문제점에 대한 다른 최신 방법보다 비교할 수 있으며 때로는 더 좋습니다.

랜덤 트리는 여러 CART 유사 트리로 구성된 앙상블 모델입니다. 각 트리는 원본 데이터 케이스를 대체 항목으로 샘플링하여 얻은 부트스트랩 샘플을 기반으로 성장합니다. 또한 트리 성장 중에, 각 노드에서 최선의 분할 변수는 전체 변수 세트에서 무작위로 선정된, 소수의 지정된 변수 내에서 선택됩니다. 각 트리는 가능한 한 최대 범위까지 성장하며, 가지치기는 없습니다. 스코어링 시 랜덤 트리에서는 다수 투표(분류용) 또는 평균(회귀분석용)에 따라 개별 트리 스코어를 결합합니다.

코드 예:

Python 예:

from spss.ml.classificationandregression.ensemble.randomtrees import RandomTrees

# Random trees required a "target" field and some input fields. If "target" is continuous, then regression trees will be generate else classification .
# You can use the SPSS Attribute or Spark ML Attribute to indicate the field to categorical or continuous.
randomTrees = RandomTrees(). \
    setTargetField("target"). \
    setInputFieldList(["feature1", "feature2", "feature3"]). \
    numTrees(10). \
    setMaxTreeDepth(5)

randomTreesModel = randomTrees.fit(df)
predictions = randomTreesModel.transform(scoreDF)
predictions.show()

CHAID

CHAID 또는 카이제곱 자동 상호작용 발견은 카이제곱 통계량을 사용하여 최적의 분할을 식별해서 의사결정 트리를 작성하기 위한 분류 방법입니다. 회귀 문제점에 적용 가능한 확장 또한 사용할 수 있습니다.

CHAID는 먼저 각 입력 필드와 목표 간의 교차표를 검사하고 카이제곱 독립성 검정을 사용하여 유의성을 테스트합니다. 이들 관계 중 둘 이상이 통계적으로 중요한 경우, CHAID는 가장 중요한(가장 작은 p값) 입력 필드를 선택할 것입니다. 입력에 둘 이상의 범주가 있는 경우에는 이 범주를 비교하고 결과에 차이가 없는 범주는 함께 접습니다. 최소유의차를 표시하는 범주 쌍을 연속으로 결합해서 이를 수행합니다. 나머지 모든 범주가 지정된 검정 수준에서 서로 다르면 이 범주 병합 프로세스는 중지됩니다. 명목 입력 필드의 경우 범주가 병합될 수 있으며 순서 세트의 경우에는 연속형 범주만 병합될 수 있습니다. 대상 이외의 연속 입력 필드는 직접 사용할 수 없습니다. 먼저 순서 필드에 구간화되어야 합니다.

Exhaustive CHAID는 각 예측자에 대한 모든 가능한 분할을 탐색하는 보다 전반적인 작업을 수행하지만 계산 시간이 오래 걸리는 CHAID의 수정 모델입니다.

코드 예:

Python 예:

from spss.ml.classificationandregression.tree.chaid import CHAID

chaid = CHAID(). \
    setTargetField("salary"). \
    setInputFieldList(["educ", "jobcat", "gender"])

chaidModel = chaid.fit(data)
pmmlStr = chaidModel.toPMML()
statxmlStr = chaidModel.statXML()

predictions = chaidModel.transform(data)
predictions.show()

상위 주제: SPSS 예측 분석 알고리즘