アルゴリズム取引におけるPython - ページ 21

 

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 ライブラリを使用したドルコスト平均戦略の実装と探索に役立つことを願っています。他にご質問がございましたら、お知らせください。

Backtest Your Dollar Cost Average Strategy easily in Python
Backtest Your Dollar Cost Average Strategy easily in Python
  • 2022.06.29
  • www.youtube.com
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...
 

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」を使用して売り注文を実行します。

  1. 外部シグナル戦略:

    • ランダム信号を生成するか、外部プログラムから信号を取得します。
    • Strategy を継承する SignalStrategy クラスを定義します。
    • シグナルに基づいて買い注文または売り注文を実行する次のメソッドを実装します。
    • self.buy() メソッドと self.sell() メソッドを使用して注文を実行します。
    • データ、戦略、初期資本、手数料を使用してバックテスト オブジェクトをインスタンス化します。
    • bt.run() を使用してバックテストを実行し、結果を分析します。

  2. カスタム インジケーターに pandas-ta を使用する:

    • pandas_ta ライブラリをインポートします (pip install pandas_ta でインストールします)。
    • pandas_ta の目的のインジケーター関数を使用してインジケーターを計算します。
    • 計算されたインジケーターをデータ フレームに追加します。
    • Strategyを継承したStrategyクラスを定義する。
    • インジケーターの値に基づいて買い注文または売り注文を実行する次のメソッドを実装します。
    • 希望の条件を使用して、いつ売買するかを決定します。
    • データ、戦略、初期資本、手数料を使用してバックテスト オブジェクトをインスタンス化します。
    • bt.run() を使用してバックテストを実行し、結果を分析します。

GOOG などのプレースホルダーを実際のデータに置き換え、特定の要件に応じて戦略をカスタマイズすることを忘れないでください。

Custom Indicators In Backtesting.py - Python Deep Dive
Custom Indicators In Backtesting.py - Python Deep Dive
  • 2022.07.30
  • www.youtube.com
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...
 

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 メソッドを使用してトレーリング ストップロスを更新します。このメソッドは、現在の価格を引数として受け取り、それに応じてストップロスを更新します。

Stop Losses in Backtesting.py
Stop Losses in Backtesting.py
  • 2022.08.19
  • www.youtube.com
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 ...
 

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 などの他のライブラリに適応させることもできます。重要な考え方は、戦略がさまざまな時間枠にわたって堅牢性を実証し、特定の過去のデータセットへの単純な過剰適合の結果ではないことを保証することです。

これらの検証手順に従うことで、現実に基づいていない戦略に依存したり、ランダムな結果の犠牲になったりするリスクを軽減できます。トレーディング戦略を実行する際には、情報に基づいた意思決定を行うために、バックテストのパフォーマンスを超えて、さまざまな市場状況における戦略の有効性を検討することが不可欠です。

バックテストの結果とさまざまな時間枠にわたるリターンの分布を分析した結果、戦略のパフォーマンスは本質的にランダムであることがわかりました。バックテストに使用した特定の期間以外では、一貫した収益性は得られませんでした。これは、戦略が過剰適合に悩まされ、堅牢性に欠けていたことを示しています。

過剰適合の罠に陥ることを避け、信頼できる取引戦略を開発する可能性を高めるために、以下の推奨事項をいくつか紹介します。

  1. 十分で多様なデータを使用する: さまざまな市場状況をカバーするために、バックテストに大量の過去のデータが組み込まれていることを確認します。これにより、より幅広いシナリオを捉えることができ、特定の市場状況への過剰適合の可能性が軽減されます。

  2. 複数の時間枠で検証する: バックテストを単一の期間だけに依存するのではなく、さまざまな時間枠で戦略をテストします。これにより、さまざまな市況下でのパフォーマンスに関する洞察が得られ、その戦略に一貫した収益性があるかどうか、または観察された結果がランダム性によるものかどうかを特定するのに役立ちます。

  3. アウトオブサンプル テストの実装: アウトオブサンプル テスト用に履歴データの一部を予約します。初期データセットでプライマリ バックテストを実行した後、モデルがこれまでに見たことのない予約データで戦略を検証します。これは、目に見えない市場状況に適応する戦略の能力を評価するのに役立ち、そのパフォーマンスのより現実的な評価を提供します。

  4. カーブフィッティングに注意してください: 戦略を過去のデータに近づけすぎて過度の最適化やパラメータ調整を行わないでください。特定のデータパターンに合わせすぎた戦略は、現実世界の取引では失敗する可能性が高くなります。過去のデータだけで優れたパフォーマンスを追求するのではなく、堅牢性を目指します。

  5. ウォークフォワード分析を検討する: 静的なバックテストのみに依存するのではなく、ウォークフォワード分析の使用を検討してください。これには、新しいデータが利用可能になったときに戦略を定期的に再最適化し、再テストすることが含まれます。これにより、継続的に戦略を適応させて微調整し、変化する市場状況におけるパフォーマンスを向上させることができます。

  6. 統計的有意性テストを使用する: 統計的テストを適用して、戦略のパフォーマンスの重要性を評価します。これは、観察された結果が統計的に意味があるのか、それとも単なる偶然によるものなのかを判断するのに役立ちます。バックテストで使用される一般的な統計テストには、t テスト、ブートストラップ テスト、モンテカルロ シミュレーションなどがあります。

これらのガイドラインに従うことで、過去のデータに過度に適合した戦略を開発するリスクを軽減し、堅牢で信頼性の高い取引アプローチを作成できる可能性を高めることができます。

目標は、単に過去のデータに基づいて優れたパフォーマンスを発揮する戦略ではなく、さまざまな市場状況にわたって一貫した収益性を実証するトレーディング戦略を開発することであることを忘れないでください。

Backtest Validation in Python (Fooled By Randomness)
Backtest Validation in Python (Fooled By Randomness)
  • 2022.09.14
  • www.youtube.com
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...
 

機械学習エンジニアのための 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 について簡単に説明します。

  • 00:00:00 コースのインストラクターは、予測モデリングの概念とその業界との関連性を紹介します。データを理解しようとする統計モデリングとは異なり、予測モデリングは、予測が行われる理由の説明を犠牲にして、より正確な予測を行うモデルの開発に焦点を当てています。このコースは、スプレッドシートやデータベースなどの表形式のデータに焦点を当てます。インストラクターは、学生を Python での機械学習に興味のある開発者から、Python を使用して新しいデータセットをエンドツーエンドで処理し、正確な予測モデルを開発するためのリソースと能力を身につけることができるように導きます。学生は、Python を使用して予測モデリング問題のすべてのサブタスクを完了する方法、Python と SCIPy の新しいさまざまなテクニックを統合する方法、Python を学習して機械学習のサポートを受ける方法を学びます。この講義では、代入、フロー制御、データ構造、関数など、言語構文に関する重要な詳細を強調する Python の短期集中コースも取り上げます。

  • 00:05:00 このビデオでは、変数や代入を含む Python の基本構文を説明し、代入の「等しい」と等価の「二重等しい」の違いについて説明します。次に、講師は Python コーディングに Jupyter Notebook を使用する方法をデモンストレーションし、新しいノートブックの作成方法、ライブラリのエイリアスの使用方法、セルの実行方法、セルの移動またはコピー方法など、基本的なナビゲーションのヒントを説明します。講師は、自動保存機能とノートブックを手動で保存する方法についても説明します。ビデオは、カーネルの実行を停止する方法の簡単な説明で終わります。

  • 00:10:00 インストラクターは、ツールバーを使用して Python エンジン内を移動する方法と、ノートブックにマークダウンで注釈を付ける方法を説明します。次に、ビデオでは、if-then-else 条件、for ループ、while ループなどのフロー制御ステートメントについて説明します。その後、機械学習に必要な 3 つの主要なデータ構造であるタプル、リスト、辞書について説明します。最後に、ビデオでは NumPy に関する短期集中コースを提供します。これには、配列の作成、データへのアクセス、算術での配列の使用が含まれます。

  • 00:15:00 機械学習のための Matplotlib と Pandas の短期集中コースについて説明します。 Matplotlib は、プロットやチャートの作成に利用できるライブラリです。 Pandas は、シリーズとデータ フレームのデータ構造を利用してデータを操作および分析するためのデータ構造と機能を提供します。これらは、機械学習アプリケーションで使用される最も一般的な形式である csv ファイルをロードするために重要です。さらに、Pandas read_csv のような柔軟な関数は、データをロードし、データを要約してプロットするための Pandas データ フレームを返し、機械学習タスクでデータの前処理と処理のための洞察とアイデアを引き出すのに役立ちます。最後に、Python の記述統計を通じてデータから洞察を得るのは代用できず、データの特性と性質をより深く理解するのに役立ちます。

  • 00:20:00 Pandas DataFrame では、 hist() 関数を使用してヒストグラムを簡単に作成できます。データを視覚化するもう 1 つの方法は、plot() 関数で作成できる密度プロットを使用することです。密度プロットはデータの確率密度関数を示し、分布の形状についての洞察を提供します。箱ひげ図は、データの分布を視覚化し、外れ値を特定するのにも役立ちます。全体として、データの視覚化はデータセットの特性を理解するための重要なステップであり、適切な機械学習アルゴリズムの選択に役立ちます。

  • 00:25:00 このビデオでは、機械学習技術を適用する前のデータ分析に役立つさまざまなプロットや図について説明しています。ヒストグラム、密度プロット、箱ひげ図は属性の分布を観察するために使用され、相関行列と散布図行列は属性のペア間の関係を識別するために使用されます。データの再スケーリング、標準化、正規化、二値化も、機械学習アルゴリズム用にデータを準備するために必要な前処理手順として説明されており、ビデオでは、データ前処理の一般的なアプローチとしての適合および変換方法について説明しています。

  • 00:30:00 このビデオでは、機械学習におけるデータの前処理手法について説明します。まず、正規化と標準化手法について説明します。正規化には、同じスケールになるように属性を再スケールすることが含まれ、標準化には、平均が 0、標準偏差が 1 になるように属性を変更することが含まれます。バイナリ化、つまりデータのしきい値処理も説明されている手法で、新しいバイナリ属性を追加したり、確率を鮮明な値に変換したりするのに役立ちます。次に、無関係または部分的に無関係な特徴がモデルのパフォーマンスに悪影響を与える可能性があるため、特徴選択の重要性について説明します。単変量選択は、統計テストのスコアを使用した特徴選択への統計的アプローチの 1 つです。ランダム フォレストや追加ツリーなどのデシジョン ツリーのアンサンブルを使用する再帰的特徴除去および特徴重要度の方法も、特徴の選択に役立ちます。最後に、主成分分析 (PCA) は、線形代数を使用してデータセットをより少ない次元数の圧縮形式に変換するデータ削減手法です。

  • 00:35:00 目に見えないデータに対する機械学習アルゴリズムのパフォーマンスを評価するためのリサンプリング手法の重要性について説明します。トレーニングに使用したのと同じデータセットでアルゴリズムを評価すると過剰適合につながる可能性があり、その結果、トレーニングデータセットでは完璧なスコアが得られますが、新しいデータでは予測が不十分になる可能性があることが強調されています。次に、アルゴリズムのパフォーマンスの有用な推定値を作成する方法として、トレーニングとテストの分割セット、k 分割相互検証、1 つ除外相互検証、反復ランダム テスト分割などの手法が紹介されます。このセクションは、分類精度、対数損失、曲線下面積、混同行列、分類レポートなど、さまざまな機械学習アルゴリズムのパフォーマンス指標について説明して終了します。

  • 00:40:00 このビデオでは、機械学習モデルによって行われた予測を評価するためのいくつかのパフォーマンス メトリックについて説明しています。これらには、分類精度、確率を評価するための対数損失、バイナリ分類問題の ROC 曲線下面積、2 つ以上のクラスでモデルの精度を評価するための混同行列、精度、再現率、F1 スコア、およびサポートを評価するための分類レポートが含まれます。クラスごとに。さらに、ビデオでは、平均絶対誤差、平均二乗誤差、R 二乗という 3 つの一般的な回帰メトリクスについて説明し、Python を使用してこれらのメトリクスを計算する方法の例を示します。

  • 00:45:00 講演者は、特定の問題に対してどの機械学習アルゴリズムが適切に機能するかを発見するためにスポット チェックを使用するという概念を説明します。彼は、Python と scikit-learn ライブラリを使用して、線形および非線形アルゴリズムを含む 6 つの異なる機械学習モデルのスポット チェックをデモンストレーションします。同氏はまた、モデルの確率的性質により結果が異なる可能性があることも強調しています。最後に、講演者は回帰機械学習モデルを紹介し、これらのモデルをスポット チェックする方法に関する次のセクションに視聴者を準備させます。

  • 00:50:00 講演者は、ボストンの住宅価格データセットを使用した線形および非線形の機械学習モデルを紹介します。 10 分割相互検証を備えたテスト ハーネスは、各モデルのブロック チェック方法を示すために使用され、平均二乗誤差数はパフォーマンスを示すために使用されます。この数値は、ファイル間スコア関数の特殊性により反転されます。線形回帰モデルは、入力変数のガウス分布と、それらが出力変数に関連しており、相互に高度な相関がないと仮定します。線形回帰を修正したリッジ回帰は、係数値の二乗和値または L2 ノルムによって測定されるモデルの複雑さを最小限に抑えます。講演者は、パイプラインまたはプロセスを理解し、現時点ではコードの理解に囚われないことを強調しています。

  • 00:55:00 このビデオでは、機械学習の問題の入力変数を理解して視覚化するプロセスについて説明します。このビデオでは、入力変数の分布を理解するために箱ひげ図やヒストグラムなどの一変量プロットを使用することを提案しています。多変量プロットの場合、散布図は入力変数間の構造的関係を特定し、特定の属性ペア間の高い相関関係を特定するのに役立ちます。ビデオでは続いて、10 分割相互検証を使用したテスト ハーネスを通じてモデルを評価するプロセスについて説明します。このプロセスでは、データ セットが 10 の部分に分割され、異なる分割でトレーニングおよびテストされます。このビデオでは、最適なモデルがどの程度正確であるかについての 2 番目の独立したアイデアを得るために、検証データ セットを作成することの重要性を強調しています。このビデオでは、6 つの異なる機械学習モデルを評価し、予測を行うために最も正確なモデルを選択し、分類レポート、混同行列、精度推定を通じて予測を評価します。このセクションは、正則化回帰と、回帰モデルの複雑さを最小限に抑えるための Lasso および Elastic Net モデルの構築についての説明で終わります。

  • 01:00:00 機械学習におけるバイナリ分類問題について説明します。この問題の目的は、ソナー鉱山と岩石のデータセットを使用して岩石から金属を予測することです。データセットには、クラス属性を含む 61 の属性を持つ 208 のインスタンスが含まれています。データを分析して記述統計を確認すると、データは同じ範囲内にありますが、平均値が異なるため、データを標準化することが有益である可能性があることがわかります。また、ヒストグラム、密度プロット、属性間の相関関係の視覚化など、単峰性および多峰性のデータ視覚化についても説明します。次に、検証データセットを準備し、線形回帰、ロジスティック回帰、線形判別分析、分類回帰ツリー、SVM、単純ベイズ、k 最近傍法などのさまざまなモデルのパフォーマンスのベースラインを作成します。 10 分割相互検証を通じて計算された各アルゴリズムの精度を比較します。

  • 01:05:00 このビデオでは、標準化されたデータとチューニングを使用してさまざまな機械学習アルゴリズムを評価する方法について説明します。標準化により、各属性の平均が 0、標準偏差が 1 になるようにデータが変換され、一部のモデルのスキルを向上させることができます。変換プロセス中のデータ漏洩を回避するには、データを標準化し、相互検証テスト ハーネスの各フォールドのモデルを構築するパイプラインをお勧めします。このビデオでは、トレーニング データ セットの標準化されたコピーに対する 10 分割相互検証によるグリッド検索を使用して、k 最近傍 (KNN) とサポート ベクター マシン (SVM) を調整する方法を示します。 KNN と SVM の最適な構成が特定され、モデルの精度が評価されます。最後に、ビデオでは、非線形機械学習モデルとしての KNN、決定木回帰、および SVM について簡単に説明します。
