AIジョブカレ第3,4回は教師あり学習(分類・回帰)をPythonと数学で学んでく
AIジョブカレの第3、4回は、教師あり学習の分類・回帰について学習しました。
徐々に専門的な内容になってきて、数学を使った説明も増えてきました。
最終課題がすでに提示されているので、事前に配布された資料を予習したり、本を読んで試しに実装してみたりしたほうが、より有効にAIジョブカレを使うことができると思います。
特に、後半になるに従って、余裕がなくなってくるので、ここで極力予習をするのがおすすめです。
AIジョブカレ第3回:教師あり学習(分類)が中心
第3回は、第2回の授業で積み残した、教師あり学習の回帰と、教師あり学習の分類が中心でした。
教師あり学習を2回の授業で終わらせるのはやっぱ無理があったのか、第3回の内容も次回に若干持ち越されましたが。
パラメータ(目的変数)の調整が重要
AIプログラミングでは、処理に使用する数式のモデルがすでにライブラリとなっているので簡単に使用できます。
しかし、その数式のパラメータは自分で設定しないといけない場面が出てきます。(もちろん計算するための方法もあります)
ちょっと先行して、ニューラルネットワーク(多層パーセプトロン)
ニューラルネットワークがわかるとロジスティック回帰がわかる、ということで、ニューラルネットワークの説明がここで登場です。
ニューラルネットワークで使われる多層パーセプトロン自体は1940年代に提案されていた古い手法ということで、
中高の数学が案外使われるので、わからないと結構きつい
今回から数学の概念が増えてきました。特に統計系の言葉がおおかったのですが、、、
例えば、標準偏差。
標準偏差(Standard Deviation)は、分散の正の平方根である。 統計値や確率変数の散らばり具合(ばらつき)を表す数値のひとつ。
出典:wikipedia
言葉の意味は何となく分かるかもしれませんが、
どのように計算されるのか、
数学的にどういう意味を持つのか、
それがAIプログラミングにおいてどう扱われるのか、
というのは、ぱっとわかりません。
データサイエンティストやAIエンジニアが使っているライブラリや処理方法が、数学をバックグラウンドとしていることがよくわかります。
第3回の演習課題(宿題)
第3回はここまでのおさらいで課題が出ました。
最終課題を除くと、課題が出たのはこの時だけですが、第3回までの内容が頭に入ってないと当然解けないので、復習をしっかりしておくのも大事ですね。
とはいえ、講座は隔週なので、ここで課題を解きながら復習、でも充分こなせます。
AIジョブカレ第3回講座のまとめ
第3回から数学の扱いが増えてきたので、統計の基礎的な数学は見直しておいたほうが、授業中の理解度が高まります。
また、教師あり学習はAIプログラミングの中でもよく使われる手法なので、ここできちんと習得しておくのが良さそうです。
仕事をしながら学習している人が多い講座なので、いかに時間を見つけてコツコツすすめるか、というのが大事だなと感じました。
AIジョブカレ第4回:教師あり学習とデータの前処理
第4回は統計の数学的な知識が徐々に出てきました。
機械学習で使うデータは、プログラムが扱いやすい形になっている必要があります。
AIジョブカレの講座内ではほとんどSQLなどのデータベースには触れませんが、実務をする上ではデータベースをつかえることが望ましいです。
注:データベースを使ったデータの加工はもくもく会で補足がありました。
データベースを使ったことがあればわかりやすいですが、データベースに格納するデータは、数字だったり、文字列だったり様々です。
このような、データベースから取得した生データを整理して、プログラムが扱いやすい形にすることを、前処理と言います。
今回は、このデータの前処理が中心です。
標準化、カイ二乗分布、t検定など、統計の話からスタート
数学の中でも、統計の話がだんだん増えてきました。
標準化は必要なモデルと必要でないモデルがある
機械学習の処理をするにあたって、sklernのpipelineを毎回使っています。
その際、呪文のように、
Pipeline([‘sci’, StandardScaler(),(‘est’, LogisticRegression(random_state=1))])
などの処理を書いています。
上の書き方だと、標準化をして、その後にロジスティック回帰の処理を行います。
標準化は、やってもやらなくてもいいモデルと、やる必要があるモデルがあります。
kNNやSVCなど距離をつかうモデルは標準化が必要です。
そうでない場合は、必要ないけどやっても問題ないです。なので、だいたいの処理で標準化をしています。
データ前処理の重要性とやり方:補完・欠損フラグ・変数の不使用
データベースに格納されているデータは必ずしもプログラムで処理しやすい形ではありません。
例えば、データの一部が欠けている場合、処理できずにエラーとなる場合があります。
データが欠けている場合は、それらしいデータを入れて補完して、計算できるようにします。
補完したデータはあくまで、本来使いたいデータとは異なります。あまり変なデータを入れてしまうと、誤差が大きくなります。
そのため、データを補完するか、欠損フラグを立てて処理するかを選ぶことになります。
あまりに欠損が大きい場合には、その変数を使わない、という判断をすることもあり、その判断が重要だそうです。
日付データは要注意
データ欠損を補完する時、注意するのが日付データです。
例えば、9月30日と10月1日は連続している日ですが、見た目は乖離しています。こういったものは、一度連続値に変換してから補完処理をします、
交差検証(クロスバリデーション)して、精度を高める
前処理、交差検証、標準化と、全てライブラリが用意されているため、簡単に処理できる
理屈を聞くと難しいですが、標準化、前処理、交差検証と、全てライブラリを使って簡単に処理することができます。
実際、sklearnに含まれている関数を使えば、それぞれ1行か2行くらいで書けてしまいます。
そのため、必要な処理を実際に試してみて、その後に、どのような理屈で動いているのかを確認してみるのもいいかもしれません。
いずれにせよ、AIエンジニアやデータサイエンティストになろうと思ったら、それぞれどのような処理をしているかわからないと、問題が起きたときに対処できなさそうですが。
AIジョブカレ第4回講座のまとめ
第4回は、データ分析をする前に必要なデータの前処理、計算をできるようにする標準化、モデルの正しさを検証するための交差検証などを学びました。
実務をする際には、実はデータの前処理が8割だそうなので、とても重要な回でした。
といってもSQLなどで実際のデータを吸い出す作業をするわけではないので、データ生成のもくもく会は、SQLを触れたことのない人はぜひ出たほうがいいでしょう。