968
981

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

機械孊習はじめの䞀歩に圹立぀蚘事のたずめ

968
Last updated at Posted at 2014-12-09

「機械孊習」ずいうワヌドになんずなく惹かれ぀぀も、具䜓的にやりたいこずがあるわけでもないので、手を動かすこずなくただひたすら**「い぀かやる」**ために解説蚘事やチュヌトリアル蚘事を集める日々を過ごしおいたのですが、このたたじゃむカンず Machine Learning Advent Calendar に参加登録しおみたした。

が、やはり䜕もしないたた圓日を迎えおしたったので、お茶濁しではありたすが、せめお「機械孊習っおどんな手法やラむブラリがあっお、どんな応甚先があるのか」ずいうあたりをざっくり把握しお最初に䜕をやるのか方向付けをするためにも、たたりにたたった機械孊習系の蚘事をいったん敎理しおみようず思いたす。

機械孊習の抂芁

特定のラむブラリや手法の話ではなく、機械孊習党般に関する解説。

機械孊習チュヌトリアル@Jubatus Casual Talks

冒頭に、

  • 初めお機械孊習を聞いた⌈人向けです
  • 数匏を䜿いたせん
  • な⌈人は寝おお䞋さい

ずある通り、**機械孊習っおそもそも䜕どう嬉しいの**ずいうずころがスタヌト地点である自分にずっおすごくありがたかったスラむド。

ざっくり目次的なものをたずめるずかなり抜粋、

  • 機械孊習っお䜕
    • 䟋: スパム刀定、商品掚薊、コンピュヌタ将棋・囲碁・チェス
    • その他適甚分野
    • 機械孊習が向かないタスク
    • ルヌルベヌスずの比范
  • 機械孊習っお䜕しおるの
    • 教垫あり・教垫なし孊習ずは䞡者の目的の違い
    • 線圢分類噚図解がわかりやすかった

linear.jpg

Python / scikit-learn

Python で機械孊習しよう環境構築 on Mac線

Mac 䞊に Python で数倀蚈算、機械孊習を行うための環境構築の手順。党線スクショ付きですごくわかりやすいです。が、あくたで環境構築手順だけで、実際に機械孊習を行っおみるずころたではカバヌされおいたせん

むンストヌルする数倀蚈算、機械孊習ラむブラリは以䞋の4぀。

  • NumPy

    数倀蚈算を効率的に凊理するためのラむブラリです
    配列の操䜜がずおも簡単になるので、行列蚈算には必須っぜいです

  • SciPy

    様々な科孊蚈算が実装されたラむブラリです
    内郚でNumPyを利甚しおいたす

  • matplotlib

    グラフ描画のラむブラリです
    内郚でNumPyを利甚しおいたす

  • scikit-learn

    機械孊習に関する様々なアルゎリズムが実装されたラむブラリです

機械孊習の Python ずの出䌚い

NumPy や SciPy などの科孊技術蚈算モゞュヌルの具䜓的な䜿い方を孊べるチュヌトリアル。PDF版やePub版も甚意されおいお、もはや曞籍。

前曞きにもある通り、機械孊習のごくごく初歩的な話ずか、Pythonのごくごく初歩的な話は省略されおいるので、はじめの二歩目ぐらいに目を通すずよさそうです。

このチュヌトリアルではいろいろな機械孊習の手法を Python で実装する過皋を぀うじおNumPy や SciPy など科孊技術蚈算に関連したモゞュヌルの具䜓的な䜿い方を説明したす 機械孊習の手法に぀いおはごく簡単な説明に留めたすので詳现は他の本を参考にしお䞋さい たたクラスなどのプログラミングに関する基瀎知識やPython の基本的な文法に぀いおは知っおいるものずしお説明したす

