fastTextがすごそう ~とりあえず使ってみた編~
Facebookから公開されたfastTextというライブラリがすごそうなので使ってみようと思います。
このライブラリは大量の文章を読み込んで、単語をベクトル表現できるようにするものです。
そうすることで、似ている単語や単語同士の関連性などを知ることができます。さらには単語の分類やレコメンドにも利用できるというものです。
もっとくわしく機能や凄さを紹介している記事はこちら
使ってみて面白い結果が出てきたら、ここのブログかQiitaの方にでもまとめようと思いますが、「とりあえず適当にデータ突っ込んでみた」結果からもすごさの片鱗が見られたので紹介しておきます。
まず学習のためのデータは、自作のニュースまとめサイト「ITニュースのお漬物(β)」でせっせと集めているニュースの記事を使います。
とりあえずライブラリのパラメータはデフォルト値を使って何も考えずに処理を流してみました。そして特定の単語と近いと判断された単語をまとめてみます。
このあたりの作業手順とかはきれいにしてから別途まとめる、、、予定。
(これで、IT系の話題検出とか関連ニュースのレコメンドとかを将来的にはやりたい。。。)
試してみた単語はIT系で何かと話題の”分析”、”機械学習”、”AI”、ついでに”ポケモン”です。
単語→ ↓順位 |
ポケモン | 分析 | 機械学習 | AI |
1 | トレーナー | 分析技術 | 機械学習技術 | bot |
2 | トレーナーレベル | 蓄積 | 機械学習機能 | Nauto |
3 | メダル | 分析結果 | 深層学習 | SAIKAWA |
4 | トレーニングバトル | 誤検知 | 学習 | WISE |
5 | Pokemon | 人手 | 人工知能技術 | ABEJA |
6 | タマゴ | 把握 | 強化学習 | Artificial |
7 | ポケストップ | 欠品回避 | 異種混合学習技術 | Einstein |
8 | ゲットホリックケース | 収集 | 自然言語処理 | COTOHA |
9 | モンスターボール | 規則性 | 膨大 | TIS |
10 | トレース | 脅威情報 | 自動生成 | Institute |
これはなかなかすごい結果ではないでしょうか。
もちろん単語によってはよくわからない結果だったりもしましたが、上の結果はだいぶ妥当性がある気がします。
まだまだいろんなことができそうなので引き続き遊んでみよう。
Coursera Machine Learning 完走!
3月から頑張っていたCoursera Machine Learningのカリキュラム全部終わりました。
とりあえずこんな感じでした。
○始める前
「え?3ヶ月のカリキュラム?基礎知識はあるし1ヶ月で終わらしてやんよ」
○途中
「あ、ちょっと、これは、・・・。」
○今ここ
「ちょっと休んでから2週目行きますかね。」
ということで、非常にためになる講座でした。
まだまだ理解が不十分なところあるので、何かしらサンプルコードでも書きながら復習が必要そうです。
とりあえず「ちゃんと最後までやったよ!」という報告だけなので、今回は中身についてあまり書きませんが、カリキュラムの終盤は機械学習の理論的な中身の話だけでなく、実際のプロジェクトにおいて注意しなくてはいけない点や様々なデータに対するアプローチ方法なども紹介されていて、仕事として機械学習を使っていこうとしている人にとっては必見な内容だと思いました。
Coursera MLの6,7週目ともろもろ
Coursera Machine Learningの6,7週目が終わりました。
SVMの話や教師なし学習としてk-meansやPCAの話がありました。
今までに比べるとサラッと解説するような感じで、とっつきやすい内容でした。(中身もだいたい知っている内容だったこともある。)
SVMはマージンの意味などもわかりやすくて相変わらずためになる内容です。
また、1~4週目の復習がてら回帰を実装しながら細かく見ていくプログラム&資料を作成中なのでまた公開します。
で、それはそうとGW期間が来ましたね。
現実逃避の旅に出かけるべく、日本地図にダーツをして行き先を決めるアプリないかなーと思って探していると、簡易的なものを見つけました。ただちょっと改良したかったのでちょろっと改造をし始めるといつの間にか1日が終わって旅に出るタイミングを逃していまいました。
その日記がこちら
とりあえず動作確認も兼ねて行き先をポチッと。
© OpenStreetMap contributors
(図はOpenStreatMap。GoogleMapは画像で貼れないので。)
あー・・・。最北端・・・、を超えてますかねぇ。これは行けない。。。
まぁそもそも連休をつなげてないので遠出はできないんですけどね。
Coursera Machine Learning 4,5週目日記
引き続き頑張り中のCoursera Machine Learning。4,5週目はニューラルネットワークの話です。
入力から結果を計算するフォワードプロパゲーションと、結果から重みを更新するバックプロパゲーションの解説。
プログラム課題の難易度が前回より随分上がった気がしました。いろいろと調べまわってなんとか。。。
とりあえず全体的な復習も兼ねて、ロジスティック回帰のR言語自力実装を開始したので、完成したらここかQiitaにまとめようと思います。
いやはや、まだNNは自力実装できる気がしないのでがんばる。
まだMachine Learningコースはドロップアウトせずにぎりぎり続いてますよ、という報告でした。
分析コンテスト、スタートでつまずいた教訓
さてさて、新年度ということで以下の分析コンテストに参加して、一回目の解析結果投稿をしてみました。
そして投稿してみてびっくり。一発目の投稿はbenchmarkよりちょっと良いぐらいで、ほぼ最下位グループではありませんか。
ここのベンチマークは乱数というか値固定というか、いわば「解析せずにえいやで数値だすとこのぐらいのスコアだよ」っていう感じ基準(過去の傾向を見た感じの憶測です)なので、自分の結果もその程度だということです。
それにランキング全体をみると、どうも上位と下位で明確にスコア差があります。0.4以下グループと0.8以上グループみたいな。
あ、これは分析精度うんぬんの前に、そもそも答えのフォーマットというか求められている数値になってないなと。特に今回のコンペの場合、学習データは故障の有無なのに対して、出すべき答えは故障確率なので、そのへんで誤ってそうです。
ということで、問題定義や結果の出し方でいきなり間違ったので戒めがてら記録しておきました。さて、どこまでスコア伸ばせるかなぁ。。。
ーーー
csvをsqliteにポイっと入れるスクリプト
Gistから貼り付ける実験を兼ねて。。。
Gistに2ファイル投稿したものを貼り付けたらどうなるのっと。
データ分析コンペなどで、たくさんのcsvを受け取ってまずは結合したり抽出したりコネコネしたいときにDB(というかSQLでの処理)が使いたくなります。
ということでワンクリックでcsvからsqliteにデータを流し込むツールがほしかったんですが、案外見当たらなかったので作りました。
非常に用途は限られていると思いますが。。。
ああ、、、今見るともうちょっといろいろ関数化しておくべきだったなぁとか、「ワンクリックで」と書いたのにクリックじゃなくて「ワン"カタカタ、ターン"」だなぁとか思ってしまいました。
Coursera Machine Learning 3週目日記
忘れないうちに。Coursera MLの3週目終わりました。
感想の概要:完全に理解するには自分でプログラム組んでみないとだめかも。
3週目はロジスティック回帰についてでした。
ロジスティック回帰の損失関数がどんなことを意味しているか、という解説がわかりやすく、ロジスティック回帰もわかっていたようでまだまだ奥が深いなぁと痛感。
そして、正則化の話も出てきました。
余談ですが、字幕でところどころ"正則化"でないといけないところが"正規化"になっていました。もしこのコースを受けてみようと思っている方はご注意を。
正則化項を置くことで係数が大きくなることに対してペナルティを与える、という考え方がとてもわかりやすかった、、、ですが、これもまだイメージでなんとなくわかったというぐらいなので、深く理解するには自分で1からプログラム組んでみないとだめかなぁと思いました。
ちょっといろいろと書きたい内容が貯まってきたので短めで。