Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Tutorial: Membangun model pengelompokan K-means
Dalam tutorial ini, Anda menggunakan Amazon Redshift ML untuk membuat, melatih, dan menerapkan model pembelajaran mesin berdasarkan algoritma K-means. Algoritma ini memecahkan masalah pengelompokan di mana Anda ingin menemukan pengelompokan dalam data. K-means membantu dalam mengelompokkan data yang belum diberi label. Untuk mempelajari lebih lanjut tentang pengelompokan K-means, lihat Cara Kerja Pengelompokan K-Means di Panduan Pengembang Amazon. SageMaker
Anda akan menggunakan CREATE MODEL operasi untuk membuat model K-means dari cluster Amazon Redshift. Anda dapat menggunakan CREATE MODEL perintah untuk mengekspor data pelatihan, melatih model, mengimpor model, dan menyiapkan fungsi prediksi Amazon Redshift. Gunakan CREATE MODEL operasi untuk menentukan data pelatihan baik sebagai tabel atau SELECT pernyataan.
Dalam tutorial ini, Anda menggunakan K-means pada Database Global Events, Language, and Tone (GDELT)
Contoh kasus penggunaan
Anda dapat memecahkan masalah pengelompokan lainnya dengan Amazon Redshift ML, seperti mengelompokkan pelanggan yang memiliki kebiasaan menonton serupa pada layanan streaming. Anda juga dapat menggunakan Redshift ML untuk memprediksi jumlah optimal pusat pengiriman untuk layanan pengiriman.
Tugas
-
Prasyarat
-
Langkah 1: Muat data dari Amazon S3 ke Amazon Redshift
-
Langkah 2: Buat model pembelajaran mesin
-
Langkah 3: Lakukan prediksi dengan model
Prasyarat
Untuk menyelesaikan tutorial ini, Anda harus menyelesaikan pengaturan Administratif untuk Amazon Redshift Ml.
Langkah 1: Muat data dari Amazon S3 ke Amazon Redshift
-
Gunakan editor kueri Amazon Redshift v2 untuk menjalankan kueri berikut. Kueri menjatuhkan
gdelt_data
tabel dalam skema publik jika ada dan membuat tabel dengan nama yang sama dalam skema publik.DROP TABLE IF EXISTS gdelt_data CASCADE; CREATE TABLE gdelt_data ( GlobalEventId bigint, SqlDate bigint, MonthYear bigint, Year bigint, FractionDate double precision, Actor1Code varchar(256), Actor1Name varchar(256), Actor1CountryCode varchar(256), Actor1KnownGroupCode varchar(256), Actor1EthnicCode varchar(256), Actor1Religion1Code varchar(256), Actor1Religion2Code varchar(256), Actor1Type1Code varchar(256), Actor1Type2Code varchar(256), Actor1Type3Code varchar(256), Actor2Code varchar(256), Actor2Name varchar(256), Actor2CountryCode varchar(256), Actor2KnownGroupCode varchar(256), Actor2EthnicCode varchar(256), Actor2Religion1Code varchar(256), Actor2Religion2Code varchar(256), Actor2Type1Code varchar(256), Actor2Type2Code varchar(256), Actor2Type3Code varchar(256), IsRootEvent bigint, EventCode bigint, EventBaseCode bigint, EventRootCode bigint, QuadClass bigint, GoldsteinScale double precision, NumMentions bigint, NumSources bigint, NumArticles bigint, AvgTone double precision, Actor1Geo_Type bigint, Actor1Geo_FullName varchar(256), Actor1Geo_CountryCode varchar(256), Actor1Geo_ADM1Code varchar(256), Actor1Geo_Lat double precision, Actor1Geo_Long double precision, Actor1Geo_FeatureID bigint, Actor2Geo_Type bigint, Actor2Geo_FullName varchar(256), Actor2Geo_CountryCode varchar(256), Actor2Geo_ADM1Code varchar(256), Actor2Geo_Lat double precision, Actor2Geo_Long double precision, Actor2Geo_FeatureID bigint, ActionGeo_Type bigint, ActionGeo_FullName varchar(256), ActionGeo_CountryCode varchar(256), ActionGeo_ADM1Code varchar(256), ActionGeo_Lat double precision, ActionGeo_Long double precision, ActionGeo_FeatureID bigint, DATEADDED bigint );
-
Query berikut memuat data sampel ke dalam
gdelt_data
tabel.COPY gdelt_data FROM 's3://gdelt-open-data/events/1979.csv' REGION 'us-east-1' IAM_ROLE default CSV DELIMITER '\t';
Periksa data pelatihan (opsional)
Untuk melihat data apa yang akan dilatih model Anda, gunakan kueri berikut.
SELECT AvgTone, EventCode, NumArticles, Actor1Geo_Lat, Actor1Geo_Long, Actor2Geo_Lat, Actor2Geo_Long FROM gdelt_data LIMIT 100;
Langkah 2: Buat model pembelajaran mesin
Contoh berikut menggunakan CREATE MODEL perintah untuk membuat model yang mengelompokkan data menjadi tujuh cluster. Nilai K adalah jumlah cluster tempat titik data Anda dibagi menjadi. Model ini mengklasifikasikan titik data Anda ke dalam cluster di mana titik data lebih mirip satu sama lain. Dengan mengelompokkan titik data ke dalam kelompok, algoritma K-Means secara iteratif menentukan pusat cluster terbaik. Algoritma kemudian menetapkan setiap titik data ke pusat cluster terdekat. Anggota terdekat dengan pusat cluster yang sama termasuk dalam grup yang sama. Anggota kelompok semirip mungkin dengan anggota lain dalam kelompok yang sama, dan berbeda mungkin dari anggota kelompok lain. Nilai K bersifat subjektif dan bergantung pada metode yang mengukur kesamaan antar titik data. Anda dapat mengubah nilai K untuk menghaluskan ukuran cluster jika cluster tidak terdistribusi secara merata.
Dalam contoh berikut, ganti amzn-s3-demo-bucket dengan bucket Amazon S3 Anda sendiri.
CREATE MODEL news_data_clusters FROM ( SELECT AvgTone, EventCode, NumArticles, Actor1Geo_Lat, Actor1Geo_Long, Actor2Geo_Lat, Actor2Geo_Long FROM gdelt_data ) FUNCTION news_monitoring_cluster IAM_ROLE default AUTO OFF MODEL_TYPE KMEANS PREPROCESSORS 'none' HYPERPARAMETERS DEFAULT EXCEPT (K '7') SETTINGS (S3_BUCKET 'amzn-s3-demo-bucket');
Periksa status pelatihan model (opsional)
Anda dapat menggunakan SHOW MODEL perintah untuk mengetahui kapan model Anda siap.
Untuk memeriksa status model, gunakan SHOW MODEL operasi berikut dan temukan apakah Model State
adaReady
.
SHOW MODEL NEWS_DATA_CLUSTERS;
Ketika model siap, output dari operasi sebelumnya harus menunjukkan bahwa Model State
adalahReady
. Berikut ini adalah contoh output dari SHOW MODEL operasi.
+--------------------------+------------------------------------------------------------------------------------------------------+ | Model Name | news_data_clusters | +--------------------------+------------------------------------------------------------------------------------------------------+ | Schema Name | public | | Owner | awsuser | | Creation Time | Fri, 17.06.2022 16:32:19 | | Model State | READY | | train:msd | 2973.822754 | | train:progress | 100.000000 | | train:throughput | 237114.875000 | | Estimated Cost | 0.004983 | | | | | TRAINING DATA: | | | Query | SELECT AVGTONE, EVENTCODE, NUMARTICLES, ACTOR1GEO_LAT, ACTOR1GEO_LONG, ACTOR2GEO_LAT, ACTOR2GEO_LONG | | | FROM GDELT_DATA | | | | | PARAMETERS: | | | Model Type | kmeans | | Training Job Name | redshiftml-20220617163219978978-kmeans | | Function Name | news_monitoring_cluster | | Function Parameters | avgtone eventcode numarticles actor1geo_lat actor1geo_long actor2geo_lat actor2geo_long | | Function Parameter Types | float8 int8 int8 float8 float8 float8 float8 | | IAM Role | default-aws-iam-role | | S3 Bucket | amzn-s3-demo-bucket | | Max Runtime | 5400 | | | | | HYPERPARAMETERS: | | | feature_dim | 7 | | k | 7 | +--------------------------+------------------------------------------------------------------------------------------------------+
Langkah 3: Lakukan prediksi dengan model
Identifikasi cluster
Anda dapat menemukan pengelompokan diskrit yang diidentifikasi dalam data oleh model Anda, atau dikenal sebagai cluster. Cluster adalah kumpulan titik data yang lebih dekat ke pusat klaster daripada pusat cluster lainnya. Karena nilai K mewakili jumlah cluster dalam model, itu juga mewakili jumlah pusat cluster. Kueri berikut mengidentifikasi cluster dengan menunjukkan cluster yang terkait dengan masing-masing. globaleventid
SELECT globaleventid, news_monitoring_cluster ( AvgTone, EventCode, NumArticles, Actor1Geo_Lat, Actor1Geo_Long, Actor2Geo_Lat, Actor2Geo_Long ) AS cluster FROM gdelt_data;
Periksa distribusi data
Anda dapat memeriksa distribusi data di seluruh cluster untuk melihat apakah nilai K yang Anda pilih menyebabkan data terdistribusi agak merata. Gunakan kueri berikut untuk menentukan apakah data didistribusikan secara merata di seluruh cluster Anda.
SELECT events_cluster, COUNT(*) AS nbr_events FROM ( SELECT globaleventid, news_monitoring_cluster( AvgTone, EventCode, NumArticles, Actor1Geo_Lat, Actor1Geo_Long, Actor2Geo_Lat, Actor2Geo_Long ) AS events_cluster FROM gdelt_data ) GROUP BY 1;
Perhatikan bahwa Anda dapat mengubah nilai K untuk menghaluskan ukuran cluster jika cluster tidak terdistribusi secara merata.
Tentukan pusat cluster
Titik data lebih dekat ke pusat klaster daripada ke pusat cluster lainnya. Dengan demikian, menemukan pusat cluster membantu Anda menentukan cluster.
Jalankan kueri berikut untuk menentukan pusat cluster berdasarkan jumlah artikel berdasarkan kode acara.
SELECT news_monitoring_cluster ( AvgTone, EventCode, NumArticles, Actor1Geo_Lat, Actor1Geo_Long, Actor2Geo_Lat, Actor2Geo_Long ) AS events_cluster, eventcode, SUM(numArticles) AS numArticles FROM gdelt_data GROUP BY 1, 2;
Menampilkan informasi tentang titik data dalam klaster
Gunakan kueri berikut untuk mengembalikan data untuk poin yang ditetapkan ke cluster kelima. Artikel yang dipilih harus memiliki dua aktor.
SELECT news_monitoring_cluster ( AvgTone, EventCode, NumArticles, Actor1Geo_Lat, Actor1Geo_Long, Actor2Geo_Lat, Actor2Geo_Long ) AS events_cluster, eventcode, actor1name, actor2name, SUM(numarticles) AS totalarticles FROM gdelt_data WHERE events_cluster = 5 AND actor1name <> ' ' AND actor2name <> ' ' GROUP BY 1, 2, 3, 4 ORDER BY 5 desc;
Tampilkan data tentang peristiwa dengan aktor dari kode etnis yang sama
Kueri berikut menghitung jumlah artikel yang ditulis tentang peristiwa dengan nada positif. Kueri juga mengharuskan kedua aktor memiliki kode etnis yang sama dan mengembalikan cluster mana yang ditugaskan untuk setiap peristiwa.
SELECT news_monitoring_cluster ( AvgTone, EventCode, NumArticles, Actor1Geo_Lat, Actor1Geo_Long, Actor2Geo_Lat, Actor2Geo_Long ) AS events_cluster, SUM(numarticles) AS total_articles, eventcode AS event_code, Actor1EthnicCode AS ethnic_code FROM gdelt_data WHERE Actor1EthnicCode = Actor2EthnicCode AND Actor1EthnicCode <> ' ' AND Actor2EthnicCode <> ' ' AND AvgTone > 0 GROUP BY 1, 3, 4 HAVING (total_articles) > 4 ORDER BY 1, 2 ASC;
Topik terkait
Untuk informasi selengkapnya tentang Amazon Redshift ML, lihat dokumentasi berikut:
Untuk informasi selengkapnya tentang pembelajaran mesin, lihat dokumentasi berikut: