- دوشنبه ۳۰ بهمن ۱۴۰۲
یادگیری ماشین در مراقبتهای قلبی
یادگیری ماشین در مراقبتهای قلبی
پیشبینی بیماریهای قلبی با استفاده از تکنیکهای یادگیری ماشین
مراقبت از قلب بسیار مهم است و الگوریتمهای دقیق پیشبینی برای به حداقل رساندن مرگومیر ضروری است. این مقاله دقت الگوریتمهای مختلف یادگیری ماشین را برای پیشبینی بیماری قلبی مقایسه میکند.
چکیده
قلب به عنوان یکی از اعضای حیاتی در موجودات زنده، نقش بسزایی در فعالیتهای بدن دارد. از آنجایی که اشتباهات کوچک در تشخیص و پیشبینی بیماریهای قلبی میتواند منجر به مشکلات جدی و مرگبار شود، در این زمینه اهمیت بیشتری به دقت و درستی تشخیص پزشکی داده میشود. در حال حاضر، موارد متعددی از بیماریهای قلبی وجود دارند و تعداد آنها روزانه در حال افزایش است. به منظور مقابله با این چالش به یک سیستم پیشبینی دقیق برای تشخیص بیماریهای قلبی نیاز است.
دپارتمان فناوری اطلاعات و ارتباطات
یادگیری ماشین به عنوان یک شاخه از هوش مصنوعی، بهطور گستردهای برای پیشبینی رویدادهای طبیعی و غیرطبیعی مورد استفاده قرار میگیرد. در این مقاله از الگوریتمهای یادگیری ماشین برای پیشبینی بیماریهای قلبی استفاده شده است که شامل موارد زیر هستند:
K-Nearest Neighbors, Decision Tree, Logistic Regression, Support Vector Machine (SVM), Random Forest
همچنین از مجموعه دیتاست UCI جهت آموزش و آزمایش استفاده شده است.
یک. یادگیری ماشین و بررسی بیماریهای قلبی
قلب حیاتیترین عضو بدن انسان و دارای اهمیت بسیاری است. در نتیجه مراقبت از قلب یکی از اولویتهای بهداشتی بسیار مهم است. اغلب بیماریهای مرتبط با سیستم قلبی و عروقی، جزئی از مشکلات پزشکی پیچیده و خطرناک به شمار میروند. بدین منظور پیشبینی و پیشگیری از بیماریهای قلبی یکی از راهکارهای اصلی بهداشتی است. با توجه به اینکه بسیاری از بیماریهای قلبی به دلیل دشواری تشخیص در مراحل اولیه شناسایی نمیشوند، نیاز به داشتن الگوریتمهای کارآمدتر و دقیقتر جهت پیشبینی و پیشگیری از بیماریهای قلبی، بیش از پیش محسوس است.
یادگیری ماشین یکی از روشهای کارآمد پیشبینی است و به تکنیکی اشاره دارد که بر مبنای آموزش و آزمایش ساخته شده است. این فناوری در حوزه هوش مصنوعی (AI) قرار دارد که یکی از حوزههای گسترده یادگیری است. در این حوزه ماشینها با تقلید از تواناییهای انسانی، قابلیت یادگیری و ارتقای عملکرد خود را به دست میآورند. سیستمهای یادگیری ماشین برای یادگیری، پردازش و استفاده از دادهها آموزش میبینند و برای نتیجهگیری بهتر از هر دو تکنولوژی یادگیری ماشین و هوش ماشین استفاده میشود.
در یادگیری ماشین، سیستمهای ماشینی با تجزیه و تحلیل دادهها، اطلاعات و الگوهایی را یاد میگیرند و این فرایند به وسیله الگوریتمهای آماری، ریاضی و یادگیری ماشین انجام میشود. در این مقاله پارامترهایی شامل فشار خون، کلسترول، سن، جنسیت و سایر عوامل مرتبط با سلامت قلبی و عروقی مورد استفاده قرار گرفتهاند. همچنین از الگوریتم یادگیری ماشین از جمله موارد زیر استفاده کردهایم و به مقایسه دقت و کارایی آنها پرداختهایم.
K-Nearest Neighbors, Decision Tree, Logistic Regression, Support Vector Machine (SVM), Random Forest
بخش اول این مقاله با معرفی یادگیری ماشین و بررسی بیماریهای قلبی آغاز میشود. در بخش دوم به معرفی مقالات پژوهشگران در حوزه یادگیری ماشین و بیماریهای قلبی میپردازیم. در این بخش به بررسی نتایج پژوهشهای گذشته و نیز پیشرفتهای اخیر در این زمینه اشاره میشود. بخش سوم به بررسی روش استفادهشده برای پیشبینی بیماریهای قلبی توسط سیستم یادگیری ماشین میپردازد. در این بخش راهکارهای استفادهشده برای پیشپردازش دادهها و نیز روش آموزش و آزمایش سیستم پیشبینی توضیح داده میشود. بخش چهارم به بررسی الگوریتمهای مورد استفاده در این پروژه میپردازد. در این بخش، الگوریتمهایی که در بالا اشاره کردیم بررسی میشوند. بخش پنجم نیز بهطور خلاصه، مجموعه دادههای جمعآوری شده و نتایج تحلیل آنها را با توجه به نتیجه پروژه شرح میدهد. و در نهایت، بخش ششم با جمعبندی و ارائه دیدگاهی مختصر در مورد آینده به این مقاله پایان میدهد.
دو. بررسی مقالات مرتبط با یادگیری ماشین
Heart Disease Prediction using Machine Learning Techniques (2020) Shah, D., Patel, S., & Bharti, S. K.
این مقاله به استفاده از دادهکاوی و یادگیری ماشین برای پیشبینی بیماری قلبی میپردازد. الگوریتمهای یادگیری تحت نظارت مختلفی بر روی دادههای پایگاه داده بیماران قلبی کلیولند مورد استفاده قرار گرفتهاند. این مطالعه نشان داد که الگوریتم همسایه K-nearest دقیقترین الگوریتم در پیشبینی احتمال ابتلا به بیماری قلبی است. این مقاله همچنین نشان میدهد که تحقیقات آینده میتواند تکنیکهای دادهکاوی بیشتری را برای افزایش دقت در پیشبینی اولیه بیماری قلبی به کار بگیرد.
Heart disease prediction using machine learning algorithms (2020) Jindal, H., Agrawal, S., Khera, R., Jain, R., & Nagrath, P.
این مقاله در مورد افزایش شیوع بیماریهای قلبی بحث میکند و بر اهمیت پیشبینی آنها از قبل تأکید دارد. نویسنده یک سیستم پیشبینی بیماری قلبی را توضیح میدهد که از الگوریتمهای یادگیری ماشین، بهویژه رگرسیون لجستیک و KNN، برای پیشبینی و طبقهبندی بیماران مبتلا به بیماری قلبی براساس سابقه پزشکی آنها استفاده میکند. در این مقاله مشخص شد که KNN مؤثرترین تکنیک با میزان دقت ۸۸.۵۲ درصد است.
Heart disease prediction using machine learning techniques a survey (2018) Ramalingam, V. V., Dandapath, A., & Raja, M. K.
این مقاله به بررسی استفاده از الگوریتمهای یادگیری ماشین برای تشخیص بیماریهای قلبی عروقی میپردازد که عامل اصلی مرگومیر در سراسر جهان است. این بررسی مدلهای مختلفی را شامل میشود که از آن جمله میتوان به Support Vector Machines, K-Nearest Neighbour, Naïve Bayes, Decision Trees, Random Forest و ensemble models اشاره کرد. در حالی که مدلهای یادگیری ماشین در برخی موارد نویدبخش بودهاند، تحقیقات بیشتر برای رسیدگی به دادههای ابعاد بالا و overfit ضروری است.
سه. فرایند پیشبینی توسط سیستم یادگیری ماشین
یک) جمعآوری دیتا
بهطور خاص، دیتاست کلیولند تنها دیتاستی است که تا به امروز توسط محققان یادگیری ماشین مورد استفاده قرار گرفته است. این دیتاست شامل ۷۶ feature است اما در تمام پژوهشهای منتشرشده، تنها از زیرمجموعهای از ۱۴ ویژگی استفاده شده است.
دو) تحلیل دیتا
ابتدا ۵ سطر اول را مشاهده میکنیم و برای همچنین درک بیشتر، دیتا را برای خودمان شرح میدهیم.
df.head( )
info = ["age" ,"1: male, 0: female" ,"chest pain type , 1: typical angina, 2: atypical angina, 3: non-anginal pain, 4: asymptomatic" ,"resting blood pressure" ," serum cholestoral in mg/dl" ,"fasting blood sugar > 120 mg/dl" ,"resting electrocardiographic results (values 0,1,2)" ," maximum heart rate achieved" ,"exercise induced angina" ,"oldpeak = ST depression induced by exercise relative to rest" ,"the slope of the peak exercise ST segment" ,"number of major vessels (0-3) colored by flourosopy" ,"thal: 3 = normal; 6 = fixed defect; 7 = reversable defect"]
for i in range ( len( info ) ):
df.columns[i] + ":ttt" + info[i]
سه) پیشپردازش دیتا
در یک دیتاست عادی نیاز به حذف مقادیر تکراری و نامشخص است، ولی در این دیتاست با توجه به بررسیهای انجامشده با استفاده از دستورهای describe,info متوجه میشویم نیازی به ایجاد تغییر وجود ندارد .
df.describe( )
df.info( )
چهار) پاکسازی دیتا
مقادیر خالی یا دادههای پرت را باید با روشهای خاص مثل حذف کردن یا صفر و میانگین و غیره پرکنیم که در اینجا به دلیل کامل بودن دیتاست نیازی به این کار نیست.
پنج) انتخاب featureها
با دستور value_counts تعداد دستههای ستون تارگت و فراوانی هرکدام را مشاهده میکنیم.
target_vc= df.target.value_counts( )
با استفاده از تابع corr میزان ارتباط ستونها با ستون تارگت را میسنجیم و برای مثال متوجه میشویم که ستون FBS ارتباط چندانی با تارگت ندارد.
df.corr( )["target"].abs( ).sort_values ( ascending=False )
شش) تحلیل اکتشافی دادهها
ابتدا با استفاده از نمودار Histogram میزان فراوانی هر ستون را مشاهده میکنیم.
df.hist()
ستون تارگت را در متغیر y و بقیه ستونها را به عنوان دیتای مستقل در متغیرx قرار میدهیم.
x=df.drop( 'target' , axis = 1 )
y=df['target']
سپس هر ستون را با ستون تارگت به وسیله کتابخانه Seaborn مقایسه میکنیم و میتوانیم جزئیاتی را از نمودارها استخراج کنیم، مانند:
- زنان بیشتر از مردان در معرض بیماری قلبی هستند.
sns.barplot ( df["sex"] , y )
- احتمال ابتلا به بیماری قلبی برای کسانی که جزو دسته ۱ هستند بیشتر از بقیه است.
sns.barplot( df["restecg"] , y )
- کسانی که ورزش میکنند کمتر در معرض مشکلات قلبی هستند.
sns.barplot( df["exang"] , y )
- کسانی که در آنها CA = ۴ است بیماری قلبی دارند.
sns.barplot (df ["ca"] ,y )
هفت) آمادهسازی نهایی داده
در این مرحله ابتدا دادهها را هم مقیاس (Scale) میکنیم. اهمیت هممقیاس کردن دادهها از آن جهت است که تقریباً تمام الگوریتمها در این حوزه بر مبنای محاسبات ریاضی شکل گرفته است. لذا حذف این شرط، باعث اشتباه در محاسبات، عملکرد الگوریتمها و پیشبینیها میشود.
x=minmax_scale( x ,feature_range= ( 0 ,1 ) )
در ادامه دادهها را به دو قسمت آموزش (train) و آزمایش (test) تقسیم میکنیم:
- مدل برای یادگیری به داده نیاز دارد، بهطوری که میتوان گفت: «کار مدل، استخراج و استفاده از علم موجود در دادهها است.»
- برای سنجش مدل نیاز به داده داریم، زیرا ممکن است مدل نتوانسته باشد بهخوبی اطلاعات موجود در دادهها را استخراج کند.
x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.37, random_state=0)
هشت) پیادهسازی مدلها
در این مرحله پنج مدل زیر را پیادهسازی کرده و هایپرپارامترهای هرکدام را با استفاده از GridSearchCV بهینهسازی میکنیم:
K-Nearest Neighbors, Decision Tree, Logistic Regression, Support Vector Machine (SVM), Random Forest
نه) GridSearchCV
بر طبق آموزش بهینهیابی، یکی از پایهایترین متدهای بهینهیابی گرید سرچ نام دارد. این متد بدون هیچ هوشمندی خاصی برای افزایش کارآیی، از قدرت محاسباتی محض برای رسیدن به جواب بهره میبرند. در روش گرید سرچ تمامی بکتستها اجرا شده و سپس رتبهبندی میشوند.
در الگوریتمهایی مثل (LR,KNN) نیازی به این متد نیست، زیرا به عنوان مثال در لاجستیک هایپرپارامتر حیاتی وجود ندارد یا در KNN مهمترین پارامترها تعداد همسایهها یا معیار فاصله است و نیازی به استفاده از این متد نیست.
ده) مقایسه نتایج
برای مقایسه دقت مدلها، معیارهای متفاوتی وجود دارد که یکی از بهترین آنها، «Accuracy» یا «دقت» نام دارد.
Accuracy = (TP+TN) / (TN+FN+TP+FP)
که در آن:
- نمونه عضو دسته مثبت باشد و عضو همین کلاس تشخیص داده شود (مثبت صحیح یا True Positive)
- نمونه عضو کلاس مثبت باشد و عضو کلاس منفی تشخیص داده شود (منفی کاذب یا False Negative)
- نمونه عضو کلاس منفی باشد و عضو همین کلاس تشخیص داده شود (منفی صحیح یا True Negative)
- نمونه عضو کلاس منفی باشد و عضو کلاس مثبت تشخیص داده شود (مثبت کاذب یا False Positive)
چهار. بررسی الگوریتمهای طبقهبندی
یک) Decision Tree (DT)
درخت تصمیم یک ابزار برای پشتیبانی از تصمیم است که از درختها برای مدل کردن استفاده میکند. درخت تصمیم بهطور معمول در تحقیقها و عملیات مختلف استفاده میشود و بهطور خاص در آنالیز تصمیم، برای مشخص کردن استراتژی که با بیشترین احتمال به هدف برسد، به کار میرود.
param_grid ={
, [2,5 10,20, ,30, :[50 ' max_depth '
, [10,5,2]: ' min_samples_split '
, [4,2,1]: ' min_samples_leaf '
}
dt = DecisionTreeClassifier ( )
grid_search = GridSearchCV ( dt , param_grid=param_grid, cv=5, n_jobs=-1 )
grid_search.fit ( x_train , y_train )
y_pred=knn.predict ( x_test )
دو) K-Nearest Neighbors (KNN)
الگوریتم KNN (نزدیکترین همسایه یا K-nearest neighbors) نوعی از الگوریتمهای یادگیری ماشین تحت نظارت است که غالباً در مسائل طبقهبندی پیشگویانه، در صنعت از آن استفاده میشود و از «تشابه ویژگی» برای پیشبینی مقادیر نقاط داده جدید استفاده میکند. این بدان معنی است که به نقطه داده جدید بر اساس میزان مطابقت آن با نقاط مجموعه آموزشی، یک مقدار تخصیص میدهد.
knn=KneighborsClassifier ( )
knn.fit (x_train , y_train )
y_pred=knn.predict ( x_test )
سه) (LR)Logistic Regression
رگرسیون لجستیک در مسئله طبقهبندی هنگامی استفاده میشود که باید یک کلاس را از کلاس دیگر تشخیص داد. این الگوریتم برای پیشبینی متغیر وابسته طبقهای، با استفاده از یک مجموعه دادهشده از متغیرهای مستقل مورد استفاده قرار میگیرد.
Lr = LogisticRegression ( )
lr.fit (x_train , y_train )
y_pred = lr.predict ( x_test )
چهار) (SVM) Support Vector Machine
«ماشین بردار پشتیبان» یک دستهبند یا طبقهبند است که با معیار قرار دادن بردارهای پشتیبان (نقاط انتخابشده از بین دادهها)، بهترین دستهبندی و تفکیک خطی بین دادهها را برای ما مشخص میکند. ماشین بردار پشتیبان بهطور قطع یک طبقهبند بسیار قوی برای تفکیک دادههای پیچیده است.
param_grid = {
'C' : [ 0.1 , 1 , 10 , 100 ],
'kernel': [ 'linear' , 'poly' , 'rbf' ],
, [3 ,4 , 2] :' degree '
] } 'gamma' : [ 0.01 , 0.1 , 1 , ' scale ' , ' auto'
svm = SVC ( )
grid_search = GridSearchCV ( svm , param_grid , cv=5 , n_jobs=-1 )
grid_search.fit ( x_train , y_train )
svm = SVC ( C = C , degree = degree , gamma = gamma , kernel = kernel)
svm.fit ( x_train , y_train )
پنج) Random Forest(RF)
از تعداد زیادی درخت تصمیم تشکیل شده است که به عنوان یک مجموعه فعالیت میکنند. هر درخت جداگانه در جنگل تصادفی یک پیشبینی را انجام میدهد و کلاس با بیشترین آرا پیشبینی مدل ما میشود.
max_accuracy = 0
for x in range (2000):
rf = RandomForestClassifier ( random_state=x )
rf.fit ( x_train , y_train )
y_pred = rf.predict ( x_test )
current_accuracy = round ( accuracy_score ( y_pred ,y_test )*100 ,2)
if(current_accuracy>max_accuracy):
max_accuracy = current_accuracy
best_x = x
rf = RandomForestClassifier ( random_state=best_x )
rf.fit ( x_train ,y_train )
y_pred = rf.predict ( x_test )
پنج. نتایج تحلیل دادهها به کمک یادگیری ماشین
با بررسی نتایج بهدستآمده توسط الگوریتمهایclassification که در بالا مطرح کردیم و آموزش و آزمایش دادهها و همچنین با کمک Accuracy نتیجه این شد که الگوریتم RF در قسمتscale شده عملکرد و پیشبینیهای بهتری نسبت به سایر الگوریتمها داشته و با دقت ۸۷.۶۱ درصد الگوریتمی خوب و تقریباً قابل اعتماد است. اما اگر دادههاscale نشود، طبق جدول ۱ باز هم الگوریتمRF عملکرد بهتری نسبت به سایر الگوریتمها دارد.
جمعبندی
مراقبت از قلب بسیار مهم است و الگوریتمهای دقیق پیشبینی برای به حداقل رساندن مرگومیر ضروری است. این مقاله دقت الگوریتمهای مختلف یادگیری ماشین را برای پیشبینی بیماری قلبی با استفاده از مجموعه دادههای مخزن UCI مقایسه میکند و این مطالعه نشان میدهد که الگوریتم همسایه Random forest بیشترین دقت را دارد .با افزایش مدام بیماریهای قلبی و حیاتی بودن این بخش، انتظار میرود با توسعه الگوریتمهای پیشرفته، دقت و درستی آنها را بهبود ببخشیم و به مقابله با این چالش مهم بپردازیم.
Classifier |
Accuracy (%) |
|
|
without scale |
with scale |
|
|
SVM-RBF |
-* |
84.96% |
|
LR |
83.19% |
79.65% |
|
KNN |
65.49% |
84.96% |
|
DT |
74.34% |
78.76% |
|
RF |
85.84% |
87.61% |
|
جدول ۱ – مقایسه نتایج scaleشده و scaleنشده در مدلها
* علت اصلی محاسبه نشدن SVM-RBF بدون مقیاس این است که الگوریتم SVM یک الگوریتم پیچیده است که برای رسیدن به جوابهای بهینه باید از روشهای محاسباتی و بهینهسازی پیشرفته استفاده کند. بنابراین برای آموزش یک مدل SVM به دلیل پیچیدگی آن ممکن است نیاز به زمان و توان پردازشی بیشتری باشد. همچنین وابستگی الگوریتم SVM به مقدار تعداد دادههای آموزشی نیز باعث میشود در صورت افزایش تعداد دادهها، زمان آموزش الگوریتم SVM نیز بهصورت نسبی افزایش یابد.
نویسندگان
احسان رزاقیزاده (ehsanrazaghizade22@gmail.com)
عارف برهانی (rf.borhani@gmail.com)
فاطمه رفیعپور (ph.rafie@gmail.com)
منابع
[1]- Archana Singh, Rakesh Kumar (2020). Heart Disease Prediction Using Machine Learning Algorithms. International Conference on Electrical and Electronics Engineering (ICE3-2020), 2020
[2]- Santhana Krishnan J and Geetha S, “Prediction of Heart Disease using Machine Learning Algorithms” ICIICT, 2019.
[3]- Aditi Gavhane, Gouthami Kokkula, Isha Panday, Prof. Kailash Devadkar, “Prediction of Heart Disease using Machine Learning”, Proceedings of the 2nd International conference on Electronics, Communication and Aerospace Technology (ICECA), 2018.
[4]- Senthil kumar mohan, chandrasegar thirumalai and Gautam Srivastva, “Effective Heart Disease Prediction Using Hybrid Machine Learning Techniques” IEEE Access 2019.
[5]- Himanshu Sharma and M A Rizvi, “Prediction of Heart Disease using Machine Learning Algorithms: A Survey” International Journal on Recent and Innovation Trends in Computing and Communication Volume: 5 Issue: 8 , IJRITCC August 2017.
[6]- M. Nikhil Kumar, K. V. S. Koushik, K. Deepak, “Prediction of Heart Diseases Using Data Mining and Machine Learning Algorithms and Tools” International Journal of Scientific Research in Computer Science, Engineering and Information Technology ,IJSRCSEIT 2019.
[7]- Amandeep Kaur and Jyoti Arora, “Heart Diseases Prediction using Data Mining Techniques: A survey” International Journal of Advanced Research in Computer Science, IJARCS 2015-2019.
[8]- Pahulpreet Singh Kohli and Shriya Arora, “Application of Machine Learning in Diseases Prediction”, 4th International Conference on Computing Communication And Automation (ICCCA), 2018.
[9]- M. Akhil, B. L. Deekshatulu, and P. Chandra, “Classification of Heart Disease Using K- Nearest Neighbor and Genetic Algorithm,” Procedia Technol., vol. 10, pp. 85–94, 2013.
[10]- S. Kumra, R. Saxena, and S. Mehta, “An Extensive Review on Swarm Robotics,” pp. 140–145, 2009.
[11]- Hazra, A., Mandal, S., Gupta, A. and Mukherjee, “A Heart Disease Diagnosis and Prediction Using Machine Learning and Data Mining Techniques: A Review” Advances in Computational Sciences and Technology , 2017.
[12]- Patel, J., Upadhyay, P. and Patel, “Heart Disease Prediction Using Machine learning and Data Mining Technique” Journals of Computer Science & Electronics, 2016.
[13]- Chavan Patil, A.B. and Sonawane, P.“To Predict Heart Disease Risk and Medications Using Data Mining Techniques with an IoT Based Monitoring System for Post-Operative Heart Disease Patients” International Journal on Emerging Trends in Technology, 2017.
[14]- V. Kirubha and S. M. Priya, “Survey on Data Mining Algorithms in Disease Prediction,” vol. 38, no. 3, pp. 124–128, 2016.
[15]- M. A. Jabbar, P. Chandra, and B. L. Deekshatulu, “Prediction of risk score for heart disease using associative classification and hybrid feature subset selection,” Int. Conf. Intel. Syst. Des. Appl. ISDA, pp. 628–634, 2012
در دنیای کسبوکار امروز، تحصیلات دانشگاهی برای حفظ ارزش شما بهعنوان نیروی کار بااستعداد و کارآمد کافی نیستند. برای اینکه مزیت رقابتی شخصی خود را حفظ کنید، باید بر آموزش مستمر و مادامالعمر خود سرمایهگذاری کنید. خانواده بزرگ مجتمع فنی تهران هرساله به هزاران نفر کمک میکند تا در مسیر شغلی خود پیشرفت کنند.
اگر شاغل هستید و وقت ندارید در دورههای آموزشی حضوری شرکت کنید، مجتمع فنی تهران گزینههایی عالی برای آموزش مجازی، آنلاین، آفلاین و ترکیبی ارائه میدهد. با شرکت در دورههای کوتاهمدت مجتمع فنی تهران و دریافت مدارک معتبر و بینالمللی میتوانید با اعتماد به نفس مسیر ترقی را طی کنید و در سازمان خود به مهرهای ارزشمند تبدیل شوید.