機械学習の実践 Spark ビッグデータ技術と機械学習に基づく 10 の組み合わせアプリケーション

こんにちは、Weixue AI です。今日は、Spark ビッグ データ テクノロジと機械学習の組み合わせに基づく Machine Learning Practice 10 を紹介します。Spark は、高速で汎用的なビッグ データ処理フレームワークです。カリフォルニア大学バークレー校の AMPLab によって開発されました。Spark は、クラスター内で大規模なデータ セットを並列処理できる分散コンピューティング プラットフォームを提供します。
ここに画像の説明を挿入

目次
1. ビッグ データ テクノロジーの概要
2. Spark の特徴
3. Spark を使用する理由
4. Spark と Pandas の違い
5. Python と Spark を使用したビッグ データ アプリケーションの開発
6. Spark ベースの機械学習トレーニング コード

1. ビッグデータ技術の概要

ビッグデータ技術とは、大規模なデータを処理および分析するために開発された一連の技術とツールを指します。インターネット、モノのインターネット、さまざまなセンサー技術の発展により、私たちはますます多くのデータを収集できるようになりました。これらのデータは通常、規模が大きく、複雑かつ多様であり、高い増加率を特徴としています。ビッグ データ テクノロジは、これらの大量のデータを効率的に保存、処理、分析する方法の問題を解決することに特化しています。

一般的なビッグデータ テクノロジーをいくつか紹介します。

1. 分散ストレージ システム: 大規模データを保存するには、大容量、高信頼性、および高スケーラビリティを備えた分散ストレージ システムの使用が必要です。たとえば、Hadoop 分散ファイル システム (HDFS) や Apache Cassandra などの分散データベース システムです。

2. 分散コンピューティングのフレームワーク: ビッグデータ処理のプロセスでは、データの効率的な処理と分析を実現するために分散コンピューティングが必要です。Hadoop MapReduce は最も初期の分散コンピューティング フレームワークですが、Apache Spark は現在、高速で一般的なビッグ データ処理フレームワークとして人気があります。

3. データ管理およびガバナンス ツール: 大規模なデータ管理およびガバナンスは複雑なタスクです。データ管理ツールは、データの収集、クリーニング、変換、統合などのデータの整理と管理に役立ちます。データ ガバナンス ツールは、データ品質、セキュリティ、コンプライアンスなどの側面に重点を置いています。

4. データ ウェアハウスとデータ レイク: データ ウェアハウスは、構造化データを保存および管理するためのシステムであり、柔軟なクエリおよび分析機能を提供します。データ レイクは、さまざまな種類のデータを一元的に集めたもので、必要に応じて処理および分析できます。

5. データマイニングと機械学習: ビッグデータテクノロジーはデータマイニングと機械学習に使用され、大規模なデータから貴重な情報やパターンを発見するのに役立ちます。一般的なツールとアルゴリズムには、Apache Hadoop、Apache Spark の機械学習ライブラリ (MLlib)、TensorFlow などが含まれます。

6. データ視覚化およびレポート ツール: データ視覚化ツールは、データを視覚的なチャートやダッシュボードに変換するのに役立ち、データの理解と分析を容易にします。レポート ツールは、レポートを生成し、データ分析結果を表示できます。

ビッグデータ技術の応用は非常に広範囲にわたり、さまざまな業界や分野をカバーしています。例えば、金融分野ではリスク管理や不正検知、医療分野では医用画像解析や疾患予測、ソーシャルメディア分野ではユーザーの情報収集などにビッグデータ技術を活用できます。行動分析とパーソナライズされた推奨事項。

2. スパークの特徴

高速パフォーマンス: Spark はインメモリ コンピューティング テクノロジを使用してクラスタのメモリにデータを保存し、それによってデータ処理プロセスを高速化します。さらに、Spark は RDD (Resilient Distributed Dataset) の抽象概念も利用して、メモリ データ共有とデータ シャーディングを通じて効率的な並列コンピューティングを実現します。

1. 複数のデータ処理のサポート: Spark は、バッチ処理、対話型クエリ、ストリーム処理、機械学習などの複数のデータ処理モデルをサポートします。データ処理と分析には Spark の API (DataFrame や SQL など) を使用できます。また、機械学習やグラフ処理のために他のライブラリ (MLlib、GraphX など) を組み合わせることもできます。

2. 使いやすさ: Spark は、Java、Scala、Python、R などのプログラミング言語のインターフェイスを含む、使いやすい API を提供します。これにより、開発者は自分の使い慣れた言語で Spark アプリケーションとスクリプトを作成できるようになります。

3. スケーラビリティ: Spark は、小型のラップトップから大規模なクラスターまで、さまざまなサイズのクラスター上で実行できます。他のビッグ データ ツールやフレームワーク (Hadoop、Hive、HBase など) とシームレスに統合でき、柔軟でスケーラブルなビッグ データ処理ソリューションを提供します。
ここに画像の説明を挿入

3. Spark を使用する理由

ビッグ データ処理には、通常、大量のデータの保存、処理、分析が含まれます。Spark は、高速で汎用的なビッグ データ処理フレームワークとして、次のようないくつかの重要な理由から人気の選択肢です。

1. 高性能: Spark はメモリ コンピューティング テクノロジを使用してクラスタのメモリにデータをキャッシュし、それによってデータ処理プロセスを高速化します。従来のディスク読み取りおよび書き込み方法と比較して、インメモリ コンピューティングはデータ処理速度を大幅に向上させることができます。さらに、Spark は RDD の抽象概念を使用してデータ共有と並列コンピューティングを実現し、パフォーマンスをさらに向上させます。

