はじめに: この記事で紹介するリポジトリには、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. クラスタリング クラスタリングの問題では、未知の特徴を使用してトレーニングインスタンスをセグメント化します。アルゴリズム自体がセグメンテーションに使用される特徴を決定します。 使用例: 市場セグメンテーション、ソーシャル ネットワーク分析、コンピューティング クラスターの編成、天文データ分析、画像圧縮など。
数学 |理論、リンク、参考文献 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 ニューラルネットワーク ニューラル ネットワークは、それ自体がアルゴリズムではなく、さまざまな機械学習アルゴリズムが連携して複雑なデータ入力を処理するためのフレームワークです。 使用例: 他のすべてのアルゴリズムの代替として、画像認識、音声認識、画像処理 (特定のスタイルの適用)、言語翻訳などに適用されます。
数学 |理論、リンク、参考文献 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、およびすべての依存パッケージをインストールすることをお勧めします。 依存関係をインストールします:
2. Jupyterをローカルで起動するプロジェクト内のすべてのデモは、Jupyter をローカルにインストールしなくても、ブラウザで直接実行できます。ただし、Jupyter Notebook をローカルで起動する場合は、プロジェクトのルート フォルダーから次のコマンドを実行できます。 その後、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つの方法
アルゴリズムの式はかなり面倒で、機械学習は苦痛すぎる。機械学習を初めて学ぶ人は、複雑な数式やわかりに...
人工知能は現在注目されている研究テーマであるため、各国は他国を追い越して主導権を握り、国際社会におけ...
背景Baiduは昨年11月にカスタマイズされた画像トレーニングサービスを開始しました(https:/...
オーストリアのグラーツ大学、スコルテック社、そして米国とドイツの科学者らは、宇宙からの観測からコロナ...
[[410828]]この記事はWeChatの公開アカウント「Java Architecture M...
こんにちは世界!プログラマーが初めて新しいプログラミング言語に触れるとき、その言語が世に登場したこと...
論文リンク: https://arxiv.org/pdf/2306.02207.pdfデモページ: ...
[[438887]]現在、機械学習システムは、コンピュータービジョン、音声認識、自然言語処理など、多...
「人工知能の発達により、労働力は解放されました。工場では、大量の労働者が排除され、高効率で高速なロ...
この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...