Vertex AI: AutoML ile sahtekarlık algılama modeli oluşturma

1. Genel Bakış

Bu laboratuvarda, tablo verileriyle bir model eğitmek ve sunmak için Vertex AI'ı kullanacaksınız. Google Cloud'daki en yeni yapay zeka ürün teklifi olan bu ürün şu anda önizleme sürümündedir.

Öğrenecekleriniz

Öğrenecekleriniz:

  • Vertex AI'a yönetilen veri kümesi yükleme
  • AutoML ile model eğitme
  • Eğitilen AutoML modelinizi bir uç noktaya dağıtma ve tahmin almak için bu uç noktayı kullanma

Bu laboratuvarı Google Cloud'da çalıştırmanın toplam maliyeti yaklaşık 22 ABD dolarıdır.

2. Vertex AI'a giriş

Bu laboratuvarda, Google Cloud'da sunulan en yeni yapay zeka ürünü kullanılır. Vertex AI, Google Cloud'daki makine öğrenimi tekliflerini sorunsuz bir geliştirme deneyiminde birleştirir. Önceden, AutoML ve özel modellerle eğitilen modellere ayrı hizmetler üzerinden erişilebiliyordu. Yeni teklif, diğer yeni ürünlerle birlikte her ikisini de tek bir API'de birleştirir. Mevcut projeleri Vertex AI'a da taşıyabilirsiniz. Geri bildirimde bulunmak isterseniz lütfen destek sayfasını inceleyin.

Vertex AI, uçtan uca makine öğrenimi iş akışlarını desteklemek için birçok farklı ürün içerir. Bu laboratuvarda aşağıdaki ürünlere odaklanacağız: Tablo biçimindeki veriler için AutoML, Tahmin ve Workbench.

Vertex'e genel bakış

3. Ortamınızı ayarlama

Bu kod laboratuvarını çalıştırmak için faturalandırmanın etkin olduğu bir Google Cloud Platform projeniz olmalıdır. Proje oluşturmak için buradaki talimatları uygulayın.

1. Adım: Compute Engine API'yi etkinleştirin

Compute Engine'a gidin ve etkin değilse Etkinleştir'i seçin. Not defteri örneğinizi oluşturmak için bu anahtara ihtiyacınız vardır.

2. Adım: Vertex AI API'yi etkinleştirin

