Help us understand the problem. What is going on with this article?

機械学習事始め【概念編】

More than 1 year has passed since last update.

はじめに

普段はJSとnodeを使ってフロントとバックエンドをやっているのですが、これから会社で機械学習もやることになったので、基礎から応用まで自分が理解したことをQiitaにまとめていきます。

間違ったことを書いていたり、足りない情報があった場合どしどしコメント欄に書いていただけると嬉しいです。

まず、第一回なので機械学習の概要について簡単に

機械学習の分類

機械学習分野の魅力は企業に蓄えられたデータを知識に変換できることだと思います。

おおまかな分類として、

  1. 教師あり学習
    • 分類
      • 2値分類
        代表例) メールスパムフィルタ
      • 多クラス分類
        代表例) 手書き文字認識
    • 回帰
  2. 教師なし学習
    • クラスタリング
      • 教師なし分類とも呼ばれる
    • 次元削減
      • 特徴量の前処理に使用されるアプローチの1つ
  3. 強化学習
    • 代表例) チェスエンジン

モデルを構築するためのロードマップ

roadmap.png

  1. 前処理
    ここが最も時間がかかる。
    主に生のデータから特徴量を抽出し、トレーニングデータセットとテストデータセットに分割する。テストデータセットは最終モデルを評価するときまでとっておく。
    ほかにもスケーリングや次元削減、サンプリングなど様々な前処理手法がある。このあたりは今後の記事でおいおい紹介していきます。
  2. 学習
    トレーニングデータセットを用いて学習させる。また予測モデルの比較選択。それぞれのアルゴリズムに本質的に特性がある。このあたりも今後の記事で紹介していきます。
  3. 評価
    テストデータセットに最終モデルを適用し、評価を行う。
  4. 予測
    新しいデータで予測。

バッチ学習とオンライン学習

バッチ学習

バッチ学習は学習対象となるデータを全てまとめて一括で処理する方法になります。
一般的な教師あり学習を行う時の流れとして
1. 現在weightの値で予測する
2. 予測した値を元にコスト関数を計算する
3. weightの値を更新する
という流れとなっていました。これは基本的にバッチ学習を想定していることが多いです。

オンライン学習

バッチ学習に対して、オンライン学習とは学習データが入ってくるたびにその都度、新たに入ってきたデータのみを使って学習を行うものになります。
大きな違いとして、学習を行う際に1からモデルを作り直すのではなく、そのデータによる学習で今あるモデルのパラメータを随時更新していくと流れになります。
これはWebアプリケーションの顧客データなど、大量のデータが蓄積されているときに役立ちます。
オンライン学習を利用すれば変化に強いモデルを構築できるでしょう。

終わりに

今回は機械学習の基本的な考え方について書いてきました。このあたりをしっかり理解できていればいいと思います。
次回以降パーセプトロンやADALINEを実装してみたり、scikit-learnやTensorFlowなどのライブラリを用いて実際に学習させていきたいと思います。

参考文献

  1. [第2版]Python 機械学習プログラミング 達人データサイエンティストによる理論と実践
  2. ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away