投稿

ラベル(Machine Learning)が付いた投稿を表示しています

iPython notebook

イメージ
前回に引き続き、Machine Learning Foundationsのためのセッティング。 今回はその2: iPython Notebook iPython Notebookはブラウザ上でスクリプトを書いたり、実行することができるらしいです。 ブラウザを使うってことはWebへの公開もらくちん。 なだかすごいね。すごいねテクノロジー。 下は実際のスクリーンショットです。 ブラウザはChrome くわしくは こちらのページ を参考してください。 イメージとしては MATLABのパブリッシュ機能 に似てるなと思いました。 なんかもう、わざわざお金出してMATLAB使う必要ないんじゃないかと 思い始めた今日この頃。 Pythonたんたのしい。

GraphLab Create

Courseraで新たに機械学習のコースを受講することにしました。 「Machine Learning Foundations: A Case Study Approach」 このコースではPythonを使ってプログラムするようです。 最初の授業ではiPythonとiPython Notebook, そしてGraphLab Createをインストールするように 求められます。 どれもよーわからんですが、 とりあえずiPythonとiPython Notebookはすでにインストールされているようです。 Anacondaちゃんやりよるわ。 んで、GraphLab Createをインストールするんですが まずはGraphLab Createってなんぞ?ということで ユーザーズガイド の説明を抜粋してみます。 GraphLab Create is a Python package that allows programmers to perform end-to-end large-scale data analysis and data product development. Data ingestion and cleaning with SFrames. SFrame is an efficient disk-based tabular data structure that is not limited by RAM. This lets you scale your analysis and data processing to handle terabytes of data, even on your laptop. Data exploration and visualization with GraphLab Canvas. GraphLab Canvas is a browser-based interactive GUI that allows you to explore tabular data, summary plots and statistics. Network analysis with SGraph. SGraph is a disk-based gr...

Week10 and week11

Dr. Ngのクラスもこれで最後。 わりとがんばってみたので、感慨もひとしおです。 Week10 Large scale machine learning データ数が数億に上るような機械学習の解説です。 所謂ビッグデータというやつですかね。 ひとつはアメリカ合衆国の国勢調査とかそんなの。 データが増えるとその分、計算量が増えます。 ひとつの学習をさせるのものすごい時間がかかったり、あるいは計算できなかったり。 そんなときの対処法として確率的最急降下法とかが紹介されています。 あるいは複数のコンピュータ(またはコア)を使った分散処理の仕方とか。 もうひとつはGoogleやAmazonのようなネットを介したオンラインデータの学習ですね。 これは日々目に触れる機会が多い技術ですよね、きっと。 ユーザのクリックをもとに映画や商品をオススメしたりするやつ。 基本的なアルゴリズムが解説されていて、知的好奇心を刺激してくれます。 Week11 いよいよ最後のセッション。 ここでは機械学習が現在挑んでいるOCRという話題について概説しています。 OCR: Optical Character Recognition 写真の中から文字列を検出して、それを認識するというもの。 ここで使われているアルゴリズムはこのクラスですでに解説されているものです。 ロジスティック回帰とか。 では、メインの話題はというと、中規模から大規模プロジェクトの開発における マネジメント方法を詳しく教えてくれます。 プロジェクトをいくつかのステップ(コンポーネント)にわけ、それぞれを別々に開発していくようなシチュエーションが該当すると思います。 システム全体の成績を上げたいとき(あるいはデバッグしたいとき)、 どのコンポーネントに人的・時間的リソースを割くのがもっとも効果的かを見分ける方法です。 アルゴリズムにとどまらず、開発のマネジメントまで解説してくれるとは ほんとうに至れり尽くせりな幹事が増す。 最後のQuizをクリアすると同時に、Congratulation!というメールが届きました。 You completed the course. Hard work pays off. とねぎら...

Week8 and Week9