Cloud Console'un Vertex AI bölümüne gidip Enable Vertex AI API'yi (Vertex AI API'yi etkinleştir) tıklayın.

Vertex kontrol paneli

3. Adım: Vertex AI Workbench örneği oluşturun

Cloud Console'unuzun Vertex AI bölümünden Workbench'i tıklayın:

Vertex AI menüsü

Buradan Kullanıcı tarafından yönetilen not defterleri bölümünde Yeni Not Defteri'ni tıklayın:

Yeni not defteri oluşturma

Ardından, TensorFlow Enterprise (LTS özellikli) örnek türünün GPU'suz en son sürümünü seçin:

TFE örneği

Varsayılan seçenekleri kullanın ve Oluştur'u tıklayın.

5. Adım: Not defterinizi açın

Örnek oluşturulduktan sonra JupyterLab'i aç'ı seçin:

Not defterini aç

Modelimizi eğitmek için kullanacağımız veriler bu kredi kartı sahtekarlığı algılama veri kümesinden alınmıştır. Bu veri kümesinin BigQuery'de herkese açık olarak sunulan bir sürümünü kullanacağız.

4. Yönetilen Veri Kümesi Oluşturma

Vertex AI'da çeşitli veri türleri için yönetilen veri kümeleri oluşturabilirsiniz. Ardından bu veri kümeleriyle ilgili istatistikler oluşturabilir ve bunları AutoML ile veya kendi özel model kodunuzla model eğitmek için kullanabilirsiniz.

1. adım: Veri kümesi oluşturun

Konsolunuzdaki Vertex menüsünde Veri kümeleri'ni seçin:

Veri kümelerini seçme

Bu laboratuvarda, belirli bir kredi kartı işleminin sahtekarlık olarak sınıflandırılıp sınıflandırılmayacağını belirlemek için bir sahtekarlık algılama modeli oluşturacağız.

Veri kümeleri sayfasından veri kümesine bir ad verin, ardından Tablo ve ardından Regresyon/sınıflandırma'yı seçin. Ardından veri kümesini oluşturun:

Veri kümesi oluştur

Vertex'teki yönetilen veri kümelerine veri aktarmak için birkaç seçenek vardır:

  • Bilgisayarınızdaki yerel bir dosyayı yükleme
  • Cloud Storage'dan dosya seçme
  • BigQuery'den veri seçme

Burada, herkese açık bir BigQuery tablosundan veri yükleyeceğiz.

2. Adım: BigQuery'den veri içe aktarma

İçe aktarma yönteminiz olarak "BigQuery'den tablo veya görünüm seçin"i seçtikten sonra aşağıdaki kodu BigQuery tablosu kutusuna kopyalayın: bigquery-public-data.ml_datasets.ulb_fraud_detection. Ardından Devam'ı seçin:

BQ verilerini içe aktarma

Veri kümenizi içe aktardıktan sonra aşağıdakine benzer bir görünüm görürsünüz:

İçe aktarılan veriler

İsterseniz bu veri kümesiyle ilgili ek bilgi görmek için İstatistik oluştur'u tıklayabilirsiniz ancak sonraki adıma geçmeden önce bunu yapmanız gerekmez. Bu veri kümesi gerçek kredi kartı işlemlerini içerir. Sütun adlarının çoğu gizlendiği için V1, V2 vb. olarak adlandırılır.

5. AutoML ile model eğitme

Yönetilen veri kümesi yüklendikten sonra bu verilerle bir model eğitmeye hazırız. Belirli bir işlemin sahtekarlık içerip içermediğini tahmin etmek için bir sınıflandırma modeli eğiteceğiz. Vertex AI, model eğitimi için size iki seçenek sunar:

  • AutoML: Minimum düzeyde çaba ve makine öğrenimi uzmanlığıyla yüksek kaliteli modeller eğitin.
  • Özel eğitim: Özel eğitim uygulamalarınızı Google Cloud'un önceden oluşturulmuş kapsayıcılarından birini veya kendi kapsayıcınızı kullanarak bulutta çalıştırın.

Bu laboratuvarda eğitim için AutoML'i kullanacağız.

1. Adım: Eğitim işini başlatın

Önceki adımda bıraktığınız veri kümesi ayrıntıları sayfasında, sağ üstteki Yeni model oluştur'u seçin. Hedef olarak Sınıflandırma'yı seçin, model eğitimi için AutoML'yi seçili bırakın ve Devam'ı tıklayın:

Model eğitimi 1. adım

Modelinize bir ad verin veya varsayılan adı kullanın. Hedef sütun bölümünde Sınıf'ı seçin. Bu, belirli bir işlemin sahtekarlık içerip içermediğini belirten bir tam sayıdır (sahtekarlık içermeyen işlemler için 0, sahtekarlık içeren işlemler için 1).

Ardından Devam'ı seçin:

Model eğitimi 2. adım

Bu adımda, aşağı kaydırın ve Gelişmiş seçenekler'i tıklayarak genişletin. Bu veri kümesi büyük ölçüde dengesiz olduğundan (verilerin% 1'inden azı sahtekarlık içeren işlemler içerdiğinden) daha seyrek kullanılan sınıf için hassas geri çağırmayı en üst düzeye çıkaracak AUC PRC seçeneğini tercih edin:

İleri düzey eğitim seçenekleri

Devam'ı seçin ve ardından son adıma (İşlem ve fiyatlandırma) geçin. Burada, bütçeniz için düğüm saati sayısı olarak 1 girin ve erken durdurma seçeneğini etkin durumda bırakın. AutoML modelinizi 1 işlem saati boyunca eğitmek, genellikle seçtiğiniz özellikler ile etiket arasında bir ilişki olup olmadığını anlamak için iyi bir başlangıçtır. Buradan, model performansını artırmak için özelliklerinizi değiştirebilir ve daha uzun süre eğitim verebilirsiniz. Ardından Eğitimi başlat'ı seçin.

Eğitim işiniz tamamlandığında bir e-posta alırsınız. Kaynakları oluşturma ve kaldırma süresi de hesaba katıldığında eğitim bir saatten biraz daha uzun sürer.

6. Model değerlendirme metriklerini keşfetme

Bu adımda, modelimizin nasıl performans gösterdiğini göreceğiz.

Model eğitim işiniz tamamlandıktan sonra Vertex'teki Modeller sekmesine gidin. Eğittiğiniz modeli tıklayın ve Değerlendir sekmesine göz atın. Burada çok sayıda değerlendirme metriği vardır. Bunlardan ikisine odaklanacağız: Karışıklık Matrisi ve Özellik Önemi.

1. adım: Karıştırma matrisini anlayın

Karışıklık matrisi, test veri kümemizdeki her sınıf için modelimizin doğru tahmin ettiği örneklerin yüzdesini gösterir. Üzerinde çalıştığımız veri kümesi gibi dengesiz bir veri kümesi söz konusu olduğunda bu, modelimizin performansını genel doğruluktan daha iyi bir şekilde ölçer.

