機械学習による実用アプリケーション構築⑦ 第4章 初期データセットの取得③

4.3.3 アルゴリズムとして振舞う

クラスタ内のいくつかのデータポイントにモデルが生成すると思われるラベルを手作業で付与してみる。 アルゴリズムとして振舞ったことがなければ、その結果の品質を判断するのは困難。 自分でデータのラベル付けに時間をかけてみるとモデリングの作業がずっと簡単になるような傾向に気づくことが多々ある。

モデリングをする際は多くの仮定を置く必要があるので、その仮定を置くために、データポイントをとって調査することは 理にかなっている。

データセットに既にラベルが付いている場合でも、ラベルを付けてみるべき。 これによって、正しくラベルが抽出されているか、ラベルが正しく付与されているかをチェックできる。

このラベル付けを効率的に行うには、事前分析として各クラスタ内のいくつかのデータポイントへ ラベルを付けて、特徴量分布の各共通値を活用する。 そのための1つの方法として可視化ライブラリを用いてインタラクティブにデータを探索して見る。(本ではBokehを使っている) ラベルを付ける際はどのようなプロセスを経て決定したかを留意しておく。 これは傾向を特定して、モデルに役立つ特徴量を生成するのに役立つ。

f:id:gramp:20210622011912p:plain

4.3.4 データの傾向

しばらくデータにラベル付けをしていると通常は傾向がみえてくる。 その際に、データに偏った傾向、例えば、特定の言語は否定的なものしかツイート収集されていないなどのデータ分析するにあたり、 ネガティブな傾向が見えてきても絶望することはない。 → 学習データの精度を不自然に上げてしまい、パフォーマンスの悪いモデルを本番投入することを避けられる発見だから。

多くの場合、偏ったサンプルに対する最善の策は追加でデータを収集することになる。

傾向を特定できたら、次はそれを利用する。 多くの場合、傾向を特徴づける特徴量を作成するか、簡単に活用できるモデルを使用するかのいずれかの方法をとることになる。

4.4 特徴量とモデルの情報をデータから取り出す

データから発見した傾向を把握するのに役立つ特徴量をどのように生成するか

4.4.1 パターンから特徴量を構築

MLの目的=統計学アルゴリズムを用いてデータのパターンを活用すること パターンの中には活用するのが容易なものとそうでないものがある。

MLを実用的にするためにはモデルが有用なパターンを識別するのに役立つ特徴量を追加する必要がある。 たとえば、季節性は特定の特徴量生成から利益を得る一般的な傾向。だが、日付の表現方法はほとんどのモデルが 数値入力しか受け取れないため、特徴量を作ってやる必要がある。

4.4.1.1 生の日付

数値ではないので扱いにくい

4.4.1.2 曜日と月日の抽出

日付に入っているデータをそれぞれ別カラムに収める

4.4.1.3 特徴量クロス

特徴量クロスは2つ以上の特徴量を単純に掛け合わせることで生成される特徴量。 特徴量の非線形な組み合わせを導入することで各データの識別が容易になる。

たとえば、曜日(1~7で数値化したもの)と月の日付の特徴量クロスをした値を 用いると月の最後の週末が識別しやすくなる。

4.4.1.4 モデルに答えを与える

ある特徴量の値の組み合わせが予測可能であることが事実であるとわかっている場合、 この組み合わせとなる場合とそうでない場合の2値の特徴量を作成することができる。

月の後半2回の週末のみ1を設定してそれ以外を0にするなど。 過去2週間の週末が予想通りであれば、モデルは単純にこの機能を活用することを学習して、 より正確な予測ができるようになる。

ML製品を構築する場合は複雑な作業で苦戦する作業よりも簡単な作業で機能するモデルの方が 優れているので、答えが分かっているのであれば、簡単な作業へ変更した方がよい。

一般的に有用な特徴量を生成する最良の方法は、これまでに紹介した方法で データを調べて、モデルにパターンを学習させる最も簡単な方法は何かを自問すること。

<まとめ元:オライリー機械学習による実用アプリケーション構築>