آموزشگاه برنامه نویسی تحلیل داده
آموزشگاه برنامه نویسی تحلیل داده

جریان های کار (workflows) اتوماتیک در یادگیری ماشین

آموزش جریان های کار (workflows) اتوماتیک در یادگیری ماشین



مقدمه جریان های کار اتوماتیک



به منظور اجرا و تولید موفقیت آمیز نتایج، یک مدل یادگیری ماشین باید برخی از جریان های کار (workflows) استاندارد را خودکار کند. روند خودکار سازی این جریانات کار استاندارد با کمک خط لوله های (Pipelines)Scikit-learn امکان پذیر می شود. از دیدگاه یک محقق داده، خط لوله یک مفهوم کلی اما بسیار مهم است. به طور کلی این امکان را فراهم می کند تا جریان داده از قالب خام خود به اطلاعات مفید تبدیل شود. با توجه به شکل زیر نحوه عملکرد خط لوله را می توان فهمید.



جریان های کار (workflows) اتوماتیک در یادگیری ماشین

بخش های خط لوله ML به شرح زیر است:



بلع داده


دریافت داده (Data ingestion) : همانطور که از نام آن برداشت می شود، این مرحله، روند وارد کردن داده برای استفاده در پروژه ML است. می توان داده را به صورت آنی (real time) و بسته ای(batches) از یک یا چند سیستم استخراج کرد. این یکی از چالش بر انگیز ترین مراحل است زیرا کیفیت داده می تواند روی کل مدل ML تاثیر گذارد.



آماده سازی داده (Data Preparation) :


پس از وارد کردن داده، باید آن را برای استفاده در مدل ML آماده کنیم. پیش پردازش داده یکی از مهمترین روش ها برای آماده سازی داده است.



آموزش مدل ML (ML Model Training) :


مرحله بعد آموزش مدل ML است. ما الگوریتم های ML متنوعی مانند تحت نظارت(supervised)، بدون نظارت(unsupervised) و تقویتی(reinforcement) برای استخراج ویژگی ها از داده و انجام پیش بینی ها داریم.



ارزیابی مدل(Model Evaluation) :


سپس، باید مدل ML را ارزیابی کنیم. در صورت استفاده از خط لوله خودکار ML (AutoML) ، مدل ML را می توان با کمک متدهای آماری و قوانین کسب و کار متنوع ارزیابی کرد.



باز آموزی مدل ML (ML Model retraining) :


در صورت استفاده از خط لوله خودکار ML (AutoML) ، لزومی ندارد که اولین مدل، بهترین باشد. اولین مدل به عنوان مدل baseline در نظر گرفته می شود . و می توانیم با آموزش مکرر آن، دقت مدل را افزایش دهیم.



گسترش (Deployment) :


در انتها، باید مدل را گسترش دهیم. این مرحله شامل استفاده و انتقال مدل به عملیات کسب و کار برای استفاده از آنها است.



چالش های همراه با خط لوله ML :



برای ساخت خطوط لوله ML ، محققین داده با چالش های بسیاری مواجه هستند. این چالش ها در سه دسته زیر قرار می گیرند.



کیفیت داده:


موفقیت هر مدل ML به شدت به کیفیت داده بستگی دارد. اگر داده ای که برای مدل ML فراهم می کنیم دقیق، قابل اطمینان و قدرتمند نباشد، در انتها به خروجی اشتباه یا گمراه کننده خواهیم رسید.



قابلیت اطمینان داده (data reliability):


چالشی دیگر در رابطه با خطوط لوله ML قابلیت اطمینان داده ای است که برای مدل ML فراهم می کنیم. همانطور که می دانیم، منابع متنوعی وجود دارد که محققین داده از طریق آنها می توانند داده را به دست آورند، اما برای به دست آوردن بهترین نتیجه، باید مطمئن بود که منابع داده قابل اطمینان و مورد اعتماد هستند.



دسترسی به داده:


برای به دست آوردن بهترین نتایج از خط لوله ML ، خود داده باید قابل دسترس باشد که به تلفیق(consolidation)، پاکسازی و نظارت(curation) بر داده احتیاج دارد. در نتیجه ی خصیصه دسترسی به داده، فرا داده (metadata) با تگ(tags) های جدید به روز رسانی می شود.




مدل سازی خط لوله ML و آماده سازی داده:‌