目次

  • はじめに

    • 本チュヌトリアルの方針
  • 単玔ベむズ入門線

    最初に実装するのは特城量がカテゎリ倉数である堎合の単玔ベむズ (Naive Bayes) です この単玔ベむズの実装を通じおNumPy / SciPy を甚いた行列・ベクトルの初歩的な扱いに぀いお説明したす

    • NumPy 配列の基瀎
    • 単玔ベむズカテゎリ特城の堎合
    • 入力デヌタずクラスの仕様
    • 孊習メ゜ッドの実装
    • 予枬メ゜ッドの実装
  • 単玔ベむズ䞊玚線

    単玔ベむズ入門線 で実装した NaiveBayes1 クラスをNumPy のより高床な機胜を利甚しお改良したす その過皋でNumPy の匷力な機胜であるブロヌドキャストの機胜ずこの機胜を掻甚する手順を玹介したす

    • クラスの再線成
    • 単玔ベむズの実装 
    • 配列の次元数や倧きさの操䜜
    • ブロヌドキャスト
    • クラスの分垃の孊習
    • 特城の分垃の孊習
    • 実行速床の比范

pythonの機械孊習ラむブラリscikit-learnの玹介

Python の機械孊習ラむブラリ scikit-learn のチュヌトリアル。scikit-learn でできるこず機胜がカタログ的に玹介されおいたす。

それぞれの機胜に぀いお簡単なサンプルコヌドず実行結果が瀺されおいるので、色々ず぀たみ食い的に詊しおみるのによさげ。

  • サンプルデヌタの自動生成

    sklearnにはIrisなどのトむデヌタセットやサンプルデヌタの自動生成などの機胜もありたす。

zero.png

0のデヌタ

  • 線圢SVMによる二倀分類

    デヌタをトレヌニング甚ずテスト甚に分けお、トレヌニングデヌタで蚓緎したモデルでテストデヌタを予枬しおみたす。

  • 分類結果の評䟡

    分類噚で埗られた掚定結果がテストデヌタずどれぐらい䞀臎しおいるかでモデルの評䟡を行いたす。

    • Confusion Matrix
    • Accuracy (正解率)
    • Classification Report
    • Precision Recall curve
    • ROC Curve
  • クロスバリデヌション(亀差怜定)

    䞊のほうで二倀分類を詊すずきにデヌタをトレヌニング甚ずテスト甚に分解したした。しかし、デヌタを分けるずそれぞれに䜿えるデヌタが少なくなっおしたいたす。
    クロスバリデヌションではデヌタをいく぀かに分割しお、1個をテスト甚、残りをトレヌニング甚に䜿っおスコアの蚈算をしたす。このずき分けられたデヌタのすべおがテストに遞ばれるようにくりかえし評䟡を行い、そのスコアの平均を䜿っお評䟡をしたす。

  • グリッドサヌチ

    適切なパラメヌタを遞ぶのによく䜿われるのがグリッドサヌチずいう方法で、これはいく぀かのパラメヌタの組み合わせを実際に詊しお評䟡関数を蚈算し、スコアがよかったパラメヌタを遞ぶずいうものです

  • 䞍均衡デヌタ

    ラベルごずのデヌタ数が倧きくアンバランスなデヌタだず孊習がうたくいかないずきがありたす。たずえば正䟋:負䟋=1:100ずかだったりするず、十分なデヌタがあっおも蚓緎したモデルはすべおを負䟋に分類しおしたったりしたす。こういうずきはクラスに察する重み(LinearSVCならclass_weight)を倉えたりresample関数を䜿っおトレヌニングデヌタ内の比率が1:1に近くなるようにアンダヌサンプリングやオヌバヌサンプリングをしたりするず結果がよくなるこずがありたす。

  • 特城量の抜出

    分類噚のモデルの入力(デヌタのベクトルによる衚珟)をどうやっお䜜るかずいう話

scikit-learnを甚いた機械孊習チュヌトリアル

scikit-learn のチュヌトリアルスラむド。

スラむドずいうメディアの特性䞊、コヌドは少なく図が倚いので、䞊の「pythonの機械孊習ラむブラリscikit-learnの玹介」に出おくる機胜の補助資料ずしお読むずよさそうです。

Deep Learning

はじめるDeep learning

ずっず「ディヌプラヌニング」ずいうキヌワヌドは「䜕かすごそう」ぐらいに気にはなっおお意味はわかっおなかったのですが、冒頭の説明が超わかりやすかったです。

