この投稿では、線形代数から評価メトリックまで、機械学習の非常に基本的な概念をカバーするつもりです。 この分野に参入しようとしている初心者にとって、良いガイドとなります。

Linera Algebra

線形代数は機械学習の分野における中核となる柱です。 なぜか? 機械学習のアルゴリズムは、書籍や論文、Webサイトなどで、ベクトルや行列の表記を用いて説明されています。 線形代数はデータの数学であり、その記法により、データに対する操作を特定の演算子で正確に記述することができる。

1 – ベクトル

ベクトルは、スカラーとして知られている 1 つまたは複数の値のタプルである。 ベクトルは高次元空間の点または座標を表すという幾何学的な定義で紹介されるのが一般的である。 主なベクトル演算は、加算、減算、乗算、除算、ドット積、スカラー乗算である。

  • 長さが等しい2つのベクトルを加算して、新しい第3のベクトルを作成できる。
  • あるベクトルを、長さが等しい別のベクトルから減算して、新しい第3のベクトルを作成できる。
  • 同じ長さの2つのベクトルは掛け合わせることができる。
  • 同じ長さの2つのベクトルは割ることができる。
  • 内積は、同じ長さの2つのベクトルの掛けられた要素の合計でスカラーを与える。
  • ベクトルの大きさを拡大するためにスカラーで掛けられる。

ベクトルには多くの用途があります。 例えば、ベクトルは2次元または3次元空間でのオフセットを表すことができます。 点は原点からの単なるベクトルです。 データ(ピクセル、イメージキーポイントでのグラデーションなど)もベクトルとして扱うことができます。

2 – 行列

行列は、1つ以上の列と1つ以上の行を持つスカラーの2次元配列です。 行列が同じ数の行と列を持つ場合、それは正方行列である。 恒等式行列は対角線上に1があり、それ以外は0である正方行列です。 対角行列とは、対角線上に数字があり、それ以外の場所に0がある正方形の行列です。 列ベクトルは行が1つだけの行列、行ベクトルは列が1つだけの行列です。

行列の基本操作は、加算、スケーリング、ドットプロダクト、ベクトルの乗算、スカラーの乗算、転置、逆行列、行列式/トレースです。

  • 同じ次元の 2 つの行列は、一緒に加算して新しい 3 番目の行列を作成できます。
  • 同様に、ある行列を同じ次元の別の行列から減算することができます。
  • 同じ大きさの2つの行列は一緒に掛けることができ、これはしばしば要素ごとの行列の乗算と呼ばれます。
  • 1つの行列は同じ次元の別の行列で割ることができます。
  • 行列の内積は、2つのベクトルのエントリを互いに掛け合わせ、その結果を加算します。
  • 行列とベクトルは、行列の乗法の規則を守る限り、一緒に乗じることができます。
  • 行列の転置は、行列の列と行を反転させることで、行1が列1になり、以下同様です。
  • 行列Aがある場合、その逆行列A^(-1)はA x A^(-1) = Iとなる行列です。

機械学習

1 – 主なアプローチ

