機械学習で大規模なデータセットを処理する方法

機械学習で大規模なデータセットを処理する方法

機械学習で大規模なデータセットを処理する方法

ビッグデータではありません…。


データセットは、共通のプロパティを共有するすべてのインスタンスのコレクションです。 機械学習モデルは通常、いくつかの異なるデータセットで構成され、それぞれがシステム内でさまざまな役割を果たすために使用されます。

経験豊富なデータ サイエンティストが ML 関連のプロジェクトに取り組む場合、作業の 60% はデータセットの分析で行われ、これを探索的データ分析 (EDA) と呼びます。 つまり、データは機械学習において重要な役割を果たすということです。 現実の世界では、膨大な量のデータを処理する必要があるため、単純なパンダを使用して計算を行い、データを読み取るのは現実的ではなく、時間がかかり、通常は作業に使用できるリソースが限られています。 これを実現可能にするために、多くの AI 研究者が、大規模なデータセットを処理するためのさまざまな手法と方法を特定するソリューションを提案してきました。

ここで、いくつかの例を挙げて以下のテクニックを紹介します。 ここでは実際の実装に、RAM 容量が 12.72 GB の Google Colab を使用しています。

0 (含む) から 10 (含まない) までの乱数を使用して作成された、1000000 行と 400 列のデータセットを考えてみましょう。

上記のコードを実行するための CPU 時間と実時間は次のとおりです。

ここで、このデータフレームを CSV ファイルに変換してみましょう。

上記のコードを実行するための CPU 時間と実時間は次のとおりです。

ここで、pandas を使用して、生成されたデータセット (約 763 MB) をロードし、何が起こるかを確認しましょう。

上記のコードを実行すると、RAM が利用できないためにラップトップがクラッシュします。 ここでは、サイズが約 763 MB の比較的小さなデータセットを取り上げ、それよりも大量のデータを処理する必要がある場合について検討しました。 この問題を解決するための次の計画は何ですか?

大規模なデータセットを処理するためのテクニック:

1. CSVファイルをチャンクサイズで読み取ります。

chunk_size を指定して大きな CSV ファイルを読み取ると、元のデータフレームはチャンクに分割され、pandas パーサー オブジェクトに保存されます。 このようにオブジェクトを反復処理し、連結して元のデータフレームを形成するので、時間がかかりません。

上記で生成されたCSVファイルには1000000行と400列が含まれているため、チャンクサイズとして100000行でCSVファイルを読み込むと、

上記のコードを実行するための CPU 時間と実時間は次のとおりです。

ここで、リスト内のチャンクを反復処理し、それをリストに保存して連結し、完全なデータセットを形成する必要があります。

上記のコードを実行するための CPU 時間と実時間は次のとおりです。

読書時間が大幅に改善されたことがわかります。 この方法により、大規模なデータセットを読み取り、読み取り時間を短縮し、場合によってはシステムクラッシュを回避できます。

2. データ型のサイズを変更します。

大規模なデータセットに対して何らかの操作を実行する際のパフォーマンスを向上させたい場合は、この原因を回避するためにより多くの時間を費やす必要があります。一部の列のデータ型のサイズを (int64 → int32)、(float64 → float32) のように変更して、保存されるスペースを減らし、CSV ファイルに保存してさらに実装することができます。

例えば、チャンク化後のデータフレームにこれを適用し、ファイルサイズが半分に削減される前後のメモリ使用量を比較すると、メモリ使用量が半分に削減され、最終的にCPU時間が短縮されます。

データ型変換前後のメモリ使用量は次のとおりです。



ここで、データ型変換前のメモリ使用量は 3 GB であり、データ型変換後のメモリ使用量は 1.5 GB であることが明確にわかります。 前後のデータフレームの平均を取ってパフォーマンスを計算すると、CPU 時間が短縮され、目標を達成できます。

3. データフレームから不要な列を削除します。

読み込まれたデータフレームのメモリ使用量を削減するために、データセットから不要な列を削除できます。これにより、データセットに対してさまざまな操作を実行するときの CPU パフォーマンスが向上します。

4. データ形式を変更します。

データは CSV ファイルのような生の ASCII テキストで保存されていますか?

別のデータ形式を使用すると、データの読み込みが速くなり、メモリの使用量も少なくなるかもしれません。 良い例としては、GRIB、NetCDF、HDF などのバイナリ形式が挙げられます。 データセット全体をメモリにロードせずに、あるデータ形式を別のデータ形式に変換するために使用できるコマンドライン ツールは多数あります。 別の形式を使用すると、2 バイトの整数や 4 バイトの浮動小数点数など、よりコンパクトな形式でデータを保存してメモリを節約できる場合があります。

5. 正しいデータ型を使用してオブジェクト サイズを縮小します。

多くの場合、データ フレームを正しいデータ型に変換することで、データ フレームのメモリ使用量を削減できます。 ほとんどすべてのデータセットには、通常はメモリ効率の悪い文字列形式のオブジェクト データ型が含まれています。 日付、地域、都市、地名などのカテゴリ特性を考慮すると、それらはより多くのメモリを消費するため、DateTime などの対応するデータ型に変換すると、カテゴリによってメモリ使用量が以前よりも 10 倍以上削減されます。