Veri kümemizdeki örneklerin %1'inden azının sahtekarlık amaçlı işlemler olduğunu unutmayın. Bu nedenle, model doğruluğumuz %99 ise modelin çoğu zaman sahtekarlık amaçlı olmayan sınıfı rastgele tahmin etme olasılığı yüksektir. Bu nedenle, modelimizin her sınıf için doğruluğunu incelemek daha iyi bir metriktir.

Değerlendir sekmesini aşağı kaydırırsanız, aşağıdakine benzer bir karışıklık matrisi görürsünüz (tam yüzdeler değişiklik gösterebilir):

Karışıklık matrisi

Karışıklık matrisi, ilk modelimizin test setimizdeki sahte örneklerin% 85'ini doğru şekilde sınıflandırabildiğini göstermektedir. Bu, özellikle veri kümesi dengesizliğimizin önemli olduğu göz önüne alındığında oldukça iyi bir sonuçtur. Ardından, bu %85'ten daha iyi performans gösterip gösteremeyeceğimizi görmek için modelimizi daha fazla işlem saati boyunca eğitmeyi deneyebiliriz.

2. adım: Özellik önemine bakma

Karıştırma matrisinin altında, aşağıdaki gibi görünen bir özellik önem düzeyi grafiği görürsünüz:

Özelliğin önem düzeyi

Bu veriler, tahminde bulunurken modelimize en büyük sinyali sağlayan özellikleri gösterir. Özelliğin önemi, Explainable AI türlerinden biridir. Makine öğrenimi modeli hakkında daha fazla bilgi edinmek için çeşitli yöntemlerin yer aldığı bir alan olan tahminde bulunur. Burada gösterilen özellik önemi grafiği, modelimizin test veri kümemizdeki tüm tahminlerine bakılarak toplu olarak hesaplanır. Bir dizi örnekle en önemli özellikleri gösterir.

Veri kümemizdeki özelliklerin çoğu gizlenmeseydi bu grafik daha heyecan verici olurdu. Örneğin, bir işlemin türü (aktarımı, para yatırma vb.) sahtekarlığın en büyük göstergesi olduğunu öğrenebiliriz.

Gerçek bir senaryoda bu özellik önem değerleri, modelimizi iyileştirmemize ve tahminlerine daha fazla güvenmemize yardımcı olmak için kullanılabilir. Bir sonraki model eğitimimizde en az önemli özellikleri kaldırmaya veya en önemli iki özelliğimizi bir özellik çaprazlama işlemiyle birleştirerek model performansını iyileştirip iyileştirmediğini görmeye karar verebiliriz.

Burada bir gruptaki özellik önemine bakıyoruz ancak Vertex AI'da tek tek tahminler için özellik önemini de alabiliriz. Modelimizi dağıttıktan sonra bunu nasıl yapacağımızı göreceğiz.

7. Modeli uç noktaya dağıtma

Eğitilmiş bir modelimiz olduğuna göre bir sonraki adım Vertex'te bir uç nokta oluşturmaktır. Vertex'teki bir model kaynağının birden fazla uç noktası olabilir ve trafiği uç noktalar arasında bölebilirsiniz.

1. Adım: Uç nokta oluşturma

Model sayfanızda Yayınla ve test et sekmesine gidin ve Bitiş noktasına dağıt'ı tıklayın:

Dağıtım ve test

Bitiş noktanıza fraud_v1 gibi bir ad verin, Erişim'i Standart olarak ayarlayın ve Devam'ı tıklayın.

Trafik bölme ve makine türünü varsayılan ayarlar olarak bırakın, Bitti'yi ve ardından Devam'ı tıklayın.

Bu uç nokta için model izlemeyi kullanmayacağız. Bu nedenle, bu seçeneği işaretli bırakmadan Dağıt'ı tıklayabilirsiniz. Uç noktanızın dağıtılması birkaç dakika sürer. İşlem tamamlandığında, işlemin yanında yeşil bir onay işareti görürsünüz:

Dağıtılan uç nokta

Yaklaşıyorsunuz. Artık dağıtılan modeliniz hakkında tahmin almaya hazırsınız.

8. Dağıtılmış modelimizle ilgili tahminler alma

Model tahminleri almak için birkaç seçenek vardır:

  • Vertex AI kullanıcı arayüzü
  • Vertex AI API'si

Her ikisini de burada göstereceğiz.

1. Adım: Kullanıcı arayüzünde model tahminlerini alın

Uç noktanızın gösterildiği model sayfanızda (son adımda kaldığımız yer), Modelinizi test edin bölümüne gidin:

Test modeli