Week8: k-means clustering and PCA 教師なし学習としてK-means clusteringとPCAが取り上げられています。 K-means cluteringの説明がとてもわかりやすかった。 PCAは線形代数の知識をまるっとすっとばしてsvd(特異値分解の解を得るための関数)の使い方に終始。あくまでも機械学習のアプリケーションに重点をおく姿勢はぶれない。Dr. Ngはぶれない。 教育のあり方としても参考になりました。何が重要で何がそんなに重要でないかをはっきりと伝えてもらうことは、初学者にとってとてもありがたいです。 Week9: 異常検知とRecommendation どちらも実践的な話題です。 異常検知はクレジットカードの不正利用なんかの検出に使われているようです。 RecommendationはAmazonなどで商品をお勧めしてくるあれです。 異常検知でも線形代数の知識をがばっと端折って説明してくれます。 ありがとう、Dr. Ng でも、いつかはきちんと線形代数のおさらいをしなければ。 また、Courseraにお世話になろう。 Recommendationはいまやインターネットでは見かけない日はないくらい 身近な話題ですね。 Dr. Ngの解説を聞きながら感心しきりです。 とくにCollaborative filtering  algorithmはパラメータθだけでなく 特徴値まで推定してくれるという優れもの。 これには感心しました。 これはシステム解析にも使えるんじゃなかろうかと妄想しております。 脳の各段階で、どのような特徴量が抽出されているのかを機械学習的に割り出すことが できやしないものか。。。 妄想は膨らみます。 残すところあと2週。 今週中に完了させて、 自分のデータ解析に移りたい。 科研の書類に間に合うかな。

Week7: SVM

今日はサポートベクターマシン(SVM)。 率直に言ってなんだか狐につままれたような気分です。 あいかわらずDr. Ngの解説は健在なのですが、 「これでSVMを使えるようになった!」という実感を得られませんでした。 最後のクイズや宿題をやれば、使える気分になるのかなーと思いながら 説明を聞いていったのですが、最後までなんだか腑に落ちない感覚がぬぐえませんでした。 現時点におけるSVMに対する理解は以下のようなものです。 ・ロジスティック回帰の改良版(?) ・コスト関数にmarginを設けた ・SVMはmarginを最大にするようにDecision boundaryを決定するため、直感的に「もっともらしい」分類が可能(そのためにはパラメータCをうまく設定してやる必要がある) 自分で書いていても、他人に説明できる気がしません。 marginが導入されたあたりから、僕の理解がいまいち追いついていないような気がします。 時間があるときにもう一度見直してみようと思います。 そんな読者の不安を察してか、Dr. Ngは終盤で 「アルゴリズムよりもデータの量や実装面でのスキル(エラー分析やデバッグ、フィーチャーのデザイン)のほうが重要」なんて言い出します。 それをいうと元も子もないような気がしますが 金言であるような気もします。 データがないのに解析方法ばかり気にしててもしょうがないですもんね。 実験屋としてはいかにきれいなデータ(実験計画も含めて)とってくるかっていうのが肝です。 Dr. Ngは上述の金言を踏まえて ロジスティック、ニューラルネットワーク、SVMを機械学習(教師あり)の3大アルゴリズムとして 習得することをお勧めしていました。 このレクチャーのいいところはDr. Ngがどこが大切で、なにがそんなに大切でないかということを わりときっぱりといってくれるところです。 初学者にはたいへんありがたい。

ML-week6: PrecisionとRecall