A Fast Track Introduction to Python for Machine Learning Engineers
A Fast Track Introduction to Python for Machine Learning Engineers
  • 2022.03.23
  • www.youtube.com
Complete Course on Machine Learning with Python
 

機械学習エンジニアのための応用統計学


機械学習エンジニアのための応用統計学

ビデオの講師は統計の分野を紹介し、機械学習における予測モデリングの問題に取り組む際の統計の重要性を強調しています。彼らは、統計学には単純な要約統計から仮説検定や推定統計に至るまで、さまざまな手法が提供されると説明しています。このコースは、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 ライブラリを使用した実践的な実装を示しており、初心者や機械学習の理解を深めたい人にとって貴重なリソースとなっています。

  • 00:00:00 インストラクターは、統計の分野と、機械学習による予測モデリングの問題に取り組む際のその重要性を紹介します。単純な要約統計から仮説検定、推定統計まで、利用可能な統計手法の範囲を説明します。このコースは、Python での実行可能なサンプルを使用して統計手法の段階的な基礎を提供するように設計されており、機械学習のための統計の 6 つの主要な側面をカバーしています。講師は、このコースがアプリケーションに焦点を当てており、実際の使用例を提供しているため、機械学習エンジニアに適していることも強調しています。

  • 00:05:00 機械学習は統計と密接に関連していることが強調されており、このコースは統計スキルを向上させたいプログラマーにとって良い選択肢として提示されています。統計学の分野は 2 つのカテゴリに分類され、1 つ目は記述統計、2 つ目は推論統計です。記述統計は、平均やグラフ表現などの測定値を使用してデータを記述するために使用され、推論統計は、より大きな母集団のデータから推論を行うために使用されます。最後に、データの損失、破損、エラーなどのデータの取り扱いの重要性が強調されます。

  • 00:10:00 このビデオでは、機械学習モデルのデータ準備に含まれるさまざまな手順について説明します。これには、標準化や正規化などの統計手法を使用したデータ クレンジング、データ選択、データ サンプリング、データ変換が含まれます。データの評価も重要であり、モデルのスキルを推定するには、データのリサンプリングやモデルの選択などの実験計画を実行する必要があります。新しいデータを予測するために、ビデオでは推定統計アプローチを推奨しています。さらに、ビデオでは、統計で使用されるさまざまな測定スケールと正規分布の特徴について説明します。

  • 00:15:00 スピーカーは、名目、序数、間隔、比率といったさまざまな測定スケールについて説明します。彼らは続けて、各スケールに適用できる統計と、それらを機械学習に実装する方法について議論します。私たちがほぼ常にサンプルセットを扱うことを考えると、モデリングに伴う不確実性を理解し、報告する必要があると著者は強調します。次に、さまざまなデータセットで非常に一般的な標本正規分布に議論が移ります。最後に、サンプル データを生成し、それをヒストグラムに適用してガウス分布に適合するかどうかを確認する方法を示します。著者は、ほとんどのデータセットは完全なガウス分布を持たないが、ガウスに似た特性を持つと説明しています。

  • 00:20:00 基礎となるガウス分布をより良く明らかにするために、より粒度の細かいデータ分割方法を選択する重要性が強調され、平均や中央値などの中心傾向の尺度が検討され、分散や標準偏差も考慮されます。分布の広がりの尺度。ランダム性は機械学習において不可欠なツールであり、アルゴリズムをより堅牢かつ正確にするために使用されます。データ内のエラーや関係性を曖昧にする可能性のあるノイズなど、ランダム性のさまざまな原因について説明します。

  • 00:25:00 機械学習アルゴリズムでは、データのマッピングのパフォーマンスを向上させるためにランダム性がよく使用されると説明されています。ランダム性により、アルゴリズムはより最適なモデルを生成できます。このセクションでは、制御可能なランダム性と制御不可能なランダム性の原因と、シード関数の使用によってモデル内のランダム性をどのように一貫させることができるかについて説明します。乱数を生成するための Python ランダム モジュールと、数値のベクトルと行列を効率的に操作するための numpy ライブラリを使用した例が示されています。 numpy 擬似乱数ジェネレーターは、Python 標準ライブラリの擬似乱数ジェネレーターとは異なるため、個別に使用する必要があります。最後に、乱数ジェネレーターをいつシードするかについて、データ準備とデータ分割を含む 2 つのケースについて説明します。

  • 00:30:00 アルゴリズムを評価する際に、データを一貫して分割することと擬似乱数ジェネレータを使用することの重要性について説明します。報告されるパフォーマンスに測定された不確実性とアルゴリズムのパフォーマンスが含まれるような方法でモデルを評価することをお勧めします。データの複数の分割でアルゴリズムを評価すると、トレーニング データとテスト データの変更によってアルゴリズムのパフォーマンスがどのように変化するかについての洞察が得られます。一方、同じデータの分割でアルゴリズムを複数回評価すると、アルゴリズムのパフォーマンスが単独でどのように変化するかについての洞察が得られます。 。大数の法則と中心極限定理についても説明し、データが多ければ多いほどモデルのパフォーマンスが良くなり、サンプルのサイズが大きくなるにつれて平均の分布がガウス分布に近づくことを強調します。 。

  • 00:35:00 中心極限定理は、サイコロの出目とコードを使用して実証されます。このデモンストレーションは、サンプル サイズが増加するにつれて、サンプル平均がガウス分布に近似することを示しています。統計において意味を発見するには、データの解釈が非常に重要です。統計的仮説検定または有意性検定は、データ分布に関する主張を行ったり、2 つのサンプルを比較したりするために、機械学習で使用されます。仮説 0 または帰無仮説は、何も変化していないというデフォルトの仮定であり、統計的仮説検定は p 値または臨界値のいずれかを返す可能性があります。 p 値は仮説検定の結果を解釈し、帰無仮説を棄却するか棄却できなかった場合に使用される量です。一方、臨界値は検定統計量と標本分布を比較して、仮説を検証するのに十分な証拠があるかどうかを判断するために使用されます。帰無仮説を棄却します。

  • 00:40:00 帰無仮説を棄却する概念が明確になり、帰無仮説は統計的に有意な差がないことを示します。統計検定の結果が帰無仮説を棄却した場合、それは何かが統計的に有意であることを意味します。観測値のグループ化または密度を表し、正規分布と呼ばれることが多いガウス分布についても説明します。分布は、サンプル空間に対する観測値の関係を記述する数学関数です。確率密度関数や累積密度関数などの密度関数は、分布における観測の尤度を記述するために使用されます。最後に、データのサンプルがランダムかどうかをチェックすることの重要性が強調され、正規分布サンプルの特性が示されます。

  • 00:45:00 講演者は、正規 (ガウス) 分布、確率分布関数 (pdf) と累積分布関数 (cdf) を含むその特性、および標準偏差に関連する 68、95、および 99.7 の法則について説明しました。講演者は、正規分布に似ていますが、小さなサンプルに使用される t 分布も紹介しました。続いて、この記事では、カイ二乗分布、適合度へのその使用法、および t 分布との関係について紹介しました。最後に、講演者は Scipy の stats chi 2 モジュールを使用してカイ二乗分布の統計を計算する方法をデモンストレーションしました。

  • 00:50:00 統計的仮説検定における臨界値の概念について説明します。臨界値は、帰無仮説が受け入れられるか拒否されるかを決定するために使用されるしきい値です。正規分布またはガウス分布を想定しており、許容領域と拒否領域があります。これらの領域を区切る線が重要な値です。片側検定は、平均が別の平均より大きいか小さいかを決定しますが、両方ではありません。一方、両側検定は、2 つの平均が互いに異なるかどうかを決定します。臨界値により、信頼区間や許容区間など、推定された統計量または区間の不確実性を定量化できます。

  • 00:55:00 製品のプラスの効果とマイナスの効果の両方を考慮する両側検定の使用について説明します。示された例は、有名ブランド製品に対するジェネリック医薬品の例であり、両側検定により、ジェネリック製品が有名ブランド製品と同等かそれよりも劣るかどうかを判断できます。パーセント ポイント関数または分位関数の使用についても、標準ガウス分布、標準スチューデント t 分布、標準カイ二乗分布という 3 つの一般的に使用される分布を使用した例で説明および実証されています。最後に、相関の概念と 2 つの変数間の関係を決定する際のその重要性、さらに多重共線性の潜在的な問題とそれがアルゴリズムのパフォーマンスにどのように影響するかについて説明します。

  • 01:00:00 このビデオでは、各変数がガウス分布から抽出され線形相関している人為的なデータセットを使用して、2 つの変数間の強い正の相関関係を示す簡単なデモを示しています。デモでは共分散行列を計算して出力し、2 つの変数間の正の共分散を示し、それらが同じ方向に変化することを示唆しています。ただし、共分散を統計ツールとして単独で使用すると、解釈が難しくなり、ピアソンの相関係数が発生するという問題があります。このビデオでは、2 つの変数の共分散を各サンプルの標準偏差の積で割った値を計算することで、ピアソンの r 相関係数が 2 つのデータ サンプル間の線形関係の強さを要約する方法と、その相関係数を使用して評価できることを説明しています。 2 つ以上の変数間の関係。

  • 01:05:00 このビデオでは、データが同じ平均と標準偏差のガウス分布から抽出されたと仮定するパラメトリック統計的有意性テストの使用について説明しています。テスト データセットが定義され、独立したサンプルと対応のあるサンプルに対するスチューデントの t 検定、および分散分析検定を実証するために使用されます。このビデオでは、適切な Scipy 関数を使用してこれらのテストを Python で実装する方法を示します。これらの例は、これらのテストを使用して、異なるデータ サンプルが同じ分布を持つかどうかを判断する方法を示しています。

  • 01:10:00 統計における効果量の概念は、統計的仮説検定から得られた結果を補完できる、グループ間の差異や変数間の関連性の大きさを定量化する方法として議論されています。効果量の手法は関連性と差分に分類され、解釈の目的と使用する統計的尺度に応じて、標準化、独自の単位、または単位なしのいずれかにすることができます。ピアソンの相関係数は、線形関連性を決定するために一般的に使用される標準化された尺度であり、単位がなく、Python の pearsonr() 関数を使用して計算できます。効果サイズ、サンプルサイズ、有意性、検出力レベルに影響される統計検出力も、実験計画における重要な要素として説明されており、検出力分析を通じて推定して実験に必要な最小サンプルサイズを決定できます。

  • 01:15:00 このビデオでは、予測モデリングにおけるデータ サンプリングとデータ リサンプリングの重要性について説明し、サンプリングには母集団のサブセットの選択が含まれるのに対し、リサンプリングにはデータ サンプルから母集団パラメータを複数回推定して精度を向上させ、不確実性を定量化することが含まれることを説明しています。このビデオでは、確率サンプリングまたは非確率サンプリングに分類される一般的なサンプリング方法について説明し、機械学習エンジニアが遭遇する可能性が高い 3 種類のサンプリング (単純なランダム サンプリング、系統的サンプリング、層別サンプリング) を取り上げています。さらに、このビデオでは、サンプリング プロセスで発生する可能性のある潜在的なエラーについて警告し、母集団に関する結論を導き出す際の統計的推論と注意の必要性を強調しています。このビデオではさらに、機械学習で一般的に使用されるサンプリング手法、つまり k 分割相互検証とブートストラップについて説明します。後者は母集団の確実な推定値を提供しますが、計算コストが高くなります。

  • 01:20:00 ブートストラップ法は、複数の小さなデータ サンプルからの推定値を平均することによって母集団に関する量を推定するためのツールとして説明されています。サンプルは、大規模なデータセットから観測値を一度に 1 つずつ抽出し、抽出後に元のサンプルに戻すことによって構築されます。このアプローチは、置換付きサンプリングと呼ばれます。 SciPy ライブラリで提供される resample 関数は、単一のブートストラップ サンプルを作成するために使用できます。ただし、この関数には、適合モデルの評価に使用できる out-of-bag 観察を簡単に収集するメカニズムは含まれていません。バッグの観察結果は、引き続き Python のリスト内包表記を使用して収集できます。さらに、限られたデータで機械学習モデルを評価するために使用されるリサンプリング手順である k 分割相互検証のプロセスについても説明します。 K 分割サイクル学習クラスはこの手順に使用でき、k 分割交差検証の一般的に使用される 4 つのバリエーションについて説明します。

  • 01:25:00 講演者は、機械学習におけるリサンプリングの 2 つのアプローチ、k 分割相互検証とトレーニングとテストの分割について説明します。 k 分割相互検証がゴールドスタンダードですが、トレーニングとテストの分割の方が理解しやすく、実装しやすい場合があります。講演者は、Python でトレーニングとテストの分割アプローチを使用する方法を実演し、推定統計の使用についても言及します。推定統計は、結果のサイズと不確実性を定量化することを目的としており、研究文献でより一般的になりつつあります。推定統計量の 3 つの主要なクラスには、効果サイズ、区間推定、メタ分析が含まれます。推定統計への移行が起こっているのは、研究課題の文脈での分析と解釈が容易だからです。

  • 01:30:00 効果の大きさと間隔推定を測定するためのさまざまな方法について説明します。効果の大きさは、サンプルが一緒に変化する程度である関連性、またはサンプルが異なる程度である差異を通じて測定できます。一方、区間推定では、観測値の不確実性を定量化でき、許容区間、信頼区間、または予測区間を通じて行うことができます。許容区間はプロセス出力の特定の割合が収まる上限と下限を指定し、信頼区間は母集団パラメーターの推定値の限界を示します。最後に、ガウス分布から抽出された観測値のサンプルの許容範囲を計算する方法をデモンストレーションします。

  • 01:35:00 信頼区間の概念について説明します。信頼区間は、推定の不確実性を定量化するために使用される区間統計です。信頼区間は、平均、標準偏差などの母集団パラメータの境界を提供します。信頼区間の値は、推定の不確実性を定量化する能力です。信頼区間が小さいほど推定の精度は高くなりますが、信頼区間が大きいほど推定の精度は低くなります。さらに、分類精度または誤差の概念について説明します。分類精度または誤差は、モデルによって行われた正しい予測または誤った予測の割合を説明するために使用される割合または比率です。分類誤差または精度を使用すると、比率のガウス分布を仮定することで信頼区間を簡単に計算できます。

  • 01:40:00 モデルの分類誤差の信頼区間の計算から、信頼区間を推定するためのノンパラメトリック手法としてブートストラップ リサンプリングの使用まで、信頼区間の概念が説明されています。ブートストラップ リサンプリング法では、母集団パラメータを推定するために、固定された有限データ セットから置換されたサンプルを抽出します。さらに、予測間隔の概念は、将来の観測値が特定の信頼水準に該当する間隔の推定値として導入されており、回帰モデルを使用した予測や予測を行う際に役立ちます。

  • 01:45:00 予測間隔の概念は、以前に観測されたデータに基づいて、将来の観測が特定の信頼水準に該当する範囲の推定値として説明されています。これは、母集団サンプル変数に関連する不確実性を定量化する信頼区間とは異なります。予測間隔は通常、予測または予測モデルで使用されます。この記事では、2 変数データセットにおける線形回帰の簡単な例を紹介します。この例では、変数間の関係が散布図から確認できます。次に、線形回帰モデルを使用して 95% の確実性の予測間隔で単一の予測を行い、既知の期待値と比較します。予測区間と信頼区間の違いと、誤差に伴う不確実性を考慮して予測区間の方が通常は信頼区間よりも広いという事実が強調されます。
