يقدم REaLTabFormer (البيانات العلائقية والجدولية الواقعية باستخدام المحولات) إطارًا موحدًا لتجميع البيانات الجدولية من أنواع مختلفة. يتم استخدام نموذج التسلسل إلى التسلسل (Seq2Seq) لإنشاء مجموعات بيانات علائقية تركيبية. يستخدم نموذج REaLTabFormer للبيانات الجدولية غير العلائقية GPT-2، ويمكن استخدامه خارج الصندوق لنمذجة أي بيانات جدولية بملاحظات مستقلة.
REaLTabFormer: توليد بيانات علائقية وجدولية واقعية باستخدام المحولات
ورقة على ArXiv
يتوفر REaLTabFormer على PyPi ويمكن تثبيته بسهولة باستخدام النقطة (إصدار Python >= 3.7):
نقطة تثبيت Realtabformer
نعرض أمثلة على استخدام REaLTabFormer لنمذجة وتوليد البيانات الاصطناعية من نموذج مدرب.
ملحوظة
يطبق النموذج معيار التوقف الأمثل بناءً على توزيع البيانات الاصطناعية عند تدريب نموذج جدولي غير علائقي. سيتوقف النموذج عن التدريب عندما يقترب توزيع البيانات الاصطناعية من التوزيع الحقيقي للبيانات.
تأكد من ضبط معلمة epochs
على عدد كبير للسماح للنموذج بملاءمة البيانات بشكل أفضل. سيتوقف النموذج عن التدريب عند استيفاء معيار التوقف الأمثل.
# pip install realtabformerimport pandas as pdfrom realtabformer import REaLTabFormerdf = pd.read_csv("foo.csv")# ملاحظة: قم بإزالة أي معرفات فريدة في # البيانات التي لا تريد أن يتم تصميمها على غرار.# الجدول غير العلائقي أو الأصل. rtf_model = REaLTabFormer(model_type="tabular",gradient_accumulation_steps=4,logging_steps=100)# احتواء النموذج في مجموعة البيانات.# يمكن تمرير المعلمات الإضافية إلى طريقة `.fit`.rtf_model.fit(df)# احفظ النموذج في الدليل الحالي.# سيتم إنشاء دليل جديد `rtf_model/`.# فيه، سيتم إنشاء دليل بمعرف تجربة النموذج `idXXXX` سيتم أيضًا إنشاء # حيث سيتم تخزين المصنوعات اليدوية للنموذج.rtf_model.save("rtf_model/")# إنشاء بيانات تركيبية بنفس عدد الملاحظات مثل مجموعة البيانات الحقيقية.samples = rtf_model.sample(n_samples=len(df ))# قم بتحميل النموذج المحفوظ. يجب توفير دليل التجربة #.rtf_model2 = REaLTabFormer.load_from_dir(path="rtf_model/idXXXX")
# pip install realtabformerimport osimport pandas as pdfrom pathlib import Pathfrom realtabformer import REaLTabFormerparent_df = pd.read_csv("foo.csv")child_df = pd.read_csv("bar.csv")join_on = "unique_id"# تأكد من أن أعمدة المفاتيح في كل من الجدول # الأصلي والجدول الفرعي لهما نفس الاسم.تأكيد ((join_on inparent_df.columns) and(join_on in Child_df.columns))# الجدول غير العلائقي أو الأصل. لا تقم بتضمين # Unique_id field.parent_model = REaLTabFormer(model_type="tabular")parent_model.fit(parent_df.drop(join_on, axis=1))pdir = Path("rtf_parent/")parent_model.save(pdir)# # احصل على أحدث نموذج أصلي محفوظ،# # أو حدد نموذجًا محفوظًا آخر.#parent_model_path = pdir / "idXXX"parent_model_path = sorted([p for p in pdir.glob("id*") if p.is_dir()],key=os.path.getmtime)[-1]child_model = REaLTabFormer(model_type = "relational"،parent_realtabformer_path=parent_model_path،output_max_length=None،train_size=0.8)child_model.fit(df=child_df,in_df=parent_df,join_on=join_on)# إنشاء عينات الأصل.parent_samples =parent_model.sample(len(parend_df ))# قم بإنشاء المعرفات الفريدة بناءً على Index.parent_samples.index.name = join_onparent_samples =parent_samples.reset_index()# إنشاء الملاحظات العلائقية.child_samples = Child_model.sample(input_unique_ids=parent_samples[join_on],input_df=parent_samples.drop(join_on, axis=1),gen_batch=64 )
يوفر إطار عمل REaLTabFormer واجهة لإنشاء أدوات التحقق من صحة المراقبة بسهولة لتصفية العينات الاصطناعية غير الصالحة. نعرض مثالاً لاستخدام GeoValidator
أدناه. يوضح الرسم البياني الموجود على اليسار توزيع خطوط الطول والعرض التي تم إنشاؤها دون التحقق من الصحة. يُظهر الرسم البياني الموجود على اليمين العينات الاصطناعية مع الملاحظات التي تم التحقق من صحتها باستخدام GeoValidator
مع حدود كاليفورنيا. ومع ذلك، حتى عندما لم ندرب النموذج على النحو الأمثل لتوليد ذلك، فإن العينات غير الصالحة (التي تقع خارج الحدود) نادرة من البيانات التي تم إنشاؤها بدون أداة التحقق.
# !pip install Geopandas &> /dev/null# !pip install realtabformer &> /dev/null# !git clone https://github.com/joncutrer/geopandas-tutorial.git &> /dev/nullimport Geopandasimport seaborn as snsimport matplotlib.pyplot as pltfrom realtabformer import REaLTabFormerfrom realtabformer import rtf_validators كـ rtf_valfrom Shapely.geometry import Polygon, LineString, Point, MultiPolygonfrom sklearn.datasets import fetch_california_housingdefplot_sf(data, Samples, title=None):xlims = (-126, -113.5)ylims = (31, 43)bins = (50) , 50)dd = Samples.copy()pp = dd.loc[dd["خط الطول"].between(data["Longitude"].min(), data["Longitude"].max()) &dd["Latitude"].between(data["Latitude" .min()، البيانات["Latitude"].max()) ]g = sns.JointGrid(data=pp, x='Longitude', y=Latitude', هامش_ticks=True)g.plot_joint(sns.histplot,bins=bins, )states[states['NAME'] == 'California'].boundary.plot(ax=g.ax_joint)g.ax_joint.set_xlim(*xlims)g.ax_joint.set_ylim(*ylims)g.plot_marginals(sns. histplot، element = "step"، color = "#03012d""if title:g.ax_joint.set_title(title)plt.tight_layout()# الحصول على الملفات الجغرافيةstates = Geopandas.read_file('geopandas-tutorial/data/usa-states-census-2014.shp')states =states.to_crs("EPSG" :4326") # GPS Projection# احصل على مجموعة بيانات الإسكان في كاليفورنيا = fetch_california_housing(as_frame=True).frame# نقوم بإنشاء نموذج بعهود صغيرة للعرض التوضيحي، الافتراضي هو 200.rtf_model = REaLTabFormer(model_type="tabular",batch_size=64,epochs=10,gradient_accumulation_steps=4,logging_steps=100) # تناسب النموذج المحدد. نقوم أيضًا بتقليل num_bootstrap، الافتراضي هو 500.rtf_model.fit(data, num_bootstrap=10)# احفظ النموذج المُدربrtf_model.save("rtf_model/")# عينة من البيانات الأولية بدون validatorsamples_raw = rtf_model.sample(n_samples=10240, gen_batch= 512)# بيانات عينة مع الجغرافية validatorobs_validator = rtf_val.ObservationValidator()obs_validator.add_validator("geo_validator",rtf_val.GeoValidator(MultiPolygon(states[states['NAME'] == 'California'].geometry[0]))), ("خط الطول"، "خط العرض") )samples_validated = rtf_model.sample(n_samples=10240, gen_batch=512,validator=obs_validator, )# تصور العيناتplot_sf(data, Samples_raw, title="Raw Samples")plot_sf(data, Samples_validated, title="Validated Samples")
يرجى ذكر عملنا إذا كنت تستخدم REaLTabFormer في مشاريعك أو أبحاثك.
@article{solatorio2023realtabformer, title={REALTabFormer: إنشاء بيانات علائقية وجدولية واقعية باستخدام المحولات}، المؤلف={Solatorio, Aivin V. and Dupriez, Olivier}, Journal={arXiv preprint arXiv:2302.02041}, year={2023}}
نشكر مركز البيانات المشترك بين البنك الدولي ومفوضية الأمم المتحدة لشؤون اللاجئين بشأن النزوح القسري (JDC) لتمويل مشروع "تعزيز الوصول المسؤول إلى البيانات الجزئية لتحسين السياسات والاستجابة في حالات النزوح القسري" (KP-P174174-GINP-TF0B5124). وقد ذهب جزء من الصندوق إلى دعم تطوير إطار عمل REaLTabFormer الذي تم استخدامه لتوليد المجموعة الاصطناعية للبحث في مخاطر الإفصاح وتأثير الفسيفساء.
نرسل أيضا ؟ إلى الوجه المعانق؟ لجميع البرامج مفتوحة المصدر التي يطلقونها. ولجميع المشاريع مفتوحة المصدر، شكرًا لك!