COMPANY

PAGE TOP

BLOG

Hadley Wickhamの「Tidy Data」をRapidMinerでやってみる(パート5)

If you would like to read this post in English, it’s here.


こんにちは。またお越しいただきありがとうございます。前回は、ハドリーウィッカムによって提唱された5つの例の中の2つ目「複数の変数が一つの列に保存されている」場合の複雑な例について解説しました。今回は、三つ目の問題である「変数が行列の両方に保存されている」場合について説明していきます。今回使用するデータは、ハドリーウィッカムの論文にも挙げられているように、Global Historical Climatology Networkに由来しています。データは、米国カリフォルニア州デスバレーにある気象観測所の気象データです。RapidMinerを操作しながらこの投稿を読む際は、ここをクリックして「整理されていない」データをダウンロードしてください。

 

[問題3] 変数が行列の両方に保存されている

 

まず始めに、「整理されていない」データと、処理を施した「整理された」データを見てみましょう。

Click to Open

Click to Open

「整理されていない」データ内の”day”属性(緑枠の列名)は値に変換し、”year”および”month”属性の値(赤枠)と組み合わせる必要があります。そこで、新たに”date”属性を作成し(黄枠)、「整理された」データにします。さらに、「整理されていない」データ中の”element”属性(青枠)の「TMAX」および「TMIN」値は、”TMAX”および”TMIN”という属性を作成し(青枠)、「整理された」データにしていきます。

 

それでは、プロセスを見て、何をする必要があるかを考えていきましょう。

Click to Open

Click to Open

上記の2つのプロセスは、メインプロセスとその内部に含まれるサブプロセスです。 メインプロセスには4つのオペレータと1つのサブプロセスがあり、そのサブプロセスにはさらに2つのオペレータが含まれています。各オペレータを個別に見て、どのような処理を行うのかを見ていきましょう。

Click to Open

まずは、De-Pivotオペレータを見ましょう。オペレータをクリックすると、右側のparametersボックスが表示されます。次に、”attribute name”パラメータの「EditList」ボタンをクリックします。すると、上記の”Edit Parameter List:属性名”ボックスが開きます。選択したい属性は、「整理されていない」データの例で、緑枠で示した”day”属性です。それらを選択するには、”attribute”に正規表現を入力します。今回入力した正規表現(d[0-9]+)は、文字 “d”の後ろに任意の数字 “[0-9]”がある文字列を「1つ以上一致する」ように検索します。正規表現の記述の手助けをしてくれる、電卓ボタン(青枠)をクリックすると、下図の「Edit Regular Expression」ボックスが表示されます。ここでは、 “Item Shortcuts”ボックス(赤枠)で全ての属性を見ることができ、”Matched Items”ボックス(青枠)で正規表現が捕捉することのできる文字列を見ることができます。

Click to Open

正規表現によって捕捉された”day”属性に含まれる値は独自の列になるので、この新しい列の名前(values)を”attribute name”ボックスに入力します。そして、”day”属性を値として含む新しい列の名前(”day”)は、”index attribute”ボックスに入力します。その結果、De-Pivotオペレータから出力されるデータは、次のようになります。

Click to Open

このデータは、Create Date Attributeという名のサブプロセスに入力され、Generate AttributesおよびSelect Attributesオペレータによってさらに変換されます。Generate Attributesオペレータをクリックすると、下図の右のParametersボックスが表示されます。

Click to Open

「Edit List」ボタン(赤枠)をクリックすると、左側の「Edit Parameter List:function descriptions」ウィンドウが表示されます。”attribute name”ボックスには作成する新しい属性の名前を入力し、”function expressions”ボックスには属性の作成に使用する関数を入力します。関数作成の手助けをしてくれる電卓ボタン(青枠)をクリックすると、下図の「Edit Expression: function expressions」ボックスが表示されます。

Click to Open

Click to Open

使用する”concat”関数は、”year”、”month”、”day”属性を2つのハイフンで連結しています。 “cut”関数は、”concat”関数に含まれているため、連結される前に”day”属性内に含まれるすべての値から文字「d」を切り取ります。その後、データ(以下の例)はselect attributesオペレータに入力されます。