Applied Statistics for Machine Learning Engineers
Applied Statistics for Machine Learning Engineers
  • 2022.03.24
  • www.youtube.com
Complete Course on Applied Statistics for Machine Learning Engineers. It's all the statistics you'll need to know for a career in machine learning.
 

機械学習エンジニアのための応用線形代数



機械学習エンジニアのための応用線形代数

このビデオでは、線形代数は機械学習に不可欠な微積分と統計を理解するための基本的な構成要素として機能するため、機械学習エンジニアにとって線形代数を学習することの重要性を強調しています。線形代数をより深く理解することで、実務者は機械学習手法がどのように機能するかをよりよく理解できるようになり、アルゴリズムをカスタマイズしたり、新しいアルゴリズムを開発したりできるようになります。

このコースでは、具体的な例とデータ構造を使用して行列とベクトルの演算をデモンストレーションしながら、線形代数の基礎を教えるトップダウンのアプローチを採用しています。線形代数は行列とベクトルの数学として説明され、データ操作のための言語を提供し、これらのデータ構造に対する操作を通じて新しい列や数値配列の作成を可能にします。線形代数は、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 を使用すると、最も重要な情報を保持しながら、元の行列を低次元の表現に変換することが可能になります。この手法は、より効率的な処理と分析が可能になるため、大規模なデータセットを扱う場合に特に有益です。

要約すると、このビデオでは機械学習の線形代数に関連するさまざまなトピックを取り上げています。機械学習の文脈で微積分と統計を理解するための基本的な構成要素として線形代数を学習することの重要性が強調されています。このビデオでは、アルゴリズムのカスタマイズと開発、数値線形代数、統計解析、信号処理やコンピューター グラフィックスのような他のさまざまな分野など、機械学習における線形代数の応用について説明しています。

さらに、ビデオでは、ベクトル、行列、行列演算、ベクトルノルム、行列分解手法、スパース行列など、線形代数の主要な概念についても説明しています。これらの概念が機械学習でどのように使用されるかを説明し、実際のアプリケーションへの洞察を提供しました。

