01.3.6 中学生向け
RobustScaler(中学生向け)
クイズ:1 人だけ 100 冊読んだクラスで、「ふつう」はどこ? #
夏休みの読書記録です。クラス 11 人の読んだ冊数を小さい順に並べました。
| 順番 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 冊数 | 2 | 3 | 3 | 4 | 5 | 5 | 6 | 7 | 8 | 9 | 100 |
11 番目の人は図書委員で、100 冊読みました。このクラスの「ふつうの冊数」はいくらでしょう? 平均は 152 ÷ 11 で約 14 冊ですが、14 冊以上読んだのは 1 人だけ。「最小 2 冊を 0、最大 100 冊を 1」とすると、10 人が 0.07 以下にぎゅっと押しこまれ、差が見えなくなります。
そこで、まん中の人を見ます。6 番目の 5 冊です。さらに、下から 4 分の 1(3 番目の 3 冊)と上から 4 分の 1(9 番目の 8 冊)の間に「まん中の半分の人」が入っています。この幅 5 冊を 1 目盛りにすれば、100 冊の人がいても、ほかの 10 人の位置はきちんと広がって見えます。これが RobustScaler の考え方です。

上の図は、400 個あまりの数を箱ひげ図で表したものです。左(変える前)では、ほとんどの値が入っている「箱」の右に、離れた点(極端な値)が並んでいます。右(変えたあと)では、箱のまん中の線が 0 に、箱の幅がちょうど 1 目盛りになり、離れた点はそのまま右に残っています。
仕組み:箱ひげ図の「箱」で目盛りを作る #
まず、数を小さい順に並べます。読書記録の表と同じ並べ方で、図では箱ひげ図を描く最初の一歩に当たります。次に、まん中の値(中央値)を見つけて、これを新しい 0 の位置にします。図では、箱の中の線が 0 の目盛りに移ります。続けて、下から 4 分の 1 と上から 4 分の 1 の値を見つけます。この 2 つの間が箱ひげ図の「箱」で、箱の幅(四分位範囲)を新しい 1 目盛りにします。最後に、11 人全員の値を新しい目盛りで読み直します。まん中の人は 0、100 冊の人は 19 くらいの大きな値になり、極端な人は極端なまま遠くに置かれ、箱の中の人たちは見やすく広がります。
動かして見てみよう #
下の図で「再生」を押すと、説明した手順が 1 つずつ進みます。手順ごとの説明は図の下に出ます。
気をつけたいこと #
最初の注意は、極端な値(100 冊の人)が消えるわけではないことです。100 冊の人は、そろえたあとも遠くにいます。「ふり回されない」のは箱の中の目盛りで、極端な値を取り除く道具ではありません。二つ目は、データが少ないとまん中も動きやすいことです。3 人しかいなければ、1 人が入れ替わるだけで中央値も箱の幅も変わるので、ある程度の人数があってこそ力を発揮します。三つ目は、箱の幅が 0 になると使えないことです。ほとんどの人が同じ値(全員 5 冊など)だと箱の幅が 0 になって目盛りが作れないので、そんなときは別の方法を考えます。
やってみよう #
最初の課題は、上の読書記録で「最小を 0、最大を 1」としたときの全員の位置と、「中央値を 0、箱の幅を 1 目盛り」としたときの位置を、紙に数直線を描いて比べることです。二つ目は、身の回りで「1 人(1 つ)だけ極端な値がまじりやすいデータ」を 3 つ探すことです(例:お小遣いの額、通学時間、ゲームのプレイ時間)。三つ目は、上の表の 100 冊を 1000 冊に変えても、ほかの 10 人の位置が変わらないことを確かめることです。そのとき平均はどう変わるでしょうか。
つぎに読む #
式と Python のプログラムまで含めた本編は RobustScaler(標準版) です。最小と最大を使うそろえ方は 中学生向けの MinMaxScaler で紹介しているので、2 つを読み比べると使い分けが見えてきます。数をグループに区切ってしまう方法は 中学生向けのビニング にあります。