TAMALOG

プログラミングがあれば遠いところへ行けます。プログラムと人の共生を記録します。

Rを使って簡単な線形モデルを試す

以下に試したことをまとめた。R StudioのRmdを使うと便利にレポートが作れる。仕事でも活用したい。 線形モデル - Google ドキュメント

埋め込みも試してみる。

近況報告

ここ数ヶ月の近況

  • 2年以上お世話になった先輩が退職。
  • 1年近く一緒に仕事していた先輩が退職。
  • Courseraで機械学習を基本から学び始めた
  • エンジニアが僕を含めてやっと3名になり、開発リーダーに近い立ち位置になった
  • NEMの簡単な説明をする講師をやった
  • 所属部署が変更になり、飲み会が増えた

直近の活動

二項分布について

70%の確率でアタリが出るくじを100回反復施行することを考える。

当然、100回のうち約70回はアタリを引くことができるはずだ。確率pでアタリのでるくじをN回反復試行したときのアタリの出る回数は二項分布に従うらしい。

実際にグラフを書いてみる。R Studioなら一瞬で図が書ける。

> plot(0:100, dbinom(0:100, 100, 0.7), type="h", lwd=2)

f:id:tamanobi:20180516005652p:plain

なんとなく60回以下の確率を計算してみると、2%と計算された。100回引く反復施行を、50回繰り返せば1度は60回以下になるらしい。直感的には多いように感じる。

> pbinom(q=60, size = 100, p=0.7)
[1] 0.02098858

データ解析のための統計モデリングについて調べている

仕事でやりたいことができたので、こちらのサイトの資料を読み続けている。

講義のーと : データ解析のための統計モデリング : HUSCAP

この講義資料は通称、緑本と呼ばれている本の前身です。

統計モデルについてよくまとまっている

久保先生のスライドはよく作られていて、概略をつかみやすい。モデリングの肝は、応答変数の確率分布なのかも?

Coursera の Machine Learning Courseを始めて5週目

Coursera の Machine Learning Courseを4月2日からお金を払って始めました。すでに5週目に突入です。

なぜ始めたか?

キャリアアップのために始めました。機械学習の基本的な知識が足りなくて不自由する機会が多くなってしまいました。

始めたきっかけ

始めるきっかけは、2つありました。自分の市場価値を上げたいと強く思い始めたのも影響しています。

  • 『仕事で始める機械学習』を読んで基礎がまったくなっていないことがわかったこと
  • 先輩から「ちゃんとやるなら土日の時間をフル活用しないと身につかないと思うよ」と指摘されたこと
  • ライブラリのアルゴリズムがわからず、結果を説明できなくて困ったこと
  • 機械学習の記事を読んだときに、単語の意味がわからないこと

www.coursera.org

取り組み方

現在は、平日の始業前と、土日の時間をフル活用して勉強しています。最近購入したiPadを使って出先の空いた時間でもアプリを使って学んでいます。

これまで取り組んで思ったこと

  • MOOCを始めて使ったが、問題が難しくかなり頭を使って良い
  • 機械学習ってどういうもの?と聞かれたときに概要をさくっと話せる
    • 場合によっては、数式を混じえて手法を説明できる
  • Octaveが使える
  • (副次的効果として)英語のreading/hearingスキル上達
  • 2週目以降ノートを使うようになりました。学生に戻った気分になる
  • お金を払っているから、真剣に取り組める
  • ロジスティック回帰やNeural Networkの基本的なところがわかっていなかった

抱負

2年以上数式や英語から離れていた身としては、かなり難しくて苦戦しています。でも昔からやりたかったものを勉強できてとても楽しいです。まだ1ヶ月程度ですがコース完走して絶対にサーティフィケーション取ります。

二値分類器のAUC

機械学習で作成したモデルは、様々な計算方法で評価される。ここでは、ROC曲線とAUCについてまとめてみる。

二値分類器について考える。二値分類器は[0, 1]区間の実数値(以下、スコア)を出力するものとする。

データ番号 正解ラベル スコア
1 apple 0.1
2 non-apple 0.9
3 apple 0.2
4 apple 0.4
5 non-apple 0.4
6 non-apple 0.7
7 non-apple 0.8
8 non-apple 0.5
9 apple 0.4

学習した二値分類器が上記のようなスコアを出力した。この表で正解ラベル列はまだ気にしなくても良い。 このスコアにしきい値を設けることで、二値分類ができる。例えば、0.5未満をappleと判断すると仮定する。分類結果の列を追加して表を更新する。

データ番号 正解ラベル スコア 分類結果
1 apple 0.1 apple
2 non-apple 0.9 non-apple
3 apple 0.2 apple
4 apple 0.4 apple
5 non-apple 0.4 apple
6 non-apple 0.7 non-apple
7 non-apple 0.8 non-apple
8 non-apple 0.5 non-apple
9 apple 0.4 apple

このときの混同行列は、以下のようになる。

apple(予測) non-apple(予測)
apple(真値) 4 0
non-apple(真値) 1 4

真陽性率は、4/4 = 1。偽陽性率は、1/(1 + 4) = 0.2となる。この閾値を0.1ずつ変化させて、偽陽性と真陽性を計算してみると以下の表が作成できる。

しきい値 偽陽性 真陽性
0.1 0 0
0.2 0 0.25
0.3 0 0.5
0.4 0 0.5
0.5 0.2 1
0.6 0.4 1
0.7 0.4 1
0.8 0.6 1
0.9 0.8 1

偽陽性を横軸に、真陽性を縦軸にプロットした点を結んだ曲線をROC曲線と呼ぶ。そしてROC曲線の下部面積をAUCと呼ぶ。AUCは[0, 1]の範囲を取る。その値が高いとき、分類器の判別能が高い。つまり、2つのクラスを異なるものとして識別する能力が高い。AUCが低いとき、判別能が十分ではなく間違えやすい。

f:id:tamanobi:20180401172709p:plain