線形代数を理解することで、機械学習の実践者は、機械学習アルゴリズムの基礎となる数学的基礎をより深く直感的に理解し、それらを現実世界の問題に効果的に適用できます。線形代数は、データ操作、次元削減、最適化のための強力なツールとして機能し、効率的かつ効果的な機械学習ソリューションを可能にします。

  • 00:00:00 線形代数は機械学習に必要な微積分と統計を理解するための構成要素と考えられているため、機械学習エンジニアにとって線形代数を学習することの重要性が強調されています。線形代数を深く理解することで、機械学習の実践者は手法がどのように機能するかをより直感的に理解できるようになり、アルゴリズムをカスタマイズしたり、新しいアルゴリズムを考案したりできるようになります。このコースでは、線形代数の基礎をトップダウンのアプローチで教え、具体的な例とデータ構造を使用して行列とベクトルの演算を示します。線形代数は行列とベクトルの数学であり、データ用の言語を提供し、これらのデータ構造に対する演算を使用して新しい列や数値配列を作成できるようにします。線形代数は、未知の線形方程式系を解くために 1800 年代後半に開発され、現在では機械学習を理解するための重要な前提条件となっています。

  • 00:05:00 講演者は、コンピュータにおける線形代数の応用である数値線形代数について説明します。これには、線形代数演算の実装と、デジタル コンピューターで限られた浮動小数点精度を使用する場合に発生する潜在的な問題への対処が含まれます。多くの深層学習アルゴリズムは線形代数演算を迅速に計算するグラフィカル処理ユニットの機能に依存しているため、数値線形代数は機械学習に不可欠なツールです。線形代数演算の計算には、いくつかの一般的なオープンソース数値線形代数ライブラリが使用されており、Fortran ベースの線形代数ライブラリは、Python などのプログラミング言語を使用した最新の実装の基礎を提供します。線形代数は統計学、特に多変量統計解析、主成分分析、線形回帰問題の解決にも不可欠です。さらに、講演者は、信号処理、コンピュータ グラフィックス、さらには物理学などの分野における線形代数のさまざまな応用について、テンソルを使用したアルバート アインシュタインの相対性理論と、線形代数の一種であるテンソル微積分を交えて説明します。

  • 00:10:00 線形代数の表記法と操作を使用して、トリミング、スケーリング、シャーリングなどの画像に対する線形代数操作を使用する概念が導入されています。さらに、ワン ホット エンコーディングと呼ばれるカテゴリ変数の一般的なエンコーディング手法についても説明します。さらに、機械学習で使用される主なデータ構造、N 次元配列または ND 配列、および Python の NumPy ライブラリを使用してそれらを作成および操作する方法について説明します。最後に、既存の配列から新しい配列を作成するための最も一般的な 2 つの関数、v-stack と水平スタッキングについて説明します。

  • 00:15:00 講演者は、通常、機械学習データを表すために使用される numpy 配列内のデータを操作およびアクセスする方法について説明します。 1 次元のリストは array 関数を使用して配列に変換でき、2 次元のデータ配列はリストのリストを使用して作成できます。インデックスによるデータへのアクセスは他のプログラミング言語と似ていますが、コロン演算子を使用して numpy 配列をスライスすることもできます。ネガティブ インデックス付けも可能で、機械学習での入力変数と出力変数の指定にスライスを使用できます。

  • 00:20:00 このビデオでは、機械学習で一般的な多次元データ セットを操作するためのテクニックを取り上げています。 1 次元のスライスから始まり、2 次元のスライスに進み、トレーニングとテストのためにデータを入力値と出力値に分離します。次にビデオでは、1 次元配列を 1 列の 2 次元配列に再形成することや、1 つ以上のタイム ステップと 1 つ以上の特徴の複数のサンプルを期待するアルゴリズムの 2 次元データを 3 次元配列に再形成することなど、配列の再形成について説明します。 。最後に、ビデオでは配列ブロードキャストについて説明します。これにより、さまざまなサイズの配列を加算、減算、または算術で使用できるようになり、さまざまなサイズのデータ セットに役立ちます。

  • 00:25:00 numpy での配列演算の制限について説明します。これには、同じ次元と同じサイズの次元の配列に対してのみ演算を実行することが含まれます。ただし、この制限は、最後に一致しない次元に沿って小さい配列を複製する numpy の組み込みブロードキャスト機能によって克服されます。この方法により、形状やサイズが異なる配列間の演算が可能になります。スカラー配列と 1 次元配列、2 次元配列内のスカラー、2 次元配列内の 1 次元配列など、ブロードキャストの 3 つの例が示されています。ブロードキャストを実行するには、配列内の各次元の形状が等しいか、1 つの次元のサイズが 1 である場合にのみ演算を実行できるという、ブロードキャストを実行するために満たさなければならない厳格なルールを含む、ブロードキャストの制限についても言及します。

  • 00:30:00 講演者はベクトルの概念を紹介します。ベクトルはスカラーと呼ばれる 1 つ以上の値のタプルであり、多くの場合「v」などの小文字を使用して表されます。ベクトルは、n 次元空間内の点または座標と考えることができ、Python では numpy 配列として作成できます。講演者は、ベクトルの加算や減算などのベクトル算術演算についても説明します。これらの演算は、同じ長さのベクトルに対して要素ごとに実行され、結果として同じ長さの新しいベクトルが生成されます。さらに、講演者は、ベクトルにスカラーを乗算してその大きさをスケールできることと、Python で numpy 配列を使用してこれらの演算を実行する方法について説明します。最後に、講演者は、スカラーを与える 2 つのベクトルのドット積と、それをベクトルの加重和の計算に使用する方法について話します。

  • 00:35:00 ベクトル規範と機械学習におけるその重要性に焦点を当てています。ベクトル ノルムは、ベクトルのサイズまたは長さを指し、ベクトル空間の原点からのベクトルの距離を要約する何らかの尺度を使用して計算されます。ノルムは、すべてゼロ値のベクトルを除き、常に正の数です。機械学習で使用される 4 つの一般的なベクトル ノルム計算が導入されています。ベクトル L1 ノルムから始まり、L2 ノルムと最大ノルムが続きます。このセクションでは、行列の定義と Python で行列を操作する方法についても説明し、行列演算、行列間の乗算 (内積)、行列ベクトルの乗算、およびスカラー乗算について説明します。行列は、1 つ以上の列と 1 つ以上の行を持つスカラーの 2 次元配列であり、多くの場合、A などの大文字で表されます。

  • 00:40:00 行列の乗算、行列の除算、行列のスカラー乗算など、機械学習のための行列演算の概念が導入されています。行列の乗算 (行列のドット積とも呼ばれます) では、最初の行列の列数が 2 番目の行列の行数と等しい必要があります。 numpy の dot 関数を使用してこの操作を実装できます。行列の転置の概念も導入され、元の行列の行数と列数を反転することによって新しい行列が作成されます。最後に、行列の逆行列のプロセスについて説明します。このプロセスでは、行列と乗算して単位行列を生成する別の行列を見つけます。

  • 00:45:00 行列の反転の概念について説明します。行列の反転は、行列の横にある負の 1 の上付き文字で示されます。逆行列の操作には、一連の効率的な数値手法を見つけることが含まれます。正方行列のトレース演算についても説明します。これは、numpy の関数 track を使用して計算できます。正方行列の行列式は、行列の体積のスカラー表現として定義され、numpy の関数 det を使用して計算することもできます。さらに、行列のランクが導入されます。これは行列内の線形に独立した行または列の数を推定し、通常は特異値分解を使用して計算されます。最後に、疎行列の概念について説明します。疎行列は、ほとんどゼロの値を含む行列であり、表現したり操作したりするのに計算コストがかかります。

  • 00:50:00 疎行列について学習します。疎行列は、ほとんどがゼロ値で構成される行列であり、ほとんどがゼロ以外の値を持つ密行列とは異なります。スパース性は、ゼロ値の数を行列内の要素の総数で割ったスコアを計算することで定量化できます。また、スパース性に関する 2 つの大きな問題、空間の複雑さと時間の複雑さについても学びます。 Scipy はスパース行列を作成するためのツールを提供しており、多くの線形代数の numpy 関数と scipy 関数をそれらの関数で実行できます。スパース行列は、データの観察とデータの準備のための応用機械学習で一般的に使用されます。

  • 00:55:00 線形代数で一般的に使用される、特に機械学習に関連するさまざまなタイプの行列について説明します。行数と列数が等しい正方行列が、方形行列とともに導入されます。正方行列の主対角線と次数についても説明します。さらに、対称行列、三角行列(上下を含む)、対角行列、単位行列、直交行列についても説明します。 2 つのベクトルの内積が 0 に等しい場合、直交行列が形成されることに注意してください。

  • 01:00:00 直交行列とテンソルについて学びます。直交行列は、列と行が直交する単位ベクトルである正方行列の一種です。これらの行列は計算コストが低く、逆行列の計算が安定しており、深層学習モデルで使用できます。 Tensorflow では、テンソルは基礎となるデータ構造であり、多次元配列として表現されるベクトルと行列の一般化です。 Python では、行列と同様の n 次元配列を使用し、加算や減算などの要素ごとのテンソル演算でテンソルを操作できます。さらに、テンソル、行列、ベクトルに対してテンソル積演算を実行できるため、より高次元の直感が可能になります。

  • 01:05:00 このビデオでは、行列を構成要素に削減し、分解行列に対して実行できるより複雑な行列演算を簡素化する方法である行列分解を紹介します。今後のレッスンで説明する 2 つの広く使用されている行列分解手法は、正方行列の LU 行列分解と、長方形行列の QR 行列分解です。 LU 分解は、線形回帰問題で線形方程式を簡略化し、行列の行列式と逆行列を計算するために使用できます。一方、QR 分解は、連立一次方程式を解く際に応用できます。どちらの分解も、Python の NumPy パッケージの組み込み関数を使用して実装できます。

  • 01:10:00 ビデオでは、対称行列と正定行列に使用されるコレスキー分解について説明します。この方法は LU 分解のほぼ 2 倍効率的であり、対称行列の分解に適しています。 Cholesky 分解は下三角行列で表され、NumPy の Cholosky 関数を通じて簡単にアクセスできます。このビデオでは、複雑な演算を簡略化するために固有分解などの行列分解手法が使用され、固有分解では行列が固有ベクトルと固有値に分解されることについても説明されています。最後に、ビデオでは、固有ベクトルは単位ベクトルであるのに対し、固有値はスカラーであり、両方とも次元を削減し、複雑な行列演算を実行するのに役立つことが説明されています。

  • 01:15:00 固有分解の概念と効率的な反復アルゴリズムを使用したその計算について説明します。固有分解は、正方行列をその固有値と固有ベクトル (それぞれ係数と方向) に分解する方法です。 NumPy では関数 eig を使用して固有分解を計算でき、ベクトルが実際に行列の固有ベクトルであることを確認するテストを実行できます。元の行列は固有値と固有ベクトルから再構築することもできます。また、このセクションでは、後続の特定の行列計算を簡素化するために行列をその構成部分に減らすための行列分解方法としての特異値分解 (SVD) と、圧縮、ノイズ除去、データ削減などのさまざまな分野でのその応用についても簡単に紹介します。

  • 01:20:00 特異値分解 (SVD) の概念と機械学習におけるその応用について説明します。 SVD は、最小二乗線形回帰、画像圧縮、データのノイズ除去など、機械学習における他の行列演算やデータ削減方法の計算に使用されます。元の行列は、SVD から返された u、sigma、および v 要素から再構築できます。 SVD の一般的な用途は次元削減です。この場合、データを、予測問題に最も関連性の高い特徴の小さなサブセットに削減できます。これは、潜在意味分析または潜在意味インデックス作成と呼ばれる技術を使用して、自然言語処理にうまく適用されています。この機能を直接実装する切り捨てられた SVD クラスについて説明し、定義された行列とそれに続く変換バージョンを使用してそのアプリケーションを示します。
Applied Linear Algebra for Machine Learning Engineers
Applied Linear Algebra for Machine Learning Engineers
  • 2022.03.26
  • www.youtube.com
This course will cover everything you need to know about linear algebra for your career as a machine learning engineer.
 

