毎週末ブートキャンプ開催中!

読み物

データのラングリング(クレンジングと整形)

自分で生成し取得した一次データであれ、他者が提供しているものを取得した二次データであれ、分析や可視化が可能となる状態に、クレンジングや整形と呼ばれる工程が必要となります。

この工程が人手がかかり泥臭く、退屈な工程であったりもするのですが、最近は手法の共有やツールが出揃ってきていることによって、かなり工程が洗練されてきました。

Exploratoryというツールではこのように紹介されています。

データラングリングとは、データの加工や整形などを含めた、データを分析するための前処理とも言うものですが、多くのデータ分析の実に80%の時間はここで費やされます。
Exploratoryでは、この作業を切り離したものとしてではなく、むしろデータの可視化や統計・機械学習のアルゴリズムを使った分析の一環として、シンプルですばやく、さらに再現可能な形で行える環境を提供しています。

https://exploratory.io/note/kanaugust/6235618967553110/note_content/note.html

ここでは全行程をリストします。具体的なやり方としてはGUIとよばれるアプリベース手法や、Pythonを使ったプログラミング的な手法があります。それらはデータビジュアライゼーション講習で学ぶことができますので、ご興味ある方は、受講を検討なさってください。

機械学習の有無に関わらず必ず必要な処理手順

読み込む前

  • 文字コードを確認する
  • リスト形式かマトリックス形式か確認する。
  • マトリックス形式であればリスト形式へ修正する。
  • ファイルフォーマットを確認する

列単位への処理

  • 不要な列を削除する
  • 列名を確認し、必要があれば適宜最適なものに修正する
  • データ型を確認し、アプリ上のデータ型認識を、必要があれば適宜最適なものに変更する
  • (必要に応じて)データの型を変換する(数値データへの変換、カテゴリーデータへ変換、対数化、正規化)
  • (必要に応じて)日時差の算出
  • (必要に応じて)季節や時間帯、平日休日といったカテゴリーデータの算出
  • (必要に応じて)位置情報データの付加(絶対値、移動量)
  • (必要に応じて)列の分割や結合、ある列を元にした別な列の生成などを行う
  • (必要に応じて)複数の列を一つの列へ転置する
  • (必要に応じて)指定した2つの列の値をkey/valueとして、新たに列を生成する
  • (必要に応じて)セル値で列を生成する
  • (必要に応じて)別なデータセットやWeb APIと結合する

行単位への処理

  • 重複の検出
  • 外れ値や不良データの検出とその対応(削除、補完)
  • 配列やオブジェクトを一セルあたり一つの値になるよう展開する

セル値への処理

  • 値の標準化(日付表記、数値や英語の全角半角表記など)
  • 繰り返し記号の実データ化
  • 単位表記がセル値に含まれている場合は削除。たとえばミリメートルとセンチメートルが混在しているなら統一する
  • 名寄せ/ファジーマッチング
  • Upper/Lower Case揃え
  • URLエンコーディング、HTMLエンティティされた文字列をアンエスケープ(通常テキスト化)する
  • 不要な空白文字を取り除く

機械学習に必要な処理

抽出

  • ランダムサンプリング
  • 恣意的な(顧客IDなどで集約、ある列のある値の幅による集約、など)サンプリング

分割

  • (機械学習など目的に応じて)学習データと検証データの分割

生成

  • (機械学習など目的に応じて)モデルを作る際に学習データが不均衡な場合、データの生成


データの可視化が日本全体にもたらす価値とは

講習を主宰しているより、データビジュアライゼーション講習にかける想いです。ご一読いただけましたら幸いです。

誰に対して、何をしたいのか?

情報が得られなかったことで、困る人を誰一人なくしたい。
そのためにはデータを活用できる素養を、一人ひとりが育んでほしいと考えています。
仕事で使うExcelは必ずしもデータを活用するためのベストな方法論ではありません。小中高校の教科書に掲載されている統計は残念ながら勉強のための勉強にとどまっているのが現状だと思います。実社会において真に役立つデータ活用のために、ミッシング・リンクとなる方法論やツールがまだまだ全く活かされていないというのが戦後73年経った2018年現在の日本です。