2. 複数のデータ処理モデルのサポート: Spark は、バッチ処理、対話型クエリ、ストリーム処理、機械学習などの複数のデータ処理モデルをサポートします。これは、さまざまなタイプのビッグ データ処理タスクを同じフレームワークの下で実行できることを意味し、異なるツールやシステムを使用する必要がなくなり、開発と展開の複雑さが簡素化されます。

3. 使いやすさと柔軟性: Spark は、Java、Scala、Python、R などのプログラミング言語のインターフェイスを含む、使いやすい API を提供します。これにより、開発者は自分の使い慣れた言語で Spark アプリケーションとスクリプトを作成できるようになります。同時に、Spark は他のビッグ データ ツールやフレームワーク (Hadoop や Hive など) とシームレスに統合し、ビッグ データ処理プロセスを柔軟に構築できます。

4. SparkとPandasの違い

Spark を使用して CSV ファイルを読み取ることと、pandas の pd.read_csv を使用して CSV ファイルを読み取ることの違いは何ですか。

1. 分散コンピューティング: Spark は、大規模なデータ セットを処理できる分散コンピューティング フレームワークです。クラスター内の複数のノードを計算に利用してデータを並列処理できるため、処理速度が向上します。対照的に、pandas は単一のマシン上で実行され、大規模なデータセットに対してメモリ制限がかかる可能性があります。

2. データ処理機能: Spark は、データ クリーニング、変換、特徴エンジニアリングなどの豊富なデータ処理機能を提供します。Spark の DataFrame API を介して、SQL に似た構文を使用して、フィルタリング、集計、並べ替えなどのさまざまな操作を実行できます。比較的言えば、pandas も同様の機能を提供しますが、Spark のデータ処理機能はより強力で柔軟です。

3. 複数言語のサポート: Spark は、Scala、Java、Python、R などの複数のプログラミング言語をサポートします。これは、データ処理や機械学習に最も使い慣れたプログラミング言語を使用できることを意味します。Pandas は主に Python で書かれており、Python 言語のみをサポートします。

4. スケーラビリティ: Spark は、他のビッグ データ ツールやフレームワーク (Hadoop、Hive、HBase など) とシームレスに統合できるため、エンドツーエンドのビッグ データ処理および機械学習パイプラインの構築が容易になります。さらに、Spark は、複雑な機械学習タスクを容易にするために、豊富な機械学習ライブラリ (MLlib など) とグラフ処理ライブラリ (GraphX など) も提供します。

5. データ シャード ストレージ: Spark はデータを複数のシャードに分割し、クラスター内の異なるノードに保存します。このデータ断片化ストレージ方法は、データの並列読み取りおよび処理のパフォーマンスを向上させるのに役立ちます。一方、pandas はデータセット全体をメモリにロードするため、大規模なデータセットではメモリ不足やパフォーマンスの低下が発生する可能性があります。

5. Python と Spark を使用してビッグ データ アプリケーションを開発する

この記事では、Python と Spark を使用してビッグ データ アプリケーションを開発する方法を検討します。CSV ファイルをロードし、機械学習アルゴリズムを実行して、データに対して予測を行います。初心者にとって、これは始めるのに最適な例であり、経験豊富な開発者にとっては、新しいアイデアや視点が発見される可能性もあります。

環境整備

始める前に、次のツールとライブラリをインストールして構成する必要があります。

Python3
Apache Spark
PySpark
Jupyter Notebook
コードを示して説明するのに便利なため、このチュートリアルでは開発環境として Jupyter Notebook を使用します。

CSVファイルを読み込む

まず、CSV ファイルをロードする必要があります。この例では、いくつかのシミュレートされたユーザー データを含む単純なデータセットを使用します。

6. Spark ベースの機械学習トレーニング コード

from pyspark.sql import SparkSession

spark = SparkSession.builder.appName("Python Spark CSV").getOrCreate()

# 利用inferSchema参数进行类型推断
df = spark.read.format('csv').option('header', 'true').option('inferSchema', 'true').load('GDM.csv')

df.show()

from pyspark.sql.functions import col

# 删除含有空值的行
df = df.dropna()

# 转换数据类型
df = df.withColumn("AGE", col("AGE").cast("integer"))

df.show()

from pyspark.ml.feature import VectorAssembler
from pyspark.ml.classification import LogisticRegression

# 选择用于预测的特征列
assembler = VectorAssembler(
    inputCols=["GW", "APB", "APA1", "CRE", "CHOL", "UA","ALP", "TG", "GLU"],
    outputCol="features")

# 将数据集转换为适合机器学习的格式
output_data = assembler.transform(df)

# 构建逻辑回归模型
lr = LogisticRegression(featuresCol='features', labelCol='GDM')

# 划分数据集为训练集和测试集
train_data, test_data = output_data.randomSplit([0.7, 0.3])


# 训练模型
lr_model = lr.fit(train_data)

# 测试模型
predictions = lr_model.transform(test_data)

# 展示预测结果
#predictions.show()

from pyspark.ml.evaluation import BinaryClassificationEvaluator

# 构建评估器
evaluator = BinaryClassificationEvaluator()

predictions = predictions.withColumnRenamed("GDM", "label")
# 计算AUC
auc = evaluator.evaluate(predictions)

print(f"AUC: {
      
      auc}")

この記事では、Python と Spark を使用してビッグ データ アプリケーションの基本的な手順を作成します。この記事では、ビッグ データ アプリケーションを作成する基本的な手順 (データの読み込み、データの前処理、モデルのトレーニング、モデルのテスト、モデルの評価) について説明します。この例から何か役に立つことを学んでいただければ幸いです。

おすすめ

転載: blog.csdn.net/weixin_42878111/article/details/131805216