مقدمه ای بر cutpointr

ساخت وبلاگ

cutpointr یک بسته R برای محاسبه مرتب نقاط برش "بهینه" است. این روش از چندین روش برای محاسبه نقاط برش پشتیبانی می کند و شامل چندین معیار است که می توان آنها را با انتخاب نقطه برش به حداکثر یا حداقل رساند. برخی از این روش ها به گونه ای طراحی شده اند که قوی تر از بهینه سازی تجربی ساده یک متریک باشند. علاوه بر این، cutpointr می تواند به طور خودکار تغییرپذیری نقاط برش بهینه را راه اندازی کند و برآوردهای خارج از کیسه معیارهای عملکرد مختلف را برگرداند.

نصب و راه اندازی

می توانید cutpointr را از CRAN با استفاده از منوی RStudio یا به سادگی نصب کنید:

مثال

به عنوان مثال، نقطه برش بهینه برای مجموعه داده های گنجانده شده، هنگام به حداکثر رساندن مجموع حساسیت و ویژگی، 2 است.

هنگامی که بهینه بودن یک نقطه برش را در نظر می گیریم، فقط می توانیم بر اساس نمونه در دست قضاوت کنیم. بنابراین، نقطه برش تخمینی ممکن است در بین جمعیت یا داده های دیده نشده بهینه نباشد، به همین دلیل است که گاهی اوقات «بهینه» را در علامت نقل قول قرار می دهیم.

اگر جهت و/یا pos_class یا neg_class مشخص نشده باشد، cutpointr در مورد جهت وابستگی بین کلاس و x مفروضاتی ایجاد می کند. همان نتیجه فوق را می توان با تعریف دستی جهت و کلاس های مثبت / منفی که کمی سریعتر است به دست آورد، زیرا کلاس ها و جهت ها نیازی به تعیین ندارند:

opt_cut یک قاب داده است که داده های ورودی و منحنی ROC (و در صورت اختیاری نتایج بوت استرپ) را در یک تیبل تو در تو برمی گرداند. روش های خلاصه سازی و ترسیم داده ها و نتایج شامل می شوند (به عنوان مثال خلاصه، نمودار، plot_roc، plot_metric)

برای بررسی بهینه سازی، تابع مقادیر متریک در نقطه برش را می توان با استفاده از plot_metric ترسیم کرد، اگر از یک تابع بهینه سازی استفاده شده باشد که یک ستون متریک را در ستون roc_curve برمی گرداند. برای مثال، توابع maximize_metric و minimize_metric این کار را انجام می دهند:

پیش بینی داده های جدید را می توان با استفاده از پیش بینی انجام داد:

امکانات

  • محاسبه نقاط برش بهینه در وظایف طبقه بندی باینری
  • خروجی مرتب، به خوبی با عملکردهای tidyverse ادغام می شود
  • توابع برای رسم منحنی های ROC، توزیع های متریک و موارد دیگر
  • بوت استرپینگ برای شبیه سازی تغییرپذیری نقطه برش و برای به دست آوردن تخمین های خارج از کیسه معیارهای مختلف (به عنوان نوعی اعتبارسنجی داخلی) با موازی سازی اختیاری
  • چندین روش برای محاسبه نقاط برش
  • معیارهای چندگانه را می توان برای به حداکثر رساندن / به حداقل رساندن انتخاب کرد
  • Tidyeval

محاسبه نقاط برش

توابع روش برای تخمین نقطه برش

روشهای موجود برای محاسبه نقاط برش عبارتند از:

  • Maximatize_Metric: RFunction متریک را به حداکثر برسانید
  • minimize_metric: عملکرد متریک را به حداقل برسانید
  • maximize_loess_metric: عملکرد متریک را بعد از صاف کردن LOESS به حداکثر برسانید
  • minimize_loess_metric: عملکرد متریک را بعد از صاف کردن LOESS به حداقل برسانید
  • maximize_spline_metric: عملکرد متریک را بعد از صاف کردن spline به حداکثر برسانید
  • minimize_spline_metric: عملکرد متریک را بعد از صاف کردن spline به حداقل برسانید
  • maximize_gam_metric: عملکرد متریک را پس از هموار سازی از طریق مدلهای افزودنی عمومی حداکثر کنید
  • minimize_gam_metric: عملکرد متریک را پس از هموار سازی از طریق مدلهای افزودنی عمومی به حداقل برسانید
  • maximize_boot_metric: bootstrap نقطه برش بهینه هنگام به حداکثر رساندن یک متریک
  • minimize_boot_metric: bootstrap نقطه برش بهینه هنگام به حداقل رساندن یک متریک
  • oc_manual: مقدار برش را به صورت دستی مشخص کنید
  • OC_MEAN: از میانگین نمونه به عنوان نقطه برش "بهینه" استفاده کنید
  • OC_MEDIAN: از نمونه نمونه به عنوان نقطه برش "بهینه" استفاده کنید
  • OC_YOUDEN_KERNEL: youden-index را بعد از صاف کردن هسته توزیع توزیع دو کلاس به حداکثر برسانید
  • OC_YOUDEN_NORMAL: حداکثر شاخص Youden را به طور پارامتری با فرض داده های توزیع شده عادی در هر دو کلاس به حداکثر برسانید

