Github で 12000 以上のスターを獲得した機械学習のチュートリアル。理論、コード、デモが含まれています。

Github で 12000 以上のスターを獲得した機械学習のチュートリアル。理論、コード、デモが含まれています。

はじめに: この記事で紹介するリポジトリには、Python で実装された一般的な機械学習アルゴリズムの例が含まれており、その数学的原理については後で説明します。各アルゴリズムにはインタラクティブな Jupyter ノートブックのデモンストレーションが用意されており、トレーニング データやアルゴリズムの構成を試したり、グラフや予測をブラウザですぐに表示したりできます。

▲画像出典:https://vas3k.ru/blog/machine_learning/

このプロジェクトの目的は、サードパーティのライブラリを使用して 1 行のコードで機械学習アルゴリズムを誰もが実装できるようにすることではなく、これらのアルゴリズムをゼロから実装して、各アルゴリズムの背後にある数学的メカニズムをより深く理解することです。このため、ここでは、アルゴリズムを実行するためだけではなく、すべてのアルゴリズム実装が「自家製」と呼ばれています。

https://github.com/trekhleb/homemade-machine-learning#homemade-machine-learning

01 教師あり学習

教師あり学習では、入力としてトレーニング データのセットがあり、各トレーニング セットには出力としてラベルまたは「正解」のセットがあります。次に、入力を出力に正しくマッピングする(正しい予測を行う)ために、モデル(機械学習アルゴリズムのパラメータ)をトレーニングします。最終的な目標は、新しい入力例に対しても正しい入力→出力マッピング(予測)を正常に継続できるようなモデルパラメータを見つけることです。

1. 回帰

回帰問題では、真の値を予測します。トレーニング例に沿って線/平面/n次元平面を描画しようとしています。

使用例: 株価予測、売上分析、デジタル依存性など。

  • 線形回帰

数学 | 理論、リンク、参考文献

https://github.com/trekhleb/homemade-machine-learning/blob/master/homemade/linear_regression

コード | 実装例

https://github.com/trekhleb/homemade-machine-learning/blob/master/homemade/linear_regression/linear_regression.py

デモ | 単変量線形回帰: GDP を使用して都市幸福度指数を予測する

 

https://nbviewer.jupyter.org/github/trekhleb/homemade-machine-learning/blob/master/notebooks/linear_regression/univariate_linear_regression_demo.ipynb

デモ |多重線形回帰: GDP と自由度指数を使用した都市幸福度指数の予測

https://nbviewer.jupyter.org/github/trekhleb/homemade-machine-learning/blob/master/notebooks/linear_regression/multivariate_linear_regression_demo.ipynb

デモ |非線形回帰: 多項式と正弦関数の特徴を持つ線形回帰を使用して非線形依存関係を予測する

 

https://nbviewer.jupyter.org/github/trekhleb/homemade-machine-learning/blob/master/notebooks/linear_regression/non_linear_regression_demo.ipynb

2. 分類

分類問題では、入力例を特定の特徴に従ってセグメント化します。

使用例: スパムフィルタリング、言語検出、類似ドキュメントの検索、手書き認識など。

  • ロジスティック回帰

数学 |理論、リンク、参考文献

https://github.com/trekhleb/homemade-machine-learning/blob/master/homemade/logistic_regression

コード |実装例

https://github.com/trekhleb/homemade-machine-learning/blob/master/homemade/logistic_regression/logistic_regression.py

デモ |ロジスティック回帰 - 線形境界: 花びらの長さと幅に基づくアヤメのクラスの予測

 

https://nbviewer.jupyter.org/github/trekhleb/homemade-machine-learning/blob/master/notebooks/logistic_regression/logistic_regression_with_linear_boundary_demo.ipynb

デモ |ロジスティック回帰 - 非線形境界: Param_1 と Param_2 に基づくマイクロチップの有効性の予測

 

https://nbviewer.jupyter.org/github/trekhleb/homemade-machine-learning/blob/master/notebooks/logistic_regression/logistic_regression_with_non_linear_boundary_demo.ipynb

デモ |多変量ロジスティック回帰 - MNIST : 28x28 ピクセルの画像から手書きの数字を認識する

 

https://nbviewer.jupyter.org/github/trekhleb/homemade-machine-learning/blob/master/notebooks/logistic_regression/multivariate_logistic_regression_demo.ipynb

デモ |多変量ロジスティック回帰 - ファッション MNIST : 28x28 ピクセルの画像から衣服の種類を識別する

 

https://nbviewer.jupyter.org/github/trekhleb/homemade-machine-learning/blob/master/notebooks/logistic_regression/multivariate_logistic_regression_fashion_demo.ipynb

02 教師なし学習

教師なし学習は、ラベル付けされていない分類されていないデータから学習する機械学習の分野です。教師なし学習は、フィードバックに応答するのではなく、データ内の共通点を識別し、各新しいデータにそのような共通点が存在するかどうかに基づいて反応します。

1. クラスタリング

クラスタリングの問題では、未知の特徴を使用してトレーニングインスタンスをセグメント化します。アルゴリズム自体がセグメンテーションに使用される特徴を決定します。

使用例: 市場セグメンテーション、ソーシャル ネットワーク分析、コンピューティング クラスターの編成、天文データ分析、画像圧縮など。

  • K平均法アルゴリズム

 

数学 |理論、リンク、参考文献

https://github.com/trekhleb/homemade-machine-learning/blob/master/homemade/k_means

コード |実装例

https://github.com/trekhleb/homemade-machine-learning/blob/master/homemade/k_means/k_means.py

デモ |花びらの長さと幅に基づいてアイリスの花をクラスターに分割する