6. Vaex のような高速読み込みライブラリを使用する:

Vaex は、大規模な表形式のデータセットを視覚的に探索するための、遅延実行型のアウトオブコア DataFrames (Pandas に類似) 用の高性能 Python ライブラリです。 1 秒あたり 10 億 (10^9) 以上のサンプル/行で、N 次元グリッド上の平均、合計、カウント、標準偏差などの統計を計算します。 ヒストグラム、密度マップ、3D ボリューム レンダリングを使用して視覚化が行われ、ビッグ データをインタラクティブに探索できるようになります。 Vaex は、メモリ マッピング、ゼロ メモリ コピー戦略、遅延評価を使用して、優れたパフォーマンス (メモリの無駄なし) を実現します。

ここで、上記のランダムに生成されたデータセットに vaex ライブラリを実装して、パフォーマンスを観察してみましょう。

1. まず、使用しているオペレーティング システムに応じて、コマンド プロンプト/シェルを使用して vaex ライブラリをインストールする必要があります。

2. 次に、vaex ライブラリを使用して CSV ファイルを hdf5 ファイルに変換する必要があります。

上記のコードを実行すると、作業ディレクトリに dataset.csv.hdf5 ファイルが生成されます。 データ型変換前後のメモリ使用量は次のとおりです。

ご覧のとおり、CSV を hdf5 ファイルに変換するのに約 39 秒かかりましたが、これはファイル サイズに比べると少し短いです。

3. vaex を使用して hdf5 ファイルを読み込む:-

ここで、vaex ライブラリの open 関数を使用して hdf5 ファイルを開く必要があります。

上記のコードを観察した後、出力を見ると、hdf5 ファイルの読み取りに 697 ミリ秒かかったように見えます。これから、3 GB の hdf5 ファイルの読み取り実行速度がわかります。 これが vaex ライブラリの実際の利点です。

vaexを使用すると、大きなデータフレームに対してさまざまな操作を実行できます。

  • 表現システム
  • コアデータフレーム外
  • 高速グループ化/集約
  • 高速かつ効率的な結合

vaex ライブラリについて詳しく知りたい場合は、ここをクリックしてください。

結論は:

このようにして、機械学習で大規模なデータセットを扱うときにこれらの手法に従うことができます。

この記事が気に入ったら、ぜひ読んでみてください。 LinkedIn で私とつながりたい場合は、以下のリンクをクリックしてください。

<<:  機械学習は 5G ネットワークにどのように役立ちますか?

>>:  ワンクリックで漫画に変身!流行のDouyin特殊効果の背後にある技術

ブログ    
ブログ    
ブログ    

推薦する

オープンソースのビデオ切り抜き技術が人気です!背景を変える方法は、それが真実か嘘かを判断するのが非常に難しい

グリーンスクリーンは、映画やテレビドラマで画像を切り取ったり背景を変えたりするのに強力なツールですが...

AI に「大きな力と小さな心」を与える - ユニバーサル CNN アクセラレーション設計

[[207759]]導入FPGA ベースの汎用 CNN アクセラレーション設計により、FPGA 開発...

滴滴出行のスマート交通建設における3つの短期目標:信号機の改善、バスシステムのオンライン化、予測スケジュール

[51CTO.comより] 両会期中の政府活動報告に人工知能が盛り込まれた。万鋼科学技術部長は、中国...

2018年ニューリテール5大トレンド:無人小売が広がり続け、人工知能やIoTが新たな価値を創出

[[220105]]画像出典: Visual China 2016年10月の雲旗大会で、ジャック・マ...

人工知能が学習と発達に及ぼす7つの影響

急速に進化する今日のテクノロジー環境において、人工知能 (AI) はあらゆる業界に革命を起こす可能性...

ChatGPT Plusアカウント登録が停止されました!ネットユーザーは激怒、アカウントの売買やレンタルがネットワーク全体で高騰中

ちょうど今、サム・アルトマンがXで衝撃的なニュースを発表しました—— ChatGPT Plusアカウ...

...

未来の戦場は「瞬殺」の時代へ、人工知能が威力を発揮

近年、人工知能技術は飛躍的な進歩を遂げ、戦闘指揮の分野で広く応用され、観察・判断・決定・行動(OOD...

...

AIは現実世界に対応できる準備ができているでしょうか?

人工知能技術は、今日の状況に対応し、現実世界に適用するのに苦労しています。テクノロジーに興味があるな...

...

マイクロソフトがCopilot for Financeをリリース、AIでスプレッドシートに革命を起こすことを目指す

Microsoft が新たにリリースした AI アシスタントは、増え続ける財務データの中から適切な情...

Java プログラミング スキル - データ構造とアルゴリズム「再帰」

[[392763]]コンセプト簡単に言うと、再帰とは、毎回異なる変数を渡しながら、自身を呼び出すメ...

OpenAIがマスク氏に正面から対決!イリヤは8年間のメールの「犯罪」を暴露した後、ついに姿を現した

5日後、OpenAIはついにマスク氏の訴訟に正式に反応しました。ちょうど今、OpenAI は同社とマ...