機械学習エンジニアのための 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 の利用を検討している機械学習エンジニアにとって貴重なリソースとして機能します。

  • 00:00:00 インストラクターは、機械学習エンジニア向けに XGBoost の概要を説明します。 XGBoost は、高精度の分類モデルと回帰モデルを迅速に構築するために使用されるオープンソースの機械学習ライブラリであり、高度に構造化されたデータセットに対して現実世界のモデルを構築するための最良の選択肢となっています。 XGBoost の作者は Taiki Chen で、速度とパフォーマンスを向上させる勾配ブースト デシジョン ツリーの実装です。インストラクターは、XGBoost が Python や scikit-learn 実装などのいくつかのインターフェイスをサポートしていることも強調し、いくつかのモジュールを使用してデータをロードしてモデルを構築する XGBoost のデモを提供します。

  • 00:05:00 インストラクターは、データをトレーニング セットとテスト セットに分離することに重点を置き、XGBoost モデルをトレーニングするためのデータセットを準備する方法を説明します。ターゲット変数は二項分類問題として識別され、必要なハイパーパラメーターが XGBoost モデルに設定されます。モデルはトレーニング データに基づいてトレーニングされ、モデルの精度は精度スコアを指標として使用してテスト データに基づいて評価されます。インストラクターは、勾配ブースティングの概要、XGBoost の背後にある概念、およびそれが従来の機械学習モデルのより広範なカテゴリにどのように適合するかについても説明します。

  • 00:10:00 再帰的バイナリ分割と、複数の弱いモデルを組み合わせて予測の精度を向上させるアンサンブル学習について学習します。勾配ブースティングは、弱いモデルを同じタイプの他のモデルと組み合わせて、より正確なモデルを生成することにより、予測モデルを構築する手法です。後続の各ツリーは、前のツリーの予測残差に対して構築されます。デシジョン ツリーは勾配ブースティングで使用され、特定の条件に基づいた決定に対するすべての可能な解決策のグラフィック表現を必要とします。デシジョン ツリーの設計には、より多くの潜在的な解決策を特定できるようにブレーンストーミング プロセスを形式化するのに役立つ、十分に文書化された思考プロセスが必要です。

  • 00:15:00 ビデオでは、二分決定木がどのように作成されるかを説明しています。このプロセスは再帰的バイナリ分割と呼ばれ、すべての入力変数と分割点を貪欲な方法で評価して、予測値が対応する実際の値にどれだけ近いかを測定するコスト関数を最小化することが含まれます。最小コストの分割が選択され、結果として得られるグループは再帰的に細分化できます。このアルゴリズムは、各ステップで最善の決定を下すことに重点を置いた貪欲なアルゴリズムです。分割数が少ないデシジョン ツリーは、理解しやすく、データの過剰適合の可能性が低いため、推奨されます。過剰適合を防ぐために、XGBoost アルゴリズムでは、各ツリーの最大深さを制限したり、無関係な枝を剪定したりするなど、ツリーの成長を停止するメカニズムが可能になります。このビデオでは、scikit-learn を使用したラベルのエンコードと iris データセットの読み込みについても説明しています。

  • 00:20:00 このビデオでは、ラベル エンコーダー メソッドを使用して、ターゲット ラベルを数値変数としてエンコードするプロセスを説明します。データがトレーニング データセットとテスト データセットに分割されると、XGBoost 分類器が定義され、トレーニング データに対してトレーニングされます。次に、このモデルを使用して、テスト データセットに対して 90% の精度で予測が行われます。次に、複数のモデルを組み合わせて予測の精度を向上させる方法としてアンサンブル学習が導入され、より効率的な学習アルゴリズムが可能になります。このビデオでは、最良の結果を達成しようとする場合、分類または回帰問題に適切なモデルを選択することの重要性を強調しています。

  • 00:25:00 機械学習モデルにおけるバイアスと分散の概念について説明し、この 2 つのバランスの必要性が強調されます。アンサンブル学習は、弱学習器のグループを組み合わせてより複雑なモデルを作成することで、このバランスに対処するために使用される手法として導入されています。バギングとブースティングは 2 つのアンサンブル手法であり、バギングはデータのいくつかのサブセットを作成してデシジョン ツリーをトレーニングし、分散が高くバイアスが低いモデルのアンサンブルを作成することで分散を削減するために使用されます。ブースティングには、デシジョン ツリーを使用してモデルを順次学習することが含まれ、以前のモデルからのエラーの修正が可能になります。これは、入力を正しく分類するための弱学習器間のチームワークによって達成されます。勾配ブースティングは、微分可能な損失関数の最適化と回帰ツリー形式の弱学習器の使用を含む特定のタイプのブースティングです。

  • 00:30:00 勾配ブースティングの概念が紹介され、その 3 段階のプロセスが説明されました。最初のステップでは、損失を最小限に抑えるために反復プロセスにデシジョン ツリーなどの弱い学習器を追加します。 2 番目のステップはツリーを順次追加することであり、最後のステップは、より多くの反復を通じてモデルのエラーを削減することを目的としています。このデモンストレーションでは、k 分割交差検証を使用してデータをセグメント化し、XGBoost を通じて各分割のスコアを取得しました。決定木は、過学習を避けるために浅い深さの弱学習器の選択として使用されました。最後に、機械学習モデルが特定の現象のデータにどの程度適合するかを示す尺度として損失関数が定義されました。

  • 00:35:00 勾配ブースティングの中核となるステップについて説明します。これには、損失関数の最適化、弱学習器 (通常は決定木) の使用、アンサンブル学習による加算方式での多数の弱学習器の結合が含まれます。このセクションでは、欠損値の処理、モデルのディスクへの保存、早期停止の使用など、XGBoost の使用に関するさまざまな実践的な側面についても説明します。このセクションではコードベースのアプローチが採用されており、XGBoost のさまざまな使用法を示すために多数のデモが提供されています。さらに、このセクションでは、欠損値を平均値の補完で置き換える方法など、データ クレンジングの重要性についても説明します。

  • 00:40:00 講演者は、自分のデータをクリーニングすることの重要性について説明し、その作業をアルゴリズムに依存しないようにします。これらは、空の値を削除することでモデルの精度がどのように向上するかを示し、アルゴリズムによる空の値の処理を許可しないように注意します。講演者はまた、トレーニングされたモデルを後で使用するためにディスクに保存する方法である pickle の概念を紹介し、pickle ライブラリを使用して Python でモデルを保存およびロードする方法を実演します。最後に、XGBoost と matplotlib のプロット重要度関数を使用して、データセット内の各属性の重要性をプロットする方法を示します。

  • 00:45:00 講演者は、XGBoost によって決定される機能重要度スコアと、機械学習モデルを構築する際のさまざまなシナリオの分析とテストの重要性について説明します。彼らはタイタニック号のデータセットの例を使用し、特徴重要度スコアで順位が低いにもかかわらず、「性別」属性を追加することでモデルの精度がどのように向上するかを示しています。講演者は、機能重要度スコアだけに依存せず、さまざまなシナリオをテストすることの重要性を強調しました。また、トレーニング中にテスト セットのパフォーマンスを評価および報告する XGBoost の機能についても言及しています。

  • 00:50:00 このビデオでは、評価メトリックを指定し、x と y のペアの配列を渡すことによって、トレーニング中に XGBoost モデルのパフォーマンスを監視する方法について説明します。各評価セットでのモデルのパフォーマンスは保存され、トレーニング後に使用できるようになります。これらのパフォーマンス測定を使用すると、学習曲線を作成してモデルの動作についてさらに洞察を得ることができ、過剰適合を防ぐために学習を早期に停止する可能性があります。このビデオでは、検証スコアに改善が観察されない場合に、一定のエポック数の後にトレーニングを停止する手法である早期停止についても説明しています。

  • 00:55:00 このビデオでは、XGBoost での早期停止ラウンドの使用と、ボストンの住宅価格を評価するための回帰モデルの構築について説明しています。個々のツリーの構築と入力データの効率的な準備に焦点を当てて、勾配ブースティングにおける並列処理の利点についても説明します。マルチスレッド サポートのデモンストレーションが提供されており、システムのすべてのコアを利用して複数の計算を同時に実行することでプログラムの実行を高速化できます。このビデオでは、XGBoost は分類問題を対象としているが、回帰モデルの構築にも優れていることにも言及しています。

  • 01:00:00 スピーカーは、例の反復回数を保持するリストを作成し、for ループを使用して、スレッド数に基づいてモデルの実行速度をテストします。各反復のビルド速度と、スレッド数の増加に伴ってモデルの速度がどのように低下するかを示すプロットの 2 つの結果が出力されます。次に、講演者はハイパーパラメータ チューニングについて説明します。これは、モデルにパラメータを渡してパフォーマンスを向上させることを意味します。彼らは、xgboost と scikit-learn のデフォルト パラメーターを調査し、モデルのパフォーマンスを絞り出すにはハイパーパラメーターの調整にある程度の作業が必要になる可能性があることに注意しました。最後に、勾配ブースト モデルを構成するために必要なツリーまたは弱学習器または推定器の数と、各ツリーがどれくらいの大きさであるべきかを詳しく調べます。

  • 01:05:00 このビデオでは、XGBoost モデルを最適化するためのハイパーパラメーターの調整について説明しています。これらは、n 推定器のモデル パラメーターのグリッド検索の例を示しています。これは、一連の値を評価して、特定のモデルで推定器をテストします。また、さまざまなサブサンプル手法と、XGBoost クラスの 2 番目のラッパーで行サンプリングを指定する方法についても説明します。さらに、このビデオでは、試行錯誤を経て学習率を設定することの重要性を強調しています。学習率は、最適化プロセスの他の多くの側面と相互作用することが示されており、学習率が小さいほど、より多くのトレーニング エポックが必要になります。最後に、診断プロットは、学習率が学習率とモデルの学習ダイナミクスにどのような影響を与えるかを調査するのに役立ちます。

  • 01:10:00 プレゼンターは、タイタニック号データセットで高スコアの XGBoost モデルを作成する方法をデモンストレーションします。発表者は、パンダとトレーニング テスト分割ライブラリを使用してデータを前処理し、XGBoost を使用してモデルをトレーニングします。モデルの精度評価は 80 以上であり、再開する価値があります。プレゼンターはまた、モデルを過剰適合させたり、結果を改ざんしたりして、Kaggle リーダーボードに偽のスコアをアップロードする人々に対して警告しています。最後に、発表者はコードを 1 行ずつ説明し、データ クリーニング、ラベル エンコード、NULL 値の処理、X 軸と Y 軸の定義、モデルのトレーニングとテストのためのデータの分割をデモンストレーションします。

  • 01:15:00 応用機械学習は主にデータに関するものであり、モデリングに関するものではないため、欠損データを正しく処理することの重要性が繰り返し説明されました。さらに、モデルのパフォーマンスを監視した結果が説明され、過剰適合を回避するために複雑な機械学習モデルをトレーニングするためのアプローチとして早期停止が提示されました。このセクションには、XGBoost のマルチスレッド サポートの構成と、XGBoost および Scikit-learn のデフォルトのハイパーパラメータについての説明も含まれています。
A Complete Introduction to XGBoost for Machine Learning Engineers
A Complete Introduction to XGBoost for Machine Learning Engineers
  • 2022.03.28
  • www.youtube.com
This course will cover all the core aspects of the most well-known gradient booster used in the real-world.
 

機械学習エンジニアのための 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 の前処理関数を使用してすべての特徴が平均ゼロと単位分散を持つように標準化されます。

最後に、講師はカテゴリ特徴量のワンホット エンコーディングの概念について簡単に説明し、次のビデオでさらに詳しく説明する予定であると述べています。ワンホット エンコーディングは、カテゴリ変数をバイナリ ベクトルとして表現するために使用される一般的な手法であり、モデルがそれらを正しく解釈できるようにします。

要約すると、コースのこの部分では、講師は特徴量エンジニアリングの概念を紹介し、機械学習におけるその重要性を説明しました。彼らは探索的なデータ分析を実施し、データセットをクリーンアップし、得られた洞察に基づいて機能を設計しました。インストラクターは、新しい特徴を作成する方法、カテゴリ特徴を数値にマッピングする方法、および冗長な特徴を削除する方法をデモンストレーションしました。次のステップには、データの前処理と機械学習モデルの機能の準備が含まれます。

