0 / 0
資料の 英語版 に戻る
ノートブックでの SPSS 予測分析データ準備アルゴリズム
最終更新: 2024年10月04日
ノートブックでの SPSS 予測分析データ準備アルゴリズム

記述統計は、大規模データにおける 1 変量統計および 2 変量統計の効率的な計算、および自動データ準備機能を提供します。 これは、後続のモデリング分析のためのデータ・プロファイル作成、データ探索、およびデータ準備で広く使用することができます。

コアとなる統計機能には、基本的な 1 変量の統計要約および 2 変量の統計要約、1 変量の順序統計、生データからのメタデータ情報の作成、単一フィールドとフィールド・ペアの視覚化の統計、データ準備機能、データの関心度スコアおよびデータ品質評価などがあります。 これは、自動化されたデータ処理やユーザーの対話性に必要な機能、単一フィールドのデータ洞察の取得や指定した対象と共に含まれるフィールド・ペア間の関係性のデータ洞察の取得に必要な機能を効果的にサポートできます。

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 変量統計が計算されるペアの数を制限します。 この戦略では、2 つのステップを行います。

  1. 1 変量統計に基づいてペアの数を制限する。
  2. コア・アソシエーションの 2 変量統計に基づいてペアの数を制限する。

以下の条件では、ペアが常に含まれることに注意してください。

  1. ペアが予測変数フィールドと対象フィールドで構成されている。
  2. 予測変数または対象のペアが強制されている。

スマート・データの前処理

スマート・データの前処理 (SDP) エンジンは、データ準備のための分析コンポーネントです。 これは、関連性分析、関連性および冗長性分析、およびスマート・メタデータ (SMD) 統合の 3 つの個別のモジュールで構成されています。

通常のフィールド、リスト・フィールド、およびマップ・フィールドのデータが指定されると、関連性分析は入力フィールドと対象の関連性を評価し、後続の分析のために指定された数のフィールドを選択します。 その一方で、リスト・フィールドおよびマップ・フィールドを展開し、選択されたフィールドを通常の列ベースの形式に抽出します。

関連性分析の効率性により、幅広いデータの多数のフィールドを、従来の分析が機能する中程度のレベルに削減するためにも使用されます。

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 はその測定レベルに従ってフィールドをマージします。 最大で 3 種類のリスト・フィールド (連続型リスト・フィールド、カテゴリー型リスト・フィールド、およびマップ・フィールド) が生成されます。

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()

データ分割

この関数を使用して、1 つ以上の新しいビン分割フィールドを作成したり、ビンの値を決定するために使用するビン定義を取得したりすることができます。

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)

六角ビン分割

この関数を使用して、 六角形ビンを計算して 2 つのフィールドに計算して割り当てることができます。

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」入力とほぼ等しいサイズの疑似乱数サンプルを生成します。

サンプリングは、'samplingCount/'totalRecords'」として計算されるサンプリング比率でSamplingComponentを呼び出すことによって達成される。

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 予測分析アルゴリズム