توابع متریک

معیارهای موجود که باید با استفاده از روشهای به حداقل رساندن و به حداکثر رساندن مورد استفاده قرار گیرند:

  • دقت: کسری به درستی طبقه بندی شده است
  • ABS_D_SENS_SPEC: تفاوت مطلق حساسیت و ویژگی
  • ABS_D_PPV_NPV: تفاوت مطلق بین ارزش پیش بینی مثبت (PPV) و مقدار پیش بینی منفی (NPV)
  • ROC01: فاصله تا نقطه (0،1) در فضای ROC
  • Cohens_kappa: Kappa کوهن
  • sum_sens_spec: حساسیت + ویژگی
  • sum_ppv_npv: مجموع ارزش پیش بینی مثبت (PPV) و مقدار پیش بینی منفی (NPV)
  • prod_sens_spec: حساسیت * ویژگی
  • prod_ppv_npv: محصول ارزش پیش بینی مثبت (PPV) و مقدار پیش بینی منفی (NPV)
  • youden: youden- یا j-index = حساسیت + ویژگی- 1
  • Andocts_Ratio: (تشخیصی) نسبت شانس
  • Risk_ratio: نسبت ریسک (خطر نسبی)
  • p_chisquared: مقدار p یک تست مجذور کای روی ماتریس سردرگمی
  • cost_misclassification: مبلغ هزینه طبقه بندی نادرست مثبت کاذب و منفی های دروغین. آرگومان های اضافی: cost_fp ، cost_fn
  • Total_utility: کل ابزار مثبت / منفی / منفی. آرگومان های اضافی: Audility_tp ، uility_tn ، cost_fp ، cost_fn
  • F1_Score: F1-Score (2 * tp) / (2 * tp + fp + fn)
  • metric_constrain: با توجه به مقدار حداقل معیار انتخاب شده دیگر ، یک متریک انتخاب شده را به حداکثر برسانید
  • sens_constrain: با توجه به حداقل مقدار ویژگی ، حساسیت را به حداکثر برسانید
  • spec_constrain: با توجه به مقدار حداقل حساسیت ، ویژگی را به حداکثر برسانید
  • ACC_CONSTRAIN: با توجه به حداقل ارزش حساسیت ، دقت را به حداکثر برسانید

علاوه بر این ، توابع زیر شامل می شوند که می توانند به عنوان توابع متریک مورد استفاده قرار گیرند اما برای اهداف ترسیم مفیدتر هستند ، به عنوان مثال در PLOT_CUTPOINTR ، یا برای تعریف توابع متریک جدید: TP ، TN ، FN ، TPR ، FPR ، TNR ، FNR ،false_omission_rate ، false_discovery_rate ، ppv ، npv ، دقت ، فراخوان ، حساسیت و ویژگی.

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

زیر گروه ها و راه اندازی های جداگانه

نقاط برش را می توان به طور جداگانه در زیر گروه هایی که توسط یک متغیر سوم ، جنسیت در این مورد تعریف می شوند ، تخمین زد. علاوه بر این ، اگر boot_runs صفر بزرگتر باشد ، Cutpointr محاسبه معمول برش را در نمونه کامل ، مانند گذشته انجام می دهد ، و علاوه بر این در نمونه های بوت استرپ boot_runs. این راهی برای سنجش عملکرد خارج از نمونه روش تخمین برش ارائه می دهد. اگر یک زیر گروه داده شود ، بوت استراپ به طور جداگانه برای هر زیر گروه که در توطئه ها و خروجی ها نیز منعکس می شود ، انجام می شود.

شیء برگشتی دارای بوت ستون اضافی است که یک تابلوی تو در تو است که شامل نقاط برش در هر نمونه بوت استرپ به همراه متریک محاسبه شده با استفاده از عملکرد در متریک و معیارهای پیش فرض مختلف است. معیارها توسط _b پسوند برای نشان دادن نتایج در کیف یا _oob برای نشان دادن نتایج خارج از کیف نشان می دهند:

خلاصه و توطئه ها شامل عناصر اضافی هستند که نتایج بوت استرپ را خلاصه یا نمایش می دهند:

بوت استراپ موازی

با استفاده از foreach و dog ، بوت استرپ می تواند به راحتی موازی شود. از بسته Dog برای نمونه گیری Bootstrap قابل تکرار استفاده می شود.

ویژگی های اضافی

یافتن تمام نقاط برش با عملکرد قابل قبول

به طور پیش فرض ، اکثر بسته ها فقط "بهترین" را باز می گردانند و سایر نقاط برش را با عملکرد کاملاً مشابهی بی اعتنایی می کنند ، حتی اگر اختلاف عملکرد کوچک باشد. CUTPOINTR این فرایند را از طریق آرگومان tol_metric صریح تر می کند. به عنوان مثال ، اگر همه نقاط برش مورد علاقه باشند که حداقل در 0. 05 از دقت بهینه قابل دستیابی به یک دقت دست یابند ، TOL_METRIC را می توان 0. 05 تنظیم کرد و همچنین آن دسته از نقاط بازگردانده می شود.

