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

노트북의 SPSS 예측 분석 데이터 준비 알고리즘

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

기술은 일변량 및 이변량 통계의 효율적인 계산과 대규모 데이터에 대한 자동 데이터 준비 기능을 제공합니다. 이는 후속 모델링 문석을 위한 데이터 프로파일링, 데이터 탐색 및 데이터 준비에서 폭넓게 사용될 수 있습니다.

핵심 통계 기능에는 필수 일변량 및 이변량 통계 요약, 이변량 순서 통계, 원시 데이터로부터의 메타데이터 정보 작성, 단일 필드 및 필드 쌍의 시각화를 위한 통계, 데이터 준비 기능, 그리고 데이터 관심 스코어 및 데이터 품질 평가가 포함됩니다. 이는 자동화된 데이터 처리, 사용자 대화식 작업, 그리고 지정된 목표를 포함하여 단일 필드 또는 필드 쌍 간의 관계에 대한 데이터 인사이트를 얻는 데 필요한 기능을 효율적으로 지원합니다.

Python 예 코드:

from spss.ml.datapreparation.descriptives import Descriptives

de = Descriptives(). \
    setInputFieldsList(["Field1", "Field2"]). \
    setTargetFieldList(["Field3"]). \
    setTrimBlanks("TRIM_BOTH")

deModel = de.fit(df)

PMML = deModel.toPMML()
statXML = deModel.statXML()

predictions = deModel.transform(df)
predictions.show()

기술 선택 전략

필드 쌍의 수가 너무 많은 경우(예: 기본값인 1000개보다 큼)에는 이변량 통계를 계산할 쌍의 수를 제한하기 위해 SelectionStrategy가 사용됩니다. 이 전략은 2개의 단계를 포함합니다.

  1. 일변량 통계를 기반으로 쌍의 수를 제한합니다.
  2. 핵심 연관 이변량 통계를 기반으로 쌍의 수를 제한합니다.

다음 조건에서는 해당 쌍이 항상 포함된다는 점을 참고하십시오.

  1. 쌍이 예측변수 필드와 목표 필드로 구성되었습니다.
  2. 예측변수 또는 목표의 쌍이 강제됩니다.

스마트 데이터 사전 처리

스마트 데이터 사전 처리(SDP) 엔진은 데이터 준비를 위한 분석 구성요소입니다. 이는 세 개의 개별 모듈(관련성 분석, 관련성 및 중복성 분석, 스마트 메타데이터(SMD) 통합)으로 구성됩니다.

일반 필드, 목록 필드 및 맵 필드로 데이터가 제공되면, 관련성 분석은 목표와 입력 필드의 연관을 평가하고 후속 분석을 위해 지정된 수의 필드를 선택합니다. 동시에 목록 필드 및 맵 필드를 펼치고 선택된 필드를 일반 열 기반 형식으로 추출합니다.

관련성 분석의 효율성으로 인해, 광범위한 데이터의 많은 필드를 기존 분석이 작동할 수 있는 중간 수준으로 줄이는 데에도 사용됩니다.

SmartDataPreprocessingRelevanceAnalysis는 다음 출력을 내보냅니다.

  • 모델 정보를 포함하는 JSON 파일
  • 새 열 기반 데이터
  • 관련 데이터 모델

Python 예 코드:

from spss.ml.datapreparation.smartdatapreprocessing import SmartDataPreprocessingRelevanceAnalysis

sdpRA = SmartDataPreprocessingRelevanceAnalysis(). \
    setInputFieldList(["holderage", "vehicleage", "claimamt"]). \
    setTargetFieldList(["vehiclegroup", "nclaims"]). \
    setMaxNumTarget(3). \
    setInvalidPairsThresEnabled(True). \
    setRMSSEThresEnabled(True). \
    setAbsVariCoefThresEnabled(True). \
    setInvalidPairsThreshold(0.7). \
    setRMSSEThreshold(0.7). \
    setAbsVariCoefThreshold(0.05). \
    setMaxNumSelFields(2). \
    setConCatRatio(0.3). \
    setFilterSelFields(True)

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

희소 데이터 변환기

희소 데이터 변환기(SDC)는 일반 데이터 필드를 목록 필드로 변환합니다. 사용자가 목록 필드로 변환할 필드를 지정하기만 하면, SDC가 수치 레벨에 따라 해당 필드를 병합합니다. 이는 최대 세 가지 유형의 목록 필드(연속형 목록 필드, 범주형 목록 필드 및 맵 필드)를 생성합니다.

Python 예 코드:

from spss.ml.datapreparation.sparsedataconverter import SparseDataConverter

sdc = SparseDataConverter(). \
    setInputFieldList(["Age", "Sex", "Marriage", "BP", "Cholesterol", "Na", "K", "Drug"])
predictions = sdc.transform(data)
predictions.show()

구간화

이 함수를 사용하여 하나 이상의 새 구간화된 필드를 파생시키거나 구간 값을 판별하는 데 사용되는 구간 정의를 얻을 수 있습니다.

Python 예 코드:

from spss.ml.datapreparation.binning.binning import Binning

binDefinition = BinDefinitions(1, False, True, True, [CutPoint(50.0, False)])
binField = BinRequest("integer_field", "integer_bin", binDefinition, None)

params = [binField]
bining = Binning().setBinRequestsParam(params)

outputDF = bining.transform(inputDF)

육각형 구간화

이 함수를 사용하여 육각형 구간을 계산하고 두 개의 필드에 지정할 수 있습니다.

