Abstract
Software fault and effort prediction are important tasks to minimize costs of a software project. In software effort prediction the aim is to forecast the effort needed to complete a software project, whereas software fault prediction tries to identify fault-prone modules. In this research both tasks are considered, thereby using different data mining techniques. The predictive models not only need to be accurate but also comprehensible, demanding that the user can understand the motivation behind the model's prediction. Unfortunately, to obtain predictive performance, comprehensibility is often sacrificed and vice versa. To overcome this problem, we extract trees from well performing Random Forests (RFs) and Support Vector Machines for regression (SVRs) making use of a rule extraction algorithm ALPA. This method builds trees (using C4.5 and REPTree) that mimic the black-box model (RF, SVR) as closely as possible. The proposed methodology is applied to publicly available datasets, complemented with new datasets that we have put together based on the Android repository. Surprisingly, the trees extracted from the black-box models by ALPA are not only comprehensible and explain how the black-box model makes (most of) its predictions, but are also more accurate than the trees obtained by working directly on the data
چکیده
پیشبینی تلاش و نقص نرم افزار یک فعالیت مهم برای کاهش هزینه های یک پروژه نرم افزاری است. هدف پیشبینی تلاش نرم افزار، پیش بینی تلاش لازم برای انجام یک پروژه نرم افزاری است، اما هدف از پیشبینی نقص نرم افزار، تشخیص ماژول های در معرض خطا است. ما در این تحقیق هر دو موضوع را مد نظر قرار داده، و برای آن از روش های مختلف داده کاوی استفاده میکنیم. مدلهای پیشبینی علاوه بر دقیق بودن باید قابل درک نیز باشند، یعنی کاربر باید بتواند انگیزه پیشبینی مدل را درک کند. متاسفانه قابل درک بودن معمولاً قربانی کارایی میشود و بالعکس. ما برای رفع این مشکل از جنگل های تصادفی (RFها) و ماشینهای بردار پشتیبان رگرسیون (SVRها) که از الگوریتم استخراج قانون ALPA استفاده میکنند، درخت هایی را استخراج میکنیم. این روش درخت هایی میسازد (با استفاده از C4.5 و REPTree) که تا حد امکان از مدل جعبه-سیاه (SVR، RF) تقلید میکنند. روش ارائه شده روی مجموعه داده های عمومی و یک سری مجموعه داده جدید که ما از منبع اندروید به آنها افزوده ایم، به کار گرفته شده است. جای شگفتی است که درختانی که با ALPA از مدل های جعبه-سیاه استخراج شده اند، نه تنها قابل درک هستند و توضیح میدهند که مدل جعبه-سیاه چگونه (بیشترِ) پیشبینیهای خود را انجام میدهد، بلکه دقیقتر از درختانی هستند که مستقیماً از داده ها به دست آمدهاند.
1-مقدمه
طبق اطلاعاتِ شرکت تحقیقات و مشاوره فناوری اطلاعاتِ گارتنر، بازار جهانی توسعه نرم افزار در سال 2010، 244 میلیارد دلار ارزش داشته است که اهمیت این حوزه را نشان میدهد [1]. هنوز هم صنعت نرم افزار از افزایش مکرر هزینه رنج میبرد [2، 3، 6]. پیامد این موضوع، مشکلات جدی برای شرکت های نرم افزاری است و حتی گاهی موجودیت آنها را به خطر میاندازد [5]. بنابراین، یک شرکت نرم افزاری باید هزینه ها را تا حد امکان کاهش دهد. برای اینکار، فعالیت هایی مانند برآورد تلاش نرم افزاری و پیشبینی خطای نرم افزار ضروری است، که موضوع این مقاله نیز هست...