* 機械学習 (machine learning) [#jdc587d7] #contents &aname(Overview); 機械学習は,人工知能の研究分野の中で,人間が日々の実体験から得られる情報の中から,後に再利用できそうな知識を獲得していく過程を,コンピュータにおいて実現したいという動機から生じました. そして,数値・文字・画像・音声など多種多様なデータの中から,規則性・パターン・知識を発見し,現状を把握したり,将来の予測を行ったりするのに役立てるのが機械学習の目的です.. しましまの私見に基づいて,機械学習の各種の問題を整理しました. *** 他分野との関連 [#d4cc5982] -[[確率論]]:機械学習で扱うデータは,いろいろな不確定要素の影響を受けており,こうして生じた曖昧さを扱うために利用されます. -[[統計]]:観測されたデータを処理する手法として長く研究されてきたため深い関連があります.特に,多変量解析や統計的予測との関連は深いが,結論の正当性をより厳密に論じることに関心があり,機械学習ほど予測は重視していないように思われます. -[[計算論的学習理論]]:組み合わせ的な概念を対象にその計算可能性と計算論を論じます.広義の機械学習の一つといえるでしょう. -[[情報理論]]:データが含む本質的な情報を見極めるには,データの規則性を発見が欠かせません. -[[パターン認識]]:画像や音声の認識・分類などを対象にした予測問題を扱う分野でした.当初は,記号的な機械学習とは異なっていたが,現在では大きな差はなくなったように思えます. -[[データマイニング]]:データ分析の中で,実用的な側面や,発見的な側面を重視する場合といってよいでしょう. -[[アルゴリズム]],[[統計物理]]:データに対する計算を行うためにこれらの分野の手法を利用します. -並列計算,データベース:大規模なデータを扱うために,これらの分野の技術も必要とされるようになってきました. *** 過学習と汎化誤差 [#weaed50a] 過学習と汎化誤差は,機械学習を活用するうえで非常に重要な概念です. 例えば,過去の天気から,明日の天気を当てる規則を学習するとしよう.過去1週間のデータは,どの日も「晴れ」であったため「天気はどの日も晴れ」という規則を考える.この規則は,過去1週間のデータについては完全に正解を与えるが,明日の天気についてはどうだろうか?もちろん「雨」や「曇」の可能性があり,はずれる可能性があります. このように,規則を作るために与えられたデータに合わせすぎた規則を得てしまうことを ''過学習'' とよび,過去のデータについてではなく,明日のまだ見ていない状況をどれだけ言い当てられるかを定量化したものを ''汎化誤差'' といいます. この汎化誤差をいかに小さくするかが機械学習の課題で,過学習を防ぐために正則化や事前分布などの工夫があります. また,この汎化誤差を求めるために,多くの機械学習理論も研究されています. ''関連項目'' - 過学習, 交差確認, 正則化, 事前分布, 縮小推定, 汎化誤差, 標本誤差, 損失関数 - 計算論的学習理論, 構造的損失最小化, 経験損失最小化, PAC学習, VC次元, レート歪み理論 *** モデルと客観性 [#zaa2d42b] 機械学習のアルゴリズムでは,問題の前提を定義するモデル・仮説空間と,訓練データへの不適合さを測る損失関数とを定め,モデルの中から損失関数を最小にするものを探し出します.多くの機械学習手法がありますが,どれもこの枠組みです.どれも同じ枠組みなのに,どうしてこれほど多数の方法があるのでしょうか? 例えば,沖縄と札幌の天気を予測する問題では,それぞれの都市の性質を考慮すると予測は当たり安いでしょう.沖縄では,雪は降らないということを前提としたモデルは,降る可能性も考慮した場合より有効な予測ができます.すなわち,問題に合わせて適切なモデル・損失関数・探索手法を選ぶと,より効果的に予測ができるため,多様な方法が考えられてきました. あらゆる問題に対して,他のどの手法よりもよりも,うまく問題を解けるような方法は存在できないことを示す no free lunch定理 などの理論も知られています. ですので,解こうとする問題を良く知り,それに対して適切な機械学習手法を選ぶことは重要となります. モデルによっては,同じデータから違う結果が得られることもあります,すなわち,主観によって結果が変わることがあります. どんな結果が良いかは,予測した結果が,将来実際に起きるかどうかを調べることになります. その性質が完全に定まっている公理に基づいて結論を得るのではなく,その性質が分かっていないデータを根拠にしているため,こうした調整はどうしても避けられません. こうした部分も機械学習の難しさです. ''関連項目'' - no free lunch定理, 醜いアヒルの子の定理 - モデル選択, Occamの剃刀, 次元の呪い, バイアス-バリアンス, ベイズ因子, 経験ベイズ, 情報量規準, 確率的コンプレクシティ, メタ学習 - モデル, パラメトリック, ノンパラメトリック, セミパラメトリック, カーネル, グラフィカルモデル, 決定木, 生成モデル, 潜在変数, 観測変数 - 次元削減, 特徴抽出, 特徴選択, 多様体学習 *** 学習の枠組みに基づく分類 [#if50684c] どのような手順で,どういった構成のデータを与え,どういう基準に基づいて学習するかといった枠組みでの分類です. - 予測する目標の値が訓練データに含まれている教師あり学習には,クラスを予測する[[識別]](分類)問題などがあります. - 予測目標の値がない入力データだけが与えられる教師なし学習には,似たものを集めるクラスタリングや,高い頻度で発生するパターンを見つける頻出パターンマイニングなどがあります. その他の条件によってもいろいろな学習の形態があります. ''関連項目'' - [[識別]], 回帰分析, 順序回帰,クラスタリング, 共クラスタリング, 頻出パターンマイニング, はずれ値検出 - 最尤推定, MAP推定, ベイズ推定, 推論 - 教師あり学習, 教師なし学習, 半教師あり学習, トランスダクティブ学習, 半教師ありクラスタリング, 標本選択バイアス, 転移学習, マルチタスク学習, 強化学習, 多腕バンディット, 帰納論理プログラミング, データ同化 - 能動学習, 逐次学習, プライバシー保護データマイニング, 分散データマイニング, 多戦略学習, anytimeアルゴリズム, 共訓練, アンサンブル学習, ロバスト推定, 事例ベース推論 *** データの性質に基づく分類 [#e90416e2] データの性質の違いによってもいろいろな対処が考えられています. - データの特徴に対する手法としては,データの値がところどころ観測されず分からなくなっている欠損値や,データが大きすぎるのでうまく小さくするデータスカッシングなど - 個々のデータがベクトル以外のグラフや時系列などの場合 - その他自然言語処理, 画像処理, 音声処理などの応用に応じた方法など ''関連項目'' - 欠損値, はずれ値, 多クラス, マルチラベル, マルチインスタンス, コストを考慮した学習, 多視点学習, 不確実データ, 不均衡データ, データスカッシング - グラフマイニング, データストリーム, バスケットデータ, マルチリレーショナルデータ, 時系列, 半構造データ, 構造化データ, 非構造化データ - テキストマイニング, Webマイニング, リンクマイニング, 自然言語処理, 画像認識, 音声認識 **リンク集 &aname(Link); [#ja928c52] //関連するWWW資源があればリンクしてください. ''日本語の資料'' -[[講義資料:統計的機械学習入門>http://www.r.dl.itc.u-tokyo.ac.jp/~nakagawa/SML/index-SML.html]] @ 中川 裕志 -[[数理情報工学特論第一 【機械学習とデータマイニング】>http://www.geocities.jp/kashi_pong/course_machine_learning_2010.html]],[[機械学習とは>http://www.geocities.co.jp/Technopolis/5893/machinelearning.html]] @ 鹿島 久嗣 -[[自然言語処理への機械学習の適用関連>http://www-tsujii.is.s.u-tokyo.ac.jp/members/wiki/wiki.cgi?page=%B2%AC%CC%EE%B8%B6%C2%E7%CA%E5#p7]] @ 岡野原 大輔 -[[カーネルや情報幾何を中心とした資料>http://www.neurosci.aist.go.jp/~akaho/papersj.html#review]] @ あかほ -[[カーネルや情報幾何を中心とした資料>http://staff.aist.go.jp/s.akaho/papersj.html#review]] @ あかほ -[[機械学習 はじめよう>http://gihyo.jp/dev/serial/01/machine-learning]] @ gihyo.jp ''英語のチュートリアル資料'' -[[Machine Learning>http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-Science/6-867Fall-2006/CourseHome/index.htm]] @ MIT Open Courseware -[[Statistical Data Mining Tutorials>http://www.autonlab.org/tutorials/]] @ Andrew Moore:機械学習としても良い資料 -[[Machine Learning>http://www.stanford.edu/class/cs229/]] @ Andrew Ng:基礎的内容.講義資料がいろいろ. -[[Advanced Topics in Learning & Decision Making>http://www.cs.berkeley.edu/~jordan/courses.html]] @ Michel Jordan:講義資料 ([[SVM]],スペクトラルクラスタリング,VC次元,Dirichlet過程) ''その他の英語資料'' -[[A Statistical Learning/Pattern Recognition Glossary>http://alumni.media.mit.edu/~tpminka/statlearn/glossary/]] @ Thomas Minka -[[http://www.aaai.org/AITopics/pmwiki/pmwiki.php/AITopics/MachineLearning]] @ AAAI AI topics -[[Machine Learning Classifiers Gallery>http://home.comcast.net/~tom.fawcett/public_html/ML-gallery/pages/index.html]]:いろいろなクラス分類器の性質を可視化 ''ポータルサイト・組織'' -[[Machine Learning @ videoLectures.net>http://videolectures.net/Top/Computer_Science/Machine_Learning/]]:講義ビデオ,機械学習の有名人多数 -[[QA @ metaoptimize>http://metaoptimize.com/qa/]]:機械学習のQ&Aサイト -[[Machine Learning Resources Wiki>http://wiki.ailab.wsu.edu/ml/index.php/Main_Page]] @ Washington State University -[[PASCAL Network>http://www.pascal-network.org/]] パターン解析, 統計的モデリング, 計算論的学習についてのヨーロッパのサイト #br -[[Wikipedia:Machine_learning]] -[[Wikipedia.jp:機械学習]] ** Freeware &aname(Freeware); [#z9fd7b45] *** 統合環境・コマンド群 [#z3009f4b] -[[R]]:フリーの統計分析ソフトとしては非常に著名.非常に多くのライブラリがある.GUIは充実していないので,コマンドラインが苦手な人には難しいかも. -[[Weka]]:フリーの分析ツールの先駆け.javaで書かれており,GUIの分析環境もある.他のソフトからも学習アルゴリズムが呼び出されて利用されてもいる. -[[RapidMiner]]:データ分析のGUI環境.最初は Yale という名前だったが,現在は rapid-I社 がオープンソースで提供している.サポートがなければ無料.[[Weka]] のアルゴリズムが利用できる. -[[KNIME (Konstanz Information Miner)>http://www.knime.org/]]:Eclipse ベースのオープンソースのGUIのデータ分析環境.自身のアルゴリズムに加え,[[Weka]], [[R]], [[python]] なども呼び出せる -[[Orange>http://www.ailab.si/orange/]]:[[python]]ベースのGUIを備えた分析ツール #br -[[Massive Online Analysis (MOA)>http://moa.cs.waikato.ac.nz/]]:データストリーム実時間分析環境 -[[MUSASHI>http://musashi.sourceforge.jp/]]:データ分析用のコマンド群 -[[ProM>http://prom.win.tue.nl/research/wiki/]]:プロセスの実行ログからビジネスプロセスのためのマイニングをするツール (java) *** ライブラリ [#n4f0ab16] 特定のアルゴリズムの実装は,それぞれのアルゴリズムのページにまとめています.[[Freeware]] からたどって下さい. ''レポジトリ'' -[[MLOSS (Machine Learning Open Source Software)>http://mloss.org/about/]]:機械学習関連のオープンソースソフトのレポジトリ -[[sourceforge.jp>http://sourceforge.jp/softwaremap/trove_list.php?form_cat=831]]:機械学習のカテゴリ -[[sourceforge.net>http://sourceforge.net/softwaremap/?fq%5B%5D=trove%3A802]]:機械学習のカテゴリ -[[Softpedia>http://www.softpedia.com/]]:Win/Mac/Linux などの各プラットフォームのページで scientific 関係のカテゴリに商用・フリーを含めていろいろ紹介されている -[[OpenScience Project>http://www.openscience.org/links/]]:オープンソースの科学系ソフト ''python用については [[python]] のページを参照'' ''C/C++ 用'' -[[dlib C++ library>http://dlib.net/]]:数値計算,最適化,機械学習の多くのアルゴリズム -[[Mahout>http://lucene.apache.org/mahout/]]:Apache プロジェクトで,Hadoop を使った大規模処理も可能 --[[チュートリアル>http://www.ibm.com/developerworks/java/library/j-mahout/index.html]] @ IBM developerWorks -[[IBM Parallel Machine Learning Toolbox>http://www.alphaworks.ibm.com/tech/pml]]:[[SVM]],k-means法,線形回帰,主成分分析をMPIを用いて並列計算 #br -[[GPUMLib>http://sourceforge.net/projects/gpumlib/]]:GPU Machine Learning Library -[[MLC++>http://www.sgi.com/tech/mlc/]]:機械学習ライブラリの先駆け -[[OLL: オンライン学習ライブラリ>http://code.google.com/p/oll/wiki/OllMainJa]] @ 岡野原 大輔 -[[sofia-ml>http://code.google.com/p/sofia-ml/]]:最適化に確率的勾配降下法を使う -[[TMVA (Toolkit for Multi Variate Analysis)>http://sourceforge.net/projects/tmva]]:多変量解析 ''java 用'' -[[ELKI (Environment Developing KDD-Applications Supported by Index-Structures)>http://www.dbs.ifi.lmu.de/research/KDD/ELKI/]]:[[Weka]]と同様の機械学習アルゴリズムを,より複雑なデータ構造を対象に -[[Java Data Mining Package (JDMP)>http://www.jdmp.org/]]:手法の独自実装に加え,[[Weka]] や LIBSVM などへのインターフェースを備える #br -[[Java Machine Learning Library (Java-ML)>http://java-ml.sourceforge.net/]] (java) -[[Vowpal Wabbit>http://hunch.net/~vw/]]:オンライン学習 (最急降下法,specialist exponentiated gradient descent) -[[Machine Learning Tools in Java>http://sourceforge.net/projects/mldev]]:MLC++のjavaでの実装 (java) ''matlab/octave/scilab 用 (octaveのページも参照)'' -[[Spider>http://www.kyb.tuebingen.mpg.de/bs/people/spider/]]:機械学習全般,[[Weka]]のアルゴリズムも利用可 -[[PRTools>http://www.prtools.org/]]:Pattern Recognition toolbox (解説書:&amazon(0470090138);) (matlab) -[[Statistical Pattern Recognition Toolbox>http://cmp.felk.cvut.cz/cmp/software/stprtool/]] (matlab) ''その他'' - [[Google Prediction API>http://code.google.com/intl/ja/apis/predict/]]:機械学習のWebAPI -[[AI-Categorizer@CPAN>http://search.cpan.org/~kwilliams/AI-Categorizer/]]:分類問題(単純ベイズ,k近隣法) (perl) -[[AI Related Ruby Extensions>http://web.media.mit.edu/~dustin/rubyai.html]]:自然言語処理や機械学習などのruby用コードまとめ (ruby) ** 関連文献 &aname(TextBook); [#y85c8895] //この%項目%に関連する書籍や論文を紹介してください. 以下は,しましまの私見に基づく本の紹介です.機械学習を学ばれたいと思われた場合に参考にしていただければと思います. *** 入門 [#i045d716] 大学1〜3年,センスがあれば高校の人向けです. こうした分野に全くなじみが無い場合には,最初にこれらの本をざっと読んでもよいと思います. - [[Book/フリーソフトでつくる音声認識システム]] -- 音声認識の教科書ですが,第1部は機械学習・パターン認識の基礎的な話題を,非常にやさしく解説しています. -- 汎化誤差やモデル選択など,機械学習を使うときに必ず知っておくべき概念を学べます. - 金谷 健一「これなら分かる最適化数学—基礎原理から計算手法まで」共立出版 (2005) - 金谷 健一「これなら分かる応用数学教室—最小二乗法からウェーブレットまで」共立出版 (2003) -- 機械学習では線形代数などが必要になりますが,それらを学ぶ本として薦めています. -- 式の展開が非常に丁寧に書いてあるため,慣れていないときに式を追うのによいと思います. -- Amazon.co.jpへのリンク:&amazon(4320017382);,&amazon(4320017862); - Toby Segaran,當山 仁健(訳), 鴨澤 眞夫(訳)「集合知プログラミング」オライリージャパン (2008) -- 機械学習を使ってどんなことが出来るのかを知るのによい本です. -- モデルの意味や,パラメータの働きなどの説明はほとんどないので,コードを他の問題に適用するとには,他の本で動作原理を学ぶ必要があると思います. -- Amazon.co.jpへのリンク:&amazon(4873113644); *** 中級 [#medc44a7] 大学 3〜4年から修士の人向け. 機械学習の基本概念と各種のアルゴリズムを俯瞰できる本. それぞれ,特徴があるので,組み合わせて読んでもよいと思います. -[[パターン認識と機械学習 - ベイズ理論による統計的予測>PRML]] -- 全体としては発展的な内容も含むので,[[コース表>PRML/course]] を参照して,基礎・中間レベルのところだけ読んで下さい. -- 強い分野:生成モデル系の手法 -- 弱い分野:クラスタリングはk-means法だけ,頻出パターンマイニングは全くない - [[Book/データマイニングの基礎]] -- 分析本体だけでなく,データの収集から,前処理,検証など知識発見全体の過程がターゲット -- 強い分野:頻出パターンマイニングや検定 -- 弱い分野:理論的背景 - [[Book/パターン認識(Rで学ぶデータサイエンス5)]] -- [[R]] のコードと共に機械学習の手法を紹介している -- 強い分野:クラスタリング,[[R]]のコード,検定 -- 弱い分野:頻出パターンマイニング,生成モデル系手法,手法の導出過程 - [[Book/パターン認識と学習の統計学(統計科学のフロンティア6)]] -- 第1部は全体の俯瞰としてバランスがよいと思うが,ページ数が限られているので詳細までは述べられていない -- 第3部のブースティングは,初学者にはやや難しいので,後で学べばよいと思う *** 発展 [#d06fcc1e] 修士以上の人向けのものや,英語のものを取り上げました. - [[パターン認識と機械学習 - ベイズ理論による統計的予測>PRML]] -- 中級レベルで挙げた本ですが,[[コース表>PRML/course]] の発展レベルまで含めて下さい. - [[Book/The Elements of Statistical Learning]] -- 一般化線形モデルを中心とした識別系の手法や理論背景について詳しい. -- ベイズ的・生成モデル的な手法はほとんどなく,クラスタリングや頻出パターンマイニングはふれる程度 - [[Book/Data Mining - Concepts and Techniques]] -- 頻出パターンマイニングなどの方法について非常に詳しい.機械学習を大規模化するにあたって参考になる点が多い. - [[Book/Information Theory, Inference, and Learning Algorithms]] -- ベイズ系の手法に強い.著者は情報理論・符号理論で著名で,これらの分野と機械学習のの関連が述べられている. - [[Book/Data Mining - Practical Machine Learning Tools and Techniques]] -- 機械学習の統合環境の先駆である [[Weka]] の解説.アルゴリズムの概要で,理論背景はない. - Stephen Marsland "Machine Learning: An Algorithmic Perspective" CRC Press -- [[サポートページ>http://seat.massey.ac.nz/personal/s.r.marsland/MLBook.html]] で [[python]] のコードが配布されている -- Amazon.co.jpへのリンク:&amazon(1420067184); - [[Book/Machine Learning]] -- 機械学習の教科書として著名で,強化学習などの内容も含むが,出版から時間が立ってるので最新の方法は含まれない.