در مورد داده های خودکشی و هنگام به حداکثر رساندن مجموع حساسیت و ویژگی، از نظر تجربی نقاط برش 2 و 3 منجر به عملکردهای کاملاً مشابهی می شوند. اگر tol_metric روی 0. 05 تنظیم شود، هر دو برگردانده می شوند.

نقاط برش دستی و میانگین / میانه

با استفاده از تابع oc_manual، نقطه برش بهینه بر اساس یک متریک تعیین نمی شود، بلکه به صورت دستی با استفاده از آرگومان نقطه برش تنظیم می شود. این برای تهیه و ارزیابی نقاط برش که در ادبیات یا سایر منابع خارجی یافت شده است مفید است.

تابع oc_manual همچنین می تواند برای تنظیم نقطه برش به میانگین نمونه با استفاده از cutpoint = mean(data$x) استفاده شود. با این حال، این ممکن است سوگیری را در روش اعتبار سنجی راه انداز ایجاد کند، زیرا میانگین واقعی جمعیت مشخص نیست و بنابراین میانگینی که باید به عنوان نقطه برش استفاده شود باید به طور خودکار در هر نمونه مجدد تعیین شود. برای این کار می توان از توابع oc_mean و oc_median استفاده کرد.

ارزیابی غیر استاندارد از طریق tidyeval

نیازی نیست که آرگومان های cutpointr در گیومه قرار بگیرند. این به لطف ارزیابی غیراستاندارد آرگومان هایی که بر اساس داده ها ارزیابی می شوند امکان پذیر است.

توابعی که از ارزیابی غیر استاندارد استفاده می کنند اغلب برای برنامه نویسی مناسب نیستند. استفاده از ارزیابی غیراستاندارد ممکن است به مشکلات محدوده و خطاهای آشکار و احتمالاً ظریف بعدی منجر شود. cutpointr به صورت داخلی از tidyeval استفاده می کند و بر این اساس همان قوانین برنامه نویسی با dplyr اعمال می شود. استدلال ها را می توان با !!:

نقاط میانی

So far - which is the default in cutpointr - we have considered all unique values of the predictor as possible cutpoints. An alteative could be to use a sequence of equidistant values instead, for example in the case of the suicide data all integers in ([0, 10]) . However, with very sparse data and small intervals between the candidate cutpoints (i.e. a ‘dense’ sequence like seq(0, 10, by = 0.01) ) this leads to the uninformative evaluation of large ranges of cutpoints that all result in the same metric value. A more elegant alteative, not only for the case of sparse data, that is supported by cutpointr is the use of a mean value of the optimal cutpoint and the next highest (if direction = ">=" ) یا پایین ترین بعدی (اگر جهت = "

این رفتار را می توان با تنظیم use_midpoints = TRUE که پیش فرض است فعال کرد. اگر از این تنظیم استفاده کنیم، در هنگام به حداکثر رساندن مجموع حساسیت و ویژگی، نقطه برش بهینه 1. 5 را برای نمونه کامل در داده های خودکشی به جای 2 بدست می آوریم.

مجموعه داده های کوچک زیر را فرض کنید:

Since the distance of the optimal cutpoint (8) to the next lowest observation (3) is rather large we arrive at a range of possible cutpoints that all maximize the metric. In the case of this kind of sparseness it might for example be desirable to classify a new observation with a predictor value of 4 as belonging to the negative class. If use_midpoints is set to TRUE , the mean of the optimal cutpoint and the next lowest observation is retued as the optimal cutpoint, if direction is>=میانگین نقطه برش بهینه و بالاترین مشاهده بعدی به عنوان نقطه برش بهینه برگردانده می شود، اگر جهت = "

A simulation demonstrates more clearly that setting use_midpoints = TRUE avoids biasing the cutpoints. To simulate the bias of the metric functions, the predictor values of both classes were drawn from normal distributions with constant standard deviations of 10, a constant mean of the negative class of 100 and higher mean values of the positive class that are selected in such a way that optimal Youden-Index values of 0.2, 0.4, 0.6, and 0.8 result in the population. Samples of 9 different sizes were drawn and the cutpoints that maximize the Youden-Index were estimated. The simulation was repeated 10000 times. As can be seen by the mean error, use_midpoints = TRUE eliminates the bias that is introduced by otherwise selecting the value of an observation as the optimal cutpoint. If direction = ">=" , همانطور که در این مورد، مشاهده ای که نشان دهنده نقطه برش بهینه است، بالاترین نقطه برش ممکن است که به مقدار متریک بهینه منتهی می شود و بنابراین بایاس ها مثبت هستند. روش های oc_youden_normal و oc_youden_keel همیشه بی طرف هستند، زیرا یک را انتخاب نمی کنند. نقطه برش بر اساس منحنی ROC یا تابع مقادیر متریک در هر نقطه برش.

نرم افزار مفید تریدر...
ما را در سایت نرم افزار مفید تریدر دنبال می کنید

برچسب : نویسنده : احمد شاملو بازدید : 49 تاريخ : چهارشنبه 23 فروردين 1402 ساعت: 14:43