Octave - Matlab Tutorials

Image
Courseraオンライン講座の機械学習コースを 直感的な理解を優先して、ゆるーく まとめてます。 正確には公式サイトを参照して下さい。 [MachineLearning Week2](https://www.coursera.org/learn/machine-learning/home/week/2) # Octave - Matlab Tutorials ## Basic Operations Octaveの基本的な操作をまとめます。 コメントを書くときは % で始めます。 - 1 ~= 2: % !=のことで、等しくないことをチェック - a = pi % πを代入 - disp( sprintf( '2 decimals: %0.2f', a)) % テキストのフォーマット出力 - format long % 以降、結果を長く表示 - format short % 以降、結果を短く表示。 * A = [ 1 2; 3 4; 5 6] % 配列を定義 - v = 1: 0.1: 2 % 1 から 2まで 0.1ステップで加算 * ones( 2, 3) % 2行3列 のすべてが 1の配列を作成 * 2*ones( 2, 3) % 上記行列を倍に * w = zeros( 1,3) % 1行3列の、すべて0の行列を作成 * w = rand( 1, 3) % 乱数配列 * w = randn( 1, 3) % Gaussian乱数配列 - w = -6 + sqrt( 10)*(randn(1,10000)); % 10000個 - hist(w) % ヒストグラム表示 - hist(w,60) % ヒストグラム表示(詳細) + eye(4) % 単位行列 - help eye % ヘルプ表示 ## Moving Data Around 使用頻度の高い処理をまとめます。 - A = [ 1 2; 3 4; 5 6] - size(A) % 行列の大きさ - size(A,1) % 最初の次元の大きさ - length(v) % 最長の長さ + pwd % 作業ディレクトリ + cd % ディレクトリの変更 + load ...

Coursera - Machine Learning 講義内容概要 Syllabus

Coursera の Machine Learningの内容を あまり専門用語などを使わず、 自分の理解に基づいて、 **ゆるーく** まとめます。 そのため、きっと厳密性には欠ける部分が多々あると思います。 11週のコースで、 以下のような項目が学べます。 能力に応じてどんどん自分のペースで学んでいけます。 # Week1: ## Introduction 学習する概要と、 このコースの使い方が説明されます。 具体的には、 - 機械学習とは? - どのような分野で使われているか。 - 教師あり学習: 手書き文字認識など、お手本がある学習 - 教師なし学習: SNSでのグループを分けるとか、無秩序から秩序を見つける方法 ## Linear Regression with One Variable 例えば、土地の面積と、住宅の価格との関係が、 ある関数で表せる場合、 面積から価格が予想できます。 学習予想が、ある関数の形にフィットする場合。 ひとつの入力に対して、線形回帰により 値を予測する方法が説明されます。 ここで学ぶのは、 - 仮説関数と、そのパラメータを、数式でモデル化する方法 - 目的関数: Cost Function/ Objective Function これは値を予測するための関数です。 - 最急降下法: Gradient Descent 目的関数の最小値つまり、予測値を求める方法 ## Linear Algebra Review 機械学習を効率的に行うために、 行列計算や、ベクトル計算が多用されます。 高校などで習った行列計算の復習をします。 # Week2 ## Linear Regression with Multiple Variables 前週はひとつの変数の場合が説明されましたが、 ここでは どのように線形回帰を多変数に応用したらよいのか、 多変数の場合が説明されます。 具体的には以下のようなことを学びます。 - Octave/MATLABのインストール - 多変数最急降下法 多変数関数の最小値を求める方法 - パラメータの調整や補正: スケール調整、正規方程式 Normal Equation 複数の変数のレンジを統一する方法 - 学習ステップα 仮説を求めるとき、どのくらい変数を変化しつつ学習すべきか ## Octaveについて 数値解析マクロみたいな言語 Octaveの概要を学びます。 Octaveでの - 数値計算、行列計算 - データのグラフ・プロット - プログラム制御 for, while, if statement C言語やJavaなどの言語でも同じことが出来ますが、 やはり数値解析に特化した言語だと、 複雑な数列計算やベクトル計算が、 数行で記述できてしまうので、 慣れるととても分かりやすいです。 Andrew Ng教授は、 低レベルの言語で学ぼうとする人は、 早めに挫折する人が多い、と言ってました。 # WEEK 3 ## Logistic Regression ロジスティック回帰では、データの分類を学びます。 例えば、 - スパムメールかどうかを分ける - このオンライン作業は詐欺的? - 腫瘍は悪性?良性? ここではこのようなことを学びます。 - 分類するための仮説を、どのように数値表現すれば良いのか? - グループの線引きはどうやったら良いのか? - 複数のグループを分類をするにはどうすれば良いのか。 ## Regularization 正則化 学習のしすぎについて学びます。 与えられたデータにフィットさせすぎると、 逆に将来のデータに適切な回答が出来なくなることがあります。 目的関数をなだらかにして、学習のしすぎを回避(正規化)して、 線形回帰や、ロジスティック回帰をなだらかにする方法を学びます。 # WEEK 4 ## Neural Networks: Representation 脳の神経細胞の構造を意識したニューラルネットについて学びます。 古くから提唱された考え方で、 一時廃れましたが、 またあらゆる分野で使えるようになってきました。 このようなことを学びます。 - ニューラルネットとその情報の流れ方 - ニューラルネットで論理(AND, OR, XNOR,etc)が作れる # WEEK 5 ## Neural Networks: Learning 復活してきたニューラルネットワーク。 どのようにニューラルネットで学習させるかを学びます。 Andrew Ng教授自身も、パット見複雑だと認めています。 でも論理さえ組み込めば、 中身を詳細に理解しなくても、 仮説を求めるには有効な方法です。 学習がうまく行っているのか確認する方法や、 学習前の初期値をどのように選んだら良いのか、 という具体的な方法も説明されます。 - ニューラルネットの目的関数 - 信号を前方に流し(ForwardPropagetion)、 - 誤差を最小にするために後方に戻します(BackPropergation)。 - Octaveでの実装方法 - 学習がうまくできているかの確認方法 - 初期値はどうのように選んだら良いのか # WEEK 6 ## Advice for Applying Machine Learning 機械学習アルゴリズムを評価する方法を学びます。 学習させたデータに対してうまくいっても、 新たな未知のデータに対する成績が悪ければ意味がありません。 学習セット、相互検証セット、テストセットに分けて検証する方法や、 偏った学習、学習しすぎについて理解します。 ## Machine Learning System Design 良い仮説を導くために、、 作成中の機械学習システムの中で、 優先的に改善する箇所を見つける方法を学びます。 - 良いシステムを、最短で生み出すためのアドバイス - 精度と再現率を評価する方法、 - そしてそのバランスをとる方法 - データを持つものが勝者になる?とは # WEEK 7 ## Support Vector Machines SVM Support Vector Machineとは、 ロジスティック回帰を単純化して、 分類に余裕を持たせる方法を学びます。 カーネルで、等高線みたいにデータを把握する方法。 その後、異常値を検出するときも出てきます。 # WEEK 8 ## Unsupervised Learning 未知のデータを、いくつかのグループに分ける方法、 教師なし学習を学びます。 - データは何個のグループに分けられるか? - その中心はどこにあるのか? ## Dimensionality Reduction 主成分分析 PCA Principal Component Analysis データの主成分を把握して、 予測精度をできるだけ落とさず、 計算量を減らす 方法を学びます。 具体的には、 三次元にばらついたデータを、二次元に転写したり、 二次元にばらついたデータを、一次元に転写したりします。 # WEEK 9 ## Anomaly Detection 異常値、外れ値、例外の検出方法を学びます。 具体的には - 製品の不良品を見つける - 監視システム - 詐欺行為の検出 異常値検出と、教師あり学習の違いも学びます。 ## Recommender Systems AmazonやNetflixなどを利用するときに、 ユーザーの好みそうな他の情報を表示させるなど、 おすすめシステムの構造を学びます。 - ユーザーの好みから、好きそうなものを、おすすめする方法 - 逆に、ユーザーの好みから、その好みのものの性質を把握する方法 # WEEK 10 ## Large Scale Machine Learning デジタル時代になり、豊富なデータを集められるようになりました。 また日々更新し続けるデータを、ダイナミックに学習する必用があるかもしれません。 巨大データを扱うには、注意する点もあります。 - 計算量を減らす方法 - 確率的に仮説に到達する方法 - 小分けにして仮説に到達する方法 - 更新され続けるデータを扱う方法 - データの並列処理 # WEEK 11 ## Application Example: Photo OCR 具体的な応用として、 画像上の人物、物体、文字を検出する方法を学びます。 写真上の文字を認識して、 OCR(Optical Character Recognition/Reader) を使って、文字を読み取る方法も学びます。

Comments

Popular posts from this blog

Markdownで投稿する前に Visual Codeで下書き

Google code-prettify

【最重要】 Cost Function