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

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

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

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


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

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

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

推薦する

医療における人工知能: COVID-Net プラットフォームを使用してコロナウイルスを診断する方法

COVID-NetとオープンソースのAIベースのプラットフォームは、コロナウイルスの発生によって引き...

アメリカでは500万の仕事が機械に置き換えられました!スーパーAIは人類に不死をもたらすのか、それとも破滅をもたらすのか?

人工知能は1956年以来40年以上の発展を遂げてきました。現在、AI の目標はコンピューターを人間の...

GoogleはDeepMind AIを使用して何千もの新しい素材を分析および予測しました

IT Homeは11月30日、GoogleのDeepMindが人工知能(AI)を使って200万以上の...

...

顔認識は普及しつつあるのに、なぜ禁止されているのでしょうか?

顔認識は誰もが知っている技術です。iPhoneのFace IDからAlipayの顔認証決済まで、かつ...

Baidu の計算生物学研究が Nature のサブジャーナルに掲載されました!スタンフォード大学やMITを上回る成果、製薬分野に進出

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

...

2022 年のインテリジェント コネクテッド ビークルの技術トレンド トップ 10

100TOPS以上の性能を持つ車載グレードのコンピューティングチップが2022年に量産され、車両に...

...

SQL Server 2005 のデータ マイニング アルゴリズム拡張メソッド

SSAS は 9 つのデータ マイニング アルゴリズムを提供していますが、実際の問題に基づいて適切な...

AI博士号取得者の年収は80万元。AI人材の需要と供給はどれくらいですか?

「女性は間違った男性と結婚することを恐れ、男性は間違った職業を選択することを恐れる」という古い中国...

あなたの次のオフィスアシスタントはロボットでしょうか?

2014年、日本のソフトバンクモバイルストアに新たな仲間が加わった。それは、人の表情や声のトーンを...

2020年のライフスタイルに関する2008年の予測:そのほとんどが実現

米国のピュー・リサーチ・センターは2008年に、主に以下のような2020年のライフスタイルを予測しま...

Toutiaoのアルゴリズムロジックを使用してMacOSを再設計しました

仕事以外では、私はほとんどの時間を2つの状態で過ごしています。1つは見出しを閲覧している状態で、もう...

人工知能システム:無制限の核融合反応を現実のものに

近年、研究者らはトカマクの停止や損傷の原因となる核分裂反応を研究している。核分裂反応を予測・制御でき...