We backtest a simple dollar cost averaging strategy in backtesting.py. Backtesting.py is a super easy to use framework for beginners to python or to backtest...
Learn how to make your own custom indicators in backtesting.py. We show how you can integrate libraries like pandas-ta, ta-lib, etc. as well as write your ow...
In this video we go in-depth on how to use stop-losses in backtesting.py. We cover both static and trailing stop losses and how backtesting.py executes them ...
In this video we go through a method that I've found helpful for validating my backtests before I go live with a strategy. Looking at the distribution of ret...
00:35:00 中心極限定理は、サイコロの出目とコードを使用して実証されます。このデモンストレーションは、サンプル サイズが増加するにつれて、サンプル平均がガウス分布に近似することを示しています。統計において意味を発見するには、データの解釈が非常に重要です。統計的仮説検定または有意性検定は、データ分布に関する主張を行ったり、2 つのサンプルを比較したりするために、機械学習で使用されます。仮説 0 または帰無仮説は、何も変化していないというデフォルトの仮定であり、統計的仮説検定は p 値または臨界値のいずれかを返す可能性があります。 p 値は仮説検定の結果を解釈し、帰無仮説を棄却するか棄却できなかった場合に使用される量です。一方、臨界値は検定統計量と標本分布を比較して、仮説を検証するのに十分な証拠があるかどうかを判断するために使用されます。帰無仮説を棄却します。
ビデオは、直交行列とテンソルについて説明しながら進みます。直交行列は、列と行が直交単位ベクトルである特定のタイプの正方行列です。これらの行列は、逆行列の計算において計算効率が高く安定しているため、深層学習モデルなどのさまざまなアプリケーションで役立ちます。このビデオではさらに、TensorFlow ではテンソルが基本的なデータ構造であり、ベクトルと行列を一般化したものであると述べています。テンソルは多次元配列として表現され、行列と同様に n 次元配列を使用して Python で操作できます。このビデオでは、加算や減算などの要素ごとのテンソル演算をテンソル、行列、ベクトルに対して実行できることを強調し、高次元の直感を提供します。
次に、ビデオでは行列をその構成部分に分解する方法である行列分解を紹介します。行列分解により、複雑な行列演算が簡素化され、効率的な計算が可能になります。広く使用されている 2 つの行列分解手法、正方行列の LU (Lower-Upper) 分解と、長方形行列の QR (QR 因数分解) 分解について説明します。
LU 分解は、線形回帰問題のコンテキストで線形方程式を簡素化し、行列式や逆行列などの計算を容易にします。 QR 分解は、連立一次方程式を解く際に応用できます。どちらの分解方法も、Python の NumPy パッケージの組み込み関数を使用して実装でき、さまざまな線形代数の問題に対して効率的で信頼性の高いソリューションを提供します。
さらに、ビデオでは、特に対称行列と正定行列に使用されるコレスキー分解について説明します。コレスキー分解は下三角行列で表され、対称行列の分解では LU 分解のほぼ 2 倍効率的であると考えられています。
01:00:00 直交行列とテンソルについて学びます。直交行列は、列と行が直交する単位ベクトルである正方行列の一種です。これらの行列は計算コストが低く、逆行列の計算が安定しており、深層学習モデルで使用できます。 Tensorflow では、テンソルは基礎となるデータ構造であり、多次元配列として表現されるベクトルと行列の一般化です。 Python では、行列と同様の n 次元配列を使用し、加算や減算などの要素ごとのテンソル演算でテンソルを操作できます。さらに、テンソル、行列、ベクトルに対してテンソル積演算を実行できるため、より高次元の直感が可能になります。
01:05:00 このビデオでは、行列を構成要素に削減し、分解行列に対して実行できるより複雑な行列演算を簡素化する方法である行列分解を紹介します。今後のレッスンで説明する 2 つの広く使用されている行列分解手法は、正方行列の LU 行列分解と、長方形行列の QR 行列分解です。 LU 分解は、線形回帰問題で線形方程式を簡略化し、行列の行列式と逆行列を計算するために使用できます。一方、QR 分解は、連立一次方程式を解く際に応用できます。どちらの分解も、Python の NumPy パッケージの組み込み関数を使用して実装できます。
Another free course to help you become a machine learning engineer in the real-world.LogikBot - Affordable, Real-World and Comprehensive - https://www.logikb...
この動画では、機械学習での BigQuery の使用に焦点を当てたコースの内容について説明します。 BigQuery はエンタープライズ データ ウェアハウスであり、当初は Google 社内で使用され、後にクラウド サービスになりました。スケーラビリティが高く、サーバーレスであり、ペタバイト規模のデータに対応し、高速なクエリ結果を提供できます。コースの指導は実際のケーススタディに基づいており、データの調達からモデルの作成まで機械学習モデルを構築するプロセスを通じて学習者をガイドします。コース全体を通じて、学習者は BigQuery を利用してモデルを構築し、BigQuery 専用の Google Cloud Platform (GCP) アカウントを設定する必要があります。
このビデオでは、ハードウェア リソースを拡張するための Google の指針を説明し、拡張ではなく拡張するという決定を強調しています。 Google は、ハードウェアがいつでも故障する可能性があることを認識しているため、設計では潜在的な故障を考慮する必要があります。さらに、Google は汎用ハードウェアを利用しているため、手頃な価格でベンダーの柔軟性が可能です。ハードウェアのコストが高いため、スケールアップよりもスケールアウトが推奨されます。 Google は、GFS、MapReduce、Bigtable などのテクノロジーを開発し、スケールアウトされたハードウェア アーキテクチャを実現しました。 Colossus は GFS に代わって、BigQuery を含む Google テクノロジーの基盤となる分散サブシステムとして機能します。
講師は、世界中に分散され、分散トランザクションの管理に Colossus を利用している Google のデータベース ソリューションである Spanner の概要を説明します。このビデオでは、Google Cloud Platform 内で請求先アカウントにサインアップして管理するプロセスも示しています。ユーザーは、プラットフォームの Web サイトにアクセスし、規約に同意し、必要な情報を提供することで GCP アカウントを作成できます。新規ユーザーには、GCP で使用できる 300 ドルのクレジットが付与されます。これは、請求セクションで監視できます。講師は、特定の請求目標に達したときに通知を受け取るように予算アラートを設定することをアドバイスしています。
01:15:00 このビデオでは、タイタニック データ セットでの機械学習の使用方法と、現実世界のシナリオでほとんどのモデルがリレーショナル データベースからどのように取得されるかについて説明します。 SQL Server Management Studio インターフェイスは、SQL Server データベースの管理に一般的に使用されるため導入されました。将来の売上を予測するために使用できるデータセットを作成するというタスクの仮説的なシナリオが示されています。このビデオでは、クエリを作成してテーブルを結合して有名人の注文履歴を作成する方法と、この情報をビューとして保存して簡単にクエリを実行し、CSV ファイルとしてエクスポートして他のユーザーと共有する方法を説明します。チーム。
A complete look at BigQuery for machine learning.LogikBot - Affordable, Real-World and Comprehensive - https://www.logikbot.comThere are two core paths on Lo...
Python でドルコスト平均戦略を簡単にバックテストする
Python でドルコスト平均戦略を簡単にバックテストする
次の 20 分ほどで、Python でドルコスト平均戦略を実装します。この戦略を使用すると、特定の資産またはインデックスに対するドルコスト平均法の一定期間のパフォーマンスを評価できます。この戦略を実装するには、backtesting.py というツールを使用します。 Backtesting.py は Python のユーザーフレンドリーなフレームワークで、Vectorbt や Backtrader などの他のライブラリに比べて威圧感がありません。 Python を初めて使用する場合は、これが最適なオプションになります。
これから実装するドルコスト平均法戦略は比較的単純ですが、それを拡張する方法も示します。私たちの戦略には、毎週月曜日または火曜日に特定の資産を固定ドルで購入し、データがなくなるまでこのプロセスを繰り返すことが含まれます。まず、ターミナルを開いて新しい仮想環境をセットアップし、実装にクリーンな環境を確保します。仮想環境をセットアップしたら、pip を使用してバックテスト パッケージをインストールします。
pip インストールのバックテスト
パッケージをインストールしたら、Python ファイルを続行できます。必要なモジュールとデータをインポートする必要があります。バックテストから、バックテストと戦略モジュールをインポートします。さらに、backtesting.test からいくつかのダミー データ、具体的には Google データをインポートします。データ操作には pandas モジュールも必要です。
次に、戦略クラスを定義しましょう。 Strategy クラスを継承する DCA (Dollar Cost Average) というクラスを作成します。このクラス内に、投資する固定金額を表す amount_to_invest というクラス変数を設定します。最初は 10 に設定します。
次に、このクラス内に __init__ と next という 2 つの関数を定義する必要があります。 __init__ 関数は初期化中に呼び出され、後で必要になる可能性のある値を事前に計算するために使用されます。私たちの場合は、曜日を示すインジケーターを作成します。これを行うには、backtesting.py によって提供される self.indicator メソッドを使用します。インジケーターを self.day_of_week = self.indicator(lambda x: x, self.data.close.s.dt.dayofweek) として定義できます。このインジケーターは、データの曜日値の配列 (0 ~ 6、月曜日が 0、日曜日が 6) を返します。
ここで、取引ロジックを実装する次の関数に進みましょう。この関数はデータのバーごとに呼び出され、現在のデータに基づいて意思決定を行うことができます。この例では、if self.day_of_week == 1: を使用して、曜日が 1 (火曜日) に等しいかどうかを確認します。火曜日であれば買いシグナルが発動します。買い注文を実行するには、backtesting.py が提供する self.buy 関数を使用します。 amount_to_invest を資産の現在の終値で割ることにより、買い注文のサイズを計算できます。整数の株を確実に購入するには、math.floor を使用して結果を切り捨てます。
端株を処理するには、資産に 10 ** -6 などの小さな数値を乗じて株式を分割できます。これにより、株式がマイクロシェアに分割され、後で同じ小さな数字で割ることによって実際に購入された株式の金額に換算できます。
最後に、バックテストを実行して統計を抽出する必要があります。これを行うには、bt.run() を使用し、結果を stats という変数に代入します。 bt.plot() を使用して結果をプロットすることもできます。
まだ販売ロジックを実装していないため、プロットは販売ポイントのない連続線として表示されます。それはすぐに修正します。その前に、バックテストの結果からいくつかの統計を抽出しましょう。
これを行うには、前に定義した stats 変数を使用します。トータルリターン、年率リターン、最大ドローダウンなどのさまざまな統計を出力できます。
他のパフォーマンス指標を調べることに興味がある場合は、自由に統計を追加してください。
次に、販売ロジックの実装に移りましょう。ドルコスト平均戦略を使用しているため、毎週同じ固定金額を販売します。私たちの場合は金曜日に販売します。
ここでは、前に作成した day_of_week インジケーターを使用して、曜日が 4 (金曜日) であるかどうかを確認します。金曜日の場合は、amount_to_invest を現在の終値で割ることにより、以前に購入したのと同じ金額を売ります。これにより、投資金額に見合った適切な数の株式を確実に売却することができます。
バックテストを実行すると、ポジションを売却する金曜日を示すセールスポイントがプロット上に表示されるはずです。
売買日を調整したり、価格変動に基づいて追加条件を実装したりするなど、この戦略のさまざまなバリエーションを自由に試してみてください。このフレームワークを使用すると、要件に応じて戦略を簡単に拡張およびカスタマイズできます。
忘れずに amount_to_invest 変数を調整し、さまざまな資産データを調査して、戦略がどのように実行されるかを確認してください。
これが、Python の backtesting.py ライブラリを使用したドルコスト平均戦略の実装と探索に役立つことを願っています。他にご質問がございましたら、お知らせください。
Backtesting.py のカスタム インジケーター - Python の詳細
Backtesting.py のカスタム インジケーター - Python の詳細
このビデオでは、backtesting.py ライブラリでカスタム インジケーターを作成するプロセスを説明します。この機能により、インジケーターを作成し、Python 関数を backtesting.py エコシステムと互換性のある形式に変換することで、あらゆる取引戦略を簡単にバックテストできるようになります。
インジケーター作成の詳細を掘り下げる前に、backtesting.py のほとんどの側面をカバーする YouTube で無料で利用できるコースをチェックすることをお勧めします。このコースでは、ライブラリの高度な理解を提供します。これは、このビデオでインジケーターの作成を検討する際に役立ちます。
このビデオでは、さまざまなインジケーターのアイデアをカバーするために 3 つの異なる例に焦点を当てます。最初の例では、外部 Python プログラムで生成されたシグナルを使用し、それらを backtesting.py に統合します。このアプローチは、外部ソースからの売買シグナルがすでにあり、それらをバックテスト プロセスに組み込みたい場合に役立ちます。
2 番目の例では、pandas-ta ライブラリを使用して各インジケーターに複数の値を返す方法を示します。具体的には、ボリンジャー バンド インジケーターを使用して、単純な numpy 配列ではなく、下位バンドと上位バンドの両方を含むデータ フレームを返す方法を紹介します。この例では、複数の値を持つインジケーターを作成する多用途性を強調します。
最後に、純粋な Python を使用してカスタム インジケーターを作成する方法を示すために、モメンタム戦略を手作業でコーディングします。この例では、Python プログラミングを使用してインジケーターを作成する柔軟性を示し、インジケーターの設計に無限の可能性をもたらします。
例に従うには、バックテスト、pandas、pandas-ta などの必要なライブラリがインストールされていることを確認してください。これらのライブラリをインストールしたら、コード例の Python ファイルを作成します。
コードの最初の部分では、backtesting.py を使用するときに必要なボイラープレートを設定します。必要なクラス「backtest」と「strategy」をインポートし、backtesting.py から Google 株のサンプル データをインポートします。インポートされたデータは、始値、高値、安値、終値、出来高を含む毎日の価格データと日時インデックスを含むパンダ データ フレームです。
最初の例では、外部プログラムでいくつかのシグナルをすでに生成しており、それらを backtesting.py に転送したいと想定しています。これを実証するために、numpy を使用してランダムな信号を作成し、Google データ フレームに追加します。これらのシグナルは、Python でプログラムした任意のインジケーターを表すことができます。-1 は売りシグナルを示し、0 はアクションがないことを示し、1 は買いシグナルを示します。
次に、前にインポートした「Strategy」クラスを継承する「SignalStrategy」という戦略クラスを定義します。このクラスは、シグナルに基づいた売買ロジックの実装を担当します。このクラスには初期化関数「 init 」と「next」関数が含まれています。
この特定の例では、「 init 」関数で行うことはあまりありませんが、これを含めることをお勧めします。 「次の」関数は、シグナルに基づいて売買ロジックが実装される場所です。
バックテストを実行するには、バックテスト クラスのインスタンスを作成し、Google データ フレームと「SignalStrategy」クラスを渡します。また、キャッシュ値を 10,000 に設定します。次に、バックテストを実行し、結果を「stats」変数に保存します。最後に、統計を出力して戦略のパフォーマンスを確認します。
まだ売買ロジックを実装していないため、この時点でコードを実行しても取引は発生しません。ただし、「next」関数内で「self.data.signal」を使用することでシグナル値にアクセスでき、最新のシグナル値が得られます。
売買ロジックを実装するには、現在のシグナル値と現在のポジションを確認します。シグナルが 1 (買いシグナル) で、既存のポジションがない場合は、「self.buy」を使用して買い注文を実行します。シグナルが-1(売りシグナル)で、既存のロングポジションがある場合、「self.sell」を使用して売り注文を実行します。
外部シグナル戦略:
カスタム インジケーターに pandas-ta を使用する:
GOOG などのプレースホルダーを実際のデータに置き換え、特定の要件に応じて戦略をカスタマイズすることを忘れないでください。
Backtesting.py のストップロス
Backtesting.py のストップロス
このビデオでは、「backtesting.py」ライブラリのストップロスの概念を見ていきます。このビデオでは、複雑さと深みが増す 3 つの例を取り上げ、「backtesting.py」のストップロスについて包括的に理解できるようにします。発表者は、「backtesting.py」についてある程度の予備知識があることを前提としており、この高度なトピックに入る前に、初心者向けの YouTube の無料コースを視聴することをお勧めします。
まず、ターミナルを開き、「pip install backtesting」コマンドを実行して「backtesting.py」がインストールされていることを確認します。これにより、必要なパッケージがすべてインストールされます。次に、新しい Python ファイルを作成し、これを「example.py」と呼び、必要なモジュール (「backtesting」から「backtest」と「strategy」、「backtesting.test」から「googledale」) をインポートします。 「googledale」は、「backtesting.py」に付属するテスト データセットです。
次に、「strategy」クラスを継承する「Strats」というクラスを作成して、strategy クラスを定義します。 2 つの必須関数「 init 」と「next」を実装します。この時点で、バックテストを実行する準備が整いました。 「backtest」関数を使用して、新しいバックテスト オブジェクト「bt」を初期化します。 「googledale」データと定義したばかりの戦略クラスを渡します。初期現金価値を 10,000 ドルに設定します。最後に、「bt.run」メソッドを使用してバックテストを実行し、「bt.plot」を使用して結果をプロットします。
最初は、戦略クラスは取引アクションを実行しません。単純なストップロスの例を示すために、基本的な売買ロジックを追加します。既存のポジションがある場合は、何もアクションを起こしません。ただし、ポジションがない場合は、ポジションのサイズ (例: 1 株) を指定して、「self.to_buy」メソッドを使用して買い注文を出します。さらに、ストップロスと利食いを追加します。ストップロスは現在の終値より 10 単位低く設定され、テイクプロフィットは現在の終値より 20 単位高く設定されます。
バックテストを実行すると、大量の取引が生成されます。取引が終了すると、ストップロスまたはテイクプロフィットがトリガーされない限り、次の足で新しい取引が開始されます。 「backtesting.py」がストップロスとテイクプロフィットをどのように処理するかを理解することが重要です。ストップロスとテイクプロフィットの両方が同じバーでトリガーされる場合、ライブラリはストップロスが最初にトリガーされると想定します。この動作は、特に大きなギャップがある可能性のある毎日のデータを扱う場合に、予期しない結果につながる可能性があります。
ストップロスをより効果的に管理するには、戦略クラスを拡張し、「backtesting.py」によって提供される「トレーリング戦略」を使用します。 「backtesting.lib」から「クロスオーバー」と「トレーリング戦略」を含む必要なモジュールをインポートします。新しい戦略クラスでは、基本の「戦略」クラスではなく「トレーリング戦略」から継承します。 「 init 」関数をオーバーライドして、「super」を使用して親クラスの「 init 」関数を呼び出します。次に、親クラスの「set_trailing_stop_loss」関数を使用して、トレーリング ストップ ロス値を設定します。
ビデオの次のセクションでは、プレゼンターが「トレーリング戦略」がどのように機能するのか、また特定の要件に合わせてカスタマイズする方法について詳しく説明します。ただし、このセクションでは、コード内で「トレーリング戦略」を利用することに焦点を当てます。親クラスの「 init 」関数を呼び出し、「set_trailing_stop_loss」関数を使用することにより、バックテストでトレーリング ストップロス機能を利用できます。
全体的に、ビデオでは「backtesting.py」でのストップロスの実装について段階的に説明しています。単純な例だけでなく、値を 10 に追跡するなどのより高度な概念もカバーしています。これは、ストップロスが価格を 10 単位追跡することを意味します。
初期化関数を設定したので、次の関数に進みましょう。ここで、取引ロジックの大部分が実装されます。 next 関数内では、まず super().next() を使用して親クラスの next 関数を呼び出します。これにより、トレーリングストップロス機能が他の取引ロジックとともに確実に実行されます。
次に、トレーリングストップロスを調整するコードを追加します。条件ステートメントを使用して、オープンポジションがあるかどうかを確認します (self.position が None ではない)。ポジションがある場合は、trailing_strategy クラスによって提供される update_trailing_sl メソッドを使用してトレーリング ストップロスを更新します。このメソッドは、現在の価格を引数として受け取り、それに応じてストップロスを更新します。
Python でのバックテスト検証 (ランダム性に騙される)
Python でのバックテスト検証 (ランダム性に騙される)
トレーディング戦略を作成し、それをバックテストし、最終的にそれを実行すると、期待どおりに機能しないという状況に誰もが陥ったことがあるでしょう。この失望の主な理由の 1 つは、バックテストで使用された特定の履歴データのセットに戦略が過剰適合していることです。このビデオでは、過学習に対抗するための戦略を示し、しっかりとした基盤のない戦略に依存したり、ランダム性に騙されたりしないようにします。
具体的な例を見てみましょう。資産としてビットコインを使用して、シンプルな RSI ベースの戦略でバックテストを実施しました。この戦略には、RSI が高いときに売り、RSI が低いときに買うことが含まれます。バックテストの結果は、テスト期間中にビットコインが15%下落したにもかかわらず、約3%という控えめなリターンを示した。一見すると、これは弱気市場にとって有望な戦略のように見えるかもしれません。
ただし、さまざまな時間枠で戦略のパフォーマンスを調査し、収益性の高い機会を一貫して特定しているのか、それともバックテスト中に選択したパラメーター値が単に幸運だったのかを判断することが重要です。これを達成するために、1 年を通してさまざまな期間をカバーする 30 日間のバックテストを複数回実施しました。
これらのバックテストからのリターンの分布をプロットすることで、戦略の有効性についての洞察を得ることができます。プロットでは、30 日間の各ウィンドウがドットとして表示され、その期間中に得られた収益が表されます。付属の箱ひげ図には、中央値リターン、四分位数、最大値、最小値が表示されます。プロットを分析すると、30 日間の収益中央値が -8.5% であることがわかります。さらに、収益の分布はランダムであるように見え、-35 ~ 15 の範囲に設定された乱数生成器から期待される結果と同様です。 これらの発見は、この戦略が独自のものではなく、戦略で使用された特定の履歴データを超えて効果的ではないことを強く示しています。バックテスト。
戦略を検証し、過剰適合の影響を軽減するには、より広範囲のデータに対してバックテストを実行する必要があります。この目的のために、2022 年の初めから年末までの 1 年全体をカバーする複数のデータ ファイルをダウンロードしました。これらのファイルを、全期間の 1 分間のローソク足データを含むマスター CSV に結合しました。
検証コードでは、拡張されたデータセットに対応するためにいくつかの小さな調整を加えました。中核となる戦略は変わらず、RSI ベースの取引ロジックに重点を置いています。ただし、データ全体にわたって 30 日間のウィンドウでバックテストを実行するループを導入しました。各バックテストでリターンが計算され、さらに分析するためにリストに追加されます。
収集したリターンを使用して箱ひげ図を生成することにより、さまざまな 30 日間のウィンドウにわたる戦略パフォーマンスの分布を視覚化できます。このプロットは、収益の変動性を明らかにし、さまざまな時間間隔で戦略がどのように実行されるかをより明確に示します。この特定の例では、プロットはほぼ毎月、主にマイナスの収益を示しており、この戦略には一貫した収益性が欠けていることが示唆されています。
取引戦略を検証および検証するためのこれらのテクニックは、任意のバックテスト フレームワークに適用できます。提供されているコードは backtesting.py ライブラリを利用していますが、vectorbt や backtrader などの他のライブラリに適応させることもできます。重要な考え方は、戦略がさまざまな時間枠にわたって堅牢性を実証し、特定の過去のデータセットへの単純な過剰適合の結果ではないことを保証することです。
これらの検証手順に従うことで、現実に基づいていない戦略に依存したり、ランダムな結果の犠牲になったりするリスクを軽減できます。トレーディング戦略を実行する際には、情報に基づいた意思決定を行うために、バックテストのパフォーマンスを超えて、さまざまな市場状況における戦略の有効性を検討することが不可欠です。
バックテストの結果とさまざまな時間枠にわたるリターンの分布を分析した結果、戦略のパフォーマンスは本質的にランダムであることがわかりました。バックテストに使用した特定の期間以外では、一貫した収益性は得られませんでした。これは、戦略が過剰適合に悩まされ、堅牢性に欠けていたことを示しています。
過剰適合の罠に陥ることを避け、信頼できる取引戦略を開発する可能性を高めるために、以下の推奨事項をいくつか紹介します。
十分で多様なデータを使用する: さまざまな市場状況をカバーするために、バックテストに大量の過去のデータが組み込まれていることを確認します。これにより、より幅広いシナリオを捉えることができ、特定の市場状況への過剰適合の可能性が軽減されます。
複数の時間枠で検証する: バックテストを単一の期間だけに依存するのではなく、さまざまな時間枠で戦略をテストします。これにより、さまざまな市況下でのパフォーマンスに関する洞察が得られ、その戦略に一貫した収益性があるかどうか、または観察された結果がランダム性によるものかどうかを特定するのに役立ちます。
アウトオブサンプル テストの実装: アウトオブサンプル テスト用に履歴データの一部を予約します。初期データセットでプライマリ バックテストを実行した後、モデルがこれまでに見たことのない予約データで戦略を検証します。これは、目に見えない市場状況に適応する戦略の能力を評価するのに役立ち、そのパフォーマンスのより現実的な評価を提供します。
カーブフィッティングに注意してください: 戦略を過去のデータに近づけすぎて過度の最適化やパラメータ調整を行わないでください。特定のデータパターンに合わせすぎた戦略は、現実世界の取引では失敗する可能性が高くなります。過去のデータだけで優れたパフォーマンスを追求するのではなく、堅牢性を目指します。
ウォークフォワード分析を検討する: 静的なバックテストのみに依存するのではなく、ウォークフォワード分析の使用を検討してください。これには、新しいデータが利用可能になったときに戦略を定期的に再最適化し、再テストすることが含まれます。これにより、継続的に戦略を適応させて微調整し、変化する市場状況におけるパフォーマンスを向上させることができます。
統計的有意性テストを使用する: 統計的テストを適用して、戦略のパフォーマンスの重要性を評価します。これは、観察された結果が統計的に意味があるのか、それとも単なる偶然によるものなのかを判断するのに役立ちます。バックテストで使用される一般的な統計テストには、t テスト、ブートストラップ テスト、モンテカルロ シミュレーションなどがあります。
これらのガイドラインに従うことで、過去のデータに過度に適合した戦略を開発するリスクを軽減し、堅牢で信頼性の高い取引アプローチを作成できる可能性を高めることができます。
目標は、単に過去のデータに基づいて優れたパフォーマンスを発揮する戦略ではなく、さまざまな市場状況にわたって一貫した収益性を実証するトレーディング戦略を開発することであることを忘れないでください。
機械学習エンジニアのための Python 入門
機械学習エンジニアのための Python 入門
コースのインストラクターは、予測モデリングの概念と業界におけるその重要性を紹介することから始めます。予測モデリングは、たとえ予測が行われる理由の説明が得られない場合でも、正確な予測を行うことができるモデルの開発に焦点を当てています。講師は、このコースでは特にスプレッドシートやデータベースなどの表形式のデータに焦点を当てることを強調しました。目標は、学生を Python での機械学習に興味のある開発者から、新しいデータセットの操作、エンドツーエンドの予測モデルの開発、機械学習タスクでの Python と SCIPy ライブラリの活用に習熟できるよう導くことです。
まず、インストラクターが Python 構文の短期集中コースを提供します。これらは、変数や代入などの基本的な概念をカバーし、代入に使用される「等号」記号と等価比較に使用される「二重等号」記号の区別を明確にします。インストラクターは、Python コーディングに Jupyter Notebook を使用する方法をデモンストレーションし、新しいノートブックの作成、ライブラリのエイリアスの使用、セルの実行、セルのコピーまたは移動などのナビゲーションに関するヒントを提供します。また、ノートブックの自動保存機能と手動保存についても説明します。最後に、ビデオではカーネルの実行の停止について簡単に触れています。
次に、インストラクターは、Python エンジン ナビゲーションのために Jupyter Notebook のツールバーを使用する方法と、Markdown を使用してノートブックに注釈を付ける方法を説明します。このビデオでは、if-then-else 条件、for ループ、while ループなどの重要なフロー制御ステートメントについて説明します。これらのステートメントにより、Python コード内での意思決定と繰り返しが可能になります。次に、インストラクターは、機械学習に重要な 3 つのデータ構造、タプル、リスト、辞書を紹介します。これらのデータ構造は、データを保存および操作するための効率的な方法を提供します。さらに、ビデオには、Python で数値演算を可能にするライブラリである NumPy に関する短期集中コースも含まれています。配列の作成、データへのアクセス、配列を使用した算術演算の実行について説明します。
ビデオでは、データ分析と視覚化のための機械学習で一般的に使用される 2 つの必須ライブラリ、Matplotlib と Pandas について説明します。 Matplotlib を使用すると、ユーザーはさまざまなプロットやチャートを作成でき、データの視覚化が容易になります。一方、Pandas は、特にシリーズとデータ フレーム構造を通じて、データ操作と分析のためのデータ構造と関数を提供します。このビデオでは、機械学習アプリケーションで最も一般的な形式である CSV ファイルをロードするための Pandas の read_csv 関数の重要性を強調しています。また、洞察を得て機械学習タスク用にデータを準備するためにデータを要約およびプロットするための Pandas 関数の有用性も強調します。 Python の記述統計は、データの特性と性質を理解するための重要なツールとして言及されています。
このビデオでは、機械学習技術を適用する前のデータ分析に役立つ具体的なデータ視覚化技術について詳しく説明します。ヒストグラム、密度プロット、箱ひげ図は、属性の分布を観察し、潜在的な外れ値を特定する方法として導入されています。相関行列と散布図行列は、属性のペア間の関係を識別する方法として提示されます。このビデオでは、機械学習アルゴリズム用のデータを準備するために必要な前処理ステップとして、データの再スケーリング、標準化、正規化、およびバイナリ化の重要性を強調しています。データ前処理の一般的なアプローチとして、当てはめと変換の方法について説明します。
次のトピックは、機械学習におけるデータ前処理手法について説明します。このビデオでは、2 つの重要な技術として正規化と標準化について説明しています。正規化には、同じスケールになるように属性を再スケールすることが含まれますが、標準化には、平均が 0、標準偏差が 1 になるように属性を変換することが含まれます。データのしきい値を設定してバイナリ属性または鮮明な値を作成するバイナリ化についても説明します。無関係または部分的に無関係な特徴がモデルのパフォーマンスに悪影響を与える可能性があるため、特徴選択の重要性が強調されます。このビデオでは、特徴選択への統計的アプローチの 1 つとして単変量選択を紹介し、ランダム フォレストやエクストラ ツリーなどのデシジョン ツリー アンサンブルを利用する再帰的特徴除去および特徴重要度手法の使用を強調しています。主成分分析 (PCA) は、線形代数を使用してデータセットをより少ない次元数に圧縮できるデータ削減手法としても説明されています。
このビデオでは、目に見えないデータに対する機械学習アルゴリズムのパフォーマンスを評価するためのリサンプリング手法の重要性を強調しています。トレーニングに使用したのと同じデータセットでアルゴリズムを評価することは、過剰適合や新しいデータへの一般化の低下につながる可能性があるため、警告しています。アルゴリズムのパフォーマンスの信頼できる推定値を取得する方法として、トレーニングとテストの分割セット、k 分割相互検証、1 つ除外相互検証、反復ランダム テスト分割などの手法が説明されています。このビデオは、分類精度、対数損失、曲線下面積、混同行列、分類レポートなど、機械学習アルゴリズムのさまざまなパフォーマンス指標についての説明で終わります。
このビデオでは、機械学習モデルによって行われた予測を評価するために使用されるパフォーマンス メトリックについて詳しく説明します。分類精度、対数損失 (確率の評価用)、受信者動作特性 (ROC) 曲線下面積 (バイナリ分類問題用)、混同行列 (複数のクラスによるモデル精度の評価用)、および分類レポート (精度を提供する) をカバーします。 、リコール、F1 スコア、および各クラスのサポート)。さらに、ビデオでは、平均絶対誤差、平均二乗誤差、R 二乗という 3 つの一般的な回帰指標について説明しています。 Python を使用してこれらのメトリクスを計算する方法を説明するために、実践的な例が示されています。
講演者は、特定の問題に対してどの機械学習アルゴリズムが適切に機能するかを判断するためのスポット チェックの概念を紹介します。スポットチェックには、複数のアルゴリズムを評価し、そのパフォーマンスを比較することが含まれます。このビデオでは、Python と scikit-learn ライブラリを使用して、線形アルゴリズムと非線形アルゴリズムの両方を含む 6 つの異なる機械学習モデルのスポット チェックを示します。講演者は、モデルの確率的性質により結果が異なる可能性があることを強調しました。このセクションは回帰機械学習モデルの紹介で終わり、これらのモデルをスポット チェックする次のセクションに向けて視聴者を準備させます。
次に、講演者はボストンの住宅価格データセットを例として使用して、線形および非線形の機械学習モデルを紹介します。 10 分割相互検証を備えたテスト ハーネスを使用して、各モデルをスポット チェックする方法を示し、平均二乗誤差がパフォーマンス指標として使用されます (ファイル間スコア関数の特殊性により反転されています)。入力変数のガウス分布と出力変数との関連性を仮定した線形回帰モデルについて説明します。モデルの複雑さを最小限に抑える線形回帰の修正であるリッジ回帰についても説明します。講演者は、この段階で特定のコード実装に囚われるのではなく、パイプラインまたはプロセスを理解することの重要性を強調しました。
このビデオでは、機械学習の問題の入力変数を理解し、視覚化するプロセスを説明します。入力変数の分布を理解するために、箱ひげ図やヒストグラムなどの一変量プロットを使用することを提案しています。多変量解析の場合、散布図は入力変数間の構造的関係を特定し、特定の属性ペア間の高い相関関係を明らかにするのに役立ちます。このビデオでは、10 分割相互検証によるテスト ハーネスを使用してモデルのパフォーマンスを評価する評価プロセスについても説明しています。最良のモデルの精度を独立して評価するための検証データセットを作成することの重要性が強調されます。 6 つの異なる機械学習モデルが評価され、予測を行うために最も正確なモデルが選択されます。分類レポート、混同行列、および精度推定は、予測を評価するために使用されます。最後に、ビデオでは正則化回帰について触れ、回帰モデルの複雑さを軽減するための Lasso モデルと Elastic Net モデルの構築を強調しています。
このビデオでは、機械学習における二項分類問題を紹介しており、ソナー鉱山対岩石データセットを使用して岩石から金属を予測することを目的としています。データセットには、クラス属性を含む 61 の属性を持つ 208 のインスタンスが含まれています。記述統計が分析され、データは同じ範囲内にあるものの、異なる平均値によりデータの標準化が有益である可能性があることが示されます。ヒストグラム、密度プロット、相関の視覚化などの単峰性および多峰性のデータ視覚化を調査して、データに関する洞察を得ることができます。検証データセットが作成され、線形回帰、ロジスティック回帰、線形判別分析、分類回帰ツリー、サポート ベクター マシン (SVM)、単純ベイズ、k 最近傍法 ( KNN)。各アルゴリズムの精度は 10 分割相互検証を使用して計算され、比較されます。
次のセグメントでは、ビデオで標準化されたデータとチューニングを使用してさまざまな機械学習アルゴリズムを評価する方法について説明します。標準化にはデータの変換が含まれるため、各属性の平均は 0、標準偏差は 1 となり、特定のモデルのパフォーマンスを向上させることができます。変換プロセス中のデータ漏洩を防ぐために、データを標準化し、相互検証テスト ハーネスの各フォールドのモデルを構築するパイプラインが推奨されます。このビデオでは、トレーニング データセットの標準化されたコピーに対する 10 分割相互検証によるグリッド検索を使用した、k 最近傍 (KNN) とサポート ベクター マシン (SVM) の調整手法を示します。 KNN と SVM の最適な構成が特定され、モデルの精度が評価されます。最後に、ビデオでは、非線形機械学習モデルとしての KNN、決定木回帰、および SVM について簡単に説明します。
機械学習エンジニアのための応用統計学
機械学習エンジニアのための応用統計学
ビデオの講師は統計の分野を紹介し、機械学習における予測モデリングの問題に取り組む際の統計の重要性を強調しています。彼らは、統計学には単純な要約統計から仮説検定や推定統計に至るまで、さまざまな手法が提供されると説明しています。このコースは、Python での実践的な例を使用して、統計手法の段階的な基礎を提供するように設計されています。機械学習の統計の 6 つの主要な側面をカバーし、現実世界のアプリケーションに重点を置いているため、機械学習エンジニアに適しています。
インストラクターは、機械学習と統計の密接な関係を強調し、プログラマーがこのコースを通じて統計スキルを向上させることで恩恵を受けることができると示唆しています。彼らは統計の分野を記述統計と推論統計の 2 つのカテゴリに分類します。記述統計には、平均やグラフ表示などの測定値を使用してデータを要約し、記述することが含まれます。一方、推論統計は、サンプルデータに基づいてより大きな母集団について推論するために使用されます。
データの損失、破損、エラーへの対処など、適切なデータ処理の重要性も強調されています。次に、ビデオでは、機械学習モデルのデータ準備に含まれるさまざまな手順を詳しく説明します。これには、標準化や正規化などの統計手法を使用したデータ クレンジング、データ選択、データ サンプリング、データ変換が含まれます。データ評価も重視されており、ビデオでは実験計画、データのリサンプリング、モデルのスキルを推定するためのモデルの選択について説明しています。新しいデータを予測するために、ビデオでは推定統計の使用を推奨しています。
このビデオでは、統計で使用されるさまざまな測定スケール、つまり名目スケール、序数スケール、間隔スケール、比率スケールについて説明しています。各スケールに適用できる統計手法と、それらを機械学習に実装する方法について説明します。モデリングにおける不確実性を理解し、報告することの重要性は、特にサンプルセットを扱う場合に強調されます。次に、ビデオでは、さまざまなデータセットで一般的に観察される正規分布に焦点を当てます。サンプル データを生成し、ヒストグラムを使用してガウス分布への適合性を視覚的に評価する方法を示します。ほとんどのデータセットは完全なガウス分布を持っていませんが、多くの場合、ガウスに似た特性を示します。
基礎となるガウス分布を明らかにするためにデータを分割する詳細な方法を選択することの重要性が強調されています。平均や中央値などの中心傾向の尺度が、分布の広がりの尺度としての分散や標準偏差とともに調査されます。ランダム性は、アルゴリズムの堅牢性と正確性を高めるのに役立つ、機械学習における重要なツールとして議論されています。データエラーやノイズなど、ランダム性のさまざまな原因について説明します。
このビデオでは、機械学習アルゴリズムでは、より優れたパフォーマンスを達成し、より最適なモデルを生成するためにランダム性を活用することが多いと説明しています。ランダム性により、アルゴリズムはさまざまな可能性を探索し、データのより適切なマッピングを見つけることができます。ランダム性の制御可能なソースと制御不可能なソースについて説明し、モデル内でランダム性を一貫させるためのシード関数の使用について説明します。このビデオでは、Python ランダム モジュールを使用して乱数を生成する例を示し、numpy ライブラリの擬似乱数ジェネレーターと標準ライブラリの擬似乱数ジェネレーターの違いを強調しています。乱数ジェネレーターをいつシードするかについての 2 つのケース、つまりデータ準備時とデータ分割時についても説明します。
アルゴリズムを評価する際には、データを一貫して分割し、擬似乱数ジェネレーターを使用することが重要です。このビデオでは、測定された不確実性とアルゴリズムのパフォーマンスを組み込んだ方法でモデルを評価することを推奨しています。データの複数の分割でアルゴリズムを評価すると、さまざまなトレーニング データやテスト データによってパフォーマンスがどのように変化するかについての洞察が得られます。同じデータ分割でアルゴリズムを複数回評価すると、そのパフォーマンスが単独でどのように変化するかを理解するのに役立ちます。このビデオでは、大数の法則と中心極限定理についても紹介しており、より多くのデータがあればモデルのパフォーマンスが向上すること、サンプル サイズが増加するにつれて平均の分布がガウス分布に近づくことを強調しています。
このビデオでは、サイコロの出目とコードを使用して中心極限定理を示し、サンプル サイズが増加するにつれてサンプル平均がどのようにガウス分布に近似するかを示しています。
このビデオでは、機械学習モデルを評価し、その予測に含まれる不確実性を理解することの重要性を強調しています。分類モデルのパフォーマンスを評価するために一般的に使用される、精度、適合率、再現率、F1 スコアなどの評価指標が導入されています。このビデオでは、精度は予測の全体的な正しさを測定し、精度はすべての陽性予測のうち真陽性予測の割合を測定し、再現率はすべての実際の陽性例のうち真陽性予測の割合を測定し、F1 スコアは精度と再現率を組み合わせて次のように説明します。単一のメトリック。また、混同行列の概念についても説明します。混同行列は、真陽性、真陰性、偽陽性、および偽陰性の予測の数を示すことにより、分類モデルのパフォーマンスをより詳細に表示します。
講演者は、Python の scikit-learn ライブラリを使用してこれらの評価指標を計算する方法をデモンストレーションします。必要なモジュールをインポートし、データをトレーニング セットとテスト セットに分割し、分類モデルをトレーニングし、テスト セットで予測を行い、精度、適合率、再現率、F1 スコアを使用してモデルのパフォーマンスを評価する方法を示します。このビデオでは、一般化機能を確保するために、目に見えないデータに基づいてモデルを評価することの重要性を強調しています。
さらに、ビデオでは、二項分類モデルの評価指標として、受信者動作特性 (ROC) 曲線と曲線下面積 (AUC) の概念が紹介されています。 ROC 曲線は、さまざまな分類しきい値での真陽性率と偽陽性率をプロットし、さまざまなしきい値にわたるモデルのパフォーマンスを視覚的に表現します。 AUC は ROC 曲線の下の領域を表し、さまざまなモデルのパフォーマンスを比較するための単一の指標を提供します。このビデオでは、Python の scikit-learn ライブラリを使用して ROC 曲線をプロットし、AUC を計算する方法を説明しています。
過学習の概念は、機械学習における一般的な問題として説明されています。つまり、モデルはトレーニング データに対しては良好に機能しますが、新しいまだ見たことのないデータには一般化できません。このビデオでは、モデルが複雑になりすぎて、一般母集団には当てはまらないトレーニング データに特有のパターンを学習すると過学習が発生することが説明されています。このビデオでは、モデルのトレーニングとテストのパフォーマンスを比較することで、過学習を視覚化する方法を示しています。これは、オーバーフィット モデルのトレーニング エラーは低いがテスト エラーが高く、一般化が不十分であることを示していると説明しています。このビデオでは、モデルの目的関数にペナルティ項を追加することで過学習を軽減する方法として、リッジ回帰やラッソ回帰などの正則化手法を提案しています。
相互検証の概念は、機械学習モデルのパフォーマンスと一般化を評価する手法として導入されています。このビデオでは、相互検証にはデータを複数のサブセットに分割し、データの一部でモデルをトレーニングし、残りの部分でそのパフォーマンスを評価することが含まれることが説明されています。このプロセスは、トレーニングとテストに異なるサブセットを使用して複数回繰り返され、結果が平均されてモデルのパフォーマンスの推定値が得られます。このビデオでは、Python の scikit-learn ライブラリ、特に K 分割相互検証メソッドを使用して相互検証を実行する方法を示します。
次に、ビデオでは、機械学習における特徴選択の概念と重要性について説明します。特徴の選択には、モデルのパフォーマンスに寄与する最も関連性の高い特徴または変数を特定することが含まれると説明されています。このビデオでは、モデルの精度を向上させ、過剰適合を減らし、解釈可能性を高めるために有益な特徴を選択することの重要性を強調しています。単変量選択、再帰的特徴除去、特徴重要度スコアなどのさまざまな特徴選択手法が導入されています。このビデオでは、Python の scikit-learn ライブラリを使用して機能選択を実装する方法を示します。
次元削減の概念は、機械学習における次元の呪いに対処する手法としても説明されています。このビデオでは、次元削減には、関連情報のほとんどを維持しながら、データセット内の特徴または変数の数を減らすことが含まれることが説明されています。一般的に使用される次元削減手法として主成分分析 (PCA) が紹介されています。 PCA は、データ内の最大分散の方向を特定することにより、データを低次元空間に変換することを目的としています。このビデオでは、PCA が元の特徴の線形結合である主成分と呼ばれる新しい特徴を作成することを説明しています。これらの主成分はデータ内の最も重要な情報を取得し、機械学習モデルの入力として使用できます。
このビデオでは、Python の scikit-learn ライブラリを使用して PCA を実行する方法を示します。必要なモジュールをインポートし、データを標準化し、PCA オブジェクトを初期化し、PCA モデルをデータに適合させ、データを低次元空間に変換する方法を示します。このビデオでは、説明された分散比に基づいて保持する最適な主成分の数を決定する方法も説明しています。
アンサンブル学習の概念は、複数の個別のモデルを組み合わせることによって機械学習モデルのパフォーマンスを向上させる手法として導入されています。このビデオでは、アンサンブル学習は群衆の知恵を活用し、個々のモデルが独自の予測に貢献し、最終的な予測は投票または平均メカニズムに基づいて決定されると説明しています。このビデオでは、バギングとブースティングという 2 つの一般的なアンサンブル学習方法について説明します。バギングでは、データの異なるサブセットで複数のモデルをトレーニングし、その予測を集約することが含まれます。一方、ブーストでは、モデルを順次トレーニングすることに焦点を当て、各モデルは以前のモデルによって誤って分類されたインスタンスをより重要視します。
このビデオでは、Python の scikit-learn ライブラリを使用してアンサンブル学習を実装する方法を示します。バギングとブースティングに必要なモジュールをインポートし、アンサンブル モデルを初期化し、データに適合させ、アンサンブル モデルを使用して予測を行う方法を示します。このビデオでは、アンサンブル学習により機械学習モデルの全体的なパフォーマンスと堅牢性が向上することが多いと強調しています。
最後に、ビデオではディープ ラーニングや自然言語処理 (NLP) などの機械学習の高度なトピックについて簡単に触れています。深層学習には、データの複雑なパターンを学習するために複数の層で深層ニューラル ネットワークをトレーニングすることが含まれると述べています。 NLP は、人間の言語を理解して処理するためのモデルと技術の開発に焦点を当てており、テキスト分類、感情分析、機械翻訳などのアプリケーションを可能にします。このビデオは、機械学習が広大で急速に進化する分野であり、さらなる探索と学習のための多くのアプリケーションと機会があることを強調して締めくくられています。
このビデオでは、モデル評価、過剰適合、正則化、相互検証、特徴選択、次元削減、アンサンブル学習、深層学習と NLP の紹介など、機械学習の重要な概念と手法の包括的な概要を提供します。 Python と scikit-learn ライブラリを使用した実践的な実装を示しており、初心者や機械学習の理解を深めたい人にとって貴重なリソースとなっています。
機械学習エンジニアのための応用線形代数
機械学習エンジニアのための応用線形代数
このビデオでは、線形代数は機械学習に不可欠な微積分と統計を理解するための基本的な構成要素として機能するため、機械学習エンジニアにとって線形代数を学習することの重要性を強調しています。線形代数をより深く理解することで、実務者は機械学習手法がどのように機能するかをよりよく理解できるようになり、アルゴリズムをカスタマイズしたり、新しいアルゴリズムを開発したりできるようになります。
このコースでは、具体的な例とデータ構造を使用して行列とベクトルの演算をデモンストレーションしながら、線形代数の基礎を教えるトップダウンのアプローチを採用しています。線形代数は行列とベクトルの数学として説明され、データ操作のための言語を提供し、これらのデータ構造に対する操作を通じて新しい列や数値配列の作成を可能にします。線形代数は、1800 年代後半に連立一次方程式を解くために初めて開発され、機械学習を理解するための重要な前提条件になりました。
講演者は、コンピューターでの線形代数の応用を含む数値線形代数の概念を紹介します。これには、線形代数演算の実装と、デジタル コンピューターで限られた浮動小数点精度を扱うときに生じる課題への対処が含まれます。数値線形代数は、機械学習、特に線形代数計算を効率的に実行するためにグラフィカル プロセッシング ユニット (GPU) に大きく依存する深層学習アルゴリズムにおいて重要な役割を果たします。 Fortran ベースのライブラリを基盤とするさまざまなオープンソースの数値線形代数ライブラリは、線形代数演算の計算に一般的に使用され、多くの場合 Python などのプログラミング言語と組み合わせて使用されます。
統計における線形代数の重要性は、特に多変量統計解析、主成分分析、線形回帰問題の解決において強調されています。このビデオでは、信号処理、コンピューター グラフィックス、さらには物理学などの分野における線形代数の幅広い応用例についても言及されており、テンソルを利用したアルバート アインシュタインの相対性理論や、線形代数の一種であるテンソル微積分などの例が挙げられています。
このビデオでは、機械学習タスクにおける線形代数の実際的な応用についてさらに詳しく説明しています。トリミング、スケーリング、シャーリングなどの線形代数演算を使用して画像を操作する概念を紹介し、このコンテキストで線形代数の表記と演算をどのように使用できるかを示します。さらに、ビデオでは、カテゴリ変数のワンホット エンコーディングと呼ばれる一般的なエンコーディング手法について説明しています。機械学習で使用される主なデータ構造である N 次元配列または ND 配列が紹介され、これらの配列を作成および操作するための強力なツールとして Python の NumPy ライブラリが説明されています。このビデオでは、既存の配列から新しい配列を作成できる v スタックや水平スタッキングなどの重要な関数について説明します。
機械学習データを表すために一般的に使用される NumPy 配列内のデータの操作とアクセスについて説明します。このビデオでは、array 関数を使用して 1 次元のリストを配列に変換し、リストのリストを使用して 2 次元のデータ配列を作成する方法を示します。また、スライスと負のインデックス付けのためのコロン演算子の使用を含む、NumPy 配列でのインデックス付けとスライス操作についても説明します。機械学習で入力変数と出力変数を指定する際のスライスの重要性が強調されています。
機械学習で多次元データセットを操作するためのテクニックについては、ビデオで説明されています。これは、1 次元のスライスから始まり、トレーニングとテストのためにデータを入力値と出力値に分離するとともに、2 次元のスライスに進みます。配列の再形成について説明し、1 つ以上のタイム ステップと特徴の複数のサンプルを必要とするアルゴリズムのために、1 次元配列を 1 列の 2 次元配列に再形成する方法と、2 次元データを 3 次元配列に変換する方法を説明します。配列ブロードキャストの概念が導入され、さまざまなサイズの配列を算術演算に使用できるようになり、さまざまなサイズのデータ セットを効果的に処理できるようになります。
このビデオでは、NumPy の配列演算の制限、特に算術演算は同じ次元の配列と同じサイズの次元でのみ実行できることについても触れています。ただし、この制限は、NumPy の組み込みブロードキャスト機能によって克服されます。このブロードキャスト機能は、最後に一致しない次元に沿って小さい配列を複製し、形状やサイズが異なる配列間の演算を可能にします。このビデオでは、スカラー配列と 1 次元配列、2 次元配列内のスカラー、2 次元配列内の 1 次元配列など、ブロードキャストの 3 つの例を示しています。ブロードキャストは、配列内の各次元の形状が等しいか、配列の 1 つの次元サイズが 1 である場合にのみ演算を実行できるという厳密なルールに従っていることに注意してください。
次に、講演者は、スカラーと呼ばれる 1 つ以上の値のタプルであるベクトルの概念を紹介します。ベクトルは多くの場合、「v」などの小文字を使用して表され、n 次元空間内の点または座標として見ることができます。「n」は次元数を表します。 Python での NumPy 配列としてのベクトルの作成について説明します。このビデオでは、ベクトルの加算や減算などのベクトル算術演算も取り上げています。これらの演算は、同じ長さのベクトルに対して要素ごとに実行され、結果として同じ長さの新しいベクトルが生成されます。さらに、講演者は、ベクトルにスカラーを乗算してその大きさをスケールする方法を説明し、Python で NumPy 配列を使用してこれらの操作を実行する方法を示します。 2 つのベクトルのドット積についても説明します。これはスカラーを生成し、ベクトルの加重和を計算するために使用できます。
次に、ベクトル規範と機械学習におけるその重要性に焦点が移ります。ベクトル ノルムはベクトルのサイズまたは長さを指し、ベクトル空間の原点からのベクトルの距離を要約する尺度を使用して計算されます。すべてゼロ値のベクトルを除いて、ベクトルのノルムは常に正であることが強調されます。このビデオでは、機械学習で使用される 4 つの一般的なベクトル ノルム計算を紹介します。ベクトル L1 ノルムから始まり、L2 ノルム (ユークリッド ノルム)、最大ノルムが続きます。このセクションでは、行列の定義と、Python での行列の操作方法についても説明します。行列間の乗算 (ドット積)、行列ベクトルの乗算、およびスカラー乗算を含む行列演算について説明します。行列は、1 つ以上の列と 1 つ以上の行を含むスカラーの 2 次元配列として記述され、通常は「A」などの大文字で表されます。
次に、機械学習のための行列演算の概念を紹介します。これには、行列の乗算、行列の除算、および行列のスカラー倍算が含まれます。行列の乗算 (行列のドット積とも呼ばれます) では、最初の行列の列数が 2 番目の行列の行数と等しい必要があります。ビデオでは、NumPy のドット関数を使用してこの操作を実装できると述べています。元の行列の行数と列数を反転して新しい行列を作成する、行列の転置の概念についても説明します。最後に、逆行列のプロセスについて説明します。これには、元の行列と乗算すると単位行列が得られる別の行列を見つけることが含まれます。
逆行列の説明に引き続き、ビデオではこの概念をさらに詳しく説明します。行列の反転は、行列の横にある負の 1 の上付き文字で示されます。このビデオでは、逆行列には効率的な数値手法を見つけることが含まれると説明されています。正方行列のトレース操作が導入され、対角要素の合計が計算され、NumPy のトレース関数を使用して計算できます。正方行列の行列式は、行列の体積のスカラー表現として定義され、NumPy の関数 det を使用して計算することもできます。行列のランクについて簡単に説明します。これは行列内の線形に独立した行または列の数を推定し、通常は特異値分解を使用して計算されます。最後に、スパース行列の概念について説明し、スパース行列には主にゼロ値が含まれており、表現したり操作したりするのに計算コストがかかる可能性があることを強調します。
次に、ビデオでは疎行列について詳しく説明します。疎行列とは、主にゼロ値で構成される行列であり、ほとんどがゼロ以外の値を持つ密行列とは異なります。スパース性は、ゼロ値の数を行列内の要素の総数で割ったスパース性スコアを計算することによって定量化されます。このビデオでは、スパース性に関連する 2 つの主な問題、空間の複雑さと時間の複雑さを強調しています。スパース行列の表現と操作は計算コストがかかる可能性があることに注意してください。
これらの課題に対処するために、ビデオでは、Scipy が疎行列を作成および操作するためのツールを提供していると述べています。さらに、NumPy と Scipy の多くの線形代数関数が疎行列で動作し、疎データに対する効率的な計算と演算が可能になることも強調しています。
スパース行列は、データの観察とデータの準備のための応用機械学習で一般的に使用されます。それらのスパース性により、多数のゼロ値を含む大規模なデータセットのより効率的な保存と処理が可能になります。スパース構造を活用することで、機械学習アルゴリズムはメモリ使用量の削減と計算の高速化の恩恵を受けることができます。
次に、ビデオでは、線形代数で一般的に使用されるさまざまな種類の行列、特に機械学習に関連する行列について説明します。行数と列数が等しい正方行列が導入されます。行数と列数が異なる長方形行列についても説明します。このビデオでは、同じ行インデックスと列インデックスを持つ要素で構成される正方行列の主対角について説明します。行数または列数として定義される正方行列の次数についても説明します。
さらに、ビデオでは、転置と等しい正方行列である対称行列が紹介されています。上三角行列と下三角行列を含む三角行列について説明します。すべての非対角要素がゼロである対角行列についても説明します。恒等行列は、主対角に 1 があり、それ以外の場所に 0 がある正方行列であり、乗法恒等としての役割の文脈で説明されます。 2 つのベクトルの内積が 0 に等しい場合に形成される直交行列も導入されます。
ビデオは、直交行列とテンソルについて説明しながら進みます。直交行列は、列と行が直交単位ベクトルである特定のタイプの正方行列です。これらの行列は、逆行列の計算において計算効率が高く安定しているため、深層学習モデルなどのさまざまなアプリケーションで役立ちます。このビデオではさらに、TensorFlow ではテンソルが基本的なデータ構造であり、ベクトルと行列を一般化したものであると述べています。テンソルは多次元配列として表現され、行列と同様に n 次元配列を使用して Python で操作できます。このビデオでは、加算や減算などの要素ごとのテンソル演算をテンソル、行列、ベクトルに対して実行できることを強調し、高次元の直感を提供します。
次に、ビデオでは行列をその構成部分に分解する方法である行列分解を紹介します。行列分解により、複雑な行列演算が簡素化され、効率的な計算が可能になります。広く使用されている 2 つの行列分解手法、正方行列の LU (Lower-Upper) 分解と、長方形行列の QR (QR 因数分解) 分解について説明します。
LU 分解は、線形回帰問題のコンテキストで線形方程式を簡素化し、行列式や逆行列などの計算を容易にします。 QR 分解は、連立一次方程式を解く際に応用できます。どちらの分解方法も、Python の NumPy パッケージの組み込み関数を使用して実装でき、さまざまな線形代数の問題に対して効率的で信頼性の高いソリューションを提供します。
さらに、ビデオでは、特に対称行列と正定行列に使用されるコレスキー分解について説明します。コレスキー分解は下三角行列で表され、対称行列の分解では LU 分解のほぼ 2 倍効率的であると考えられています。
このビデオでは、複雑な演算を簡略化するために固有分解を含む行列分解手法が採用されていることについて簡単に説明しています。固有分解では、行列を固有ベクトルと固有値に分解します。固有ベクトルは方向を表す係数であり、固有値はスカラーです。固有ベクトルと固有値はどちらも、次元削減や複雑な行列演算の実行など、実用的な用途があります。
最後に、ビデオでは特異値分解 (SVD) の概念と機械学習におけるその応用について触れています。 SVD は、機械学習におけるさまざまな行列演算やデータ削減手法で使用されます。これは、最小二乗線形回帰、画像圧縮、データのノイズ除去などの計算において重要な役割を果たします。
このビデオでは、SVD によって行列を U、Σ、V の 3 つの個別の行列に分解できることが説明されています。U 行列には左の特異ベクトルが含まれ、Σ は特異値を含む対角行列で、V には右の特異ベクトルが含まれます。これらのコンポーネントから元の行列を再構成することにより、次元を削減しながら元のデータの近似値を取得できます。
SVD の主な用途の 1 つは次元削減です。最も重要な特異値のサブセットとそれに対応する特異ベクトルを選択することにより、重要な情報を失うことなくデータを低次元空間で表現することができます。この手法は、より効率的なストレージと計算を可能にするため、データの次元が高い場合に特に役立ちます。
このビデオでは、潜在意味分析 (LSA) または潜在意味インデックス作成 (LSI) と呼ばれる技術を使用して、SVD が自然言語処理にうまく適用されていることを強調しています。テキスト文書を行列として表し、SVD を実行することにより、LSA は文書の基礎となる意味構造を捕捉し、文書の類似性やトピックのモデリングなどのタスクを可能にします。
さらに、ビデオでは、行列の次元を削減する機能を直接実装する truncated SVD クラスが紹介されています。切り捨てられた SVD を使用すると、最も重要な情報を保持しながら、元の行列を低次元の表現に変換することが可能になります。この手法は、より効率的な処理と分析が可能になるため、大規模なデータセットを扱う場合に特に有益です。
要約すると、このビデオでは機械学習の線形代数に関連するさまざまなトピックを取り上げています。機械学習の文脈で微積分と統計を理解するための基本的な構成要素として線形代数を学習することの重要性が強調されています。このビデオでは、アルゴリズムのカスタマイズと開発、数値線形代数、統計解析、信号処理やコンピューター グラフィックスのような他のさまざまな分野など、機械学習における線形代数の応用について説明しています。
さらに、ビデオでは、ベクトル、行列、行列演算、ベクトルノルム、行列分解手法、スパース行列など、線形代数の主要な概念についても説明しています。これらの概念が機械学習でどのように使用されるかを説明し、実際のアプリケーションへの洞察を提供しました。
線形代数を理解することで、機械学習の実践者は、機械学習アルゴリズムの基礎となる数学的基礎をより深く直感的に理解し、それらを現実世界の問題に効果的に適用できます。線形代数は、データ操作、次元削減、最適化のための強力なツールとして機能し、効率的かつ効果的な機械学習ソリューションを可能にします。
機械学習エンジニアのための XGBoost の完全な紹介
機械学習エンジニアのための XGBoost の完全な紹介
ビデオでは、インストラクターが機械学習エンジニア向けに XGBoost の包括的な紹介を行っています。 XGBoost は、高精度の分類モデルと回帰モデルを迅速に構築できることで知られるオープンソースの機械学習ライブラリであると彼らは説明しています。これは、特に高度に構造化されたデータセットを扱う場合に、現実世界のモデルを構築するための最良の選択肢として人気を集めています。 XGBoost は Taiki Chen によって作成され、勾配ブースト デシジョン ツリー手法に基づいており、迅速かつ効率的なモデル構築を可能にします。
インストラクターは、XGBoost が Python や scikit-learn 実装を含む複数のインターフェイスをサポートしていることを強調しました。彼らは引き続き XGBoost のデモンストレーションを行い、データのロードとモデルの構築のためのさまざまなモジュールを紹介します。
このビデオでは、XGBoost モデルをトレーニングするためのデータセットの準備に焦点を当てています。インストラクターは、データをトレーニング セットとテスト セットに分離することの重要性を強調します。彼らはターゲット変数をバイナリ分類問題として特定し、XGBoost モデルに必要なハイパーパラメータを設定するプロセスを説明します。モデルがトレーニング データでトレーニングされると、精度スコアを指標として使用してテスト データでの精度が評価されます。
XGBoost をより深く理解するために、インストラクターは勾配ブースティングの概念と、従来の機械学習モデルのより広いカテゴリにおけるその役割を詳しく掘り下げます。彼らは、勾配ブースティングは、弱いモデルを同じタイプの他のモデルと組み合わせて、より正確なモデルを作成する手法であると説明しています。このプロセスでは、先行するツリーの予測残差に対して後続の各ツリーが構築されます。インストラクターは、デシジョン ツリーは、特定の条件に基づいて考えられる決定ソリューションをグラフィカルに表現するため、勾配ブースティングで使用されることを強調しました。また、デシジョン ツリーの設計には、潜在的な解決策を効果的に特定するための十分に文書化された思考プロセスが必要であるとも述べています。
このビデオでは、再帰的バイナリ分割を使用したバイナリ決定木の作成についてさらに詳しく説明しています。このプロセスには、すべての入力変数と分割点を貪欲な方法で評価して、予測値と実際の値の近さを測定するコスト関数を最小化することが含まれます。インストラクターは、コストが最も低い分割が選択され、結果として得られるグループを再帰的にさらに細分化できると説明します。彼らは、使用されるアルゴリズムが貪欲であり、各ステップで最善の決定を下すことに焦点を当てていることを強調しています。ただし、理解しやすさを確保し、データの過剰適合のリスクを軽減するために、分割の少ないデシジョン ツリーを使用することが望ましいです。インストラクターは、XGBoost が各ツリーの最大深さの制限や無関係なブランチの剪定など、過剰適合を防止するメカニズムを提供していることを強調しました。さらに、ラベルのエンコーディングについて説明し、scikit-learn を使用した iris データセットの読み込みを示します。
次に、ビデオでは、ラベル エンコーダー メソッドを使用してターゲット ラベルを数値変数としてエンコードするプロセスについて説明します。データをトレーニング データセットとテスト データセットに分割した後、インストラクターはトレーニング データに対して XGBoost 分類器を定義してトレーニングします。次に、トレーニングされたモデルを使用してテスト データセットに対して予測を行い、90% の精度を達成しました。アンサンブル学習の概念は、複数のモデルを組み合わせて予測精度を向上させ、最終的に学習アルゴリズムの効率を高める方法として導入されています。インストラクターは、最適な結果を達成するには、分類または回帰問題に適切なモデルを選択することの重要性を強調します。
このビデオでは、機械学習モデルのバイアスと分散の概念を詳しく掘り下げ、この 2 つのバランスの必要性を強調しています。アンサンブル学習は、弱学習器のグループを組み合わせてより複雑なモデルを作成することで、このバランスに対処する手法として紹介されています。バギングとブースティングという 2 つのアンサンブル テクニックが導入されています。バギングは、データのサブセットを作成してデシジョン ツリーをトレーニングし、分散が高くバイアスが低いモデルのアンサンブルを作成することで分散を削減することを目的としています。一方、ブースティングでは、デシジョン ツリーを使用してモデルを順次学習し、以前のモデルによって生じたエラーを修正できます。インストラクターは、勾配ブースティングが、回帰ツリーの形式の弱学習器を使用して微分可能な損失関数を最適化する特定のタイプのブースティングであることを強調します。
このビデオでは、勾配ブースティングの概念を詳細に説明し、その 3 段階のプロセスの概要を示しています。最初のステップでは、損失を最小限に抑えるために弱学習器 (決定木など) を繰り返し追加します。 2 番目のステップではツリーを順次追加し、最後のステップではさらなる反復を通じてモデルのエラーを減らすことに焦点を当てます。このプロセスをデモンストレーションするために、ビデオでは k 分割相互検証を使用してデータをセグメント化する方法を紹介します。 XGBoost を通じて、フォールドごとにスコアが取得されます。インストラクターは、弱い学習者としてデシジョン ツリーを選択し、過剰適合を避けるために浅い深さを確保します。最後に、損失関数は、機械学習モデルがデータにどの程度適合しているかを示す尺度として定義されます。
損失関数の最適化、弱学習器 (多くの場合決定木) の利用、アンサンブル学習による加算的な方法での複数の弱学習器の結合など、勾配ブースティングの中核となる手順について説明します。このビデオでは、欠損値の処理、モデルのディスクへの保存、早期停止の採用など、XGBoost の使用に関する実践的な側面も取り上げています。 XGBoost のさまざまな使用例を説明するために、Python コードを使用したデモが提供されています。さらに、このビデオでは、平均値補完などの欠損値を処理する手法を含むデータ クレンジングの重要性を強調しています。
講演者は、アルゴリズムのみに依存して作業を行うのではなく、データを適切にクリーニングすることの重要性について説明します。これらは、空の値を削除することでモデルの精度がどのように向上するかを示し、空の値を処理するアルゴリズムに対する注意を示します。トレーニング済みのモデルを後で使用できるようにディスクに保存するピクルスの概念は、Python のピクルス ライブラリを使用して導入されます。スピーカーは、モデルを保存およびロードする方法をデモンストレーションします。また、XGBoost のプロット重要度関数と matplotlib ライブラリを使用して、データセット内の各属性の重要度をプロットする方法も示します。
講演者は、機械学習モデルを構築する際のさまざまなシナリオの分析とテストの重要性について説明し、XGBoost の機能重要度スコアがモデルの精度に対する機能の実際の影響を必ずしも反映するとは限らないことを強調しました。彼らは、タイタニック号のデータセットの例を使用して、特徴重要度スコアで順位が低いにもかかわらず、「性別」属性を追加することでモデルの精度がどのように向上するかを実証しました。講演者は、機能重要度スコアだけに依存するのではなく、さまざまなシナリオをテストすることの重要性を強調しました。また、XGBoost はトレーニング中にテスト セットのパフォーマンスを評価してレポートできることにも言及しています。
このビデオでは、評価メトリクスを指定し、x と y のペアの配列を渡すことによって、トレーニング中に XGBoost モデルのパフォーマンスを監視する方法を説明しています。各評価セットでのモデルのパフォーマンスは保存され、トレーニング後に使用できるようになります。このビデオでは学習曲線について説明しています。これにより、モデルの動作についての洞察が得られ、学習を早期に停止することで過剰適合を防ぐことができます。早期停止は、検証スコアに改善が観察されない場合に、一定のエポック数の後にトレーニングを停止する手法として導入されています。
このビデオでは、XGBoost での早期停止ラウンドの使用について説明し、ボストンの住宅価格を評価するための回帰モデルの構築を示しています。個々のツリーの構築と入力データの効率的な準備に焦点を当てて、勾配ブースティングにおける並列処理の利点について説明します。このビデオでは、システムのすべてのコアを利用して計算を同時に実行し、プログラムの実行を高速化するマルチスレッド サポートのデモンストレーションを示しています。 XGBoost は主に分類問題を対象としていますが、ビデオでは回帰モデルの構築にも優れた機能を強調しています。
スピーカーは、例の反復回数を保持するリストを作成し、for ループを使用して、スレッド数に基づいてモデルの実行速度をテストします。各反復のビルド速度を出力し、結果をプロットして、スレッド数が増加するにつれてモデルの速度がどのように低下するかを示します。次に、講演者はハイパーパラメータ チューニングについて説明します。これには、モデル内のパラメータを調整してパフォーマンスを向上させることが含まれます。 XGBoost と scikit-learn のデフォルト パラメーターを調査し、XGBoost モデルのパフォーマンスを最適化するにはハイパーパラメーターの調整が不可欠であると述べています。このビデオでは、ハイパーパラメータはデータから学習されるのではなく、ユーザーが手動で設定する設定であると説明しています。ハイパーパラメータの調整には、最高のモデル パフォーマンスをもたらすパラメータ値の最適な組み合わせを体系的に検索することが含まれます。
このビデオでは、ハイパーパラメーター調整を実行するために、グリッド検索とランダム検索という 2 つの一般的なアプローチを紹介しています。グリッド検索には、ハイパーパラメータ値のグリッドを定義し、各組み合わせを徹底的に評価することが含まれます。一方、ランダム検索では、事前定義された検索空間からハイパーパラメーターの組み合わせがランダムにサンプリングされます。このビデオでは、検索スペースが大きい場合、またはハイパーパラメーターの数が多い場合には、ランダム検索を使用することを推奨しています。
このビデオでは、scikit-learn の RandomizedSearchCV クラスを使用したハイパーパラメーターの調整を示します。これらは、学習率、最大深度、サブサンプル比などのハイパーパラメーターのさまざまな値を含むパラメーター グリッドを定義します。 RandomizedSearchCV クラスは、相互検証を使用してランダム検索を実行し、各パラメーターの組み合わせのパフォーマンスを評価します。調整後、最適なハイパーパラメーターが選択され、モデルはこれらの最適値でトレーニングされます。
講演者は、ハイパーパラメータ調整は、過小適合と過適合の間の最適なトレードオフを見つけるのに役立つと説明します。特定のデータセットと当面の問題に基づいてハイパーパラメーターを慎重に選択することで、バランスを取り、過剰適合を回避することが重要です。
このビデオでは、ハイパーパラメーターの調整に加えて、XGBoost モデルの機能の重要性についても説明しています。特徴の重要度は、どの特徴がモデルの予測に最も大きな影響を与えるかについての洞察を提供します。講演者は、特徴量の重要性は平均ゲインによって決まると説明します。平均ゲインは、特徴量を決定木で使用したときに特徴量によってもたらされる損失関数の改善を測定します。平均ゲインが高いほど、重要性が高いことを示します。
このビデオでは、XGBoost ライブラリを使用して機能の重要性を抽出して視覚化する方法を示します。上位の特徴とそれに対応する重要度スコアを示す棒グラフがプロットされます。講演者は、特徴の重要性が特徴の選択、次元の削減、および根本的な問題への洞察の獲得に役立つ可能性があると述べています。
ビデオの終わりに向かって、講演者は XGBoost に関連するその他の高度なトピックについて簡単に言及しています。ここでは、scale_pos_weight ハイパーパラメータを調整することによる不均衡なデータセットの処理、XGBoost の組み込み機能を使用した欠損値の処理、ワンホット エンコーディングまたは XGBoost のカテゴリ特徴量の組み込みサポートを使用したカテゴリ変数の処理について触れています。
このビデオでは、XGBoost の主要な概念、実装、ハイパーパラメータ調整、機能の重要性分析をカバーする包括的な概要を提供します。デモとコード例は、Python での XGBoost の操作の実際的な側面を説明するのに役立ちます。これは、分類および回帰タスクに XGBoost の利用を検討している機械学習エンジニアにとって貴重なリソースとして機能します。
機械学習エンジニアのための Python による特徴量エンジニアリングのケーススタディ
機械学習エンジニアのための Python による特徴量エンジニアリングのケーススタディ
インストラクターは、特徴量エンジニアリングの概念と、毎日生成される膨大なデータから価値を抽出する際のその重要な役割を紹介することからコースを開始します。彼らは、乱雑なデータから抽出される価値を最大化するための特徴エンジニアリングの重要性を強調しています。学習者は、Python の入門レベルの知識と、NumPy、Pandas、Scikit-Learn の使用経験があることを前提としています。
インストラクターは、機械学習モデルを構築するプロセスにおける探索的データ分析とデータ クレンジングの重要性を強調します。彼らは、これらの段階がコースの主な焦点になると説明しています。学習者は最終章でパイプライン全体を学習しますが、主に特徴量エンジニアリングに重点を置きます。
講師は、モデルのパフォーマンスを向上させるには特徴量エンジニアリングが不可欠であると強調します。彼らは、特徴エンジニアリングには、生データを、機械学習モデルの基礎となる信号をより適切に表す特徴に変換することが含まれると説明しています。優れた機能は単純なモデルでも強力にすることができるため、機能の品質はモデルのパフォーマンスに直接影響します。インストラクターは、特徴を選択するとき、無関係な特徴を削除するとき、分析対象の問題に関連する要素を含めるときは常識に従って行うようアドバイスします。
クリーニングおよびエンジニアリング機能に関するさまざまなテクニックがビデオで説明されています。外れ値が削除され、歪度に対処するためにデータが正規化および変換され、特徴が結合されてより有用なものが作成され、連続変数からカテゴリ変数が作成されます。これらの技術は、無関係な情報を破棄しながら、データの重要な傾向を正確に捕捉する特徴を取得することを目的としています。例として、船の乗客に関する情報を含むタイタニック号のデータセットが紹介されています。
インストラクターは、肯定的なケースが否定的なケースよりも大幅に少ない、機械学習におけるクラスの不均衡の問題について説明します。彼らは、負のクラスをダウンサンプリングするなどして、両方のケースで信号をより適切に検出できるようにモデルを調整することを提案しています。ただし、例で使用されているデータセットはそれほど不均衡ではないため、インストラクターはデータの特徴の調査を進めます。基本的な探索的データ分析は連続的な特徴に対して実行され、名前、航空券、性別、客室、搭乗者などの非数値特徴は削除されます。クリーンアップされたデータセットが表示され、特徴の分布と相関が検査されます。 「p クラス」と「運賃」の特徴が生存列と最も強い相関関係を示していることがわかり、予測を行う上で潜在的な有用性を示しています。
連続特徴に対してさらに探索的なデータ分析が行われます。名前やチケットなどの数値以外の特徴は削除され、データセットの最初の 5 行が出力されます。データは pandas 関数を使用して記述され、欠損値と「Survived」と呼ばれるバイナリ ターゲット変数が明らかになります。相関行列を分析して、特徴間の相関関係と「生存」との関係を決定します。平均値または中央値のみに依存すると不正確な結論につながる可能性があるため、データの完全な分布を確認することの重要性が強調されます。プロットと視覚化を使用してカテゴリ特徴と生存率の関係を調査し、ファーストクラスの乗客や家族の人数が少ない乗客の生存率が高いなどの傾向を明らかにします。
インストラクターは特徴エンジニアリングの重要性を強調し、適切なテストを行わずに機能を過度に凝縮しないようアドバイスします。彼らは、欠損値や各特徴の一意の値の数の特定など、カテゴリ特徴を探索およびエンジニアリングするプロセスについて説明します。特徴をグループ化し、各グループのターゲット変数の平均値を分析することは、データセットをより深く理解するための役立つアプローチとして推奨されます。失われた客室の特徴と生存率との関係が調査され、特徴の価値が一見低いにもかかわらず、生存率の強力な指標が発見されました。
機能の調査により、タイトル、キャビン指標、性別が生存と強い相関関係がある一方、搭載された機能は冗長であることが明らかになりました。キャビンと生存率の関係は、シェルブールで乗船した人がキャビンを持っていたため、生存率が高かったという観察によって説明されています。搭乗している近親者の数が 1 つの特徴にまとめられ、相関関係に基づいて乗客クラスまたは運賃のいずれかが提案されます。
インストラクターは、次のステップは、探索的データ分析から得られた洞察に基づいて機能を設計することであると説明します。まず、「名前」機能から「タイトル」という新しい機能を作成します。 「タイトル」機能は、社会的地位や生存率に関連する追加情報を提供する可能性があるため、各乗客の名前 (例: Mr.、Mrs.、Miss) からタイトルを抽出します。次に、わかりやすくするために、「タイトル」機能が数値にマップされます。
次に、インストラクターは、最初は多くの欠損値があった「キャビン」機能に焦点を当てます。しかし、客室情報がある乗客とない乗客の生存率を分析したところ、客室番号を記録している乗客の方が生存率が高いことが判明しました。この洞察に基づいて、乗客が記録されたキャビンを持っているかどうかを示す「HasCabin」と呼ばれる新しいバイナリ特徴が作成されます。
次に、インストラクターは「セックス」機能に取り組みます。機械学習モデルは通常、数値データの方が適切に機能するため、「性別」特徴はバイナリ値にマッピングされ、0 は男性を表し、1 は女性を表します。
「セックス」機能を設計した後、インストラクターは乗船港 (C = シェルブール、Q = クイーンズタウン、S = サウサンプトン) を示す「乗船」機能に取り組みます。ただし、「Embarked」機能は冗長であり、生存の予測に大きく寄与しないことが以前に判明していました。したがって、データセットから削除されます。
次に、インストラクターは、探索的データ分析中に生存と強い相関関係を示した「Pclass」および「Fare」機能に焦点を当てます。これらの特徴は、すでに機械学習モデルに適した形式になっているため、そのまま残されます。
この段階で、インストラクターはデータの前処理とモデルの特徴の準備の重要性を強調します。モデルのパフォーマンスを正確に評価するために、データセットはトレーニング セットとテスト セットに分割されます。 「年齢」特徴の欠損値は乗客の年齢の中央値を使用して代入され、Scikit-Learn の前処理関数を使用してすべての特徴が平均ゼロと単位分散を持つように標準化されます。
最後に、講師はカテゴリ特徴量のワンホット エンコーディングの概念について簡単に説明し、次のビデオでさらに詳しく説明する予定であると述べています。ワンホット エンコーディングは、カテゴリ変数をバイナリ ベクトルとして表現するために使用される一般的な手法であり、モデルがそれらを正しく解釈できるようにします。
要約すると、コースのこの部分では、講師は特徴量エンジニアリングの概念を紹介し、機械学習におけるその重要性を説明しました。彼らは探索的なデータ分析を実施し、データセットをクリーンアップし、得られた洞察に基づいて機能を設計しました。インストラクターは、新しい特徴を作成する方法、カテゴリ特徴を数値にマッピングする方法、および冗長な特徴を削除する方法をデモンストレーションしました。次のステップには、データの前処理と機械学習モデルの機能の準備が含まれます。
上記の概要は、特徴エンジニアリング コースで通常カバーされる一般的なトピックに基づいた仮定の続きであることに注意してください。実際の内容や例は、コースや講師によって異なる場合があります。
Google のクラウド プラットフォーム上の BigQuery を使用した機械学習
Google のクラウド プラットフォーム上の BigQuery を使用した機械学習
この動画では、機械学習での BigQuery の使用に焦点を当てたコースの内容について説明します。 BigQuery はエンタープライズ データ ウェアハウスであり、当初は Google 社内で使用され、後にクラウド サービスになりました。スケーラビリティが高く、サーバーレスであり、ペタバイト規模のデータに対応し、高速なクエリ結果を提供できます。コースの指導は実際のケーススタディに基づいており、データの調達からモデルの作成まで機械学習モデルを構築するプロセスを通じて学習者をガイドします。コース全体を通じて、学習者は BigQuery を利用してモデルを構築し、BigQuery 専用の Google Cloud Platform (GCP) アカウントを設定する必要があります。
このビデオでは、ハードウェア リソースを拡張するための Google の指針を説明し、拡張ではなく拡張するという決定を強調しています。 Google は、ハードウェアがいつでも故障する可能性があることを認識しているため、設計では潜在的な故障を考慮する必要があります。さらに、Google は汎用ハードウェアを利用しているため、手頃な価格でベンダーの柔軟性が可能です。ハードウェアのコストが高いため、スケールアップよりもスケールアウトが推奨されます。 Google は、GFS、MapReduce、Bigtable などのテクノロジーを開発し、スケールアウトされたハードウェア アーキテクチャを実現しました。 Colossus は GFS に代わって、BigQuery を含む Google テクノロジーの基盤となる分散サブシステムとして機能します。
講師は、世界中に分散され、分散トランザクションの管理に Colossus を利用している Google のデータベース ソリューションである Spanner の概要を説明します。このビデオでは、Google Cloud Platform 内で請求先アカウントにサインアップして管理するプロセスも示しています。ユーザーは、プラットフォームの Web サイトにアクセスし、規約に同意し、必要な情報を提供することで GCP アカウントを作成できます。新規ユーザーには、GCP で使用できる 300 ドルのクレジットが付与されます。これは、請求セクションで監視できます。講師は、特定の請求目標に達したときに通知を受け取るように予算アラートを設定することをアドバイスしています。
BigQuery の作成と目的について詳しく説明します。 Google のデータの急激な増加により、大規模なデータ セットに対するインタラクティブなクエリを可能にする BigQuery の開発が必要になりました。 BigQuery は、50 行か 500 億行かに関係なくクエリを処理できます。非標準の SQL 言語により短期間の学習が容易になり、数千のマシン間で SQL を並列実行できます。 BigQuery は構造化データを保存しますが、テーブル内でネストされたレコード タイプをサポートし、ネストされた構造の保存を可能にする点でリレーショナル データベースとは異なります。
BigQuery のアーキテクチャについて説明し、並列化へのアプローチを強調します。コアごとに 1 つのクエリを実行するほとんどのリレーショナル データベース システムとは異なり、BigQuery は数千のコアにわたって 1 つのクエリを実行するように設計されており、従来のアプローチと比較してパフォーマンスが大幅に向上します。 Dremel エンジンはクエリ パイプラインを有効にし、一部のクエリが I/O を待機している間に、他のクエリが利用可能なコアを利用できるようにします。 BigQuery はマルチテナント アプローチを採用しており、複数の顧客が他の場所に影響を与えることなく同じハードウェア上で同時にクエリを実行できるようになります。 BigQuery インターフェースは、クエリ履歴、保存されたクエリ、ジョブ履歴、テーブルやビューへのアクセスを整理するためのリソース セクションを含む 3 つのコア ペインで構成されます。
このビデオでは、BigQuery に固有の Google Cloud Console 内の画面とパネルについて詳しく説明しています。ナビゲーション メニューにはデータ セットやテーブルなどの BigQuery リソースが表示され、SQL ワークスペース セクションではユーザーがクエリの作成、テーブルの操作、ジョブ履歴の表示を行うことができます。 [エクスプローラー] パネルには現在のプロジェクトとそのリソースがリストされ、[詳細] パネルには選択したリソースに関する情報が表示され、テーブル スキーマ、データ エクスポート、およびその他の機能を変更できます。 BigQuery は頻繁な小さな行レベルの更新をサポートしていないため、OLTP アプリケーションには適していないことが明らかになりました。 BigQuery は NoSQL データベースではありませんが、SQL の方言を使用しており、OLAP データベースに近いため、多くの OLAP ユースケースに同様の利点と適合性を提供します。
Google の BigQuery の定義についてさらに議論し、フルマネージドで拡張性が高く、費用対効果が高く、高速なクラウドであることを強調します。
ビデオで説明されている追加のポイントは次のとおりです。
BigQuery のストレージ形式: BigQuery は、クエリのパフォーマンスが最適化された列指向のストレージ形式を使用します。データを圧縮された列形式で保存するため、不要なデータにアクセスせずにクエリ内の特定の列を効率的に処理できます。この形式は、集計とフィルタリングを含む分析ワークロードに特に有益です。
データの取り込み: BigQuery は、さまざまなデータ取り込み方法をサポートしています。 Google Cloud Storage、Google Sheets、Google Cloud Bigtable などのソースからデータを直接読み込むことができます。また、ETL (抽出、変換、読み込み) 操作のために、Dataflow や Dataprep などの他のデータ処理ツールとの統合も提供します。
データのパーティショニングとクラスタリング: クエリのパフォーマンスを最適化するために、BigQuery はパーティショニングやクラスタリングなどの機能を提供します。パーティショニングには、選択した列 (日付など) に基づいて、大きなデータセットをより小さな管理可能な部分に分割することが含まれます。クラスタリングでは、1 つ以上の列に基づいて各パーティション内のデータがさらに整理され、スキャンされるデータ量が削減されてクエリのパフォーマンスが向上します。
データ アクセス制御とセキュリティ: BigQuery は、データ セキュリティを管理するための堅牢なアクセス制御を提供します。 Google Cloud Identity and Access Management (IAM) と統合されているため、ユーザーはプロジェクト、データセット、テーブル レベルできめ細かいアクセス許可を定義できます。 BigQuery は保存時および転送時の暗号化もサポートしており、機密データを確実に保護します。
データの料金設定とコストの最適化: このビデオでは、BigQuery の料金モデルについて簡単に触れています。従量課金制で動作し、クエリによって処理されたデータ量に基づいてユーザーに課金されます。 BigQuery はクエリ キャッシュなどの機能を提供しており、冗長なデータ処理を回避してコストを削減できます。コストを最小限に抑えるには、クエリを最適化し、不必要なデータ スキャンを回避することが重要です。
BigQuery を使用した機械学習: このコースでは、機械学習タスクでの BigQuery の使用について説明します。 BigQuery は AutoML や TensorFlow などの Google Cloud の機械学習サービスと統合されているため、ユーザーは機械学習モデルをトレーニングする前にデータの準備や特徴量エンジニアリングに BigQuery の機能を活用できます。
ユースケースと例: 講師は、大量のログ データの分析、市場調査の実施、顧客のセグメンテーションの実行、大規模なデータセットに対する複雑な分析クエリの実行など、BigQuery が優れているさまざまな実際のユースケースについて言及します。
全体として、このビデオでは BigQuery の機能、アーキテクチャ、主要な機能の概要を説明し、大規模なデータ分析や機械学習タスクへの BigQuery の適合性を強調しています。膨大な量のデータを効率的に処理するために、BigQuery のようなフルマネージドで拡張性の高いクラウドベースのソリューションを使用する利点を強調しています。