機械学習 PR

【Human Learning】機械学習やめてルールベースでデータサイエンスしませんか?

ルールベースシステム設計
記事内に商品プロモーションを含む場合があります

こんにちは。

データサイエンティストの卵 ”ひよこ” です🐣

ひよこ

機械学習や統計モデリングについて、”はやぶさ先生”@Cpp_Learningから色々と教わりながら、日々データと真剣に向き合ってるよ♪

今回はデータサイエンスに役立つルールベースの話をするよー

データサイエンスとは

データサイエンスとは『データから価値ある情報を抽出するアプローチや研究分野のこと』です。

例えば、統計ベースの解析や機械学習による推論なんかも数あるアプローチの一つです。

データサイエンスを武器にして仕事する人たちをデータサイエンティストと呼びます。データサイエンティストは21世紀で最もセクシーな職業らしいです✨

仮説検証

”はやぶさ先生”は以下の手順でデータサイエンスすることが多いよ。

仮説検証
  1. 仮説を立てる
  2. 仮説を検証するための試験方法(データ収集のやり方含む)を検討する
  3. 様々なアプローチでデータを多角的に観察・検証する
    • 初手はデータ可視化
    • 統計ベースの解析
    • ルールベース・機械学習・振動解析などケースバイケース

※どのステップでも有識者やユーザーと議論しながら進められるのがベストです

いわゆる仮説検証というやつだよ♪

データサイエンティストだからといってデータのみから判断するのではなく、ドメイン知識などのあらゆる情報を全て利用して、総合的に判断することが重要です。

価値ある情報を抽出・提供することがゴールだよ。以下はゴールではないよ!

  • 複雑なアプローチを検討・設計すること
  • データを料理すること

探索的データ解析(EDA:Exploratory Data Analysis)

仮説を思いつかないときはどうすれば良いの?

そんなときは仮説検証のステップ➌を先に実施します。いわゆる探索的データ解析(EDA)というやつです🐣

特徴的なデータを見つけて、何故そうなるのか?ちょっとして○○なのでは!などと深堀りすることで仮説を思いつくことがあります。

下記のポケモンを題材にしたEDAがすごく面白いし、参考になるよ

Avinton Exploratory Data Analytics(探索的データ解析) 勉強会|Avinton blog

機械学習はアプローチの一つ

近年のAIブームもあり、機械学習を活用してデータを料理することをデータサイエンスだと考えている人がいるかも(?)

繰り返しますが、機械学習は数あるアプローチの一つに過ぎません。データを可視化するだけで価値ある情報を発見できることもあります。

機械学習で課題解決とかできたらカッコイイけど…

はやぶさ
はやぶさ
シンプルな手法で価値を提供できる人はカッコイイ

って”はやぶさ先生”が言ってたよ🐣

その特徴量は重要ですか?

機械学習モデルによる推論は強力な武器ですが、説明性・解釈性が困難なケースもあります。

モデル解釈性
機械学習モデルの説明性・解釈性について -SHAPによる実践あり-こんにちは。 現役エンジニアの”はやぶさ”@Cpp_Learningです。仕事でもプライベートでも機械学習で色々やってます。 ...

因果推論・因果探索を行うことで、説明根拠のあるデータ分析を実践できるかもしれません。

CausalNexで因果推論
【構造学習】CausalNexで有向非循環グラフ(DAG)推定 -説明変数(テーブルデータ)の因果推論に挑戦-こんにちは。 現役エンジニアの”はやぶさ”@Cpp_Learningです。最近、因果推論・因果探索を勉強してます。 今回は有...

複数のアプローチにトライし、多角的な視点で考察することが重要です🐣

スポンサーリンク

機械学習は難しい

機械学習について勉強してるけど、以下が難し過ぎて”ひよこ”には扱えないかも…🐣

機械学習のツライところ
  • モデリング
  • ハイパーパラメータチューニング
  • モデルの評価

AutoMLを駆使しながら頑張ってるけど、仮説検証に機械学習…特に深層学習を使うのは難しいと感じています。

データサイエンス
【AutoML】Laleでパイプライン構築からハイパーパラメータ チューニングまで自動化するこんにちは。 現役エンジニアの”はやぶさ”@Cpp_Learningです。仕事でもプライベートでも機械学習で色々やってます。 ...
【Tune-sklearn】機械学習のハイパーパラメータを自動チューニングする -skorch(Pytorch)編-
【Tune-sklearn】機械学習のハイパーパラメータを自動チューニングする -Pytorch(using skorch)編-こんにちは。 現役エンジニアの”はやぶさ”@Cpp_Learningです。仕事でもプライベートでも機械学習で色々やってます。 ...
optunaでハイパーパラメータ最適化 pytorch-ligthning編
Optunaでハイパーパラメータの自動チューニング -Pytorch Lightning編-ハイパーパラメータ自動最適化フレームワークOptunaについて、入門から実践まで学べる記事を書きました。基本的な使い方からpytorch-lightningへの適用例までソースコード付きで公開しています。ご参考までに。...

