Rumah pembangunan bahagian belakang Tutorial Python Mengapa Anda Memerlukan Pengkomputeran Teragih untuk Pembelajaran Mesin Dunia Sebenar

Mengapa Anda Memerlukan Pengkomputeran Teragih untuk Pembelajaran Mesin Dunia Sebenar

Sep 10, 2024 am 06:49 AM

Why You Need Distributed Computing for Real-World Machine Learning

Dan Bagaimana PySpark Boleh Membantu Anda Mengendalikan Set Data Besar Seperti Pro

Rangka kerja pembelajaran mesin seperti PyTorch dan TensorFlow adalah hebat untuk membina model. Tetapi realitinya ialah, apabila ia melibatkan projek dunia sebenar-di mana anda berurusan dengan set data yang besar-anda memerlukan lebih daripada sekadar model yang baik. Anda memerlukan cara untuk memproses dan mengurus semua data itu dengan cekap. Di situlah pengkomputeran teragih, seperti PySpark, datang untuk menyelamatkan hari ini.

Mari kita pecahkan sebab pengendalian data besar dalam pembelajaran mesin dunia sebenar bermakna melampaui PyTorch dan TensorFlow, dan cara PySpark membantu anda sampai ke sana.
Masalah Sebenar: Data Besar
Kebanyakan contoh ML yang anda lihat dalam talian menggunakan set data yang kecil dan boleh diurus. Anda boleh memasukkan semuanya ke dalam ingatan, bermain-main dengannya, dan melatih model dalam beberapa minit. Tetapi dalam senario dunia sebenar—seperti pengesanan penipuan kad kredit, sistem pengesyoran atau ramalan kewangan—anda berurusan dengan berjuta-juta malah berbilion-bilion baris. Tiba-tiba, komputer riba atau pelayan anda tidak dapat mengendalikannya.

Jika anda cuba memuatkan semua data itu ke dalam PyTorch atau TensorFlow sekaligus, keadaan akan rosak. Rangka kerja ini direka bentuk untuk latihan model, bukan untuk mengendalikan set data yang besar dengan cekap. Di sinilah pengkomputeran teragih menjadi penting.
Mengapa PyTorch dan TensorFlow Tidak Cukup
PyTorch dan TensorFlow bagus untuk membina dan mengoptimumkan model, tetapi ia gagal apabila menangani tugas data berskala besar. Dua masalah utama:

  • Memory Overload: Mereka memuatkan keseluruhan set data ke dalam memori sebelum latihan. Itu berfungsi untuk set data kecil, tetapi apabila anda mempunyai terabait data, permainan akan berakhir.
  • Tiada Pemprosesan Data Teragih: PyTorch dan TensorFlow tidak dibina untuk mengendalikan pemprosesan data teragih. Jika anda mempunyai sejumlah besar data yang tersebar merentasi berbilang mesin, ia tidak begitu membantu.

Di sinilah PySpark bersinar. Ia direka bentuk untuk berfungsi dengan data yang diedarkan, memprosesnya dengan cekap merentas berbilang mesin sambil mengendalikan set data yang besar tanpa merosakkan sistem anda.

Contoh Dunia Sebenar: Pengesanan Penipuan Kad Kredit dengan PySpark
Mari kita menyelami contoh. Katakan anda sedang mengusahakan sistem pengesanan penipuan menggunakan data transaksi kad kredit. Dalam kes ini, kami akan menggunakan set data popular daripada Kaggle. Ia mengandungi lebih 284,000 transaksi, dan kurang daripada 1% daripadanya adalah penipuan.

Langkah 1: Sediakan PySpark dalam Google Colab
Kami akan menggunakan Google Colab untuk ini kerana ia membolehkan kami menjalankan PySpark dengan persediaan yang minimum.

!pip install pyspark

Salin selepas log masuk

Seterusnya, import perpustakaan yang diperlukan dan mulakan sesi Spark.

import os
from pyspark.sql import SparkSession
from pyspark.sql.functions import col, sum, udf
from pyspark.ml.feature import VectorAssembler, StringIndexer, MinMaxScaler
from pyspark.ml.classification import RandomForestClassifier, GBTClassifier
from pyspark.ml.tuning import ParamGridBuilder, CrossValidator
from pyspark.ml.evaluation import BinaryClassificationEvaluator, MulticlassClassificationEvaluator
from pyspark.ml.linalg import Vectors
import numpy as np
from pyspark.sql.types import FloatType
Salin selepas log masuk

mulakan sesi pyspark