上記の概要は、特徴エンジニアリング コースで通常カバーされる一般的なトピックに基づいた仮定の続きであることに注意してください。実際の内容や例は、コースや講師によって異なる場合があります。

  • 00:00:00 インストラクターは、特徴量エンジニアリングに関するコースと、毎日生成される膨大な量のデータから価値を抽出するその重要性を紹介し、その乱雑なデータから最大の価値を抽出できるようにするために必要なツールキットを学習者に提供します。学習者は、Python の入門レベルの知識と、NumPy、Pandas、Scikit-Learn の使用経験があることを前提としています。インストラクターは、機械学習モデルを高レベルで構築するプロセスも体験し、このコースでのみ焦点を当てる重要なフェーズである探索的データ分析とデータ クレンジングの重要性を強調します。学習者は最終章でパイプライン全体を学習しますが、主に特徴量エンジニアリングに焦点を当てます。

  • 00:05:00 特徴量エンジニアリングの重要性とそれがモデルのパフォーマンスに与える影響について説明します。特徴エンジニアリングは、機械学習モデルの基礎となる信号をよりよく表す特徴に生データを変換し、目に見えないデータの精度を向上させるプロセスです。高品質のデータがなければ、機械学習モデルは本質的に価値がないため、これは機械学習の縁の下の力持ちです。ただし、優れた機能を使用すると、単純なモデルでも非常に強力になる可能性があります。さらに、特徴を選択するときは常識に従うことが重要です。無関係な特徴は削除し、分析対象の問題に関連する要素を含める必要があります。最終的には、モデルに入力される特徴の品質が、モデルのパフォーマンスの主な制限要因になります。

  • 00:10:00 このビデオでは、機械学習モデルが有用な信号のみを使用するように機能をクリーンアップおよびエンジニアリングするためのさまざまなテクニックを取り上げています。これらには、外れ値の削除、データの正規化、偏ったデータの変換、特徴をより有用なものに結合する、連続変数からカテゴリ変数を作成することが含まれます。これらの手法の目的は、データの重要な傾向を正確に捕捉し、代表的ではない傾向を破棄する特徴を取得することです。このビデオでは、名前、年齢、クラス、チケット番号、キャビン番号、乗船港など、船に乗っている乗客に関する情報が含まれるタイタニック号のデータセットも紹介されています。ビデオはさらに、船上の個人が生き残るかどうかという目標変数の分布を調査します。

  • 00:15:00 講演者は、機械学習におけるクラスの不均衡問題について説明します。この問題では、肯定的なケースの数が否定的な多数派のケースよりも大幅に少ないため、モデルが肯定的なケースの信号を検出することが困難になります。講演者は、負のクラスをダウンサンプリングするなどして、両方のケースで信号をよりよく拾えるようにモデルを調整することを提案しています。ただし、この例で使用されているデータセットはそれほど不均衡ではないため、講演者は連続フィーチャのみに関する基本的な探索データ分析から始めて、データ フィーチャの探索を進めます。スピーカーは、名前、航空券、性別、客室乗務員、乗船者などの非数値特徴を削除し、クリーンアップされたデータセットの最初の 5 行を出力します。次に、話者は特徴の分布と相関関係を調べ、p クラスと公平が生存列と最も強い相関関係を持っているため、予測に役立つ可能性があることを発見しました。

  • 00:20:00 ビデオでは、データの連続的な特徴に関する基本的な説明データ分析について説明します。ビデオでは、名前やチケットなどの数値以外の特徴が削除され、最初の 5 行が出力されます。データは組み込みの pandas 関数を使用して記述されており、欠損値と「Survived」と呼ばれるバイナリ ターゲット変数があることがわかります。相関行列が分析され、各特徴が「生存」およびその他の特徴とどのように相関しているかに注目することが重要です。強い負の相関は、正の相関と同様に有用である可能性があると述べられています。 「p クラス」と「運賃」の特徴が「生存」と最も強い相関関係を持っていることが観察されますが、「運賃」と「p クラス」は特徴間に高い相関があるため、モデルが混乱する可能性があります。

  • 00:25:00 インストラクターは、ターゲット変数の有用な予測変数となる可能性のある特徴を特定する方法について説明します。この方法では、ターゲット変数でグループ化し、生き残った人と生き残らなかった人の各特徴の分布を分析し、統計的有意性を判断するために t 検定を実行することが含まれます。講師は、公平性と階級性という 2 つの特徴を強調し、生存を示す可能性のある優れた指標として際立っていますが、相関関係が解釈に及ぼす影響については警告しています。インストラクターは、年齢特徴の欠損値についても説明し、グループ化を使用して欠損値がランダムかどうかを判断します。さらに、インストラクターは、連続特徴量をプロットして、その分布とターゲット変数との関係を視覚化する方法について説明します。

  • 00:30:00 このビデオでは、生存率を決定する際に、連続特徴の平均値や中央値に依存するのではなく、データの完全な分布を見ることの重要性について説明しています。このビデオでは、生き残った人々と生き残れなかった人々の年齢と料金のヒストグラムを重ねてプロットする例が示されており、平均値のみに依存する場合に注意が必要であることが強調されています。さらに、このビデオでは、seaborn のカテゴリ プロットを使用して、乗客クラスや家族数などのさまざまなカテゴリ特徴のレベルごとに生存率パーセンテージをプロットしています。これは、ファースト クラスの乗客や家族の人数が少ない乗客の方が生存率が高い傾向を示しています。生き残る。このビデオでは、兄弟、配偶者、親、子の特徴を 1 つの特徴に結合する方法についても説明し、モデルを効果的に一般化するための指標変数を作成する際に健全なロジックを使用することの重要性についても説明しています。

  • 00:35:00 講演者は、機械学習における特徴量エンジニアリングの重要性を強調します。講演者は、場合によっては単一の機能よりも個別の機能の方が効果的である可能性があるため、テストせずに機能を過度に凝縮しないようにアドバイスしています。カテゴリ特徴に移り、講演者は欠損値と各特徴の一意の値の数を探すようアドバイスします。彼らは、特徴をグループ化し、各グループのターゲット変数の平均値を確認することが、データセットをより深く理解するためにどのように役立つかを説明します。特に、講演者は、失われた客室の特徴と生存率との関係を調査することに時間を費やしました。彼らは、この方法でデータを調査することで、特徴の価値が一見低いにもかかわらず、生存率の強力な指標を発見するに至った経緯を説明しています。

  • 00:40:00 講演者は、機械学習の機能を探索およびエンジニアリングするプロセスについて説明します。調査される機能には、キャビン、チケット、名前が含まれます。キャビン変数は、生存率に影響を与えると仮定される、キャビンの存在に関する指標変数を作成するために使用されます。チケット変数はランダムに割り当てられることが決定され、機能として削除されます。名前変数は、社会的地位を表し、生存率と相関している可能性がある称号について調査されます。ピボット テーブルを使用して各タイトルの生存率を調べます。外れ値は少年の「マスター」タイトルです。最後に、講演者は、さまざまなレベルの特徴と生存率との関係を調査するために、カテゴリ特徴をプロットすることについて説明します。

  • 00:45:00 さらなる特徴の調査により、タイトル、キャビンインジケーター、および性別が生存と強い相関関係がある一方、乗り出した特徴は多くの情報を提供せず、冗長であることが示されました。ピボット テーブルを使用すると、クイーンズタウンやサウサンプトンで乗船した人に比べ、シェルブールで乗船した人の方が船室を持っていることが判明し、シェルブールでの生存率が高いことが説明されました。最後に、乗車中の近親者の数が 1 つの特徴にまとめられ、相関関係により乗客クラスまたは運賃のいずれかの使用が提案されました。

  • 00:50:00 インストラクターは、特徴量エンジニアリングのプロセスと、機械学習における欠損値の処理方法について説明します。欠損値を置換するための 3 つの一般的なアプローチについて説明します。特徴の平均値または中央値で埋めること、妥当な値を予測するモデルを構築すること、またはデフォルト値を割り当てることです。インストラクターは、欠落している年齢値を、バイアスを回避しながらモデルを満たす平均値で置き換えることを決定します。 embarked 特徴 (カテゴリ変数) も、欠損値を示す別の値を追加することでクリーンアップされます。さらに、データ内の外れ値を削除する方法としてキャッピングのプロセスが導入されています。これは、外れ値を追跡するのではなく、モデルがデータの実際の傾向に適合していることを確認するために重要です。

  • 00:55:00 プレゼンターは、さまざまなしきい値を使用した外れ値の特定について説明します。外れ値を検出する関数が定義され、値の分布に基づいて各特徴のしきい値が設定および調整されます。兄弟、配偶者、親、子供、および年齢の最大値は適切であるため、制限する必要はありませんが、公平な特徴量は 99 パーセンタイルで制限されます。年齢および色白の特徴は、特徴に上限を設定する「クリップ」方法を使用して変換されます。次に、発表者は、ロングテールを追跡するモデルを含む、歪んだデータとその潜在的な問題について議論します。発表者は、古今東西の連続特徴量の分布を可視化し、よりコンパクトでわかりやすい分布に変換します。

  • 01:00:00 このビデオでは、機械学習モデルを改善するために、より適切に動作し、コンパクトになるようにデータを変換するプロセスを説明します。使用されている特定の変換は Box-Cox べき乗変換であり、指数が特定の特徴の各データ ポイントに適用されます。このビデオでは、さまざまな指数で変換をテストし、QQ プロットやヒストグラムなどの基準を使用して、どの変換が最もよく動作するデータを生成したかを判断するプロセスについて説明しています。最終的には、ロングテールや外れ値によって機械学習モデルの邪魔にならない、対象の特徴のよりコンパクトな分布が得られます。変換されたデータは、将来の使用に備えてデータ フレームに特徴として保存されます。

  • 01:05:00 このビデオでは、既存のテキスト データから新しいフィーチャを作成する方法を説明します。名前の特徴を分析した後、講演者はその人の肩書きを解析して新しい肩書きの特徴を作成する方法を示します。タイトルの特徴は、誰かが生き残ったかどうかを示す強力な指標であることが判明し、モデリングの準備としてデータに追加されます。このビデオでは、乗客が客室を持っているかどうかを示す、客室機能のバイナリ インジケーターの作成についても説明しています。最後に、講演者は、搭乗している兄弟、配偶者、両親、子供の数などの既存の特徴を、搭乗している近親者の数を示す新しい特徴に結合し、モデリング用のデータを準備する方法をデモンストレーションします。

  • 01:10:00 発表者は、機械学習モデルのカテゴリ特徴を数値特徴に変換することの重要性について説明します。彼らは、モデルは文字列値ではなく数値のみを理解できるため、これが必要であると説明し、2 番目の学習パッケージのラベル エンコーディングの例を挙げています。次に、ループを実行して、この変換をタイタニック データセット内の非数値フィーチャに適用します。最後に、発表者は、目に見えないデータに対する機械学習モデルのパフォーマンスを評価するために、データをトレーニング、検証、およびテスト セットに分割することの重要性について説明します。これらは、サイクル学習から分割されたトレーニング テストを使用してデータをこれらのセットに分割する方法を示しています。

  • 01:15:00 このビデオでは、トレーニング テスト分割メソッドを使用してデータをトレーニング、検証、およびテスト セットに分割する方法を説明しています。このメソッドは 1 つのデータ セットを 2 つに分割することしか処理できないため、3 つの個別のデータ セットを取得するにはメソッドを 2 回通過する必要があります。このビデオでは、異なるスケールの特徴を正規化するために、データを標準化すること、または値が平均よりどれだけ標準偏差上または下であるかを表す数値に変換することの重要性についても説明しています。標準のスカラーがインポートされ、データのスケーリングに使用されます。プロセスを説明するために例が提供されています。

  • 01:20:00 インストラクターは、一部の機械学習モデルのデータのスケーリングの重要性について説明し、タイタニック号の生存を予測する際の 4 つの異なる特徴セットのパフォーマンスを比較します。ランダム フォレストなどの一部のアルゴリズムではスケーリングされたデータは必ずしも必要ありませんが、スケーリングは他のアルゴリズムのトレーニングをより迅速に行い、パフォーマンスを向上させるのに役立ちます。さらに、インストラクターは 4 つの機能セットを定義します。元のフィーチャ、クリーンアップされたオリジナルのフィーチャ、新しいフィーチャにクリーンアップされたオリジナルのフィーチャ、および縮小されたフィーチャを使用して、それぞれにモデルを構築し、パフォーマンスを比較して、フィーチャのクレンジング、変換、および作成の価値を理解します。最後に、インストラクターはデータを CSV ファイルに書き出して、同じサンプルがトレーニング、検証、テスト セットで使用されるようにします。

  • 01:25:00 joblib、matplotlib、seaborn、numpy、pandas、ランダム フォレスト分類器、グリッド検索 cv などのパッケージを使用して、生の元の特徴にモデルを当てはめるプロセスについて説明します。相関行列から作成したヒートマップを用いて特徴間の相関を可視化したところ、乗客クラスと客室には0.7という高い相関があることが分かりました。グリッド検索 cv は、推定器の数やツリーの最大深さなど、モデルに最適なハイパーパラメーターを見つけるために使用されます。最良のモデルには最大深度 8 の推定器が約 512 個あることがわかり、平均スコアは約 84.5 パーセントとなり、次のデータ セットへの移動が可能になります。

  • 01:30:00 このビデオでは、ランダム フォレスト モデルにおける特徴の重要性と、グリッド検索 cv を使用する利点について説明します。モデルの特徴の重要度は、性別が最も重要な特徴である一方、以前は生存の強力な指標であると考えられていた乗客クラスよりも年齢の方が重要であることを示しています。ただし、乗客クラスは、客室の有無や支払った運賃など、他の特徴と高度に相関する可能性があり、その結果、何がターゲット変数との関係を実際に駆動するのかについてモデルが混乱する可能性があります。モデルがトレーニング データの 100% に対して最適なハイパーパラメータ設定で適合すると、検証セットで評価できるようになります。次に、モデルをクリーンな特徴に当てはめて、欠損値と外れ値が基礎的な傾向を検出する能力に大きな影響を与えているかどうかを判断します。このモデルの最適なハイパーパラメータ設定は、生の特徴に関するモデルよりも単純で、特徴の重要性は前のモデルとほぼ同じです。最後に、変換された特徴を含むすべての特徴にモデルを当てはめて、単純な特徴に加えてそれらがどの程度の価値を提供するかを確認します。

  • 01:35:00 このビデオでは、検証データ セットの各機能セットによって生成された最適なモデルを評価し、パフォーマンスに基づいて最適なモデルを選択するプロセスを説明します。このビデオでは、最適なモデルを決定する際にモデルのレイテンシーを考慮することの重要性について説明し、精度、精度、再現率スコアの計算に使用されるパッケージについても言及しています。以前に保存したモデルは、ループを使用して読み込まれ、モデル名をキー、モデル オブジェクトを値として辞書として保存されます。最適なモデルは検証セットのパフォーマンスに基づいて選択され、そのパフォーマンスの公平な観点からホールドアウト テスト セットでのパフォーマンスが評価されます。

  • 01:40:00 プレゼンターは、モデル ディクショナリに格納されているモデルをロードし、「モデルの評価」関数を使用してそのパフォーマンスを評価する方法について説明します。発表者は、このケーススタディでは、検証セットで最もパフォーマンスの高いモデルはすべての機能に基づいて構築されたモデルであり、削減された機能に基づいて構築されたモデルは最も単純で遅延が最も短いものであると説明しています。発表者は、解決している問題に応じて、精度と再現率の間のトレードオフを強調します。最後に、発表者は、予測時間の要件がないため、すべての機能に基づいて構築されたモデルをデプロイし、テスト セットで評価すると述べています。

  • 01:45:00 スピーカーは、モデルの選択にテスト セットがどのように使用されず、最終的に選択されたモデルのパフォーマンスを評価する公平な方法であるかを説明します。選択されたモデルは、64 個の推定器と最大深さ 8 を備えた 4 つの異なる機能に基づいて構築されました。精度は、目に見えないデータに対して堅牢にテストおよび評価され、相互検証で 83.7 パーセント、検証セットで 83、テスト セットで 81 の精度が得られました。この情報により、講演者はこのモデルがタイタニック号に乗った人々が生き残れるかどうかを予測するための最良のモデルとして提案することに自信を持っています。講演者はまた、このコースで学んだスキルを新しい機能セットに一般化して、価値を最後の一滴まで抽出して最も強力な機械学習モデルを構築できることにも言及しました。
Feature Engineering Case Study in Python for Machine Learning Engineers
Feature Engineering Case Study in Python for Machine Learning Engineers
  • 2022.04.06
  • www.youtube.com
Another free course to help you become a machine learning engineer in the real-world.LogikBot - Affordable, Real-World and Comprehensive - https://www.logikb...
 

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 の定義についてさらに議論し、フルマネージドで拡張性が高く、費用対効果が高く、高速なクラウドであることを強調します。