نشت داده که از مجموعه داده آموزشی به مجموعه داده تست رخ می دهد، مساله مهمی است که محققین داده در زمان آماده سازی داده برای مدل ML با آن مواجه هستند. به طور کلی، در زمان آماده سازی داده، یک محقق داده از روش هایی مانند استاندارد سازی یا نرمال سازی کل مجموعه داده قبل از آموزش استفاده می کند. اما این روش ها نمی توانند در زمینه نشت داده کمکی به ما کنند زیرا مجموعه داده آموزشی تحت تاثیر مقیاس داده در مجموعه داده تست خواهد بود.


با استفاده از خطوط لوله ML، می توانیم از نشت داده جلوگیری کنیم، زیرا خطوط لوله اطمینان می دهند که آماده سازی داده مانند استاندارد سازی، به هر دسته(fold) از روند اعتبار سنجی متقابل ما محدود است.



مثال: ‌


مثالی در پایتون که آماده سازی داده و روند کار ارزیابی مدل را نشان می دهد، در ادامه قرار دارد. به این منظور، از مجموعه داده Pima Indian Diabetes ،از Sklearn استفاده میکنیم. ابتدا، خط لوله ای که داده را استاندارد سازی میکند می سازیم. سپس، یک مدل تحلیل کننده متمایز کننده خطی(Linear Discriminative analysis) ساخته می شود. و در انتها خط لوله با استفاده از اعتبار سنجی متقابل 10 دسته ای (10-fold) ارزیابی خواهد شد.


ابتدا بسته های مورد نیاز را به صورت زیر وارد کنید.




                        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
                        
                      
                        

                    


حال، مجموعه داده Pima diabetes را مشابه مثال های پیشین بار گیری کنید.



                        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
                        
                        
                          
  
                      


سپس، با کمک کد زیر یک خط لوله می سازیم.



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


در انتها، این خط لوله و دقت خروجی آن را به صورت زیر ارزیابی می کنیم.



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


خروجی: ‌



                                0.7790148448043184
        
                            


خروجی فوق خلاصه ای از دقت و صحت تنظیمات روی مجموعه داده است.




مدل سازی خط لوله ML و استخراج ویژگی:



نشت داده می تواند در مرحله استخراج ویژگی از مدل ML نیز رخ دهد. به همین دلیل است که روند استخراج ویژگی نیز باید محدود باشد تا نشت داده را در مجموعه داده آموزشی متوقف کند. در زمان آماده سازی داده، با استفاده از خطوط لوله ML، می توانیم از این نشت داده جلوگیری کنیم. ابزاری به نام FeatureUnion که توسط خطوط لوله ML ارائه شده است، می تواند برای این هدف مورد استفاده قرار گیرد.



مثال: ‌


مثال زیر در پایتون، روند استخراج ویژگی و ارزیابی مدل را نمایش می دهد. به این منظور از مجموعه داده Pima Indian Diabetes از Sklearn استفاده می کنیم.


ابتدا، به وسیله PCA (Principal Component Analysis) سه ویژگی استخراج می شود. سپس، 6 ویژگی با استفاده از تحلیل آماری استخراج می شود. پس از استخراج ویژگی، به وسیله ابزار FeatureUnion ، نتایج چندین روند از انتخاب و استخراج ویژگی ترکیب می شود. در انتها، یک مدل رگرسیون لجستیک ساخته خواهد شد و خط لوله با استفاده از اعتبار سنجی متقابل با 10 بسته ارزیابی خواهد شد.


ابتدا، بسته های مورد نیاز را به صورت زیر وارد کنید.



                                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
                                
          
                              


حال، باید مجموعه داده Pima diabetes را مشابه مثال های پیشین بارگیری کنیم.



                                    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
                                    
            
                                


سپس، feature union به صورت زیر ساخته می شود.



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


سپس، با کمک کد زیر، خط لوله ساخته خواهد شد.



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


در انتها، این خط لوله و دقت خروجی آن را به صورت زیر ارزیابی می کنیم.




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


خروجی: ‌



                                            0.7789811066126855
                    
                                        


خروجی فوق خلاصه ای از صحت تنظیمات مجموعه داده است.


  • 55
  •    68
  • تاریخ ارسال :   1399/07/24

دانلود PDF دانشجویان گرامی اگر این مطلب برای شما مفید بود لطفا ما را در GooglePlus محبوب کنید
رمز عبور: tahlildadeh.com یا www.tahlildadeh.com
ارسال دیدگاه نظرات کاربران
شماره موبایل دیدگاه
عنوان پست الکترونیک

ارسال

آموزشگاه برنامه نویسی تحلیل داده
آموزشگاه برنامه نویسی تحلیل داده

تمامی حقوق این سایت متعلق به آموزشگاه تحلیل داده می باشد .