深層学習で色々とトライしてたときに…

はやぶさ
はやぶさ
初期値が違うから出力結果が異なるね。ちゃんと固定を…

とか言われて泣いちゃった🐣なんで?初期値が違っても十分時間を使って学習すれば同じ結果にならないの??

…という機械学習のツライ部分も理解した上で、今回は”ひよこ”にもできるルールベースの仮説検証にトライしたよ♪

Human Learning -ルールベースシステムの設計ツール-

AIブームが来る以前は、ルールベースのシステムを設計するのが一般的でした。

ルールベースシステム

引用元:human-learn|GitHub

近年では上図のルール(rules)部分が機械学習(ML:Machine Learning)に置き換わりました。ただし、MLモデルの適切な設計・評価ができず、悪い結果を出力するケースがあります。

機械学習

引用元:human-learn|GitHub

そこでMLに解を算出させるのではなく、ルールベースシステム設計のサポートツールとしてMLを活用するというアイデアがあります。

このアイデアを比較的簡単に実現できるのが Human Learning です。

実践!ルールベースな仮説検証

Human Learning の マインド や Examples はどれも非常に参考になりますが、今回は特にオススメの Human Preprocessing を紹介します🐣

課題

今回はタイタニックのデータセットを使い、『どんな乗客が生存できたか?』という課題に対し、仮説検証を実践します。

  • 「重要な特徴量は○○」という仮説(ルール)を検討する
  • 重要な特徴量を把握する=仮説を検証する
  • 検証にscikit-learnがサポートしてるMLなどを活用する

インストール

最初に以下のコマンドでインストールします。

pip install human-learn

以降から実践するよー♪

Import

まずはimportから

データセット

以下のコードでデータセットをロードします。

タイタニックのデータセット

Xに乗客の情報、yに生存できたか否か(1 or 0)の情報が保存してあります。

仮説と前処理

”ひよこ”は「名前の文字数」と「乗客の性別」が重要な特徴量!という仮説を考えました🐣

この仮説を検証するために、前処理用の関数を作成します。

以下のように True or False の選択により、前処理後の特徴量を採用するか否かを設定できます。

タイタニック前処理

タイタニック前処理

PipeTransformerを活用したパイプライン設計

PipeTransformer を活用することで、さきほど作った前処理関数を scikit-learn pipeline の一部として使えるように、互換性を持たせて変換してくれます。

今回は『前処理 ⇒ Gaussian Naive Bayes』のパイプラインを設計し、さらにグリッドサーチを用いて、前処理後の特徴量を採用するか否かの選択を自動化します。

このように Pandas ベースの前処理をパイプラインに組み込める PipeTransformer は非常に強力です。

仮説検証

グリッドサーチの結果は辞書型で保存されるので、key を指定して values を取得します。

今回は以下のコードにより、結果を表で出力させました🐣

グリッドサーチ

この表から『「名前の文字数」よりも「乗客の性別」の方が生存に大きく影響する』という検証結果を得ることができました🐣

このような仮説検証を繰り返し、もし『裕福な成人男性の生存率が高い』という結果が得られたなら、以下のようなルールベースシステムを設計できる見込みがあります。

タイタニック用ルールベースシステム

下記の項目(特徴量)から、その乗客が生存できたか否かを判定

  • 裕福か?(pclass==1)
  • 20歳以上か?(age >= 20)
  • 男性か?(sex==male)

ルールベースなので、非常に納得感のある判定結果を出力してくれます。

おわりに

データサイエンティストの卵 ”ひよこ” です🐣

機械学習に頼り過ぎるのではなく、協力しながら仮説検証にトライしました。最終的にはルールベースシステムの構築までしたかったけど…1回の検証だけでは難しかったです💦

でも仮説検証を繰り返せば、いつか皆が納得してくれるルールベースシステムを構築できると信じて頑張るよ♪

ひよこ

本記事は参考になったかな?

”ひよこ”と同じデータサイエンティストの卵強よ強よな人 はどんなマインドでデータサイエンスと向き合っているのか気になるなー

もし教えてくれる人は、”はやぶさ先生”@Cpp_LearningのTwitter経由で教えてくれたら嬉しいな(本記事の感想も大歓迎です!)

本記事の評判が良ければ、また頑張って”ひよこ”が記事書いちゃおっかなー!笑

はやぶさ
はやぶさ
データサイエンティストの卵 ”ひよこ”と仲良くしてくれたら嬉しいです。よろしくお願いします。

おしまい

PICK UP BOOKS

  • 数理モデル入門
    数理モデル
  • Jetoson Nano 超入門
    Jetoson Nano
  • 図解速習DEEP LEARNING
    DEEP LEARNING
  • Pythonによる因果分析
    Python