https://nbviewer.jupyter.org/github/trekhleb/homemade-machine-learning/blob/master/notebooks/k_means/k_means_demo.ipynb

2. 異常検出

異常検出とは、大多数のデータとは大きく異なるため疑わしいと思われるまれな項目、イベント、または観察を識別することです。

使用例: 侵入検知、不正行為検知、システムヘルス監視、データセットからの異常なデータの削除など。

  • ガウス分布を用いた異常検出

数学 |理論、リンク、参考文献

https://github.com/trekhleb/homemade-machine-learning/blob/master/homemade/anomaly_detection

コード |実装例

https://github.com/trekhleb/homemade-machine-learning/blob/master/homemade/anomaly_detection/gaussian_anomaly_detection.py

デモ |レイテンシやしきい値などのサーバーの動作パラメータの異常を検出

https://nbviewer.jupyter.org/github/trekhleb/homemade-machine-learning/blob/master/notebooks/anomaly_detection/anomaly_detection_gaussian_demo.ipynb

03 ニューラルネットワーク

ニューラル ネットワークは、それ自体がアルゴリズムではなく、さまざまな機械学習アルゴリズムが連携して複雑なデータ入力を処理するためのフレームワークです。

使用例: 他のすべてのアルゴリズムの代替として、画像認識、音声認識、画像処理 (特定のスタイルの適用)、言語翻訳などに適用されます。

  • 多層パーセプトロン (MLP)

数学 |理論、リンク、参考文献

https://github.com/trekhleb/homemade-machine-learning/blob/master/homemade/neural_network

コード |実装例

https://github.com/trekhleb/homemade-machine-learning/blob/master/homemade/neural_network/multilayer_perceptron.py

デモ | 28x28 ピクセルの画像から手書きの数字を認識する

https://nbviewer.jupyter.org/github/trekhleb/homemade-machine-learning/blob/master/notebooks/neural_network/multilayer_perceptron_demo.ipynb

デモ | 28x28 ピクセルの画像から衣服の種類を識別する

https://nbviewer.jupyter.org/github/trekhleb/homemade-machine-learning/blob/master/notebooks/neural_network/multilayer_perceptron_fashion_demo.ipynb

04 機械学習マップ

1. 前提条件

Python をインストールします。

マシンに Python がインストールされていることを確認してください。システム全体のパッケージとそのバージョンに干渉しないようにするには、venv 標準 Python ライブラリを使用して仮想環境を作成し、ローカル プロジェクト ディレクトリから Python、pip、およびすべての依存パッケージをインストールすることをお勧めします。

依存関係をインストールします:

  1. pip インストール -r 要件.txt

2. Jupyterをローカルで起動する

プロジェクト内のすべてのデモは、Jupyter をローカルにインストールしなくても、ブラウザで直接実行できます。ただし、Jupyter Notebook をローカルで起動する場合は、プロジェクトのルート フォルダーから次のコマンドを実行できます。

  1. ジュピターノートブック

その後、jupyter ノートブックは http://localhost:8888 からアクセスできるようになります。

3. Jupyterをリモートで起動する

各アルゴリズム セクションには、Jupyter NBViewer のデモへのリンクが含まれています。これは、Jupyter Notebook 用の高速オンライン プレビュー ツールです。ローカルに何もインストールしなくても、デモ コード、プロット、データをブラウザーで表示できます。コードおよびラボのデモンストレーション ノートブックに変更を加える場合は、ノートブックのバインダーをアクティブ化する必要があります。これは、 NBViewer の右上隅にある [バインダーで実行] リンクをクリックするだけで実行できます。

4. データセット

Jupyter ノートブックのデモンストレーションに使用されるデータセットのリストは、データ フォルダーにあります。

https://github.com/trekhleb/homemade-machine-learning/blob/master/data

<<:  強力な視覚 AI でもこれらの写真を正確に識別できないのはなぜでしょうか?

>>:  AIとデータが未来のスマートシティを強化する5つの方法

ブログ    

推薦する

【機械学習を図解で解説】誰でもわかるアルゴリズムの原理

アルゴリズムの式はかなり面倒で、機械学習は苦痛すぎる。機械学習を初めて学ぶ人は、複雑な数式やわかりに...

AIは主人の命令に従わず、主人を笑いさえしました!意識が目覚めた?

人工知能は現在注目されている研究テーマであるため、各国は他国を追い越して主導権を握り、国際社会におけ...

Baiduカスタマイズ画像オープンプラットフォームのトレーニングと評価

背景Baiduは昨年11月にカスタマイズされた画像トレーニングサービスを開始しました(https:/...

AIがコロナホールを発見し宇宙天気予報を自動化

オーストリアのグラーツ大学、スコルテック社、そして米国とドイツの科学者らは、宇宙からの観測からコロナ...

Deeplearning4j: JVM 向けのディープラーニングと ETL

[[410828]]この記事はWeChatの公開アカウント「Java Architecture M...

...

...

心を込めてツイートしましょう! Synchron 脳コンピューターインターフェースは ALS 患者が自分の考えで携帯電話を閲覧するのを助けます

こんにちは世界!プログラマーが初めて新しいプログラミング言語に触れるとき、その言語が世に登場したこと...

...

強化学習の専門家 Sergey Levine: スケーラブルな自己教師あり学習の基盤としての強化学習

[[438887]]現在、機械学習システムは、コンピュータービジョン、音声認識、自然言語処理など、多...

...

人工知能の到来。会計士は不安になるべきでしょうか?

「人工知能の発達により、労働力は解放されました。工場では、大量の労働者が排除され、高効率で高速なロ...

...

ディープラーニングをめぐる激しい議論:ルカン氏は大きな動きを見せ、マーカス氏は厳しい発言をした

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...