spark = SparkSession.builder \
    .appName("FraudDetectionImproved") \
    .master("local[*]") \
    .config("spark.executorEnv.PYTHONHASHSEED", "0") \
    .getOrCreate()
Salin selepas log masuk

Langkah 2: Muatkan dan Sediakan data

data = spark.read.csv('creditcard.csv', header=True, inferSchema=True)
data = data.orderBy("Time")  # Ensure data is sorted by time
data.show(5)
data.describe().show()
Salin selepas log masuk
# Check for missing values in each column
data.select([sum(col(c).isNull().cast("int")).alias(c) for c in data.columns]).show()

# Prepare the feature columns
feature_columns = data.columns
feature_columns.remove("Class")  # Removing "Class" column as it is our label

# Assemble features into a single vector
assembler = VectorAssembler(inputCols=feature_columns, outputCol="features")
data = assembler.transform(data)
data.select("features", "Class").show(5)

# Split data into train (60%), test (20%), and unseen (20%)
train_data, temp_data = data.randomSplit([0.6, 0.4], seed=42)
test_data, unseen_data = temp_data.randomSplit([0.5, 0.5], seed=42)

# Print class distribution in each dataset
print("Train Data:")
train_data.groupBy("Class").count().show()

print("Test and parameter optimisation Data:")
test_data.groupBy("Class").count().show()

print("Unseen Data:")
unseen_data.groupBy("Class").count().show()
Salin selepas log masuk

Langkah 3: Mulakan Model

# Initialize RandomForestClassifier
rf = RandomForestClassifier(labelCol="Class", featuresCol="features", probabilityCol="probability")

# Create ParamGrid for Cross Validation
paramGrid = ParamGridBuilder() \
    .addGrid(rf.numTrees, [10, 20 ]) \
    .addGrid(rf.maxDepth, [5, 10]) \
    .build()

# Create 5-fold CrossValidator
crossval = CrossValidator(estimator=rf,
                          estimatorParamMaps=paramGrid,
                          evaluator=BinaryClassificationEvaluator(labelCol="Class", metricName="areaUnderROC"),
                          numFolds=5)
Salin selepas log masuk

Langkah 4: Pasang, Jalankan pengesahan silang dan pilih set parameter terbaik

# Run cross-validation, and choose the best set of parameters
rf_model = crossval.fit(train_data)

# Make predictions on test data
predictions_rf = rf_model.transform(test_data)

# Evaluate Random Forest Model
binary_evaluator = BinaryClassificationEvaluator(labelCol="Class", rawPredictionCol="rawPrediction", metricName="areaUnderROC")
pr_evaluator = BinaryClassificationEvaluator(labelCol="Class", rawPredictionCol="rawPrediction", metricName="areaUnderPR")

auc_rf = binary_evaluator.evaluate(predictions_rf)
auprc_rf = pr_evaluator.evaluate(predictions_rf)
print(f"Random Forest - AUC: {auc_rf:.4f}, AUPRC: {auprc_rf:.4f}")

# UDF to extract positive probability from probability vector
extract_prob = udf(lambda prob: float(prob[1]), FloatType())
predictions_rf = predictions_rf.withColumn("positive_probability", extract_prob(col("probability")))
Salin selepas log masuk

Langkah 5 Berfungsi untuk mengira ketepatan, mengingat semula dan skor F1

# Function to calculate precision, recall, and F1-score
def calculate_metrics(predictions):
    tp = predictions.filter((col("Class") == 1) & (col("prediction") == 1)).count()
    fp = predictions.filter((col("Class") == 0) & (col("prediction") == 1)).count()
    fn = predictions.filter((col("Class") == 1) & (col("prediction") == 0)).count()

    precision = tp / (tp + fp) if (tp + fp) != 0 else 0
    recall = tp / (tp + fn) if (tp + fn) != 0 else 0
    f1_score = (2 * precision * recall) / (precision + recall) if (precision + recall) != 0 else 0

    return precision, recall, f1_score
Salin selepas log masuk

Langkah 6: Cari ambang terbaik untuk model

# Find the best threshold for the model
best_threshold = 0.5
best_f1 = 0
for threshold in np.arange(0.1, 0.9, 0.1):
    thresholded_predictions = predictions_rf.withColumn("prediction", (col("positive_probability") > threshold).cast("double"))
    precision, recall, f1 = calculate_metrics(thresholded_predictions)

    if f1 > best_f1:
        best_f1 = f1
        best_threshold = threshold

