トップページ | ひとつ上のページ | 目次ページ | このサイトについて | ENGLISH

データサイエンス教室

特徴量エンジニアリング

「データがあれば、 統計学機械学習 で何かすごいことができる」、と思いたくなりますが、データとソフトだけではどうにもならないことは、よくあります。

外れ値や欠損値 が混ざっていたり、 文章のデータや画像のデータが、そのままではどうにもならないことは想像しやすいと思いますが、 表形式にまとまっている数字データだったとしても、うまく行くとは限りません。

生のデータを、 統計学機械学習 で成果を出せるデータに変換する技術は、「特徴量エンジニアリング(Feature Engineering)」と呼ばれています。

表形式のデータを作るための特徴量エンジニアリング

音声、文章、画像などは、生のデータのままでは、機械学習で扱うことができません。 こうしたデータを表形式にまとまったデータにするための特徴量エンジニアリングは、 画像認識や音声認識 の技術として、研究されて来ています。

表形式のデータからの特徴量エンジニアリング

表形式にまとまったデータがあると、「さあ、機械学習だ。分析だ。」と、思いたくなりますが、 表形式にまとまったデータでも、特徴量エンジニアリングが必要なことはよくあります。

大きく分けて3種類の方法があります。 2つ以上の種類の特徴量を組み合わせて、新しい特徴量を作ることもできます。 また、汎用的な特徴量として知られているものの中には、始めから2つ以上の種類に当てはまる特徴量もあります。 例えば、STFT(short-term Fourier transform:短時間フーリエ変換)は、3つの種類のどれにも当てはまります。
特徴量エンジニアリングの種類

経験的には、 ドメイン知識(専門家しか知らない知識、その事象に昔から関わっている人の知識)を使って作った特徴量は、 非常に強力です。 平均値など、汎用的な方法で作った特徴量は、そうした特徴量を考えるためのヒントや補助として使う方が多いです。

新しい変数を作る特徴量

既存のデータの表に、新しい列を作る形で作成されます。

大きく分けると、ひとつの変数だけから作れるものと、2つ以上の変数を使って作るものがあります。

ひとつの変数だけから作れるものには、 対数、二乗、 標準化ロジット変換ダミー変換、 差分( 速度データ )、などがあります。

2つ以上の変数を使って作るものには、積(掛け算・交互作用項)、差、和、比( 足し算、割り算 )、 主成分独立成分距離ニューラルネットワークディープラーニング )などがあります。
特徴量エンジニアリングの種類

複数のサンプルから作る特徴量

グループ毎で 平均値や標準偏差 を計算するのは、この作り方のひとつです。 例えば、毎日の最高温度のデータを、月毎に集計、などです。 この集計は、 「 層別 で集計」と言われたりしますし、Excelのピボットテーブルや、BIのソフトの主要な機能にもなっています。

センサーデータの解析 の中にある 2次データ(特徴量) は、ドメイン知識を活用しながら、この種類の作り方をした特徴量です。

区間ごとや、グループ変数で集計する場合、生データよりも、サンプル数(データの行数)が減ります。 かなり減ることが多いです。

移動平均 など、前後のサンプルを使って集計する方法は、新しい変数を作るような感覚で使うこともできます。
特徴量エンジニアリングの種類

数学的な空間を変えて作る特徴量

数学的な空間を変えます。 生データとは、列の名前がまったく違うものになります。

フーリエ変換 がよく知られています。
特徴量エンジニアリングの種類

さらにさらに深い層での、特徴量エンジニアリング

一般的に特徴量の対象になるものは、「音」、「文章」、「温度」、「点数」など、何のデータなのかを知っているデータです。 こうしたデータを「 予測 」や「 因果推論 」など様々な目的に使おうとするために、特徴量エンジニアリングが必要になっています。

ところで、特徴量エンジニアリングで扱うデータの共通点は、コンピュータで扱えるようになっている電子データである点です。 コンピュータの中でのデータの形態は、0と1の組み合わせなので、一見しても人間には何もわかりません。

実は、このページの特徴量エンジニアリングには、電子データを「音」、「文章」、「温度」、「点数」といった、 人間が何を書いているのかが理解できるデータに変換する部分は入っていません。 特徴量を自動的に作ることで有名になった ディープラーニング(深層学習) でも、この点は同じです。

