ブログ

『Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎』を読んで

インターン生として働き始めてもうすぐ1年の國井です!

前回、機械学習で画像認識を一通り学習したことを踏まえて、機械学習をまず最初にしっかりと勉強しようと考えました。

今回は、「Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎」という本を一通り学習したので、それについての概要と説明を行いたいと思います。

本の概要について

出版社:オライリー・ジャパン

著者:Andreas C. Muller、Sarah Guido 著、中田 秀基 訳

https://www.oreilly.co.jp/books/9784873117980/

 

目次

1章:はじめに

2章:教師あり学習

3章:教師なし学習と前処理

4章:データの表現と特徴量エンジニアリング

5章:モデルの評価と改良

6章:アルゴリズムチェーンとパイプライン

7章:テキストデータの処理

8章:おわりに

書籍の内容

1章:はじめに

この章では、機械学習で解決できる問題、scikit-learnや他の機械学習に必要なライブラリなどの説明、

k-最近傍法によるアイリスのクラス分類を行いました。

 

2章:教師あり学習

この章では、まず回帰とクラス分類、使用するデータセットの説明に加えて、以下の「教師あり学習」の手法を学習しました。

  • k-最近傍法
  • 最小二乗法、リッジ回帰、ラッソ
  • ナイーブベイズクラス分類器
  • 決定木
  • ランダムフォレスト、勾配ブースティング回帰木
  • カーネル法を用いたサポートベクタマシン
  • ニューラルネットワーク(ディープラーニング)

 

3章:教師なし学習と前処理

この章では、入力データだけが与えられ、データから知識を抽出することが要求される「教師なし学習」について学習しました。

また、この手法では入力データの出力がどうあるべきかが分からないので、前処理とスケール変換を行ない、以下の機械学習手法を学習しました。

  • 主成分分析(PCA)
  • 非負値行列因子分解(NMF)
  • 多様体学習(ここではt-SNEを用いた)

クラスタリングとしては、以下の手法を学習しました

  • k-means
  • 凝集型クラスタリング
  • DBSCAN

 

4章:データの表現と特徴量エンジニアリング

この章では、今まで数字としての連続値(連続値特徴量)を扱っていましたが、カテゴリごとに分けられた特徴量(カテゴリ特徴量)をどのように特徴量として扱うことができるか?という部分について色々な手法を用いて学習を行いました。

  • ワンホットエンコーディング(ダミー変数)
  • 決定木と線形モデルにおけるビニング、離散化
  • 線形モデルにおける交互作用と多項式
  • 単変量非線形変換(log、sin、cosを用いた特徴量変形)
  • 自動特徴量選択(単変量統計、モデルベース特徴量選択、反復特徴量選択)

また、専門家の知識を用いた特徴量選択についても機械学習で行なって予測をしました。

 

5章:モデルの評価と改良

この章では、scikit-learnのtrain_test_split関数を用いずに、汎化性能評価手法である交差検証を導入しました。

ここでは、以下の方法を用いました。

  • 層化k分割交差検証
  • 1つ抜き交差検証
  • シャッフル分割交差検証
  • グループ付き交差検証
  • グリッドサーチ

また、クラス分類性能と回帰性能を評価する手法についても、デフォルトのR^2値よりも良い方法を学習しました。

  • 精度、適合率、再現率、f-値
  • 適合率-再現率カーブ
  • ROCカーブ
  • 受信者動作特性(ROC)
  • AUC

 

6章:アルゴリズムチェーンとパイプライン

この章では、データのスケール変換から、特徴量の組み合わせ、教師なし学習で特徴量を学習するまで、などの一連の機械学習アルゴリズムを連鎖的に行う際のパイプラインを学習しました。

 

7章:テキストデータの処理

この章では、映画レビューから評価を機械学習で予測することを学習しました。

この手法は「自然言語処理」と呼ばれ、この本では触りの部分だけを学習しました。

ここでは、以下の方法を用いました。

  • Bag of Words(BoW)
  • tf-idsを用いたデータのスケール変換
  • 語幹処理、見出し語化
  • LDA

 

8章:おわりに

この章では、機械学習の実プロジェクトでの使用方法、これから先の勉強方法について学習しました。

 

感じたこと

前回は、KerasやTensorflowなどの機械学習の中でも最近有名になっているものを使用しましたが、この本ではそれらの手法ではなく基本的な機械学習の手法について学習をすることができました。

機械学習の理解がまだあまりできていなかった自分にとっては、基礎的な機械学習の力をつける上でとても役に立つ本であると感じました。

特に学習して感じたことは、何でも機械学習にやらせるのではなく、今の環境で自動化したらいいのにな…、という部分に着目して、道具として機械学習を使えるようになることが大切であるということです。

当社でも、どのように機械学習を取り入れたら業務の効率化などができるのか?という部分を考えながら、さらに勉強を進めていきたいと思います。

 

終わりに

機械学習の勉強方法については色々なサイトがありますが、この本はどのサイトでも高評価でした!

機械学習といえばディープラーニング!と思う気持ちもわかりますが、まずは機械学習の一通りの方法としてこの本で学習することをオススメしたいと思います!

 

仲間を募集

『WEBテクノロジーで社会に幸せを作る!』そんな想いに共感してくれる仲間を応募しています。

◆インターン採用はこちらから

インターン採用

◆新卒・既卒・第二新卒採用はこちらから

新卒・既卒・第二新卒

 

 

おすすめ記事