将来ある子どもたちに、データを活用してほしい。そのためには現在の統計教育をアップデートする必要性を痛感しています。たとえば情報を得られないことで保活に失敗し、多大な犠牲を強いられる子育て中の親御さんの負担を減らしたい。公共性が高くより広い方たちに影響があり乗数効果がより高い、教育や行政の分野へ惜しむことなく知見と情熱を投入し、日本全体をよくしていくことに貢献できたらと、心から願っています。

そのためには、数々の実験や思索から導き出された研究成果と、それを勉強としてではなく楽しみながら身につける教育教材が必要です。

私は元々、インターフェイス/ロゴのデザイナーでしたが、コーディング能力を身につけるため6年半勤めた会社を辞めてアートディレクターの職を投げうって、独学でコーディングを習得しました。Java Script、Python、PHP、Javaなどを実案件で活用しています。

従来から取り組んでいた、海外の英語論文のリサーチやカンファレンスでの人脈と、デザイナー経験を活かしたメタ認知能力や情報設計力に課題解決に加えて、工業大学で学び美術大学で教えながら、科学的知見と直感的表現を結び付け、社会へ貢献できられたらと考えています。また、ITを活用しようとすればこそ、地の利を超えて、東京でなく地方の方たちにも自らをエンパワーしてほしいと思います。

それを実現できたら何が起こるのか?

もっときめ細かな平等が実現します。現在は国勢調査はコスト面からサンプル数が少なく、意識調査は年齢・性別といった既存のデモグラフィックで集計してしまうため、多次元にデータ活用できておらず、ざっくりした傾向しか掴めていません。データを可視化したたった一枚のチャート図を眺めて、中流社会が崩壊した多様性あふれる日本社会のことを描画しきれるでしょうか。また調査結果を日本全体ではなく、個人の属性に寄り添わせることなくして、個人が共感・実感し、今後の意思決定や行動に活かしてもらうことができるのでしょうか。これを実現するためには、多次元データをインタラクティブに操作することで、多様性に対応することができるデータ可視化(データビジュアライゼーション)の力なくして実現は不可能であると考えています。

もっと自己実現ができるようになります。たとえば旅行を計画していることを思い浮かべてください。日程、予算、体験したいこと、交通費と宿泊費と遊興費のバランス、訪れるべき場所と、実に多次元な条件の中から、頭の中で想定し、結論を出しています。人間の脳が優秀だといえますが、可視化されていないため、検討しきれていない可能性があります。これらも検討の遡上に登らせることができるため、より自己実現が可能となります。

データの活用に関して、誰ひとりとして取り残しません。統計やデータサイエンスは適用領域を数学的に解こうとします。そのため数学の素養がないと、置いていかれてしまいがちです。研究や専門領域の仕事でない限り、数式が読めなくても問題ないですし、ツールとベスト・プラクティスがあれば、どなたであってもデータを活用することが可能なはずです。そしてそれは現在全く実現できていないのです。

それにはどんな意味があるのか?

世界価値観調査という、五年ごとに百カ国を超える国々で意識調査をして三十年ほどになる調査があります。視覚的表現をしたコンテンツを数年前に作りました。

http://wvs.structure-and-representation.com/content1.html

「イングルハート-ヴェルツェル図」という図があります。「伝統的価値(前近代社会)」vs「世俗 - 合理的価値(近代社会)」と「生存価値(産業社会)」vs「自己表現価値(ポスト産業社会)」という二軸に、世界の百カ国をマッピングします。これは同一アンケートを実施しているからできることです。これによると、日本人は、スウェーデンなどと同様に、世俗 - 合理的価値であり、自己表現価値という前人未到の右上に属しています。デフレからなかなか抜けきれない現在の日本からは俄には信じがたいですが、そのように思っている人が多かったという事実でもあります。思えばファミリー世帯から核家族化、一人暮らしと、伝統的価値観を離れて世俗的価値観へ傾倒しつづけています。二百年維持した暦を経った一ヶ月で放棄した明治維新。合理的であった西洋の太陽暦への素早い移行は合理的判断を示しています。本来持っていた物事を合理的に評価する気風を回復できる礎となるかもしれません。


データの可視化にある、二つの側面

データの可視化には、二つの側面があることがなかなか整理されていないため混乱があると思います。一つは「データの分析自体がデータ可視化である」側面、もう一つは「データを使ったプレゼンテーション」である側面です。

