d01tsuMATH

岩美に永住したい女子エンジニアのあれやこれやな話。

『Pythonで機械学習』の勉強会に参加してきた話。

7月25日に開催された、GiG inc.さん主催のPythonの勉強会へ行ってきました。

giginc.connpass.com

19:00時定時の身としては、20:00という何とも有難い時間での開催。

奇跡的に職場からも近く、とても行きやすかったです。


機械学習って、最近ではよく聞くようになったし、機械学習といったらPythonやRってイメージ強いという偏見。
私がPython選んだ理由としては数学に強い!の一択だったので、Python機械学習しようとは特に思ってませんでした。
そもそも機械学習ってどうやるんだ…?
っていうくらいの機械学習超初心者。笑
でも、そんな初心者でも「お、意外と簡単にできそう」と思ったのが今回の勉強会でした。
しかもハードルが低くて気軽に行ける雰囲気があったのが良かったです。(何といっても開催時間と職場からの距離も良かった!)

 

どうやら本来はシリーズものだったらしく、前回は「教師なし学習」のお話をしていたそうです。
次々回あたりには「ニューラルネットワーク」の話をやるとかやらないとか…(記憶が曖昧)
グラフ理論専攻していた身としては理解できなそうな内容の予感がするので、行こうと思います。(記憶が正しければいいけどw)

 

登壇者紹介

中島正成さん (IGS株式会社 執行役員CTO)

どうやら私の母校でやっているオープンカレッジでも講座を受け持っているそうです。

そもそも母校がオープンカレッジやっているのを今の今まで知らなかったという笑。

一般の方でも受けられるみたいなので、興味ある方は行ってみてはいかがでしょう。

web.my-class.jp

 

勉強会ではまず「教師あり学習」と「教師なし学習」って?
「データサイエンティスト」と「プログラマー」って厳密に分けられる?
という話から。

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

教師あり学習

正解が初めから用意されているものから答えを予測させる学習方法。
一般的に機械学習と言われているものだと
 ・回帰
 ・ツリー
  ・決定木
  ・回帰木
 ・ニューラルネットワーク

 

教師なし学習

教師あり学習とは違って、データはあるけど正解は用意しないで予測させる学習方法。

登壇者によると、「いい感じにやる」と笑。

一般的に言われているものだと

 ・階層型クラスタリング
 ・非階層型
 ・トピックモデル
 ・協調フィルタリング
 ・自己組織化マップ

 

 グラフ理論を専攻していた身としては教師あり学習の「ツリー」には聞き覚えがありまくって調べたところ、やはりグラフ理論での「木」と深く深く結びつくようで

専攻していて良かったわー(小並)

と思いました笑。

 

機械学習分野におけるデータサイエンティストとエンジニア

■データサイエンティスト

過去のデータの正解を作り出して、データの処理する

 

■エンジニア

データの処理済のものをプロダクトする

 

の違いがあるのでは…?ということです。成程。

 そして、メインの話では、機械学習を実演しながらのトークでした。

 

 環境構築

まずはpyenv, anaconda2, anaconda3を入れよう

 Pythonは2系、3系どっちも、anacondaは最新版を!

2系と3系の切り替えをスムーズに行ってくれるpyenvも入れましょう。

*何故Pythonを使うの?→UIがリッチ、ツールが豊富、Rでできることはほぼできる

jupyter-notebookを入れよう

ウェブブラウザで動作して、対話型でPythonなどプログラムを実行することができる多機能なエディターです。

マークダウン形式でメモを残すことができたり、グラフを表示しながら作成もできる優れモノ!

 

さっそく分析開始

■今回使うライブラリは「sklearn」

anacondaの中に含まれている、機械学習の用のデータが入ってるライブラリを使用します。

そして、その中に入ってる「Iris」というデータセットを用いて実演していました。

基本的にSVM*1などは、縦軸横軸のスケールを揃えないと正しく予測ができないそうなのですが、この「Iris」のデータセットはそのまま使えるようで、初心者の学習にはもってこいらしいです。

①「8888」ポートに接続
②「New」で「Python3」
コマンドラインが開く
④ノートに名前をつける
⑤データ読み込みの為にPandas, numpy, sclikit-learn, matplotlibなどライブラリ読み込み
⑥sclikit-learnのdatasetに用意されているIrisデータをload_iris()を読み込み
⑦とりあえず実行
⑧データは1000件あったら700件は学習用(約7割)、300件は検証用(約3割)にわけて標準化
⑨fit関数に値を与えてトレーニングする(sclikit-learnのライブラリでは共通、引数だけ確認)
⑩学習したら、予測!

predictにX値を与えてY値を予測させ、正確性を計算

 

というような流れで行うようです。

この「Iris」のデータセットは特に予測がしやすいようで、700件分の学習でおおよそ9割越えの正解率を出してました。

通常のプロダクトであれば、正解率が6~7割いけば良い方だそうですね。

化学や物理分野に居た人からすれば

6割www超良い方やんwww

とか言いそうですけど(ド偏見)、お客さん側としては不安になる確率みたいですね。

 

質疑応答

7~8つくらい質疑応答が交わされていたんですけど、メモ取りに間に合わなかったものもあり、ピックアップしたものだけお送りします笑。

Q. sklearnでは、画像の分類もできますか?

A. できます。

 汎用性が高いから、色々と使えます!
 例で言うと、画像解析で筆跡解析などにも使われたり。

 

Q. 処理スピードは遅いですか?

A. トレーニングも予測もコストがほぼかからなくて、速いですよ!

 

Q. 学習用、検証用を標準化って何がやるんですか?

A. 自分で学習用、検証用と線引きします。

 

Q. 少ないデータでも学習させることは可能ですか?

A. できます。

 50%の精度があれば高いといってよく、数百件のデータがあれば20~30%は出ます。

 

 1時間の講演で説明と実演30分くらいの割合でしたが、

見てると案外サクサク簡単にできそうで、とてもとっつきやすいなという感想でした。

自分のPCでやるにはゲームが入りすぎてて、まず環境構築するところで躓くので笑、

色々整備してからやってみようかなーと。(いつになるのかは不明)

 

次回の内容は、「真夏のLT大会に参加してみた」をお送りします!

表参道のおしゃんなところで開催されてたLT大会に混じったら、

何故か写真撮らせてくださいってイベントが発生してしまったっていう内容です。

 

*1:Support Vector Machin:教師あり学習を用いるパターン認識モデルのひとつ