Mathematicaで機械学習してみた
-
Upload
yuuki-iwabuchi -
Category
Engineering
-
view
6.777 -
download
1
Transcript of Mathematicaで機械学習してみた
Mathematica で機械学習してみた全脳アーキテクチャ若手の会第 12 回勉強会 カジュアルトーク社会人支部 岩淵 勇樹
自己紹介岩淵 勇樹(物智、 butchi_y )2012 年 3 月 博士(工学)
◦主に離散数学、音楽情報に従事2012 年 4 月〜 面白法人カヤック( Web エンジニア)
自己紹介岩淵 勇樹(物智、 butchi_y )フラクタル好き数学好き、だけど統計は苦手Mathematica 愛好者(「 Mathematica Advent Calendar 2015 」を作るなど貢献)
Mathematica とは?数式処理システム研究者向けの一方、教育にも注力製品としては高価(万単位)だが
Raspberry Pi には無償で同梱
Mathematica でできることグラフィカルなデータ解析(変数を微調整しながらプロット等)様々なフォーマットでのデータ入出力Web との通信デバイス連携( Raspberry Pi 等)
Mathematica の機械学習用関数ClassifyPredict
: 分類器をつくる関数: 分類ではなく具体値を推測
出典 : http://library.wolfram.com/infocenter/Conferences/92
80/
つくってみたPC に内蔵のフォント文字を学習させ、未知のフォントの文字を認識するプログラム
Classify で分類をしてみるテスト (動機 : 大量の教師ありデータを準備するのが楽)
概略1. ASCII 文字一覧取得2. Mac の内蔵フォント一覧を Web 上の資料からスクレイピング3. 文字それぞれをキーにしたレンダリング文字画像を連想配列化4. その連想配列を元に Classify5. 内蔵でないフォントでの認識率の表をプロット
ASCII 文字一覧取得asciiLi = FromCharacterCode /@ Range[32,
126]
フォント一覧取得スクレイピングした XML データは
Mathematica 独自の関数形式に変換される
※ フォント一覧データはあきら☆ M 氏のサイトから借用
フォント一覧取得スクレイピングによるフォント名抽出( XML パターンマッチと正規表現等)506 フォントが抽出される(有効なフォントはもっと少ない)
レンダリング文字画像取得Mac Retina だからか Rasterize 関数実行にやたら時間がかかる
分類器を作るAssociation[ Table[alphabet -> getGrapicLi[alphabet], {alphabet, asciiLi}]]recognize=Classify[assoc]
← 学習に必要な記述はこれだけ
分類メソッドはオプションで選べる(例 : Classify[assoc, Method -> “NeuralNetwork”] )"LogisticRegression”特徴の線形結合からの確率を使って分類する"Markov" 特徴文字列の Markov モデルを使って分類する"NaiveBayes" 特徴の確率的独立を仮定して分類する"NearestNeighbors" 最近傍の例を使って分類する"NeuralNetwork" 人口の神経回路網を使って分類する"RandomForest” Breimanおよび Cutler の決定木の集合を使って分類する"SupportVectorMachine" サポートベクトルマシンを使って分類する
認識してみる先ほど作った recognize 関数(分類器)
ちゃんと認識されている
テキストを画像化するために作った関数
フォント名
未知のフォントに適用してみる
未知のフォントに適用してみる
認識表デフォルトのメソッド( NearestNeighbors )ではまずまず
Method で比較
ニューラルネットワークが一番よさげ(処理内容は解らないけれど)
ニューラルネットワーク最近傍 SVM
手書き風フォントでテスト怨霊フォントだとさすがにつらい
いったんまとめMathematica で機械学習は可能統計などの知識がなくても関数一発で分類器を作れる分類方法も自動で選ばれるほか、明示的な指定も可能
その他できることMathematica を使って
重要な疑問で、 Mathematica でディープラーニングできるの?→そんな便利な関数ないです実は Wolfram 社自体、そんなディープラーニング押ししてないでも、関数は充実しているので、うまく実装さえすれば…
統計FindDistributionFindFormula
ビッグデータSocialMediaData ( Facebook, Twitterなど)
コンピュータビジョンImageCorrespondingPointsEdgeDetect
組み込み済分類器TextRecognizeImageIdentifyFindFaces
Image Identification Projecthttps://www.imageidentify.com/
Webへの展開APIFunction
◦Wolfram言語プログラムの API 化CloudDeploy
◦API のデプロイ◦wolframcloud.com 配下のランダム URL で即公開
CreateDatabin◦データベース
Wolfram|Alphahttps://www.wolframalpha.com/
まとめMathematica での機械学習は超簡単ディープラーニングは頑張り必要知識データベースとしての土壌は充分