print(f"Best threshold: {best_threshold}, Best F1-score: {best_f1:.4f}")
Salin selepas log masuk

Langkah7: Nilai pada Data yang tidak kelihatan

# Evaluate on unseen data
predictions_unseen = rf_model.transform(unseen_data)
auc_unseen = binary_evaluator.evaluate(predictions_unseen)
print(f"Unseen Data - AUC: {auc_unseen:.4f}")

precision, recall, f1 = calculate_metrics(predictions_unseen)
print(f"Unseen Data - Precision: {precision:.4f}, Recall: {recall:.4f}, F1-score: {f1:.4f}")

area_under_roc = binary_evaluator.evaluate(predictions_unseen)
area_under_pr = pr_evaluator.evaluate(predictions_unseen)
print(f"Unseen Data - AUC: {area_under_roc:.4f}, AUPRC: {area_under_pr:.4f}")
Salin selepas log masuk

KEPUTUSAN

Best threshold: 0.30000000000000004, Best F1-score: 0.9062
Unseen Data - AUC: 0.9384
Unseen Data - Precision: 0.9655, Recall: 0.7568, F1-score: 0.8485
Unseen Data - AUC: 0.9423, AUPRC: 0.8618
Salin selepas log masuk

Anda kemudian boleh menyimpan model ini (beberapa KB) dan menggunakannya di mana-mana dalam talian paip pyspark

rf_model.save()
Salin selepas log masuk

Inilah sebabnya PySpark membuat perbezaan yang besar apabila berurusan dengan set data yang besar dalam tugas pembelajaran mesin dunia sebenar:

Ia Skala Dengan Mudah: PySpark boleh mengagihkan tugas merentas kelompok, membolehkan anda memproses terabait data tanpa kehabisan memori.
Pemprosesan Data On-the-Fly: PySpark tidak perlu memuatkan keseluruhan set data ke dalam memori. Ia memproses data mengikut keperluan, yang menjadikannya lebih cekap.
Latihan Model Lebih Pantas: Dengan pengkomputeran teragih, anda boleh melatih model dengan lebih pantas dengan mengagihkan beban kerja pengiraan merentas berbilang mesin.
Fikiran Akhir
PyTorch dan TensorFlow ialah alat yang hebat untuk membina model pembelajaran mesin, tetapi untuk dunia sebenar, tugasan berskala besar, anda memerlukan lebih banyak lagi. Pengkomputeran teragih dengan PySpark membolehkan anda mengendalikan set data yang besar dengan cekap, memproses data dalam masa nyata dan menskalakan saluran pembelajaran mesin anda.

Jadi, pada kali seterusnya anda menggunakan data yang besar—sama ada pengesanan penipuan, sistem pengesyoran atau analisis kewangan—pertimbangkan untuk menggunakan PySpark untuk membawa projek anda ke peringkat seterusnya.

Untuk kod dan hasil penuh, lihat buku nota ini. :
https://colab.research.google.com/drive/1W9naxNZirirLRodSEnHAUWevYd5LH8D4?authuser=5#scrollTo=odmodmqKcY23

__

Saya Swapnil, sila tinggalkan ulasan anda Keputusan dan idea, atau ping saya - swapnil@nooffice.no untuk Data, pertunjukan pembangun perisian dan pekerjaan

Atas ialah kandungan terperinci Mengapa Anda Memerlukan Pengkomputeran Teragih untuk Pembelajaran Mesin Dunia Sebenar. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

<🎜>: Bubble Gum Simulator Infinity - Cara Mendapatkan dan Menggunakan Kekunci Diraja
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Sistem Fusion, dijelaskan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Cara Membuka Kunci Cangkuk Bergelut
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial Java
1671
14
Tutorial PHP
1276
29
Tutorial C#
1256
24
Python vs C: Lengkung pembelajaran dan kemudahan penggunaan Python vs C: Lengkung pembelajaran dan kemudahan penggunaan Apr 19, 2025 am 12:20 AM

Python lebih mudah dipelajari dan digunakan, manakala C lebih kuat tetapi kompleks. 1. Sintaks Python adalah ringkas dan sesuai untuk pemula. Penaipan dinamik dan pengurusan memori automatik menjadikannya mudah digunakan, tetapi boleh menyebabkan kesilapan runtime. 2.C menyediakan kawalan peringkat rendah dan ciri-ciri canggih, sesuai untuk aplikasi berprestasi tinggi, tetapi mempunyai ambang pembelajaran yang tinggi dan memerlukan memori manual dan pengurusan keselamatan jenis.

