斜め読み - 高卒でもわかる機械学習
とうとう機械学習を使えるようになろうと思うので、手始めに
をざっと読んで全体像をつかむことにした。
1回目なのでまずは斜め読みして、2回目以降もう少し知識がついた時に詳しく読むことにする。 斜め読みはするが、筆者の方には勿論感謝と敬意を払っている。
記事自体は2年前のものなので今はまた違うのかもしれないが、なんにせよ基礎を知るのは悪いことではないはず。
機械学習を学ぶ最終目標
たとえばあるスキルセットをもったエンジニアに対してどれくらいの給与を提示するのが市場の相場か?を算定してみたい。 つまり 0 or 1 ではなく具体的な数値をアウトプットする機械学習アプリケーションを構築したい。
機械学習が解決してくれる問題の種類
- 分類問題: 入力が何かに分類できると判断する(ex. 猫画像判定)
- 回帰問題: 入力から新しい情報を生成する(ex. 降水確率予想)
どっちを解決するかはアルゴリズムの「評価関数」によって決まる。
機械学習の種類
種類があるらしい。そりゃそうか。ニューラルネットワークとか?と思ったけど違うらしい。
- 識別関数: 入力があるものに分別できるか判定する(ex. スパム判定)
- 識別モデル: ???
- 生成モデル: 入力を使って新しい情報を生成する(ex. 自然な日本語の文章を自動生成する)
識別関数が一番初歩的でとっつきやすいらい。
機械学習の成果の正しさ
学習の仕方が間違っている時と、判定が間違っている時がある。 たとえばある入力値がA,B,Cのどれに所属するか調べる時に以下のような表が組める。
No | Aの確率 | Bの確率 | Cの確率 | 正解 |
---|---|---|---|---|
1 | 0.36 | 0.30 | 0.33 | A |
2 | 0.9 | 0.06 | 0.04 | B |
No.1では確率がバラけないので、学習が間違っているかもしれない。 No.2では確率はバラけているが、判定結果が間違っている。
識別関数とは
入力値を「素性」と呼ばれるデータにバラす。 そして真な結果に何回出現したか調べる。 それに従ってテストデータを解析し、真な結果に多く見られるデータが何回出てきたかでテストデータの真偽判定を行う。 メールのスパム判定機とかが作れる。
数学的には、ある平面にプロットされた学習用データのうち、真と判定されるものと偽と判定されるものをキレイに2分する関数を導出することといえる。
線形分離可能とは、ある関数によってスッパリ分けられること
上述のように、ある空間上にプロットされたテストデータ郡をスッパリと2つに分けられる関数が存在する場合、それを「線形分離可能」と呼ぶことができる。
これができない問題は「線形分離不可能」と呼ばれる。点がめちゃめちゃに入り混じっている問題は線形分離可能な問題と同じ手法では解くことができない。