前者、データ分析の結果を視覚的に得ている以上、データ分析の出口は可視化が掴んでいるともいえます。可視化が広く普及している統計的手段の民主化や洗練を深めることに加えて、手段自体を広げる・増やすという側面もあります。

後者、データのプレゼンテーションは、コミュニケーションの話です。データサイエンス(統計と機械学習)は適用領域の課題を数学的に解こうとしますが、データ可視化は表現であり、伝達であり、その結果、人の心を動かして行動変容を促すということです。

前者を後者にそのまま利用する、つまり分析結果としての可視化をそのままプレゼンテーションするケースもあると思います。前者と後者は別個に存在しているケースもあります。いずれにしても、データの可視化をイシューとしたい際に、前者と後者のどちらの話をしたい・しているのかの整理が必要です。

そして、データサイエンスのシラバスにおける可視化は前者しか扱っていないのでは、ということですね。

データはあらゆる領域に存在します。既存の様々な手法に、データサイエンス、データ可視化の原理原則を加えることで、これまで手が届きづらかった「多次元的な細やかさ」と「人の認知や感情」の接続を達成できると考えています。

AIが解答を出しても日本人的な合意形成を実現するには情動や感情へ訴えないとダメじゃないかと。

本講習では、探索的なデータの扱い方や、データ可視化についての科学的成果や認知の研究科成果なども扱いながら、実際に役立つ手法を提供しております。


データ可視化にとって最適なカラースペースは?

データ可視化にとって最適なカラースペースは?

データ可視化において、色はデータの性質を過不足なく表現するために利用されるべきでしょう。そのための考え方の入り口をご紹介します。

カラースペースとは?

事務のお仕事でWordを使っている人や、デザインのお仕事でPhotoshopを使っている人は、色を指定する際に、RGBやCMYKという文字をみかけていると思います。これはカラースペースとよばれる、一つの色を指定するための、色をつくる方法です。

RGBとは

Red(赤)、Green(緑)、Blue(青)を混ぜることによって、一色の色をつくる方法です。液晶ディスプレーにおいて色を発色する仕組みとして採用されています。出力の強さが3つともゼロであれば真っ黒、出力が最大になると真っ白になるような、色の作られ方です。
カラースペースRGB

CMYKとは

Cyan(シアン)、Magenta(マゼンダ)、Yellow(黄)Black(黒)を混ぜることによって、一色の色をつくる方法です。印刷物において色を発色する仕組みとして採用されています。インクの量がゼロであれば真っ白(白い紙の色のまま)、4つのインク量が最大になると真っ黒になるような、色の作られ方です。
カラースペースCMYK

RGBやCMYKは実はデザインやカラーパレット生成には向いていない?

光の三原色がRGBであること、その補色でCMY(+K)があり、色を人工的に再現する方法として、ディスプレイや印刷物において色を表現する仕組みとして採用されています。最終的にディスプレイや印刷物で色を表現するためには、これらを用いて指定することになります。

ところが、たとえば複数の色の組み合わせ(カラーパレット、カラースキームなどと呼ばれます)をどう選択すべきか、特に、あるデータ・セットの特性にあわせて選択する際に、RGBやCMYによってカラーパレットを生成するのは非常に困難です。なぜならRGBにしてもCMYにしても、すべてが色相(色の区別そのもの)を表す軸だからです。頭の中でこれらの複数の色の組み合わせによる新たな一色の創出は困難ですし、覚えたり慣れたりしたとしてもデータの特性に合わせて生成するのは困難だといえます。ではどのような指定が最適なのでしょうか?

そこで登場するHSB

HSBとは?