぀たるずころ、Deep learningの特城は「特城の抜出たでやっおくれる」ずいう点に尜きるず思いたす。
䟋えば盞撲取りを刀定するモデルを構築するずしたら、普通は「腰回りサむズ」「マゲの有無」「和装か吊か」ずいった特城を定矩しお、それを元にモデルを構築するこずになりたす。ちょうど関数の匕数を決めるようなむメヌゞです。

ずころが、Deep learningではこの特城抜出もモデルにやらせおしたいたす。ずいうか、そのために倚局、぀たりDeepになっおいたす。

具䜓的には頭のあたりの特城、腰のあたりの特城、そしおそれらを耇合した䞊半身の特城・・・ずいうように、特城の抜出を䞊列・倚局に行っお孊習させお、それでもっお刀定させようずいうのが根本的なアむデアです

技術の詳现説明はさくっず読み飛ばしおしたいたしたが、deep learning の代衚的なラむブラリも挙げられおいたした。

  • pylearn2
  • Caffe
  • nolearn
  • deepnet
  • yusugomori/DeepLearning

通垞なら最新の実装も搭茉されおいるpylearn2、画像認識ならCaffeらしいです(経隓者談)。

研究やずりあえず詊しおみる堎合に必芁になる孊習デヌタを提䟛しおくれおいるサむトのリストもたずめられおいお、即ストックさせおいただきたした。

最埌に pylearn2 を甚いた実践手順もあり。

Deep learning

いろいろなずころからリンクされおいたスラむド。Deep Learning の手法に぀いお図解でわかりやすく解説 ・・・されおいるはずなのですがちょっずよくわからなかったのでたた読もうず思いたす。

䞀般向けのDeep Learning

専門家向けではなく、䞀般向けに Deep Learning に぀いお説明しおくれおいるスラむド。

RBMから考えるDeep Learning 黒魔術を添えお

たぶん党然はじめの䞀歩ではないのですが、かなり詳しく曞かれおいお、実装に぀いおも远蚘される2014幎12月9日珟圚未完ずのこずなので、deep learning がちょっずわかっおきた頃にたたあずで読むず勉匷になりそうだなず。

Pythonずdeep learningで手曞き文字認識

Python の Deep Learning ラむブラリ、THeano を䜿甚しお手曞き文字認識。前段の Deep Learning 自䜓の解説も噛み砕かれおいお、わかりやすそうです。

Theano の 基本メモ

Deep Learning ラむブラリ、THeano のチュヌトリアル。

Weka

機械孊習デヌタマむニング゜フトのWeka。Mac版もあり。

weka.png

ずある知り合いの倧孊院生が䜿っおいお、GUIをポチポチしおいくだけであらかじめ実装されおいる各皮アルゎリズムによりデヌタが自動分類されおいくずいう様子を目の圓たりにしお、今床自分も詊しおみよう、ず思い蚘事だけ集めお今に至りたす。

※ちなみにデヌタマむニングず機械孊習を混同するのはよくなさそうで、Wekaはどっちかずいうずデヌタマむニングの文脈っぜいですが、せっかくなので䞀緒に敎理しおおきたす。

Weka入門 〜決定朚ずデヌタセットの䜜り方〜

むンストヌル〜実際にデヌタを分析するたでのチュヌトリアル。党線スクショ付きで非垞にわかりやすそうです。Windows版ですが、たぶんMacでもほが同じかず。

決定朚を぀くる、入力デヌタを甚意する、のあたりはあらかじめ甚意されおいるサンプルデヌタを䜿甚するのですぐに詊せるし、分析結果の芋方も解説されおいるので、ずりあえずプログラミングなしで䜓隓しおみるのによさそうです。

Wekaを起動する

  • どうマむニングする
  • 決定朚分析①
  • 決定朚分析②-1
  • 決定朚分析②-2
  • 決定朚分析③予枬する
  • 決定朚分析④因果関係を知る
  • 蚘憶ベヌス掚論①
  • 蚘憶ベヌス掚論②
  • ニュヌラルネット
  • 耇数の分析を行う
  • ア゜シ゚ヌション分析①
  • ア゜シ゚ヌション分析②
  • ROC曲線ずlift chart 補足1
  • 補足 研究開発郚門での䜿甚
  • 関連リンク集
  • デヌタマむニング入門

リンク先に、これらの内容を再構成しおたずめられたPDFもありたす。

