Makine Öğrenimi - Otomatik İş Akışları

Giriş

Sonuçları başarıyla yürütmek ve üretmek için, bir makine öğrenimi modelinin bazı standart iş akışlarını otomatikleştirmesi gerekir. Bu standart iş akışlarını otomatikleştirme süreci, Scikit-learn Pipelines yardımıyla yapılabilir. Bir veri bilimcinin bakış açısından, boru hattı genelleştirilmiş ancak çok önemli bir kavramdır. Temel olarak, ham formatından bazı yararlı bilgilere veri akışına izin verir. Boru hatlarının çalışması aşağıdaki şema yardımıyla anlaşılabilir -

ML boru hatlarının blokları aşağıdaki gibidir -

Data ingestion- Adından da anlaşılacağı gibi, ML projesinde kullanılmak üzere verilerin içe aktarılması işlemidir. Veriler, gerçek zamanlı olarak veya tekli veya çoklu sistemlerden gruplar halinde çıkarılabilir. Veri kalitesi tüm makine öğrenimi modelini etkileyebileceğinden, bu en zorlu adımlardan biridir.

Data Preparation- Verileri içe aktardıktan sonra ML modelimiz için kullanılacak verileri hazırlamamız gerekiyor. Veri ön işleme, veri hazırlamanın en önemli tekniklerinden biridir.

ML Model Training- Sonraki adım makine öğrenimi modelimizi eğitmektir. Verilerden özellikleri çıkarmak ve tahminlerde bulunmak için denetimli, denetimsiz, güçlendirme gibi çeşitli ML algoritmalarımız var.

Model Evaluation- Ardından, ML modelini değerlendirmemiz gerekiyor. AutoML ardışık düzeni olması durumunda, ML modeli çeşitli istatistiksel yöntemler ve iş kuralları yardımıyla değerlendirilebilir.

ML Model retraining- AutoML ardışık düzeni durumunda, ilk modelin en iyisi olması gerekli değildir. İlk model bir temel model olarak kabul edilir ve modelin doğruluğunu artırmak için onu tekrar tekrar eğitebiliriz.

Deployment- Sonunda modeli yerleştirmemiz gerekiyor. Bu adım, modelin kullanımları için iş operasyonlarına uygulanmasını ve taşınmasını içerir.

ML Boru Hatlarına Eşlik Eden Zorluklar

ML ardışık düzenleri oluşturmak için, veri bilimcileri birçok zorlukla karşı karşıyadır. Bu zorluklar aşağıdaki üç kategoriye ayrılır:

Veri Kalitesi

Herhangi bir makine öğrenimi modelinin başarısı, büyük ölçüde verilerin kalitesine bağlıdır. Makine öğrenimi modeline sağladığımız veriler doğru, güvenilir ve sağlam değilse, o zaman yanlış veya yanıltıcı çıktılarla sonuçlanacağız.

Veri Güvenilirliği

Makine öğrenimi ardışık düzenleriyle ilişkili bir diğer zorluk, makine öğrenimi modeline sağladığımız verilerin güvenilirliğidir. Bildiğimiz gibi, veri bilimcilerinin veri alabileceği çeşitli kaynaklar olabilir, ancak en iyi sonuçları elde etmek için veri kaynaklarının güvenilir ve güvenilir olduğundan emin olunmalıdır.

Veri Erişilebilirliği

Makine öğrenimi ardışık düzenlerinden en iyi sonuçları elde etmek için verilerin kendisinin erişilebilir olması gerekir; bu da verilerin birleştirilmesini, temizlenmesini ve iyileştirilmesini gerektirir. Veri erişilebilirliği özelliğinin bir sonucu olarak, meta veriler yeni etiketlerle güncellenecektir.

ML Pipeline Modelleme ve Veri Hazırlama

Eğitim veri setinden test veri setine kadar gerçekleşen veri sızıntısı, veri bilimcilerinin ML modeli için veri hazırlarken uğraşması gereken önemli bir konudur. Genel olarak, veri hazırlama sırasında, veri bilimcisi öğrenmeden önce tüm veri kümesinde standartlaştırma veya normalleştirme gibi teknikleri kullanır. Ancak bu teknikler, veri sızıntısından bize yardımcı olamaz çünkü eğitim veri kümesi, test veri kümesindeki verilerin ölçeğinden etkilenirdi.