ビデオで説明されている追加のポイントは次のとおりです。

  1. BigQuery のストレージ形式: BigQuery は、クエリのパフォーマンスが最適化された列指向のストレージ形式を使用します。データを圧縮された列形式で保存するため、不要なデータにアクセスせずにクエリ内の特定の列を効率的に処理できます。この形式は、集計とフィルタリングを含む分析ワークロードに特に有益です。

  2. データの取り込み: BigQuery は、さまざまなデータ取り込み方法をサポートしています。 Google Cloud Storage、Google Sheets、Google Cloud Bigtable などのソースからデータを直接読み込むことができます。また、ETL (抽出、変換、読み込み) 操作のために、Dataflow や Dataprep などの他のデータ処理ツールとの統合も提供します。

  3. データのパーティショニングとクラスタリング: クエリのパフォーマンスを最適化するために、BigQuery はパーティショニングやクラスタリングなどの機能を提供します。パーティショニングには、選択した列 (日付など) に基づいて、大きなデータセットをより小さな管理可能な部分に分割することが含まれます。クラスタリングでは、1 つ以上の列に基づいて各パーティション内のデータがさらに整理され、スキャンされるデータ量が削減されてクエリのパフォーマンスが向上します。

  4. データ アクセス制御とセキュリティ: BigQuery は、データ セキュリティを管理するための堅牢なアクセス制御を提供します。 Google Cloud Identity and Access Management (IAM) と統合されているため、ユーザーはプロジェクト、データセット、テーブル レベルできめ細かいアクセス許可を定義できます。 BigQuery は保存時および転送時の暗号化もサポートしており、機密データを確実に保護します。

  5. データの料金設定とコストの最適化: このビデオでは、BigQuery の料金モデルについて簡単に触れています。従量課金制で動作し、クエリによって処理されたデータ量に基づいてユーザーに課金されます。 BigQuery はクエリ キャッシュなどの機能を提供しており、冗長なデータ処理を回避してコストを削減できます。コストを最小限に抑えるには、クエリを最適化し、不必要なデータ スキャンを回避することが重要です。

  6. BigQuery を使用した機械学習: このコースでは、機械学習タスクでの BigQuery の使用について説明します。 BigQuery は AutoML や TensorFlow などの Google Cloud の機械学習サービスと統合されているため、ユーザーは機械学習モデルをトレーニングする前にデータの準備や特徴量エンジニアリングに BigQuery の機能を活用できます。

  7. ユースケースと例: 講師は、大量のログ データの分析、市場調査の実施、顧客のセグメンテーションの実行、大規模なデータセットに対する複雑な分析クエリの実行など、BigQuery が優れているさまざまな実際のユースケースについて言及します。

