مقدمة
يُعد التعرف على النشاط البدني الإنساني أحد مجالات البحث النشطة في مجال تعلم الآلة وذلك لارتباطه بسياقات عديدة تتمثل بمراقبة السلامة ، الرعاية الصحية ، التفاعل بين الإنسان والآلة، وغيرها. في هذا الدرس التقني سنأخذكم في مهمة للتعرف على أنواع مختلفة من النشاط البدني الإنساني باستخدام التعلم الآلي ولغة بايثون.
يمكن تعريف النشاط البدني الإنساني Human Activity على أنه القدرة على تفسير إيماءات أو حركات جسم الإنسان وتحديد النشاط أو الفعل البشري عبر أجهزة الاستشعار المضمنة في الأجهزة الإلكترونية التي نقوم باستخدامها كالهواتف والساعات الذكية وغيرها ، حيث يمكن تبسيط أو أتمتة معظم المهام البشرية اليومية إذا أمكن التعرف على هذه النشاطات.
1- التحليل الاستكشافي للبيانات
سنستخدم كل من التحليل الاستكشافي للبيانات EDA و التعلم الآلي ML على بيانات مستخلصة من هواتف ذكية بهدف التعرف على أنماط النشاط البدني الإنساني Human Activity بواسطة لغة بايثون ولعمل ذلك سنحتاج أولاً إلى تضمين المكتبات اللازمة.
يمكن تحميل مجموعة البيانات و الأكواد المستخدمة في هذا الدرس من خلال الرابط التالي : للتحميل📂
1.1 استيراد المكتبات
قمنا بتضمين كل من مكتبتي NumPy و Pandas لإدارة البيانات ، و مكتبة matplotlib لتصويرها وتمثيلها. بالإضافة إلى ذلك قمنا بتضمين كل من نماذج تعلم الآلة الآتية المقدمة من مكتبة Scikit-Learn.
- SVM
- Logistic Regression
- K Nearest Neighbors
- Random Forest
و أخيرًا تم تضمين دوال متخصصة لقياس أداء نماذج التصنيف التي سنقوم بتدريبها والتحقق من أدائها لاحقًا في هذا الدرس.
1.2 سحب البيانات واستعراضها
1.3 شرح البيانات
- بيانات التدريب : 7352 صف row (عينة) و 563 عمود column (سمة)
- بيانات الاختبار : 2947 صف row (عينة) و 563 عمود column (سمة)
يوجد إجمالي 7352 سجلاً في مجموعة بيانات التدريب training data بينما تحتوي مجموعة بيانات الاختبار testing data على 2947 سجلاً لاختبار النماذج التي سنقوم بتدريبها لاحقًا في هذا الدرس.
كما هو موضح في الصور أعلاه يوجد أكثر من 563 عامود أي 563 سمة Attribute الغالبية العظمى من هذه الأعمدة تحتوي على الكلمتين Accelerometer و Gyroscope وهي مستشعرات خاصة بالتعرف على الحركة و النشاط مضمنة في الأجهزة الذكية فيما يلي شرح لآلية عملها.
أ. مستشعر قياس التسارع Accelerometer معظم الهواتف الذكية تحتوي هذا النوع من المستشعرات ومن خلاله. يتم قياس التسارع بثلاثة أبعاد مكانية (X, Y, Z). هذا المستشعر يستخدم أيضًا لاكتشاف اتجاه الجهاز في حال كان في وضعٍ أفقي أو عمودي.
في بادئ الأمر تم تضمين هذا المستشعر في الهاتف الذكي لتمكين الدوران التلقائي للشاشة ودعم اللعب المتقدم ، ولكن فيما بعد تم اقتران هذا المستشعر بالعديد من التطبيقات الأخرى ، فإذا ما تمكنا من التعرف على نشاط المستخدم باستخدام البيانات المقدمة من مستشعر التسارع فهذا يساعد ببناء العديد من التطبيقات المفيدة ، على سبيل المثال ، تطبيقات الرعاية الصحية ، فإذا استطعنا من التعرف على نشاط المستخدم مثل المشي ، الركض أو الشرب فذلك يمكننا تلقائيًا من مراقبة مستوى نشاط المستخدم المتعلق بمشكلات الرعاية الصحية الخاصة بهم ، والذي بدوره يمكننا من توليد تقارير لإرسالها إلى المستخدمين و الأطباء بهدف مراقبة ما إذا كان المستخدمون يحصلون على كمية كافية من التمارين أو يستهلكون مستوى كاف من المعادن، وبالتالي يمكن للمستخدمين الحصول على ردود فعل أو تنبيهات بشأن حالتهم الصحية والتي تساعد في تشجيع الممارسات الصحية في الحياة اليومية.
ب. مستشعر الجيروسكوب Gyroscope يستخدم هذا المستشعر القياسات التي يرصدها للحفاظ على اتجاه الجهاز من خلال مبادئ الزخم الزاوي. حيث يقيس معدل الدوران للجهاز بوحدة rad/s حول الأجهزة لكل من المحاور الثلاثة (X, Y, Z).
يعمل مستشعر الجيروسكوب (الدوران) جنبًا إلى جنب مع مقياس التسارع في الهاتف الذكي ، الجهاز اللوحي، الساعات الذكية في ست اتجاهات اليسار ، اليمين ، الأعلى ، الأسفل ، الأمام و الخلف بالإضافة إلى قياس مفاهيم متقدمة مثل roll, pitch, yaw rotations مما يسمح باستشعار الحركة الدقيقة للأجهزة.
دعونا نستعرض عدد الأعمدة المرتبط بكل مستشعر من خلال عمل for-loop وثم تصوير ذلك بيانياً :
نلاحظ وجود التالي :
- 345 سمة attribute مرتبطة بمستشعر قياس التسارع Accelerometer
- 213 سمة attribute مرتبطة بمستشعر الجيروسكوب Gyroscope
- 5 ميزات غير مرتبطة بأي من المستشعرات أعلاه.
الآن سنقوم باستعراض الأعمدة (السمات) التي لا تنتمي إلى المستعشرات أو كما تم تسميتها أعلاه others وذلك لغرض استخراج المتغير المستهدف وهو نوع النشاط والذي نريد توقعه من خلال بقية الميزات.
['angle(X,gravityMean)', 'angle(Y,gravityMean)', 'angle(Z,gravityMean)', 'subject', 'Activity']
نلاحظ وجود ثلاث ميزات تتعلق بالجاذبية gravityMean وهي ميزات إضافية لتوقع كل من موضوع النشاط subject و نوع النشاط Activity والذي يمثل المتغير المستهدف الذي نبحث عنه ، بناء على ذلك سنقسم كل من بيانات التدريب والاختبار في القسم التالي إلى مدخلات X ومخرجات y للنماذج التي نريد تدريبها لاحقًا في هذا الدرس.
1.4 تقسيم البيانات
1.5 تصوير البيانات
أولاً سنستعرض أنواع الفعاليات الموجود في المتغير المستهدف activity ثم سنحتسب تعداد ونسبة كل فعالية في مجموعة التدريب للتأكد من أن المجموعة متوازنة وجاهزة لتطوير نماذج التصنيف.
نوع النشاط | عدد العينات | النسبة المئوية |
استلقاء | 1407 | 19.14% |
وقوف | 1374 | 18.69% |
جلوس | 1286 | 17.49% |
مشي | 1226 | 16.68% |
صعود الدرج | 1073 | 14.59% |
نزول الدرج | 986 | 13.41% |
كما هو مبين في كل من الرسوم البيانية و الجداول يوجد في هذه المجموعة 6 أنواع مختلفة من النشاطات البدنية الإنسانية ومن ناحية أخرى فإن عدد العينات المرتبط بالنشاطات متوازن إلى حد كبير مما سيسهل علينا عملية تصنفيفها باستخدام التعلم الآلي.
2- إعداد نماذج التعلم الآلي للتعرف على النشاطات البدنية
كما أشرنا سابقًا في هذا الدرس سنقوم بتنفيذ 4 خوارزميات مختلفة ومقارنة أدائها وذلك بهدف تصنيف النشاطات البدنية السابقة بشكل صحيح !
الأسطر البرمجية أدناه مسؤولة عن تدريب 4 خوارزميات (نماذج) على بيانات التدريب واختبارها على بيانات الاختبار واستخراج قيمة ضبط كل خوارزمية !
2.1 خوارزمية آلة المُتَّجهات الداعمة (SVM) Support Vector Machine
تدريب النموذج و اختبار ضبطه
أداء نموذج آلة المُتَّجهات الداعمة (SVM) Support Vector Machine
مصفوفة الدقة (الحيرة) Confusion Matrix
ملخص الأداء الكلي لنموذج آلة المُتَّجهات الداعمة (SVM) Support Vector Machine
نوع النشاط | نسبة التوقعات الصحيحة | نوع قياس الأداء | النتيجة |
استلقاء | 100% | الضبط Accuracy | 95.05% |
وقوف | 89.2% | الدقة Precision | 95.13% |
جلوس | 94.5% | الاسترجاع Recall | 95.04% |
مشي | 98.4% | نتيجة إف F-Score | 95.05% |
صعود الدرج | 91.4% | الدعم Support | 2947 |
نزول الدرج | 95.8% | – | – |
2.2 خوارزمية الانحدار اللوجستي Logistic Regression
تدريب النموذج و اختبار ضبطه
أداء نموذج الانحدار اللوجستي Logistic Regression
مصفوفة الدقة (الحيرة) Confusion Matrix
ملخص الأداء الكلي لنموذج الانحدار اللوجستي Logistic Regression
نوع النشاط | نسبة التوقعات الصحيحة | نوع قياس الأداء | النتيجة |
استلقاء | 100% | الضبط Accuracy | 95.83% |
وقوف | 87.8% | الدقة Precision | 95.94% |
جلوس | 96.8% | الاسترجاع Recall | 95.83% |
مشي | 92.2% | نتيجة إف F-Score | 95.81% |
صعود الدرج | 96.0% | الدعم Support | 2947 |
نزول الدرج | 94.7% | – | – |
2.3 خوارزمية الجار الأقرب K Nearest Neighbor
تدريب النموذج و اختبار ضبطه
أداء نموذج الجار الأقرب K Nearest Neighbor
مصفوفة الدقة (الحيرة) Confusion Matrix
ملخص الأداء الكلي لنموذج الجار الأقرب K Nearest Neighbor
نوع النشاط | نسبة التوقعات الصحيحة | نوع قياس الأداء | النتيجة |
استلقاء | 99.4% | الضبط Accuracy | 90.02% |
وقوف | 79.2% | الدقة Precision | 90.04% |
جلوس | 93.0% | الاسترجاع Recall | 90.02% |
مشي | 97.8% | نتيجة إف F-Score | 89.93% |
صعود الدرج | 78.8% | الدعم Support | 2947 |
نزول الدرج | 89.0% | – | – |
2.4 خوارزمية الغابة العشوائية Random Forest
تدريب النموذج و اختبار ضبطه
أداء نموذج الغابة العشوائية Random Forest
مصفوفة الدقة (الحيرة) Confusion Matrix
ملخص الأداء الكلي لنموذج الغابة العشوائية Random Forest
نوع النشاط | نسبة التوقعات الصحيحة | نوع قياس الأداء | النتيجة |
استلقاء | 100% | الضبط Accuracy | 92.21% |
وقوف | 87.4% | الدقة Precision | 92.26% |
جلوس | 92.5% | الاسترجاع Recall | 92.13% |
مشي | 96.8% | نتيجة إف F-Score | 92.10% |
صعود الدرج | 85.0% | الدعم Support | 2947 |
نزول الدرج | 89.2% | – | – |
ملخص النتائج
في هذا الدرس قمنا بتحليل البيانات المتعلقة بأنواع النشاط البدني الإنساني التي يتم رصدها بواسطة الحساسات المثبتة بالأجهزة الذكية والتعرف على عدة خوارزميات للتعلم الآلي تستخدم للتنبؤ بأنواع هذه النشاطات بناء على هذه البيانات المرصودة ووجدنا أن الخوارزمية التي تفوقت بهذا الشأن هي خوارزمية الانحدار اللوجستي Logistic Regression كما وضحت المقارنة بين الخوارزميات أعلاه في حال وجود أي أسئلة تتعلق بهذا الدرس لا تترد في طرحها في قسم التعليقات.