Hue(色相)、Saturation(彩度)、Blightness(明度)の3つの要素から一つの色をつくることができるカラースペースです。色相は色の区別そのもの、彩度は飽和度や純度ともよばれるのですが色の鮮やかさのこと、明度は明暗を表します。この3つの数値変化によって、一つの色を表します(HSBと似たカラースペースにHSVというのもあります)。

    データ構造と一致させやすいHSB

    ある文字データを色で表す際に、どういうふうに色でどう表せばよいでしょうか。具体的には、名義スケールや順序スケールとよばれる、たとえばAとBは異なるんだよ、ということを表します。そのためには区別する必要がありながら、存在感の強弱は揃っていてほしいです、と。この場合には、彩度と明度は揃えておきながら、色相のみを変化させることによって複数の色を生み出せばよさそうです。


    ある数値データが0〜10000の幅で存在するときに、この変化を色でどう表せばよいでしょうか。具体的には間隔スケールや比例スケールと呼ばれる数字のデータで、存在自体を区別する必要はなく、ただ数値の大きさや差が区別できればよいので、この場合は色相は固定で、明度の変化によって、数値を表現すればよいということになります。この場合は彩度も固定にしておきます。

    そしてHSBなら、主なOSで標準的に利用でき、代表的なグラフィックアプリでも利用可能です。

    主なOSやアプリにおける利用可能なカラースペース

    • アドビ社Photoshop...RGB、CMYK、HSB、Lab
    • アドビ社Illustrator...RGB、CMYK、HSB
    • Sketch...RGB、HSB
    • Mac OSX標準...RGB、CMYK、HSB
    • Windows OS標準...RGB、HSB

    しかしファイナルアンサーではないHSB

    合理的なHSBですが、実はこれがファイナルアンサーではありません。なぜなら、色によって人間の眼の感度が異なるからです。

    “Photopic Spectral Sensitivity Function”
    “Photopic Spectral Sensitivity Function”(Kaiser、96)

    "Visualization Analysis and Design. Tamara Munzner, with illustrations by Eamonn Maguire. A K Peters Visualization Series, CRC Press, 2014."

    つまり、彩度や明度を揃えて複数の色を生成したとしても、波長によっては(緑や黄など)、人間は数値指定されて生成された色を、値よりも高感度に認識(明るく感じられる)してしまいます。

    ウェブデザイナーがカラーパレットをつくる際は、OSやグラフィックアプリのレベルでは、RGBかCMYKかHSBしか選択肢がないので、この辺り、おそらく目分量で調整しているのではないかと思います。私はそうやっていました。もちろん、文字色なのか広い面のベタ塗りなのか、色が使用される面積によって受ける印象や可読性は異なりますが。

    人の眼の色認知能力に近いカラースペース L*a*b*

    今度は、人の眼の色認識能力をみてみましょう。人の眼の網膜にある二種類の受容体のうちひとつ、錐体には3つのタイプがあり、それぞれが異なる感度をもっています。輝度チャンネル、赤緑チャンネル、青黄チャンネルの3つです。この性質にあわせたカラースペースがL*a*b*です。Lが明度で、aが赤緑、bが青黄の色相です。赤緑色盲の方は赤緑チャンネル(a)の錐体の感度が生まれつき低いということになります。


    データビジュアライゼーションを学ぶ意義

    オープンデータ、ビッグデータというキーワードがここ数年普及してきており、活用する機運が高まっています。本格的なデータ分析までは必要ないもののデータを活用したい、という需要があるが、何をどう学んだらいいかわからない、という声をよく聞きます。

    これに答えるものとして、統計学を学ぶことが必須とされていますが、実は統計学が前提としている「確証的データ分析」に対して「探索的データ分析」という考え方があります。統計学によるデータ分析の結果が出てから初めて可視化を考えるのではなく、まずはデータを可視化してみるところから探索的にデータの活用の仕方や分析を考えるというアプローチです。課題が何かはっきりしていれば、それに即した統計学の手法を用いればよいですが、そもそも何が問題かがわからない段階では手段を選択することができません。「確証的データ分析」のみを前提としていると、そこで行き止まってしまいます。

    コンピュータが大衆化し、大学のスーパーコンピュータだけではなく、一般的に手に入るコンピュータで充分可視化が行えることや、データが多種大量に存在しているにもかかわらず、可視化すらされず放置されているものが膨大に存在しているという現状があります。

    これらの状況を踏まえて、問いの立て方から、データの扱い、可視化、プレゼンテーション、評価までを、実務・原理原則の両方を踏まえながら学ぶことができ、何をどう学んだらいいかという需要に答えることのできる講習が必要だと考えております。

    AI時代においても、コンピュータに自動的に判断させないもの、人間が最後に意思決定をするものは、動的なユーザーインターフェイスになるはずです。また、人は自分が手を動かして意思決定したものにより納得するIKEA効果が知られています。データビジュアライゼーションのトレーニングはそこでも活かされると考えています。