Python 예 코드:

from spss.ml.datapreparation.binning.hexbinning import HexBinning
from spss.ml.param.binningsettings import HexBinningSetting

params = [HexBinningSetting("field1_out", "field1", 5, -1.0, 25.0, 5.0),
          HexBinningSetting("field2_out", "field2", 5, -1.0, 25.0, 5.0)]

hexBinning = HexBinning().setHexBinRequestsParam(params)
outputDF = hexBinning.transform(inputDF)

복합 샘플링

complexSampling 함수는 데이터 소스로부터 의사 무작위 레코드 샘플을 선택합니다.

complexSampling 함수는 단순 정확 샘플링 및 단순 비례 샘플링을 사용하여 수신 데이터에 대한 계층화된 샘플링을 수행합니다. 계층화 필드가 입력으로 지정되며 샘플링되는 각 계층에 대한 샘플링 계수 또는 샘플링 비율 또한 제공되어야 합니다. 선택적으로, 성능을 향상시키기 위해 각 계층에 대한 레코드 개수가 제공될 수 있습니다.

Python 예 코드:

from spss.ml.datapreparation.sampling.complexsampling import ComplexSampling
from spss.ml.datapreparation.params.sampling import RealStrata, Strata, Stratification

transformer = ComplexSampling(). \
    setRandomSeed(123444). \
    setRepeatable(True). \
    setStratification(Stratification(["real_field"], [
    Strata(key=[RealStrata(11.1)], samplingCount=25),
    Strata(key=[RealStrata(2.4)], samplingCount=40),
    Strata(key=[RealStrata(12.9)], samplingRatio=0.5)])). \
    setFrequencyField("frequency_field")

sampled = transformer.transform(unionDF)

계수 및 샘플링

countAndSample 함수는 'samplingCount' 입력과 대략적으로 동일한 크기를 가진 의사 무작위 샘플을 생성합니다.

샘플링은 샘플링 SamplingComponent 'samplingCount totalRecords' '로 계산된 샘플링 비율로 호출하여 수행되며, 여기서 'totalRecords' '는 들어오는 데이터의 레코드 수입니다.

Python 예 코드:

from spss.ml.datapreparation.sampling.countandsample import CountAndSample

transformer = CountAndSample().setSamplingCount(20000).setRandomSeed(123)
sampled = transformer.transform(unionDF)

MR 샘플링

mrsampling 함수는 지정된 샘플링 비율로 데이터 소스로부터 의사 무작위 레코드 샘플을 선택합니다. 샘플의 크기는 선택적으로 최대값으로 제한될 수 있는 총 레코드 수의 지정된 비율에 근사합니다. 레코드 세트와 이들의 총 수는 무작위 시드에 따라 달라집니다. 데이터 소스의 모든 레코드에는 선택될 확률이 동일하게 존재합니다.

Python 예 코드:

from spss.ml.datapreparation.sampling.mrsampling import MRSampling

transformer = MRSampling().setSamplingRatio(0.5).setRandomSeed(123).setDiscard(True)
sampled  = transformer.transform(unionDF)

모델 샘플링

samplingModel 함수는 주어진 스텝 사이즈 N에 대한 모든 N 번째 레코드에 의해 정의되는 입력 레코드들의 서브시퀀스의 의사 무작위 퍼센트를 선택합니다. 총 샘플 크기는 선택적으로 최대값에 의해 제한될 수 있습니다.

단계 크기가 1인 경우 서브시퀀스는 입력 레코드의 전체 시퀀스입니다. 샘플링 비율이 1.0인 경우 선택은 의사 무작위가 아니라 결정론적이 됩니다.

분산 데이터를 사용하는 경우 samplingModel 함수는 선택 기준을 각 데이터 분할에 독립적으로 적용한다는 점을 참고하십시오. 최대 샘플 크기(있는 경우)는 각 분할에 독립적으로 적용되며 전체 데이터 소스에 적용되지 않습니다. 서브시퀀스는 각 분할의 시작에서 새로 시작됩니다.

Python 예 코드:

from spss.ml.datapreparation.sampling.samplingcomponent import SamplingModel

transformer = SamplingModel().setSamplingRatio(1.0).setSamplingStep(2).setRandomSeed(123).setDiscard(False)
sampled = transformer.transform(unionDF)

순차 샘플링

sequentialSampling 함수는 samplingModel 함수와 유사합니다. 이 또한 매 N번째 레코드(N은 지정된 단계 크기)로 정의된 입력 레코드의 서브시퀀스의 의사 무작위 백분율을 선택합니다. 총 샘플 크기는 선택적으로 최대값에 의해 제한될 수 있습니다.

단계 크기가 1인 경우 서브시퀀스는 입력 레코드의 전체 시퀀스입니다. 샘플링 비율이 1.0인 경우 선택은 의사 무작위가 아니라 결정론적이 됩니다. sequentialSampling과 samplingModel의 주된 차이점은 분산 데이터를 사용하는 경우, sequentialSampling 함수는 선택 기준을 전체 데이터 소스에 적용하는 반면 samplingModel 함수는 선택 기준을 각 데이터 분할에 독립적으로 적용한다는 것입니다.

Python 예 코드:

from spss.ml.datapreparation.sampling.samplingcomponent import SequentialSampling

transformer = SequentialSampling().setSamplingRatio(1.0).setSamplingStep(2).setRandomSeed(123).setDiscard(False)
sampled = transformer.transform(unionDF)

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