機械学習とは

機械学習?なんだそれ??

機械...学習...機械が勉強するの??

だいたい合ってますよ.機械学習というのは機械が(コンピュータ)が大量のデータからなんらかの規則性を見つけるといったものです.なんらかの規則性がわかれば,それを未来を予測することだってできます.

機械学習はコンピュータに学習させるためのデータを渡して学習させます.その学習をもとに未知なるデータを予測するというのが機械学習の目的です.

教師あり学習と教師なし学習

機械学習は大きく2つに分かれます.教師あり学習と教師なし学習です.どういったものか説明したいと思います.

教師あり学習

  1. まずは,正解が分かっているデータを学習させる(学習)

  2. 学習させたあとに,未知の正解がわからないデータの答えを予測する(予測)

教師なし学習

正解が分かっているデータが集められないときに正解がわからないデータだけで,学習する方法です.

教師なし学習は,例として,クラスタリングが挙げられます.クラスタリングとは簡単に言うと,グループ分けです.

正解データがない学習はなかなかイメージが湧きませんが,下の例を見ればわかりやすいと思います.ある病院は病気のかかりやすい人に薬をあげたいと考えてます.しかし,誰が病気にかかりやすいかなんてわかりませんよね.なので,グループ分けをして病気のかかりやすい人を当てようといった学習が教師なし学習のクラスタリング になります.

  1. 正解が分らないデータをグループ分けする(学習)

  2. 未知の正解が分らないデータのグループ分けする(予測)

過学習とは

過学習とは学習のしすぎです.過学習は機械学習においての防がなければならない大きな問題です.しっかり学習すれば,良い予測ができるはずでしょ!と思うかもしれません.しかし,学習のしすぎは悪影響を与えてしまいます.人を例にお話しします.

下の例は,テスト前にドリルの問題だけを解けるようにして試験に臨んだ男の子です.どうやら試験はうまくいかなかったようですね.彼はドリルと同じ問題が出されたら100%で正解できるはずでしたが,ドリルと全く同じ問題が試験に出るわけないのですから,うまくいかないのは当たり前です.

目標はドリルの問題だけを完璧に正解することはなく,試験で良い結果を出すことです.だから,必ずしもドリルの問題を100%正解できるようになる必要はなくて,ドリルをもとに,似たような問題や応用問題も解けるように勉強しなければなりません.

機械学習でも全く同じことが言えて,学習で与えられたデータの予測が目的ではありません.これから与えられる未知なるデータに対する予測が目的です.学習のの時に,学習しすぎてしまうと,学習のデータに対する予測の精度は上がりますが,新しいデータに対する予測は低くなってしまいます.これが過学習です.

最後に

機械学習についてざっくりとした説明をしました.もしこの分野に少しでも興味を持っていただければ嬉しいです.もし機械学習のことを少しやってみたいけど,プログラミングなんて分かんないし,そのそもどのプログラミング言語が良いのかも分からない!という方にはPython(パイソン)をおすすめします.Pythonは機械学習系の機能がとても充実しているため,機械学習をしたいならPythonは必須となる言語だと思うので,是非Pythonを学習してみて下さい!

プログラミング自体初めての方はいちばんやさしい Python入門教室がおすすめです.プログラミング自体全く分からない方に最適な本になっています.プログラミング言語についてだけでなく,実行環境のインストールから丁寧に書かれているので,プログラミングの最初の一歩としておすすめです.

他のプログラミング言語は知っているけど,Pythonは分からないという方は,入門 Python 3がおすすめです.とても分厚いですが,初心者向けにわかりやすく書いてあります.ただし,こちらの本は,初心者向けと言ってもPython初心者向けです.プログラミング自体が初めての方は,読むのに苦労するため,おすすめできません.いちばんやさしい Python入門教室を読んでから2冊目として読むのがおすすめです.基礎的なことが網羅されているので,この一冊を読めば,Pythonである程度思い通りのプログラムを書けるようになるまでにはなれると思います.

機械学習についてもっと知りたいという方は機械学習入門 ボルツマン機械学習から深層学習までがおすすめです.機械学習について全く知識がなくても読めるようになっています.分量はそこまで多くなくて,さらっと読めます.機械学習の概念がわかりやすく書いてあるので,入門書としてはおすすめです.