SPSS備忘録 -41ページ目

Clementineでデータ分割をすることを考える

9月7日の記事 に関連して、Clementineで数値フィールドをカテゴリ化することを考えます。


基本的には[フィールド作成ノード]の[セット型]を組んでいく方法になると思います。


セット型

SPSSより「以上・以下・未満」を設定するのはわかりやすいです。ただカテゴリが多い場合、これをセットしていくのは面倒ですね。


数値フィールドでヒストグラムを作成し、ヒストグラムをクリックしてバンドを作成して、それをもとにカテゴリを作成する方法があります。私もよく使います。


ヒストグラム


しかし、データを等分に分けたり、細かい値を指定するのは、この方法ですと難しいです。


データを等分する場合は[データ分割ノード]を使用することになります(ちなみに[データ分類ノード]という似た名前のノードもあり、こちらはカテゴリがたくさんあるフィールドをまとめたり、カテゴリを改名したりするセット型フィールドを対象にした処理です)。


データ分割ノード


[データ分割手段]を[固定幅]にすれば、最小値から最大値まで等間隔でデータを分割しますし、[分位(等カウント)]にすれば、全てのビンが等しい件数になるようにデータを分割します。


データ分割ノードによる分割をカスタマイズしたい場合は、一旦このノードを含むストリームを実行後、ふたたびこのデータ分割ノードを開き、[ノードの生成]タブを開きます。[フィールド作成ノードの生成]ボタンがありますのでこれをクリックしますと、セット型を指定したフィールド作成ノードを生成できますので、このフィールド作成ノードを編集しましょう。


[ノードの生成]タブ


フィールド作成ノードから作成するのではなく、ヒストグラムやデータ分割ノードで輪郭を作って、それをカスタマイズする方が作りやすい場合もありますので、参考にしていただければと思います。

[値の再割り当て]で「以上」「以下」「未満」はどうやって表現するんだ?

知人より「SPSSの[値の再割り当て]で「以上」「以下」「未満」はどうやって表現するんだ?」と聞かれました。


正解は・・・、「いまさらな質問だよ」です。「以上」「以下」「未満」が必要ということはスケールの数値変数をカテゴリ化することなのでしょうが、そのための処理は、SPSSのメニュー[変換]→[同一の変数への値の再割り当て]または[変換]→[他の変数への値の再割り当て]ではなく、SPSSのメニュー[変換]→[連続変数のカテゴリ化]で行います。


最初のダイアログでカテゴリの元になる変数を選択しますと、次のダイアログでヒストグラムからデータを分割させることが出来ます。


連続変数のカテゴリ化


左の変数リストで変数を選択し、[ビン分割する変数]に新カテゴリ変数の変数名を入力します。[値]に数値を入れるとその値が分割点として設定されます。[終点の上限]で以上か未満を設定して[OK]をクリックするとカテゴリ変数が作成されます。


このダイアログでは自分で分割点を指定する以外にも、[分割点の作成]ボタンから自動で、いわゆるデシル分析 で使うような、全てのカテゴリを同じケース数のデータに分けたりなども出来ます。


なお、[連続変数のカテゴリ化]は数年前のバージョンで登場したのですが、その前は値の再割り当てで分割しておりました。値の再割り当てに登場するコマンド「thru」では「上の条件の方が優先される」という仕組みになっております。例えば1 thru 5という場合は1も5も含まれますが、


50 thru highest --> 2
Lowest thru 50 --> 1

と設定すると上の条件の方が優先されるので、1のグループは50未満になります。


値の再割り当て

レコードがC5.0のどのノードに判別されたかを書き出す

9月5日の記事 で、Clementine10以降では、C&RTree、CHAID、QUESTモデルに照らし合わせた各レコードがディシジョンツリーのどのノードに判別されたかを追記させる方法を紹介いたしましたが、この記事のとおりディシジョンツリーでもC5.0モデルでは使うことが出来ません。


C5.0では、Clementine9以前ではC&RTree、CHAID、QUESTについても行っていた、ルールセットモデルを介してルール番号を振る方法を使用します。


まずモデルを作成します。作成したあとモデルをブラウズし、[ノードの生成]→[ルールセット]をクリックしますと、キャンバスまたはモデルパレット(今回は出力先はどちらでも構いません)にルールセット書式に書き直したモデルが作成されます。


モデルからルールセットを作成


作成されたルールセットモデルを右クリックからブラウズし、[ノードの生成]→[ルールトレースノード]をクリックしますと、キャンバスにスーパーノードが作成されます。


ルールセットからルールトレースノードを作成


このスーパーノードは、ルールセットモデルで規定しているルール番号と確信度を各レコードに割り振るフィールドを作成しております。ストリームに組み込んで実行し、ルールセットモデルとともに活用してください。


新フィールドからルールセットのノード番号を確認