Python dan Masa: Memanfaatkan masa belajar anda Python dan Masa: Memanfaatkan masa belajar anda Apr 14, 2025 am 12:02 AM

Untuk memaksimumkan kecekapan pembelajaran Python dalam masa yang terhad, anda boleh menggunakan modul, masa, dan modul Python. 1. Modul DateTime digunakan untuk merakam dan merancang masa pembelajaran. 2. Modul Masa membantu menetapkan kajian dan masa rehat. 3. Modul Jadual secara automatik mengatur tugas pembelajaran mingguan.

Python vs C: Meneroka Prestasi dan Kecekapan Python vs C: Meneroka Prestasi dan Kecekapan Apr 18, 2025 am 12:20 AM

Python lebih baik daripada C dalam kecekapan pembangunan, tetapi C lebih tinggi dalam prestasi pelaksanaan. 1. Sintaks ringkas Python dan perpustakaan yang kaya meningkatkan kecekapan pembangunan. 2. Ciri-ciri jenis kompilasi dan kawalan perkakasan meningkatkan prestasi pelaksanaan. Apabila membuat pilihan, anda perlu menimbang kelajuan pembangunan dan kecekapan pelaksanaan berdasarkan keperluan projek.

Pembelajaran Python: Adakah 2 jam kajian harian mencukupi? Pembelajaran Python: Adakah 2 jam kajian harian mencukupi? Apr 18, 2025 am 12:22 AM

Adakah cukup untuk belajar Python selama dua jam sehari? Ia bergantung pada matlamat dan kaedah pembelajaran anda. 1) Membangunkan pelan pembelajaran yang jelas, 2) Pilih sumber dan kaedah pembelajaran yang sesuai, 3) mengamalkan dan mengkaji semula dan menyatukan amalan tangan dan mengkaji semula dan menyatukan, dan anda secara beransur-ansur boleh menguasai pengetahuan asas dan fungsi lanjutan Python dalam tempoh ini.

Python vs C: Memahami perbezaan utama Python vs C: Memahami perbezaan utama Apr 21, 2025 am 12:18 AM

Python dan C masing -masing mempunyai kelebihan sendiri, dan pilihannya harus berdasarkan keperluan projek. 1) Python sesuai untuk pembangunan pesat dan pemprosesan data kerana sintaks ringkas dan menaip dinamik. 2) C sesuai untuk prestasi tinggi dan pengaturcaraan sistem kerana menaip statik dan pengurusan memori manual.

Yang merupakan sebahagian daripada Perpustakaan Standard Python: Senarai atau Array? Yang merupakan sebahagian daripada Perpustakaan Standard Python: Senarai atau Array? Apr 27, 2025 am 12:03 AM

Pythonlistsarepartofthestandardlibrary, sementara

Python: Automasi, skrip, dan pengurusan tugas Python: Automasi, skrip, dan pengurusan tugas Apr 16, 2025 am 12:14 AM

Python cemerlang dalam automasi, skrip, dan pengurusan tugas. 1) Automasi: Sandaran fail direalisasikan melalui perpustakaan standard seperti OS dan Shutil. 2) Penulisan Skrip: Gunakan Perpustakaan Psutil untuk memantau sumber sistem. 3) Pengurusan Tugas: Gunakan perpustakaan jadual untuk menjadualkan tugas. Kemudahan penggunaan Python dan sokongan perpustakaan yang kaya menjadikannya alat pilihan di kawasan ini.

Python untuk Pembangunan Web: Aplikasi Utama Python untuk Pembangunan Web: Aplikasi Utama Apr 18, 2025 am 12:20 AM

Aplikasi utama Python dalam pembangunan web termasuk penggunaan kerangka Django dan Flask, pembangunan API, analisis data dan visualisasi, pembelajaran mesin dan AI, dan pengoptimuman prestasi. 1. Rangka Kerja Django dan Flask: Django sesuai untuk perkembangan pesat aplikasi kompleks, dan Flask sesuai untuk projek kecil atau sangat disesuaikan. 2. Pembangunan API: Gunakan Flask atau DjangorestFramework untuk membina Restfulapi. 3. Analisis Data dan Visualisasi: Gunakan Python untuk memproses data dan memaparkannya melalui antara muka web. 4. Pembelajaran Mesin dan AI: Python digunakan untuk membina aplikasi web pintar. 5. Pengoptimuman Prestasi: Dioptimumkan melalui pengaturcaraan, caching dan kod tak segerak

See all articles