ML ardışık düzenlerini kullanarak, bu veri sızıntısını önleyebiliriz çünkü ardışık düzenler, standardizasyon gibi veri hazırlığının çapraz doğrulama prosedürünün her katıyla sınırlandırılmasını sağlar.

Misal

Aşağıda veri hazırlığı ve model değerlendirme iş akışını gösteren bir Python örneği verilmiştir. Bu amaçla, Sklearn'dan Pima Indian Diabetes veri setini kullanıyoruz. İlk olarak, verileri standartlaştıran bir boru hattı oluşturacağız. Daha sonra bir Doğrusal Ayrımcı analiz modeli oluşturulacak ve sonunda boru hattı 10 kat çapraz doğrulama kullanılarak değerlendirilecektir.

İlk olarak, gerekli paketleri aşağıdaki şekilde içe aktarın -

from pandas import read_csv
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis

Şimdi, önceki örneklerde olduğu gibi Pima diyabet veri setini yüklememiz gerekiyor -

path = r"C:\pima-indians-diabetes.csv"
headernames = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(path, names=headernames)
array = data.values

Ardından, aşağıdaki kodun yardımıyla bir boru hattı oluşturacağız -

estimators = []
estimators.append(('standardize', StandardScaler()))
estimators.append(('lda', LinearDiscriminantAnalysis()))
model = Pipeline(estimators)

Sonunda, bu boru hattını değerlendireceğiz ve doğruluğunu aşağıdaki gibi vereceğiz -

kfold = KFold(n_splits=20, random_state=7)
results = cross_val_score(model, X, Y, cv=kfold)
print(results.mean())

Çıktı

0.7790148448043184

Yukarıdaki çıktı, veri kümesindeki kurulumun doğruluğunun özetidir.

ML Ardışık Düzeni ve Özellik Çıkarımını Modelleme

Makine öğrenimi modelinin özellik çıkarma aşamasında da veri sızıntısı meydana gelebilir. Bu nedenle, eğitim veri setimizdeki veri sızıntısını durdurmak için özellik çıkarma prosedürleri de sınırlandırılmalıdır. Veri hazırlamada olduğu gibi ML boru hatları kullanarak bu veri sızıntısını da önleyebiliriz. Bu amaçla ML ardışık düzenleri tarafından sağlanan bir araç olan FeatureUnion kullanılabilir.

Misal

Aşağıda, özellik çıkarma ve model değerlendirme iş akışını gösteren bir Python örneği verilmiştir. Bu amaçla, Sklearn'dan Pima Indian Diabetes veri setini kullanıyoruz.

İlk olarak, 3 özellik PCA (Temel Bileşen Analizi) ile çıkarılacaktır. Ardından, İstatistiksel Analiz ile 6 özellik çıkarılacaktır. Özellik çıkarıldıktan sonra, birden fazla özellik seçimi ve çıkarma prosedürlerinin sonucu kullanılarak birleştirilecektir

FeatureUnion aracı. Sonunda, bir Lojistik Regresyon modeli oluşturulacak ve boru hattı 10 kat çapraz doğrulama kullanılarak değerlendirilecektir.

İlk olarak, gerekli paketleri aşağıdaki şekilde içe aktarın -

from pandas import read_csv
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
from sklearn.pipeline import Pipeline
from sklearn.pipeline import FeatureUnion
from sklearn.linear_model import LogisticRegression
from sklearn.decomposition import PCA
from sklearn.feature_selection import SelectKBest

Şimdi, önceki örneklerde olduğu gibi Pima diyabet veri setini yüklememiz gerekiyor -

path = r"C:\pima-indians-diabetes.csv"
headernames = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(path, names=headernames)
array = data.values

Ardından, özellik birliği aşağıdaki gibi oluşturulacaktır -

features = []
features.append(('pca', PCA(n_components=3)))
features.append(('select_best', SelectKBest(k=6)))
feature_union = FeatureUnion(features)

Ardından, ardışık düzen, aşağıdaki betik satırlarının yardımıyla oluşturulacak -

estimators = []
estimators.append(('feature_union', feature_union))
estimators.append(('logistic', LogisticRegression()))
model = Pipeline(estimators)

Sonunda, bu boru hattını değerlendireceğiz ve doğruluğunu aşağıdaki gibi vereceğiz -

kfold = KFold(n_splits=20, random_state=7)
results = cross_val_score(model, X, Y, cv=kfold)
print(results.mean())

Çıktı

0.7789811066126855

Yukarıdaki çıktı, veri kümesindeki kurulumun doğruluğunun özetidir.