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

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

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

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


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

経験豊富なデータ サイエンティストが 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特殊効果の背後にある技術

ブログ    
ブログ    
ブログ    
ブログ    

推薦する

小売業界における人工知能の応用

多くの小売業者にとって、2020年のコロナウイルスの流行は、その存続と運営に深刻な影響を及ぼしました...

デジタルヒューマンがアジア競技大会の聖火を灯す:ICCV 論文から見る Ant の生成 AI テクノロジーの新たな一面

9月23日夜、杭州アジア競技大会の開会式でメイントーチに火が灯されると、数億人のオンラインデジタル聖...

AI 導入を迅速に進める 5 つの方法

重要な実現技術である AI の急速な成功により、より広範なデジタル変革とイノベーションの取り組みへの...

Googleは機械学習ベースのDDoS攻撃防御をテスト中

[[412418]] Google Cloud のお客様は、分散型サービス拒否 (DDoS) 保護...

...

...

2023 年のテクノロジー業界の最高、最悪、そして最も醜い出来事

翻訳者 | ジン・ヤンレビュー | Chonglou 2023 年はテクノロジー業界にとってエキサイ...

スマート運転の新たな戦い:「レーダーとビジョンの融合」に対抗、5つの勢力が別々に攻撃

[[440742]]この記事はLeiphone.comから転載したものです。転載する場合は、Leip...

顔認識技術はスマート建設現場やスマートコミュニティにどのようなメリットをもたらすのでしょうか?

スマートシティ、スマートコミュニティ、スマート交通は絶えず推進され、普及しており、ユーザーの使用習慣...

革新的なマイクロチップ設計によりコンピューティングがエッジにまで広がり、AIをリアルタイムで使用できるようになります。

人工知能によるコンピュータネットワークへの需要の爆発的な増加に対処するため、プリンストン大学の研究者...

...

AI作曲家の出現により、人類はどこへ向かうべきでしょうか?

AIを使って音楽を作曲した場合、AIが作曲した音楽と人間が作曲した音楽を区別できますか?今日はその...

機械学習がサプライチェーン管理を変える10の方法

[[431487]]サプライチェーン管理で機械学習を使用すると、日常的なタスクを自動化できるため、企...

Google AIのスターがPika: ビデオ生成Lumiereの創設科学者に就任

動画世代が猛スピードで進化する中、ピカは偉大なる将軍を迎える―― Google の研究者である Om...

話題の「人工知能」について、気になるNの質問にお答えします

人工知能は、かなり長い間人気を博してきました。多くの投資家、起業家、そしてあらゆる規模の企業が、この...