


Mengapa Anda Memerlukan Pengkomputeran Teragih untuk Pembelajaran Mesin Dunia Sebenar
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
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
mulakan sesi pyspark
spark = SparkSession.builder \ .appName("FraudDetectionImproved") \ .master("local[*]") \ .config("spark.executorEnv.PYTHONHASHSEED", "0") \ .getOrCreate()
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()
# 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()
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)
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")))
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
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}")
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}")
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
Anda kemudian boleh menyimpan model ini (beberapa KB) dan menggunakannya di mana-mana dalam talian paip pyspark
rf_model.save()
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!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

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

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas











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.

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 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.

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 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.

Pythonlistsarepartofthestandardlibrary, sementara

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.

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
