はじめに
頑張れば、何かがあるって、信じてる。nikkieです。
10/24に渋谷開催の機械学習の入門ハンズオンに登壇してきました。
そこで想定していた以上に質問をいただいたので、文字での情報共有&自分の思考の整理として記事にまとめます。
勉強会の概要
機械学習やKaggleが気になっている方を対象に、入門者向けのコンペであるタイタニック号の生存予測でKaggleを体験するハンズオンです。
詳しくは以下の登壇予告記事をご覧ください:
当日のスライドはこちら:
1時間程度ハンズオンをした後に質疑の時間があったのですが、時間いっぱいになるまで質問をいただきました。
質疑録
業務で何をやっていますか?(言える範囲で)
自然言語処理をやっている1。
よくある問題設定で言い換えると、ニュース記事がどんなテーマか(政治かスポーツか)の分類
取り組む手法としてはLDA?それともRNNやLSTM?
業務ではディープラーニングで取り組んでいる(RNNやLSTMが該当)
ただしこれらの手法選択はゴールによると考えている。
機械学習しなくて済む(ルールベースで組める)なら確実なのでそれが一番(参考:『仕事ではじめる機械学習』)
今いる環境はディープラーニングを使うことが多い。
ディープラーニングはデータがいる。
十分なデータがなければLDAなどの古典的な手法が有効と考えている
タイタニックのような入門者用のコンペは他にあるのか?
私はあまりやり込めていないが、House Pricesは入門者用だと思う。
タイタニックは分類という問題設定の入門者用で、House Pricesは回帰という問題設定の入門者用。
以下のような日本語のカーネルもあります(存在確認しただけで中身を読めていません):
どうやって今の状態に至ったか? データ分析の勉強はどうやったか
(非常に答えづらい質問でした。回答は個別具体的な例にすぎないので、抽象して得るものがあったなら嬉しいです)
もともと好奇心旺盛なのが利いているのかも。
大学で情報を学んでいた。機械学習の用語も知っていた。
エンジニアとして就職。授業で聞いたことのある機械学習のモデルがプログラミング(Python)で実装できるということで、ハンズオンなど行った。最初はよくわからないけど動く、楽しいという状態。
ハンズオンのコードを自分で書き直せないので、本を読んで体系だった知識を吸収。知識がつながる感じ。
プライベートのそんな取り組みから仕事でチャンス(機械学習案件アサイン)
業務時間も使って機械学習の知識は増えた。ただ案件としてはうまくいかない部分の方が多かった。
次うまくやるにはどうするか、悔しさから勉強
業務でうまくいかない→補強するために勉強というのは、今の自分の根底にあると思います
統計2級を取得すれば、機械学習に役立つか
Yesな点もあればNoな点もあると思う。機械学習の分野の中で統計でカバーされない分野もあるため
機械学習には、統計と数学の知識も必要2。
古典的なアルゴリズム(ロジスティック回帰や決定木)は統計の範囲と聞いたことがあるので、統計2級は役立つのではないか。
一方ディープラーニングについては統計2級を持っていたとしても勉強が必要だろう
ディープラーニングは今日のハンズオンの延長にあるのか
Yes。モデル作成のところが置き換わると考えてください
# モデルの設定(ニューラルネットワークの層を組んでいる)←タイタニックではLogisticRegressionなどアルゴリズムを設定したところ model = keras.Sequential([ keras.layers.Flatten(input_shape=(28, 28)), keras.layers.Dense(128, activation='relu'), keras.layers.Dense(10, activation='softmax') ]) # モデル作成前に必要な設定(ディープラーニング特有) model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy']) # モデル作成(相変わらずわずか1行) model.fit(train_images, train_labels, epochs=5)
コード例の参考:Basic classification: Classify images of clothing | TensorFlow Core
ハイパーパラメータチューニングくらいのモデルでも運用できるのか
目標にもよるがYes。
例えばタイタニックの例で目標が「accuracy 80%」と決まっているなら、ハイパーパラメータチューニングなどで目標を超えたモデルを作って運用する(目標を超えたモデルを作ったということが重要)。
もし研究が主眼(際限なく性能を上げたい)なら、時間もお金もかかるだろう。
かけるコストに対して性能は頭打ちになっていく(性能が上がってくると、以前と同じ時間を使っても全然性能が上がらないこともザラ)と聞いている
機械学習のプロジェクトはどのくらいうまくいくのか
機械学習のプロジェクトは最初に概念検証(PoC, Proof of Concept)でうまくいきそうか評価する。
PoCでうまくいかないことがわかっても収穫。
私がこれまで体験した中では、うまくいくのは半々くらい(注:Nが1桁半ばくらいです)。
ディープラーニングまで踏み込まず、今日扱ったロジスティック回帰や決定木で進めることもあると聞いています。
(ここは意見が分かれるところだと思うので、他の方にも聞いてみてほしいです)
スライドのアップデート事項
Googleアカウント
Googleアカウントでサインインする前に、登録(Register)が必要なようです。
Notebookの持ち主はUIが異なる
Notebook作成者の「Edit」というボタンが、Notebook閲覧者には「Copy and Edit」となるようです。
シークレットブラウザでの確認が必要でした。
Notebookのコミットが終わらない
これは想定していなかった事態で原因不明です(私の環境で再現させられていません)。
別のタブでKaggleにアクセスして、自分のNotebookを確認するとコミットされているかもしれません(Notebookの一覧へのアクセスはここからのスライドを参考にしてみてください)。
終わりに
当日はshimakaze_softさんにTAをしていただきました。
参加者は10名以上で、1人ではエラー対応しきれなかったので非常に助かりました。
お忙しい中ありがとうございました。
最後に参加者の皆さま、登壇の機会をいただいたサポーターズの皆さまにお礼申し上げます。
ありがとうございました!
-
コミュニティで会う方は結構ご存知だと思いますが、実は2019年4月からデータサイエンティストに転職しています。PyCon JPスタッフや各種登壇で忙しく、転職エントリは書かずにここまで来ました(年内には「転職してどんな感じかエントリ」を書きたいところ)↩
-
このあたりはPyCon TWのチュートリアルで整理されました(PyCon TW 2019 共同筆記 - HackMD )↩