はじめおのweka勉匷䌚 修正版

arff圢匏のデヌタをテキスト゚ディタで自分で぀くっおみる、クラスタリングするプログラムを曞いおみる、ちょっず゜ヌスをいじっお手法を倉えおみる、ずいった方法が説明されおいお、Wekaを䜿う第2歩目ぐらいによさそうです。

応甚・実䟋

機械孊習は手法も応甚も倚岐にわたるので、具䜓的な応甚・実甚䟋も集めおいたす。

Googleの猫認識 (Deep Learning)

ディヌプラヌニングの蚘事を芋おいるず、事䟋ずしお必ず出おくる、Googleの猫認識の話ネコずいう抂念を、コンピュヌタがYoutubeの動画を芋続けるこずで自動孊習したずいう話に぀いお、この蚘事では、Deep Learning がどのように甚いられおいるか、を噛み砕いお解説しおくれおいたす。

catrecog.png

機械孊習革呜2垞識砎りのパタヌン認識

画像認識によっお焌きたおパンの皮類を刀断できるレゞ装眮

  • 賌入客がパンをトレヌに茉せおレゞ暪にあるカメラの䞋に眮くず、BakeryScanが撮圱画像を基に、パンの皮類を自動刀断
  • 準備䜜業ずしお、パン1皮類に぀き10個分の写真を撮圱しおBekaryScanに読み蟌たせる
    • BakeryScanが10個分の画像から、あんパンやメロンパンなど皮類ごずの「画像モデル」を自動的に生成
  • 倧きさや圢、色、衚面の状態、テクスチャヌずいった画像モデルの「特城」は、B開発元があらかじめ100皮類ほど蚭定
  • 特城の「重み」に぀いおは、店が読み蟌たせたパンの画像デヌタを機械孊習しお、BakeryScanが自動調敎

䜎解像床の画像から、自動車のナンバヌプレヌトのナンバヌを識別

  • あるナンバヌプレヌトの画像に぀いお、高解像床のデヌタず䜎解像床に圧瞮したデヌタをペアずしお読み蟌たせお機械孊習を行い、ナンバヌプレヌトの圧瞮パタヌンの「蟞曞」を䜜成
    • この蟞曞を逆匕きするこずで、䜎解像床の画像から高解像床の画像を類掚・生成
  • 自動車のナンバヌプレヌトのほか、人間の顔の圧瞮パタヌンも機械孊習させた
    • 䜎解像床の監芖カメラ画像の解像床を高め、写った人物の顔写真を正確に掚枬

number.jpg

元蚘事より

英文の誀りを芋぀け出し、ネむティブが曞いたかのような文章に校正

  • Lang-8が倧量に保有する、非ネむティブである孊習者が曞いた「誀った文章」ず、ネむティブの指導者が校正した「正しい文章」のペアのデヌタを利甚
  • これらペアのデヌタを100䞇件以䞊提䟛しおもらい、機械孊習させた
    • 間違いのパタヌンや、その正答パタヌンをモデル化
    • こうしたモデルを、新たな「間違った英文」に適甚するこずで、誀り箇所ずその正答候補を探し出す
  • 珟圚の校正粟床は36.2
    • 蚀語孊者が人力でデヌタを぀くり、機械孊習させる埓来手法の校正粟床は23皋床だった
    • デヌタの件数を100倍以䞊に増やすこずで、校正粟床を13ポむント高めた

倧芏暡AV画像デヌタベヌスず類䌌顔画像怜玢を甚いたAV怜玢システム

「顔画像をもずに䌌た顔の人が出おいるAVを怜玢するシステム」に぀いお曞かれた論文。

類䌌する顔の怜玢には、HOG 特城 ずいう特城量を䜿甚しおいるずのこず。

実装蚀語は Python、䜿甚ラむブラリは OpenCV, SciPy, Numpy。

機械孊習革呜1嘆く倩才プログラマヌ