全体として、このビデオでは BigQuery の機能、アーキテクチャ、主要な機能の概要を説明し、大規模なデータ分析や機械学習タスクへの BigQuery の適合性を強調しています。膨大な量のデータを効率的に処理するために、BigQuery のようなフルマネージドで拡張性の高いクラウドベースのソリューションを使用する利点を強調しています。

  • 00:00:00 このビデオでは、機械学習での BigQuery の使用に焦点を当てたコースの内容について説明します。 BigQuery は拡張性の高いサーバーレスのエンタープライズ データ ウェアハウスで、クラウド サービスになる前はもともと Google の社内で使用されていました。ペタバイト規模のデータに対応でき、わずか数秒でデータを返すことができるため、特に大規模なデータセットを扱う教師あり機械学習にとって貴重なリソースとなります。このコースの指導は実際のケーススタディに基づいており、学習者は、データの入手からモデル化して予測性の高いモデルを作成するまで、機械学習モデルを構築するプロセスを順を追って説明します。コース全体を通じて、学習者は BigQuery を利用してモデルを構築します。これは、BigQuery のみに固有の GCP アカウントを設定することを意味します。

  • 00:05:00 このビデオでは、Google におけるハードウェア リソースのスケーリングの背後にある基本原則、特にスケールアップではなくスケールアウトに移行するという決定について説明しています。ハードウェアに関する Google の基本原則は、いつでも故障する可能性があり、設計はそれを考慮する必要があるというものです。 2 番目の原則は、手頃な価格で入手が容易な汎用ハードウェアを使用することに関係しており、これにより Google は何の罰則も受けずにベンダーを切り替えることができます。最後に、ハードウェアは高価であるため、目標はアップではなくスケールアウトです。 Google は、GFS、MapReduce、Bigtable などの主要なテクノロジーを設計して、スケールアウトされたハードウェア アーキテクチャに移行させています。さらに、Colossus は GFS に代わるものであり、Colossus に依存する BigQuery など、Google のテクノロジーの多くが構築される基盤となる分散サブシステムです。

  • 00:10:00 講師は、世界中に分散され、Colossus を使用して分散トランザクションを管理する Google のデータベース ソリューションである Spanner の概要を説明するとともに、Google Cloud Platform 内で請求先アカウントにサインアップして管理する方法も実演します。 Google Cloud サービスの使用を開始するには、ユーザーは GCP でアカウントを作成する必要があります。これは、ブラウザに移動して「GCP」または「Google Cloud Platform」と入力することで作成できます。規約に同意し、適切な情報を提供すると、新規ユーザーには GCP で使用できる 300 ドルのクレジットが付与されます。これは、請求セクションの概要と予算機能を通じて監視できます。講師は、特定の請求目標に達したときに通知を受け取るように予算アラートを設定することをユーザーに勧めています。これは、「予算の作成」をクリックして支出総額を指定し、プロジェクトと予算アラートを選択することで実行できます。有効になります。

  • 00:15:00 BigQuery の作成と目的について説明します。 Google の急激なデータ増加は問題を引き起こし、大規模なデータ セットに対するインタラクティブなクエリを可能にするツール、BigQuery の開発につながりました。 50 行をクエリするか 500 億行をクエリするかに関係なく、同じ操作を行うオプションが提供されます。 SQL に基づく非標準言語のおかげで、学習曲線が短く、数千のマシン間で SQL 実行を並列化する機能が組み込まれています。 BigQuery が保存できるのは構造化データですが、リレーショナル データベースとは異なり、これらのフィールドはテーブル内のネストされたレコードなどのレコード タイプを保持できます。これらのネストされた構造は、本質的には事前結合されたテーブルです。

  • 00:20:00 このビデオでは、BigQuery のアーキテクチャと並列化へのアプローチについて説明しています。ほとんどのリレーショナル データベース システムはコアごとに 1 つのクエリしか実行できませんが、BigQuery は数千のコアにわたって単一のクエリを実行するように設計されており、従来のクエリ コア アプローチと比較してパフォーマンスを大幅に最大化します。これは、クエリをパイプライン化できる Dremel エンジンによって可能となり、一部のクエリが I/O を待機している間に他のクエリが利用可能なコアを使用できるようになります。このマルチテナンシーのアプローチは、多くの顧客が同じハードウェアで同時にクエリを実行できることを意味し、BigQuery はさまざまなデータ使用パターンを活用するため、地理的な 1 つの場所での使用量が多くても他の場所に影響を与えません。このビデオでは、各プロジェクトに固有のクエリ履歴を含む BigQuery インターフェースの 3 つのコア ペインについても説明し、テーブルやビューへのアクセスを整理するために使用できるクエリ、ジョブ履歴、リソース セクションを保存します。

  • 00:25:00 スピーカーは、BigQuery に固有の Google Cloud Console を構成するさまざまな画面とパネルについて説明します。ナビゲーション メニューにはデータ セットやテーブルなどの BigQuery リソースが表示され、SQL ワークスペース セクションではユーザーがクエリの作成、テーブルの操作、ジョブ履歴の表示を行うことができます。 [エクスプローラー] パネルには現在のプロジェクトとそのリソースのリストが表示され、[詳細] パネルには選択したリソースに関する情報が表示され、ユーザーはテーブル スキーマの変更、データのエクスポート、その他の機能を実行できます。講演者は、BigQuery とは何なのかについても説明し、BigQuery は頻繁で小規模な行レベルの更新をサポートしていないため OLTP アプリケーションにはあまり適していないこと、および SQL の方言を使用しているため NoSQL データベースではないことを説明しました。 。代わりに、BigQuery は OLAP データベースに近く、同じ利点を多く提供するため、多くの OLAP ユースケースに適しています。

  • 00:30:00 Google の BigQuery の定義について議論されました。これは、機械学習が組み込まれた分析用の、フルマネージドで拡張性が高く、コスト効率が高く、高速なクラウド データ ウェアハウスです。さらに、BigQuery は Megastore や Colossus など、他の多くのコンポーネントで構成されています。 BigQuery には、データを列に格納するためのアルゴリズムである列 IO があり、データを列に格納してパフォーマンスを向上させ、返されたデータに基づいてユーザーに課金します。 Google のネットワークは、細部にまで配慮しているため高速です。したがって、そのネットワーク アーキテクチャの多くは謎のままです。最後に、BigQuery は BigQuery 2.0 のリリースにより標準 SQL のサポートをリリースし、BigQuery SQL の名前をレガシー SQL に変更し、BigQuery に保存されるクエリとデータに優先される SQL 言語を追加しました。

  • 00:35:00 このビデオでは、BigQuery でクエリを保存して開くプロセスと、ビューの作成とクエリのプロセスについて説明します。ナレーターは、ビューが仮想テーブルであることを説明し、ビューを作成して新しいデータ セットに保存する方法を示します。このビデオでは、クエリの書式設定やクエリ設定へのアクセスなど、クエリ エディター内のさまざまなオプションについても説明します。さらに、このビデオでは、機械学習とデータ サイエンスのキャリアの急増について取り上げ、データ アナリストとデータ サイエンティストなどの役割の違いについて説明しています。最後に、ナレーターは、このコースの焦点は、この分野のゴールドスタンダードとみなされている Python を使用した教師あり機械学習にあると説明します。

  • 00:40:00 データ サイエンティスト、機械学習エンジニア、データ エンジニアなど、機械学習の分野におけるさまざまな役割について説明します。純粋に学術的または研究的応用ではなく、問題を解決するために機械学習の原理を現実世界に応用する応用機械学習に焦点を当てています。構造化データ セット、特にリレーショナル データベースに含まれるデータ セットの重要性も強調されています。これは、勾配ブースターなどの従来のモデルが、高度に構造化されたデータ セットのモデリングに優れていることが示されており、人工ニューラル ネットワークを上回る多くの競争に勝利しているためです。

  • 00:45:00 高度にプロセス指向である機械学習プロセスについて説明します。この記事では、機械学習エンジニアが解決すべき問題を与えられたときに、どのように同じ中心的な手順に従わなければならないかを説明しています。最初のステップはデータを確認し、次にデータを入手することです。応用機械学習のほとんどは監視されているため、まずデータをクリーンアップ (または「ラングリング」) する必要があります。これには、数値的にサポートされる形式にデータをマッサージすることが含まれます。このため、機械学習エンジニアはデータのラングリングにほとんどの時間を費やす必要があります。データがクリーンアップされると、モデリング段階が始まります。この段階では、クリーン化されたデータセットからパターンを学習するモデルまたはアルゴリズムを開発する必要があります。機械学習の目標は、新しいデータに対して高精度の予測を行えるようにすることです。モデルが調整され、新しいデータでテストされると、消費者が使用できるように本番環境に投入されます。

  • 00:50:00 このビデオでは、Mac 上の Anaconda ディストリビューションを使用した Python 3.7 バージョンのインストール プロセスについて説明します。 Anaconda ディストリビューションは Windows と Mac の両方で利用でき、グラフィカル インストーラーが付いています。インストーラーをダウンロードしてパスワードを入力した後は、デフォルトのインストール タイプが推奨されます。インストール プロセスには数分かかる場合があります。インストールが完了すると、Anaconda Navigator を起動し、新しい Python 3 ノートブックを開いてコーディングを開始できます。

  • 00:55:00 インストラクターは、Google の Cloud Platform 上の BigQuery を使用した機械学習に使用される Jupyter Notebook IDE の操作方法を説明します。最初のステップは、CMD と入力し、Anaconda コマンド プロンプトにアクセスして、ラップトップ上のノートブックを見つけることです。そこから、「Jupyter Notebook」と入力すると、ローカル コンピューターに Python エンジンがロードされます。ロードしたら、ページを閉じる方法など、ノートブックの操作について説明します。

  • 01:00:00 Jupyter Notebook の使用に関するステップバイステップのガイドが表示されます。まず、「新しいノートブック」に移動して Python 3 を選択します。このチュートリアルでは、ライブラリのインポート、セルの作成、実行、名前変更、変更の方法も示します。セルの順序、ノートブックの自動保存、挿入、コピー、切り取り、貼り付け、すべて実行してカーネルを再起動し、Markdown を使用してノートブックに注釈を付けることができます。さらに、ノートブックのシンプルさが強調され、機械学習パイプラインを操作するには十分であると考えられています。

  • 01:05:00 このビデオでは、データ セットやテーブルなど、BigQuery でのデータ操作の基礎について説明します。現実世界のモデルを作成する際にはスケールが大きな問題となる可能性があるため、機械学習エンジニアにとって BigQuery でデータを作成、アップロード、ラングリングできることがいかに重要であるかを説明します。 BigQuery ML を使用すると、SQL の知識のみが必要となるため、SQL に精通したユーザーにとってシンプルでアクセスしやすく、経験豊富な機械学習の専門家があらゆる規模でモデルを構築できる機能が提供されます。さらに、ビデオでは、データ ラングリングと操作のためのライブラリである Pandas、Python による科学計算の基本パッケージである Numpy、2D グラフを作成するための Matplotlib など、Python での応用機械学習で使用されるコア機械学習ライブラリについても取り上げています。 Scikit-Learn は、従来のモデルの構築に使用されるライブラリです。

  • 01:10:00 ビデオ チュートリアルでは、pandas と numpy という 2 つのコア ライブラリを使用して、機械学習のためのデータ ラングリングとデータ操作の基本を説明します。 pandas ライブラリは、Titanic データセットと呼ばれる機械学習用の有名なおもちゃのデータセットを読み込み、エイリアスを作成するために使用されます。モデルを理解できるように配列が作成され、乗客クラス、性別、年齢、生存者などのモデルに必要な属性が特定されます。予測されるターゲット変数は、1 または 0 のいずれかの Survival 属性です。 「生き残った」は 1 を意味し、「生き残らなかった」は 0 を意味します。次のステップでは、機械が理解できる Python コードを使用して属性の値を数値に変換します。 null または nand 値を持つ観測値はすべて削除され、モデルの不正行為を防ぐために、生き残った属性が x 軸から削除されます。最後に、データセットは、scikit-learn と呼ばれる機械学習用の汎用ライブラリを使用したテストとトレーニングのセクションに分割されます。

  • 01:15:00 このビデオでは、タイタニック データ セットでの機械学習の使用方法と、現実世界のシナリオでほとんどのモデルがリレーショナル データベースからどのように取得されるかについて説明します。 SQL Server Management Studio インターフェイスは、SQL Server データベースの管理に一般的に使用されるため導入されました。将来の売上を予測するために使用できるデータセットを作成するというタスクの仮説的なシナリオが示されています。このビデオでは、クエリを作成してテーブルを結合して有名人の注文履歴を作成する方法と、この情報をビューとして保存して簡単にクエリを実行し、CSV ファイルとしてエクスポートして他のユーザーと共有する方法を説明します。チーム。

  • 01:20:00 このビデオでは、SQL Server を使用してクラウド データベースから CSV ファイルにデータをエクスポートするプロセスを説明します。彼らは、データ分析としても知られる探索的データ分析が機械学習において重要な役割を果たすことを説明し、データ視覚化のための Matplotlib ライブラリと Seaborn ライブラリを紹介します。ビデオでは続けて、これらのライブラリを使用してタイタニック号のデータ セットを調査し、欠損値の割合を計算し、ヒストグラムと棒グラフを作成する方法の例を示します。彼らは、Seaborn はそのシンプルさから好まれることが多いと指摘しています。

  • 01:25:00 講演者は、さまざまな種類の機械学習モデルとそのアプリケーションについて説明します。深層学習モデルは、画像認識や音声認識には優れていますが、高度に構造化されたデータセットに基づく教師あり機械学習にはほとんどの場合最適ではない可能性があります。勾配ブースターなどの従来のモデルは、より正確で、計算量が少なく、説明が簡単で、分類と回帰の問題を高速化できます。次に、講演者は、Python、データ ラングリング用の Pandas、および多くのモデリング コンテストで優勝したグラデーション ブースター ライブラリである XGBoost を使用して、従来のモデルを構築するプロセスを聴衆に案内します。モデルはデータセットで 83% のスコアを達成し、講演者は Pickle ライブラリを使用してモデルを保存する方法を説明します。

  • 01:30:00 このビデオでは、分類とは何か、また、成績、テストのスコア、経験などの特性に基づいて観察をグループに分類する方法について説明します。また、バイナリ分類と、はいまたはいいえの出力でデータを 2 つのグループに分類する方法についても説明します。次に、ビデオでは人工ニューラル ネットワークとディープ ラーニング モデルを紹介し、線形回帰を線に基づいて値を予測するものと定義し、がん診断や株価などのランダムなデータ ポイントを予測する予測に線形回帰がどのように使用されるかを説明します。 Python での線形回帰のデモでは、pandas ライブラリを使用してデータをマッサージします。一方、numpy ライブラリは最適化された配列コンテナーにデータを保持し、データの視覚化には matplotlib ライブラリが使用されます。このビデオでは、グラフをプロットして学習時間と達成スコアの間の正の線形関係を見つける方法を示し、最終的には Python スクリプトで線形回帰に使用される分類子モデルをインポートします。

  • 01:35:00 講演者は、教師あり機械学習手法としての分類の基本を説明し、観測値をその特性に基づいてグループに分ける単純化した定義を提供します。示されている例はスパム検出です。この場合、電子メールはスパムと非スパムの 2 つのカテゴリに分類されます。より複雑な例は、タイタニック号の機械学習プロジェクトです。これは、モデルの出力が生存の場合は 1、生存しない場合は 0 のいずれかになるバイナリ分類問題です。セクションの次の部分では、高精度の分類モデルを構築する方法について説明します。これには、ライブラリのインポート、アイリス データセットの使用、ラベル エンコーディングを使用したテキスト値の数値への変換、ランダム フォレスト分類子モデルのトレーニング、完成したモデルのテストが含まれます。 97% の精度を達成するためのトレーニング データ。

  • 01:40:00 データセットやテーブルなど、BigQuery を使用したデータ操作の基礎について説明します。機械学習エンジニアとして、BigQuery でデータを作成、アップロード、ラングリングできることが重要です。このセクションでは、BigQuery でのデータのラングリングについて説明します。これには、ペタバイト規模のデータを処理する方法や、Cloud Datalab と呼ばれる Google のクラウド Jupyter ノートブックを使用する利点が含まれます。 BigQuery ML もカバーされており、SQL 以外のプログラミング知識は必要ないため、データ専門家は機械学習モデルを簡単に作成できます。最後に、このセクションでは、BigQuery でデータセットを作成してそこにテーブルを追加する方法など、データセットとテーブルの微妙な違いについて説明します。

  • 01:45:00 講演者は、空のテーブル、外部データ ソース、CSV、JSON、Arvo、Parquet、ORC などの読み取り可能なソースからのデータのアップロードなど、BigQuery でテーブルを作成するときのさまざまなソース オプションについて説明します。ほとんどの機械学習エンジニアは CSV ファイルの使用を好みますが、Arvo は読み込みが速く、エンコードの問題もなく解析が容易です。一方、Parquet と ORC は Apache Hadoop エコシステムで広く使用されています。次に講演者は、Google の Cloud Data Lab を紹介します。これは、GCP 上でホストされる仮想マシン (VM) であり、Datalab と呼ばれる Jupyter Notebook のようなインターフェイスが含まれています。ユーザーは Jupyter Notebook からコードをローカルに取得して GCP で使用できます。また、新しい Datalab インスタンスを作成するときにユーザーはストレージ リージョンを選択し、SSH キーの作成を求められる場合があります。

  • 01:50:00 インストラクターは、BigQuery への接続を作成し、ラングリングされたタイタニック データセットをクラウド Datalab インスタンスにインポートする方法をデモンストレーションします。 BigQuery をインポートして接続を作成すると、ユーザーは SQL コードを記述してデータをクエリできます。パンダ、デシジョン ツリー分類器、トレーニング テスト分割などの事前にパッケージ化されたライブラリを利用して、ユーザーはデータをセグメント化し、トレーニング データに適合させ、モデルにスコアを付けることができます。さらに、ユーザーはセル内でクエリを直接変更し、それを実行して、クエリのデータ セットを格納する新しい pandas データフレームを作成できます。最後に、インストラクターは、BigQuery を使用してクラウド Datalab インスタンスに別のデータセット (iris データセット) をアップロードしてクエリする方法を示します。

  • 01:55:00 プレゼンターは、BigQuery ライブラリから Google の Cloud Platform 上の Jupyter ノートブックにデータをインポートする方法をデモンストレーションします。アヤメのデータセットがインポートされてトレーニング セットとテスト セットに分割され、トレーニングにはランダム フォレスト分類器が使用されます。モデルの予測値が出力されます。発表者は、Google ホームページからクラウド データ ラボ インスタンスにアクセスし、[編集] をクリックして、クラウド データ ラボ インスタンス上のリソースをアップグレードする方法も示しました。

  • 02:00:00 講演者は、SQL 実践者が既存の SQL スキルとツールを使用して大規模な機械学習モデルを構築し、機械学習を民主化できるツールである BigQuery ML について説明します。 BigQuery ML は現在、線形回帰、バイナリ ロジスティック回帰、マルチクラス ロジスティック回帰の 3 種類のモデルをサポートしています。講演者は、SQL 言語を使用して BigQuery でバイナリ ロジスティック回帰モデルを作成する方法についても説明します。モデルの作成には、SQL ステートメントを使用したモデルの定義、オプションの指定、ターゲット変数の受け渡しが含まれます。モデルを評価し、精度メトリクスを SQL を通じて表示することもできます。最後に、講演者は、これまでに見たことのない新しいデータがモデルに渡される予測フェーズについて説明します。

  • 02:05:00 講演者は、BigQuery ML を使用してバイナリ分類モデルを構築し、それを評価する方法について説明します。データは CSV ファイルから BigQuery にアップロードされ、モデルはターゲット変数を除くすべての列に渡されます。評価が完了すると、モデルは各家族メンバーの予測を行い、出力の最初の列で生存を予測します (生存を 1 列、生存しなかったを 0 列)。次に、講演者は gsutil というコマンドライン ツールのインストールに移ります。これは、GCP 上の Google ストレージを操作するために使用されるコマンドライン ツールです。このツールは、アクセスしやすさと価格が異なる 3 つのレベルのストレージを提供します。

  • 02:10:00 講演者は、gsutil を使用して Google Cloud Storage にファイルをアップロードおよび管理する方法をデモンストレーションします。まず、ユーザーはプロジェクト内で動作するように設定し、gsutil mb を使用してバケットを作成する必要があります。すべてのバケット名は一意である必要があることに注意してください。次に、講演者は、ファイルをバケットにコピーし、アクセス制御リスト (ACL) を使用してデータの読み取りと書き込みができるユーザーを制御して、そのファイルへのパブリック アクセスを許可する方法を説明します。また、講演者は、gsutil を使用してファイルをダウンロードして別のバケットにコピーする方法と、-m スイッチを使用してアップロード プロセスを高速化する方法も実演します。講演者は最後に、リレーショナル データベースからデータを 2 つのファイルにエクスポートし、Cloud Storage を使用して GCP にアップロードする方法を示しました。

  • 02:15:00 講演者は、2 つのデータ セットを Google Cloud Platform の BigQuery にアップロードし、SQL を使用してそれらを結合し、機械学習モデルを構築するためのビューを作成する方法をデモンストレーションします。 SQL Server からデータをエクスポートし、CSV ファイルとして保存した後、講演者はデータを GCP のクラウド ストレージ バケットにアップロードし、BigQuery にダウンロードし、単純な join ステートメントを使用して結合します。最後に、講演者は、機械学習モデルで使用するこの大規模なデータ セットのビューを作成する方法を示します。

  • 02:20:00 講演者は、タイタニック号プロジェクトのデータセット用に Cloud Platform 上の Google BigQuery でテーブルを作成するプロセスを説明します。ローカル ソースからデータセットをアップロードし、CSV ファイルからスキーマを自動検出し、ヘッダー情報が含まれる最初の行をスキップします。テーブルが正常に作成された後、テーブルに対してクエリを実行し、データとヘッダーが正しく表示されることを確認します。講演者は、データセットがプロジェクトの次のステップに進む準備ができたことを述べました。
Machine Learning with BigQuery on Google's Cloud Platform
Machine Learning with BigQuery on Google's Cloud Platform
  • 2022.04.25
  • www.youtube.com
A complete look at BigQuery for machine learning.LogikBot - Affordable, Real-World and Comprehensive - https://www.logikbot.comThere are two core paths on Lo...