機械学習の3つの主なアプローチは以下の通りです。 例としては、k-means、ICA、PCA、ガウス混合モデル、ディープオートエンコーダなどがあります。

  • 教師あり学習:これもコンピュータビジョンでよく使用されます。 例えば、深い教師ありニューラルネットワークです。
  • Reinforcement Learning(強化学習)、これは主にロボット工学と制御問題に使用されます。 例えば、深いQ学習や政策勾配法です。
  • 強化学習では、ゲームのルールは不明である。 監督者は存在せず、遅延フィードバックを伴う報酬信号のみが存在する。 エージェントの行動は、その後に受け取るデータに影響を与えます。

    教師なし学習では、ラベルのないデータから構造と意味を見つけたいとします。 前述のように、アルゴリズムの例としては、主成分分析、k-means、非負行列因子分解、独立成分分析、ガウス混合モデル、潜在ディリクレ配分、オートエンコーダーなどがある。

    教師あり学習の基本用語は、初期入力空間 x と初期出力空間 y があり、たくさんの例 (x, y) を見た後で、例の入出力パターンを正確に再現するマッピング F: x -> y を選びたい、というようなものである。 ラベル付けされた観測値(グランドトゥルース)からFの異なるモデルを見つけるためのアルゴリズムはたくさんある。 多くの場合、学習は出力空間によって分類され、それは離散的か連続的かのどちらかである。 例えば、入力が食べ物の皿の画像であるとすると、総カロリー数として出力させたい。 また、入力が人の顔だとすると、その人の年齢を出力したい。

  • 離散出力空間では、通常、分類器を構築することになる。 例えば、クラス1、クラス2、クラス3…というように、数字がある種の意味のあるカテゴリを表すような出力を求めます。
  • 2 – 学習データとテストデータ

    学習データとは、学習プロセスで分類器に与えるものです。 これはf(x)=yを学習するための対のデータで、xは入力(R^dの特徴量のベクトル)、yは出力(分類を伴うラベル)です。 学習中は、データの入出力関係を再現するf(x)の良いモデルを見つけようとします。

    テストデータは、学習済みの分類器を用いて評価します。 xはあるがyがわからない。通常、研究ではyがないことにしているだけで、実社会では本当にないことになる。 学習済みシステムが y を予測し、システムがどれだけうまく機能するかを評価します。

    3 – 確率

    入力を K 個の異なるクラスの 1 つに分類するだけでなく、それらのクラスのそれぞれの確率を知りたい場合もあります。 可能性のある各カテゴリについて、P(C = k | x) は 0 と 1 の間の値を返し、1 に近い値はそのクラスが入力のカテゴリである可能性が高いと分類器が「思う」ことを意味します。 分類するには、最大の P(C = k | x) を選択します。

    4 – パラメトリックとノンパラメトリック

    パラメトリック モデルにはパラメーターのフィッティングが含まれます。 例えば、線形分類器の w ベクトルの良い値を見つけたいとします。 パラメトリックモデルはパラメータの数が有限であり、パラメータの数は学習セットに依存しない。

    ノンパラメトリックモデルはデータを保存し、何らかの形でそれを使用する。 ここでは、パラメータの数は学習セット(どれだけのデータを保存するか)に依存する。 より具体的には、パラメータの数は学習セットのサイズとともに増加する。

    機械学習分類器の評価

    多くの例(x、y)を見た後、モデルは例の入出力パターンを複製するマッピングF:x -> yを選択する。 問題は学習後にモデルFがどの程度機能するかである。 Fは訓練データで評価できるが、訓練データでの性能はモデルが他のデータに対してどの程度汎化できるかを教えてくれない。 つまり、Fは学習データを記憶しているだけかもしれないのです。 したがって、我々はモデルがどの程度うまく機能するかのより良いアイデアを得るためにテストデータ上で評価する必要があります。

    分類のための最も単純な評価尺度は、正しく分類されたポイントの割合である精度です。 精度は真陽性と真陰性の合計をすべてのデータポイントで割ったものとして計算することができる。 エラー率は単純に 1 – 精度、または偽陽性と偽陰性の合計をすべてのデータ ポイントで割ったものです。

    精度を実装するには、各テスト ベクトル x_t に対して予測を保存するのが最も良い方法です。 つまり、テストするベクトルが合計 T 個ある場合、最終的にすべての予測を含む T 次元ベクトルを作成し、それを基底真理と比較するだけです。 確率を保存して他のメトリックを計算することもできますが、多くのクラスがある場合、多くのメモリを必要とするかもしれません。

    1 – 混乱行列

    アルゴリズム(通常は教師あり学習)のパフォーマンスを可視化できる特定の表のレイアウトです。 行列の各行は予測されたクラスのインスタンスを表し、各列は実際のクラスのインスタンスを表します。 これにより、どのクラスが最も混乱しているかを見ることができます。 対角線が「強い」場合は,性能が良いことを示す. 正規化混同行列では、行は合計が1になるように正規化されます。

    2 – 精度と再現率

    精度は、正しく分類された正の例の数を、正として分類された例の合計数で割ったものです。 Recall は正しく分類された正の例の数をテストセット内の実際の正の例の総数で割ったものです。 精度-Recallは物体検出において支配的な指標であり、カテゴリが不均衡な場合に特に有用である。 高い精度は、アルゴリズムが無関係な結果よりも実質的に多くの関連する結果を返したことを意味し、高い再現率は、アルゴリズムが関連する結果のほとんどを返したことを意味します。 これらは、ほとんどの場合、確率的分類器によって生成されます。 時には、確率値を閾値にすることもあります。 コンピュータビジョンでは、これは検出でよく起こります。 最適な閾値はタスクによって異なる。 パフォーマンスメトリクスの中には、閾値に敏感なものがある。 閾値の値を最小から最大まで(0から1まで)変化させることで、曲線を描くことができる(ROC曲線や精度-再現性曲線)。

    Model Power

    1 ・オーバーフィット & アンダーフィット

    分類器Fは学習パフォーマンスがテストパフォーマンスよりはるかに大きい場合、データをオーバーフィットすると言われています。 一方、入出力関係をモデル化するのに十分な力がない場合、Fはデータにアンダーフィットします。

    2 – モデル容量

    モデル容量とは、パラメータ数のことです。 一般的に容量が大きいと、モデルを学習するために多くの学習データが必要であり、そうでなければ、オーバーフィッティングのリスクが高くなります。 一方、容量が小さいということは、おそらく学習データを大幅にアンダーフィットしていることを意味します。

    具体的には、ニューラルネットワークでは、ニューロンが多いほど容量が多くなります。 良い例として、線形分類器は非常に低い容量で、ディープニューラルネットワークは多くの容量を持っています。 より多くの学習データがあれば、より複雑なモデルが勝利します。 より大きなモデルを持つ分類器は、複雑な決定境界を作成できますが、複雑すぎると、特にデータが限られている場合、テスト データに対するモデルとしては不十分な場合があります。

    3 – サンプル複雑度

    サンプル複雑度は、アルゴリズムが返す関数が最適な関数(トレーニングとテスト)から任意に小さい誤差内にあるように、学習アルゴリズムに供給しなければならないトレーニング サンプルの数です。 モデル容量が大きいアルゴリズムは,適合させるパラメータが多くなり,不十分な学習データでは過剰適合する可能性があるため,サンプル複雑度が悪化する傾向にある. そのような場合、正則化のテクニックが役立ちます。

    この資料に興味を持たれた方は、「Cracking Data Science Interview」の公開に従って、データサイエンスの面接プロセスを突破する方法に関する私の後続記事を受信してください。

    コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です