Burada Vertex AI, modelimizin her bir özelliği için test tahmini almak üzere kullanabileceğimiz rastgele değerler seçmiştir. Dilerseniz bu değerleri değiştirebilirsiniz. Sayfanın en altına gidip Tahmin et'i seçin.

Sayfanın Tahmin sonucu bölümünde, modelinizin her sınıf için tahmin ettiği yüzdeyi görürsünüz. Örneğin, 0 sınıfı için 0.99 güven puanı, modelinizin bu örneğin sahtekarlık içerme olasılığının% 99 olduğunu düşündüğü anlamına gelir.

2. Adım: Vertex AI API ile model tahminleri alın

Kullanıcı arayüzü, dağıtılan uç noktanızın beklendiği gibi çalıştığından emin olmanın mükemmel bir yoludur ancak tahminleri REST API çağrısı üzerinden dinamik olarak almak isteyebilirsiniz. Size burada model tahminlerinin nasıl alınacağını göstermek için bu laboratuvarın başında oluşturduğunuz Vertex Workbench örneğini kullanacağız.

Daha sonra, oluşturduğunuz not defteri örneğini açın ve Başlatıcı'dan bir Python 3 not defterini açın:

Not defterini aç

Vertex SDK'sını yüklemek için not defterinizde bir hücrede aşağıdakileri çalıştırın:

!pip3 install google-cloud-aiplatform --upgrade --user

Ardından, SDK'yı içe aktarmak ve az önce dağıttığınız uç noktaya bir referans oluşturmak için not defterinize bir hücre ekleyin:

from google.cloud import aiplatform

endpoint = aiplatform.Endpoint(
    endpoint_name="projects/YOUR-PROJECT-NUMBER/locations/us-central1/endpoints/YOUR-ENDPOINT-ID"
)

Yukarıdaki endpoint_name dizesinde bulunan iki değeri proje numaranız ve uç noktanızla değiştirmeniz gerekir. Proje numaranızı proje kontrol panelinize gidip Proje Numarası değerini alarak bulabilirsiniz.

Uç nokta kimliğinizi, konsolun uç noktalar bölümünde bulabilirsiniz:

Uç nokta kimliğini bulma

Son olarak, aşağıdaki kodu yeni bir hücreye kopyalayıp çalıştırarak uç noktanız için tahminde bulunun:

test_instance={
    'Time': 80422,
    'Amount': 17.99,
    'V1': -0.24,
    'V2': -0.027,
    'V3': 0.064,
    'V4': -0.16,
    'V5': -0.152,
    'V6': -0.3,
    'V7': -0.03,
    'V8': -0.01,
    'V9': -0.13,
    'V10': -0.18,
    'V11': -0.16,
    'V12': 0.06,
    'V13': -0.11,
    'V14': 2.1,
    'V15': -0.07,
    'V16': -0.033,
    'V17': -0.14,
    'V18': -0.08,
    'V19': -0.062,
    'V20': -0.08,
    'V21': -0.06,
    'V22': -0.088,
    'V23': -0.03,
    'V24': 0.01,
    'V25': -0.04,
    'V26': -0.99,
    'V27': -0.13,
    'V28': 0.003
}

response = endpoint.predict([test_instance])

print('API response: ', response)

0 sınıfı için .67 civarında bir tahmin görürsünüz. Bu, modelin bu işlemin sahtekarlık içerme olasılığının% 67 olduğunu düşündüğü anlamına gelir.

🎉 Tebrikler! 🎉

Aşağıdakiler için Vertex AI'ı nasıl kullanacağınızı öğrendiniz:

  • Yönetilen veri kümesi yükleme
  • AutoML'i kullanarak tablo biçimindeki verilerde model eğitme ve değerlendirme
  • Modeli bir uç noktaya dağıtma
  • Vertex için SDK'yı kullanarak bir model uç noktasında tahminler alma

Vertex AI'ın farklı bölümleri hakkında daha fazla bilgi edinmek için belgelere göz atın.

9. Temizleme

Bu laboratuvarda oluşturduğunuz not defterini kullanmaya devam etmek istiyorsanız kullanmadığınızda kapatmanız önerilir. Cloud Console'unuzdaki Workbench kullanıcı arayüzünde not defterini, ardından Durdur'u seçin.

Not defterini tamamen silmek isterseniz sağ üstte bulunan Sil düğmesini tıklamanız yeterlidir.

Dağıttığınız uç noktayı silmek için Vertex AI konsolunuzun Uç noktalar bölümüne gidin ve modeli uç noktanızdan kaldırın:

Uç noktayı silin

Depolama paketini silmek için Cloud Console'daki Gezinme menüsünü kullanarak Depolama'ya gidin, paketinizi seçin ve Sil'i tıklayın:

Depolama alanını silme