Click to Open

Click to Open

Select attributeオペレータをクリックすると、右側にパラメータ画面が表示されます。Attribute filter typeパラメータの下向き矢印(赤枠)をクリックすると、複数のオプションを表示することができます。今回は、除外する属性がいくつかあるだけなので、”subset”を選択します。除外する属性を選択するには、”Select Attribute”ボタン(青枠)クリックします。すると、「Select Attributes:attributes」ウィンドウが表示されます。左側の”attributes”ボックス(この例では”day”、”month”、”year”)から除外する属性をクリックし、その属性を矢印ボタン(緑枠)を使って”selected attributes”ボックスに移動します(invert selectionにチェックを入れておいてください。チェックを入れないと”selected attributes”ボックスに選択された項目のみ出力されます)。このオペレータによって出力されるデータは以下のようになります。

Click to Open

Click to Open

次に、データはReorder Attributesオペレータに入力されます。まず、sort modeを指定する必要があるので、下向き矢印(赤枠)をクリックして、”user specified”を選択します。次に、「Define Order」ボックス(青枠)をクリックして、「Ordering Rules:attribute ordering」ウィンドウを表示します。右矢印ボタン(緑枠)を使用して、左側の”attributes”ボックスから右側の”attribute ordering”ボックスに必要な列を移動し、上下矢印ボタン(紫枠)を使用して属性を正しい順序に配置します。データは以下のようになります。

Click to Open

Click to Open

この時点で、データはほとんど「整理された」ものですが、最後に”TMAX”および”TMIN”属性を作成します。ここでは、Pivotオペレータを使用します。下矢印(赤枠)をクリックして、group attributeパラメータを”date”に設定し、下矢印(青枠)をクリックして、index attributeパラメータを”element”に設定します。データは移動しているだけで、計算が行われていないので、緑枠のconsider weightsボックスのチェックを外します。それ以外の設定はそのままで結構です。データは以下のようになります。

Click to Open

Click to Open

最後に、属性の名前を変更します。データをピボットした結果、新しい属性名は”values”と”element”属性の値”TMAX”および”TMIN”の2つの値の組み合わせになっています。ここでは、Renameオペレータを使用します。クリックするとパラメータ画面が表示され、属性名を変更するには、old nameボックスの下矢印(赤枠)をクリックし、古い属性名を選択し、new nameボックス(青枠)に新しい属性名を入力します。これに加えて、別の属性名も変更したい場合は、Edit Listボタン(緑枠)をクリックし、「Edit Parameter List:追加属性の名前を変更する」ウィンドウ(左側に表示)で同じ処理を繰り返します。このプロセスを実行すると、resultタブに「整理された」データ(下図)が表示されます。

Click to Open

これまでのプロセスをまとめると、”day”属性は、De-pivotオペレータを使用することで、”day”および”values”属性に変わりました。Genarate Attributeオペレータを使って、”year”、”month”、”day”属性を連結し、新たに”date”属性を作成しました。そして、Select Attributesオペレータを使用してこれら3つの属性を除外しました。次に、Reorder  Attributesオペレータによってデータを並べ替え、”elements”属性がピボットされて “values_TMAX”属性と “values_TMIN”属性を作成しました。最後に、これらの属性を「TMAX」と「TMIN」という名前に変更しました。

 

次の投稿では、ハドリーウィッカムによって提唱された4つ目の問題

「複数の異なる型の観測単位が同じテーブルに保存されている」

場合について説明していきます。

 

それではまた!

 

 

$$ \begin{aligned} \newcommand\argmin{\mathop{\rm arg~min}\limits} \boldsymbol{\beta}_{\text{ridge}} & = \argmin_{\boldsymbol{\beta} \in \mathcal{R^p}} \biggl[ ||\boldsymbol{y}-\boldsymbol{X\beta}||^2 + \lambda ||\boldsymbol{\beta}||^2 \biggr] \\ & = (\boldsymbol{X}^T\boldsymbol{X} + \lambda\boldsymbol{I_{p+1}})^{-1}\boldsymbol{X}^T\boldsymbol{y} \end{aligned} $$
PAGE TOP