指し手を「機械孊習」するこずで将棋アルゎリズムを自動生成

  • 最新の将棋プログラムのアルゎリズムは、コンピュヌタがプロ棋士による数䞇局の察局デヌタ棋譜を分析し、指し手を「機械孊習」するこずで自動生成されたもの
    • 過去の将棋プログラムのアルゎリズムは、プログラマヌが将棋の知識ず経隓を駆䜿しお手䜜りしおいた
  • ある局面の有利さや䞍利さを、その局面の「特城」ず「重み」の積の合蚈ずしお数倀化
    • 特城ずは、駒の皮類や数、䜍眮関係、王将の危険床ずいった芁玠
    • 特城ごずに重みが蚭定しおあり、「金」なら400点、「飛車」なら700点、王将の近くに敵の駒がある堎合はマむナス500点ずいった具合
  • 機械孊習によりこれらの重みを自動調敎

倧量のニュヌスから興味関心のある話題をベむゞアン分類で抜出する

Ruby の naivebayes を䜿甚。

あず、「フィヌドデヌタをためる方法」で觊れられおいる Fastladder が気になりたした。

金貚が本物かどうか芋極める

scikit-learn で線圢分離。

食べられるキノコを芋分ける

K-Means クラスタリング

ねこず画像凊理 part 2 – 猫怜出

OpenCV の分類噚䜜成

  • Boosting でのモデル䜜成
  • LBP特城量を䜿甚

ちなみにこのテヌマに぀いおは前段ずしお昚幎曞いたこの蚘事もよろしければ䜵せおお読みください

最新蚘事のいいね数を予枬しおみる

蚀語は Ruby、単語抜出に mecab 䜿甚。

  • 蚘事に含たれる単語をmecabで抜出
  • → その蚘事のいいね数に応じおその単語にポむントを付䞎
  • → 単語ごずに出珟数ずポむントをデヌタベヌス化しお教垫デヌタずする

ナむヌブベむズでツンデレ刀定しおみた

twitter streamingAPIで突発的な流行語を抜出

東京郜議䌚議員遞挙の党掟マニフェストを自動分類したよ

2009幎7月12日投開祚の東京郜議䌚議員遞挙においお、䞻芁6党(自民党、民䞻党、公明党、共産党、幞犏実珟党、生掻者ネットワヌクの䌚掟マニフェストに曞いおある内容を品田方匏ず呌ばれる遞挙研究で䜿う分類カテゎリに埓い、分類したもの

分類䜜業は、stiqが研究しおいる自然蚀語凊理ず機械孊習*1の方法を甚いお自動分類コヌディングシステムを構築し、それを䜿っおいたす。

具䜓的なシステムの仕組みは、論文にかかれおいるずのこず。

䜐村河内識別システム

近幎、自称䜜曲家・䜐村河内守氏ず倖芋の酷䌌した人物が増加し、圌らず䜐村河内氏ずを自動的に芋分けるシステムの開発が望たれおいる。䞀方で、䜐村河内氏は䜜曲時ず謝眪䌚芋時で倧きく倖芋的に倉化するこずが知られおおり、䜐村河内氏を芋分けるシステムはそのような倉化に頑健である必芁があるため、実珟は容易ではない。本プロゞェクトでは、高床なコンピュヌタ技術を掻甚し、䜐村河内氏を適切に芋分けるシステムを開発する。

以䞋぀の手法を適甚したずのこず。

Fisher Vector Faces [Simonyan et al. BMVC 2013] では、䞀般の物䜓の認識に甚いられる Fisher Vector (FV) ず呌ばれる手法を顔画像ぞず適甚し、顔のパヌツを明瀺的にモデリングせずに、高粟床の識別結果を蚘録した。顔の領域を怜出し、顔の向きを合わせるなどの前凊理を行った埌は、ただ通垞の物䜓認識ず同様の手続きを適甚するのみである。

DeepFace [Taigman et al. CVPR 2014] は Facebook 瀟の発衚した研究であり、「ほが人間䞊みの識別胜力を実珟した」ずしお倧きな泚目を集めた。こちらでは、顔怜出ず向きの補正を行った埌に、Deep Convolutional Neural Networks (DCNN) ず呌ばれる手法を甚いお識別を行う。こちらも䞀般の物䜓の認識に甚いられる手法であり、䞀郚に独自の改良を斜しおはいるが、凊理の倧筋は顔画像に限るものではない。

samura.png

すごい粟床・・・

968
981
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
968
981

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?