電子データの根本的な部分まで扱う特徴量エンジニアリングについては、 このサイトで、いつかまとめてみたいと思っています。

究極の機械学習

既存の特徴量エンジニアリングは、ある程度は自動化が進んでいます。

電子データの根本的な部分から扱う特徴量エンジニアリングも、いずれ自動化が進むと思います。

そうなって来ると、何のデータかわからないデータがあったり、そもそもデータがコンピュータに入っているのかを人間が知らない状況でも、 人工知能 が何かができてしまえるようになります。

夢のような話ですが、遠い話ではなくなっているようです。



データフィジクス(データ物理学)

参考文献

Pythonではじめる機械学習 scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎」 Andreas C.Muller, Sarah Guido 著 オライリー・ジャパン 2017
特徴量エンジニアリングの章があります。 ダミー変換 や、 回帰分析 の代わりに 決定木 を使って非線形の変化を解析する方法、 カーネル法 が、汎用的な方法として紹介されています。
また、専門家知識の利用として、その事象をよく知っている人にとっては常識の情報で特徴量を作る例も紹介されています。


前処理大全 データ分析のためのSQL/R/Python実践テクニック」 本橋智光 著 技術評論社 2018
数値型、カテゴリ型、日時型、文字型、位置情報型、という分け方で、それぞれの型の変換の方法をまとめています。


AI、IoTを成功に導く データ前処理の極意」 日立産業制御ソリューションズ 著 日経BP社 2018
前処理の重要性がわかりやすく書かれていて、 「機械などの特性を確認し考慮する作業」、「入力ルールを確認する作業」など、工場のデータを扱う時の具体的な話もありますが、 具体的な話や体系的な話は、それほど豊富ではありません。
この本はタイトルや序文は「前処理」の話が中心ですが、 本文の内容は、「前処理の内容の解説」、「CRISP-DMに基ついだデータ分析のプロセスの解説」、 「機械学習のモデルの解説」、「データ分析ソフトの KNIME の解説」という4つ部分からできている感じです。


Machine Learning実践の極意 機械学習システム構築の勘所をつかむ!」 Henrik Brink 他 著 インプレス 2017
特徴量エンジニアリングに2つの章を当てています。 高度な特徴エンジニアリングの章は、テキストデータ、画像データ、時系列データ。 テキストデータには 潜在意味解析(LSA) 、画像データは、エッジの抽出など。
時系列データは、データの時間間隔が一定のものと、イベントが発生した時だけのもの(点過程)の2種類。 解析の方法には、それらの組み合わせも。 一定間隔のデータには、一週間毎の平均値を特徴量にする事もできて、窓付き統計値(windowed statistics)と呼ばれています。 自己相関分析もこの章で紹介。


音声データ(波形のデータ)を文字データにする方法

イラストで学ぶ音声認識」 荒木雅弘 著 講談社 2015
25ms(ms = ミリ秒、1秒の千分の1)の長さのフレームを周波数分析。 フレームの端はいきなり0にならないように、減衰させる。 フレームは10msずつずらして、変化点が抜けないようにする。 ケプストラム処理をして、1番目と2番目の極大点の周波数を抽出すると、この2つの特徴量で、母音が判別できる。


音声認識」 篠田浩一 著 講談社 2017
音声データを特徴量にするところは、上記の本よりも詳しいです。
フレームは20〜80msにするのが一般的。このフレームに対して、短時間フーリエ分析(short-time Fourier transform)をする。
フレームは10msずつずらすが、その差分も認識向上に役立つ特徴量になる。 差分ケプストラムや、デルタケプストラムと呼ばれる。
音声特徴量は、数10次元になる。 k-means などでグループ分けして、グループ名を記憶するようにすると、1次元の特徴量となって、記憶領域の節約になる。 これをベクトル量子化と呼ばれる。
ディープラーニング (DNN)を使って、フーリエ変換をしないで音声から特徴量を抽出する方法も開発されて来ている。 DNNの下層を CNN にすると、性能が高くなることもわかっている。




順路 次は 量的データと質的データの相互変換

Tweet