積読を消化しようというテーマの、読書感想文連載 の3冊目です。
はじめに
2022年12月キャリア入社の大村俊輔です。
Kaggle(競技データサイエンス)、AtCoder(競技プログラミング)等の趣味が高じてフューチャーに入社しました。このような背景の人がフューチャーに入社後、何が不足していると感じ、どのようにそれを埋めていこうとしているのか。といった目線でお読みいただければ幸いです。
本書を読んだ背景
入社後最初に配属されたプロジェクトで、とあるデータからの予測タスクを任されました。私も一応Kaggle等のコンペの経験者なので、予測タスクの土地勘はあります。まずはデータをLightGBMに入れてベースラインを作り、その後でクロスバリデーション(CV)の結果を見ながら特徴量を追加したり、ニューラルネットワーク系のモデルを中心に試す感じでしょうか。
早速コンペの経験が活きそうです!
ですが、受け取ったデータはデータ数が300くらいしかありません。これはいわゆるスモールデータ。基礎的なデータ解析の力が重要になる分析です。
私の経験だけでは足りません!
当然データサイエンスの基礎をきちんと学んだ上でコンペに参加している方であれば話は違うはずです。しかし私は、必要になった知識を都度学ぶスタイルで、データサイエンスの基礎を体系的に学んだ経験がありません。ですので、経験のある分野ではある程度のパフォーマンスを出せると思いますが、何か初歩的な内容で不足してる知識があるかもしれません。このままプロジェクトに入るのは不安です。
また、上司に聞いても、スモールデータの分析はよくあるとのことです。
良い機会なので、ここでしっかり基礎を固めておきましょう。
というわけで、前置きが長くなりましたが、このような背景で本書を読んで学ぶことにした者による書評です。
本書の概要
ビッグデータを扱う際は、CVの結果を見て特徴量やモデルを選定する方法が有効ですが、スモールデータの解析では、誤差の影響が大きくなるためCV結果以外の重要度が高くなります。
本書はそのような背景を踏まえ、重回帰分析の重要性、理論的な背景、実際に適用する上での注意事項や対処法法の提案等に重点が置かれています。
また、通常のデータサイエンスの書籍は、複雑な式が多く理解するのは難しいですが、本書では、複雑な式をわかりやすいPythonコードに落とし込んだ説明が多く、競技プログラミングや競技データサイエンスの素養のある方には理解しやすくなっていると感じました。
目次
章立ては下記の通りです。
第1章 スモールデータとは
第2章 相関関係と主成分分析
第3章 回帰分析と最小二乗法
第4章 線形回帰モデルにおける入力変数選択
第5章 分類問題と不均衡データ問題
第6章 異常検知問題
第7章 データ収集や解析の心構え
付録
本書の良かった(役に立った)点
2,3章
2,3章では、重回帰分析の理論的な背景,共分散の回避方法等について述べられています。
Kaggle等に参加する方であれば、それらがどのようなものか、「ある程度の知識」をお持ちの方が多いと思います。しかし、プロジェクトで行うデータ解析は、社内や、クライアント等とのチームで進めるものです。よって必要な知識、理解のレベルは、自分で使えれば良いレベルではなく、他者に説明できて、プロジェクトを進められるレベルです。
本章を通じ、重回帰分析の長所と短所、なぜ共分散を回避しなければならないのか、回避する選択肢として選べる方法等の理解を深めました。そして今も、「ある程度の知識」レベルから他者に説明しながらプロジェクトを進められるレベルを目指して学習しています。
4章
4章では特徴量の選択について述べられています。
予測に使用する特徴量は、ドメイン知識等から決定できれば良いですが、常にそれができるとは限りません。プロジェクト進行上本章の内容はまだ直接役立ってはいませんが、一般的に用いられる特徴量選択手法の中から目的に合った方法を選択・提案し、チームの納得を得て使用する特徴量を採択する場面が生じるはずです。本章により体系的な知識の備えができたことで、自信を持ってプロジェクトに携わることができています。
5章
5章は不均衡データへの対応について述べられています。
異常値検出等、分類タスクの中にはクラス毎のデータ数が著しく偏っているケースもあります。そのような場合に、どのようにサンプリングするか、結果を評価するか等が中心です。この辺りは、コンペの経験者であれば何度か痛い目に合って身につけた内容かと思います。ただ、体系的に学ぶことができましたので、今後このような場面でも、基本的な知識で不足しているものがないか不安を覚えることなくタスクに取り組むことができます。
本書では扱わない点
scikit-learn等のライブラリを使用した実用的なコードに関しては本書の対象外です。そちらが必要な場合は、他で学習する必要がありますので、ご注意ください。
最後に
データ解析の分野を1冊の本で理解できることは少ないと思いますが、競技データサイエンス、競技プログラミング出身の方等で、数式よりもPythonコードの方が理解が速い、という方の学習に役に立つ1冊だと感じました。
これからも新しい業務と出会えるたびに学び直しを行いますが、その際に使用した書籍を記事にしていきたいと思います。
次は、澁川さんのプログラマーのためのCPU入門です。