先週一週間は学会のため、MLの勉強はほとんどできなかったんですが 今日から再開。 Week6の確認問題で2回も躓いてしまったので、 RecallとPrecisionについてまとめてみました。 Recall: コースでは再現率と訳されていた。 実際に陽性なデータ(真陽性と偽陰性を含む)のうち、モデルによって陽性だと判断されたデータ(真陽性)の割合。 二項分類問題ではTPR (True Positive Rate)あるいはSensitivity(感度)と呼ばれるらしい。 統計学では検出力(1-β)にあたるものですかね。 Precision: コースでは精度と訳されていたもの。 モデルによって陽性だと判断されたデータ(真陽性と偽陽性)に対する真陽性の割合。 二項分類問題ではPPV (Positive Predictive Value)と呼ばれるらしい。 week6では上記の二つの指標を用いて、ゆがみのあるデータを分類するモデル(たとえばかなり低頻度で現れる疾患の診断するときの学習モデル)を評価する方法を解説していました。 感度や特異度、FDRなんかはたまに耳(目)にする用語なので これを機会にスライドにまとめてみました。 Ng博士をまねて、パワーポイントのペン機能をつかって スライドにいろいろ書き込んだのですが SlideShareにアップ したらペンで書き込んだ部分が消えてました。 ざんねん。 ペン機能にはまだ慣れが必要ですが 使っていて楽しいです。 僕が使っているのはワコムの無線型タッチパッドです。 薄くて持ち運びも便利。 http://www.wacom.com/en-gb/products/navigation/bamboo-pad-wireless

Don't give up!

ちょっと体調崩れ気味です。 日曜日の夜に土湯温泉で湯に入ったあたりから からだがふわふわして、 昨日は暑いんだか寒いんだかよくわからんくなっていました。 んで、ML Week6の最後の問題をやりかけたまま 途中で放っておいたら、さきほどこんなメールが届きました。 Hi Masahiro Okamoto, We noticed that you didn’t pass Machine Learning System Design in Machine Learning yet! We wanted to remind you that there’s no penalty, so feel free to try again. Research shows testing will help you remember and apply the information more easily, so this exam is not only a way to gauge how well you’ve mastered the material - it will actually help you learn! 試験が難しくてへこたれてたわけではないんですが なんか元気がでました。 つくづくよくできたシステムです。 今日もがんばろう。

ニューラルネットワーク(Week5)とモデル診断(Week6)

金曜日から土曜日にかけてWeek5のニューラルネットワークにトライしました。 難しかったです。。。 複数のステップがあり、それぞれのステップがわりと込み入っていたので 全体像を把握するのに時間がかかりました。 ビデオを見返し、宿題をやってなんとかコードを理解することができた(気がします)。 僕自身の問題はこれらを使いこなすことにあるので そこまでいたるには、 手持ちのデータやらをつかって練習していかんといかんなと感じております。 んで、昨晩から今朝にかけてはWeek6のモデル診断(Machine Learning Diagnostic)をやっているのですが、 ちょっと感動してます。 機械学習で採用する(した)モデルの妥当性を検証する手順を説明してくれています。 あらためて、ほんとに、コードを使えるようになるための講義を用意してくれてるんだな、と感じました。 Ng博士やプロジェクト関係者の至れり尽くせりなサービス精神に感銘しております。 あー、たのしい。 そろそろ自分のデータでいろいろいじりたくなってきました。 たのしみ。 そういえばWeek6のビデオ「Model selection and training/validataion/test sets1」の日本語字幕がずれていました。スライド一枚分ほどずれてしまっていたので、字幕を見てるとむしろ混乱してしまいました。字幕OFFで何度か見返して対応しました。あと、日本語字幕のテキストをダウンロードできるので、それも参考にしたんですが、最後のほうはなぜか訳されてなかったです。 そんなに難しいことをいってないのでとりあえずなんとかなりました(たぶん)。

TANOSHII

Couseraで受講しているAndrew Ng氏のMachine Learning courseが楽しい。 わかりやすい(わかった気にさせてくれる)し、 課題の難易度もいい感で適度な達成感を味あわせてくれるので かなり気に入っています。 あと、Ng氏がたまにビデオで"Congratulation!!"とかいってほめてくれます。 ほめられるのが大好きな僕は、にやにやしながら動画を見ています。 Machine Learningの学習にとてもよいと思うのですが、 英語の勉強にもなるなーと感じてます。 とくに専門的な内容を英語で伝えるープレゼンするーときのリズムやイントネーションが 身についているような。。。 コースが終わったら 公開されている動画をiPodに入れて、通勤中の車内でシャドウイングしてみようと思う。 神経科学のコースを受講すると、実践的なプレゼン力が身につきそうなので 時間をみつけてやってみます。