مبنای این پروژه بر اساس مسابقه‌‌ای است که در سایت Kaggle.com قرار داده شده است. برای مشاهده صفحه اصلی این مسابقه اینجا را کلیک کنید. در این مسابقه از ما خواسته شده است که برنامه با یادگیری سابقه ۱۲ ساله جرم و جنایت در شهر سان‌فرانسیسکو، بتواند نوع جرم را برای هر جنایت جدیدی که به وقوع می‌پیوندد پیش‌بینی کند.

۱. مقدمه

امروزه جرم، جنایت و تروریسم خطری است که همواره شهروندان یک شهر را تهدید میکند. اولین شیوه‌های پیش‌گیری از جرم بر پایه افزایش مجازات‌های فرد مجرم بوده است. در این شیوه‌ها پس از کشف جرم و دستگیری مجرم با اعمال مجازات‌های مختلف سعی بر مهار میزان وقوع جرم در جامعه شده است.در این روش‌ها پلیس پس از وقوع جرم،‌ به کشف آن پرداخته و در نهایت برای دستگیری مجرم اقدام می‌کند؛ از این رو پلیس دارای رویکردی انفعالی خواهد بود. یکی از رویکرد‌های جدید مقابله با جرم پیش‌بینی جرم قبل از وقوع آن است که باعث می‌شود نقش پلیس از ماهیت انفعالی به ماهیتی فعال و پویا تبدیل شود.
در اکثر جرم و جنایت‌ها، حضور یک پلیس یا اتومبیل گشت‌زنی ،می‌تواند از فعالیت‌های مجرمانه جلوگیری می‌کند. سیستم پیش‌بینی جرم به پلیس کمک می‌کند تا در زمان‌های مختلف در محل‌هایی که احتمال وقوع جرم بیشتر است به گشت زنی بپردازند که دراین حالت نیروهای پلیس به صورت بهینه تر و هدفمندتر میتوانند به انجام وظیفه خود بپردازند و آمار وقوع جرم نیز کاهش خواهد یافت. در حال حاضر در چند ایالت آمریکا، و در شهرهایی از انگلستان [1] پلیس در حال استفاده از این سیستم‌ها است و کاهش قابل توجهی در آمار وقوع جرم و جنایت ثبت شده است.
سیستم‌های پیش‌بینی جرم به طور کلی با یادگیری از داده‌های جرم‌های رخ داده در یک شهر در یک بازه زمانی به پیش‌بینی مناطقی که احتمال وقوع جرم در آن بیشتر است 1 می پردازد. این سیستم ها قادر به پیش بینی هویت سارق نیستند بلکه نوع جرم و مکان و زمان احتمالی وقوع آن را پیش بینی می کند.
داده‌های مسئله شامل جرم هایی است که از تاریخ 1/1/2003 تا 5/13/2015 توسط سازمان پلیس سانفرانسیکو ثبت شده است.

۲. کارهای مرتبط

در این مقاله بیشتر سعی خواهد شد که خواسته مسابقه که همان تشخیص نوع جرم است بررسی شود اما در بخش کارهای مرتبط برای فهم بهتر مسئله به طور کلی به شناخت سیستم‌های تشخیص جرم که به بررسی مکانی و زمانی جرم هم میپردازند خواهیم پرداخت.

۲.۱. روش ترسیم نقاط حساس

یکی از روش‌های ابتدایی بررسی جرم‌ها روشی به اسم ترسیم نقاط حساس2 است[2]. نکته‌ی کلیدی در این روش دانستن این موضوع است که اغلب جرائم در محیط‌هایی خاص و تکراری رخ می‌دهند و احتمال تکرار جرم در محلی که قبلا قربانی آن جرم بوده بسیار بیشتر است[3]. در روش ترسیم نقاط حساس با بهره گیری از سابقه‌ی جرم های رخ داده در گذشته، مناطقی که در آن‌ها مقدار بیشتری جرم رخ داده است در نقشه مشخص می‌گردد تا پلیس نیروهای خود را به صورت بهینه تری بتواند در شهر تقسیم کند. روش های ترسیم شامل نگاشت نقطه‌‌‌‌‌‌‌‌‌‌‌‌‌‌ای3(شکل۲-a)، بیضی‌های مکانی4(شکل۲-b)، ‌‌نگاشت موضوعی واحد‌های اجرایی 5(شکل۲-c)، نگاشت شبکه‌ای موضوعی6 (شکل۲-d)و پرکاربردترین آنها[4] که روش تخمین چگالی هسته 7(شکل۲-e)است. این روش های ترسیم هریک دارای مزایا و معایبی هستند که در مقاله ذکر شده[2] به آن ها اشاره شده است.

شکل ۱-انواع روش های ترسیم نقاط حساس

۲.۲. روش یادگیری نظارت شده

روش دیگر پیش بینی‌جرم استفاده از الگوریتم‌های یادگیری نظارت شده8 است[5]. در این روش داده‌گانی از جرم‌های رخ داده در شهرهای مختلف در طول یک بازه زمانی برای یادگیری استفاده میشود.این داده‌گان دارای اطلاعاتی هچون نام شهر، تعداد جمعیت، میزان درآمد قشرهای مختلف مردم و میزان جرم به ازای هر ۱۰۰ هزار نفر است.الگوریتم های طبقه‌بندی9 بیزساده10 و درخت تصمیم گیری11 برای این مسئله استفاده شده‌اند.

۲.۲.۱. طبقه بندی بیز ساده

الگوریتم طبقه بندی بیز ساده بدین گونه است که اگر برای هر نمومه X=({ X }_{ 1 },{ X }_{ 2 },...,X_{ n }) و { X }_{ 1 } مقدار ویژگی یکم باشد مقدار P(X|C) به وسیله الگوریتم طبقه بندی بیز ساده برای همه‌ی مقادیر ممکن C محاسبه میشود و مقدار{ C }^{ * }={ argma }_{ xc }P(X|C) برای همه‌ی مقادیر X پیش بینی می‌شود.برای اطلاعات بیشتر به اینجا مراجعه کنید.

۲.۲.۲. طبقه بندی درخت تصمیم

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

۲.۲.۳. نتیجه

نتیجه بدست آمده به صورت زیر است:

شکل ۲-نتیجه بدست آمده از الگوریتم های بیز ساده و درخت تصمیم‌گیری

همانطور که نتایج بدست آمده در شکل ۳ نشان میدهد برای این مسئله خاص الگوریتم درخت تصمیم گیری از دقت بهتری برخوردار بوده است.

۳. آزمایش‌ها

۳.۱. دادگان

داده‌های مسئله شامل جرم هایی است که از تاریخ 1/1/2003 تا 5/13/2015 توسط سازمان پلیس سانفرانسیکو ثبت شده است و از اینجا قابل دریافت است.
هر سطر از جدول دادگان حاوی اطلاعاتی در مورد یک جرمی که رخ داده است می‌باشد. و شامل اطلاعات زیر است:

  • تاریخ و زمان دقیق وقوع جرم

  • روز وقوع جرم در هفته

  • نام واحد پلیس منطقه

  • آدرس وقوع جرم

  • عرض جغرافیایی وقوع جرم

  • طول جغرافیایی وقوع جرم

  • دسته‌ای که جرم در آن قرار می‌گیرد.(هدف پیش بینی مقدار این ستون است)

  • شرح کوتاهی از جرم

  • شرح کوتاهی از اقدام پلیس و مقامات قضایی با جرم
    شکل زیر اطلاعات داده شده در این داده‌ها را نشان می‌دهد.

    شکل۳-ااطلاعات داده شده برای هر جرم

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

۳.۲. ابزارهای استفاده شده در پیاده‌سازی

تمام پیاده‌سازی ها با زبان پایتون انجام شده‌اند. این زبان دارای ابزارهای بسیار خوبی در زمینه یادگیری ماشین و هوش مصنوعی است. همچنین خواندن و نوشتن اطلاعات از فایل‌ها، و نرمال‌سازی داده‌ها در این زبان به راحتی انجام می‌شوند. sklearn کتابخانه اصلی استفاده شده برای پیاده‌سازی الگوریتم‌های یادگیری ماشین است. همچنین کتاب‌خانه‌های pandas و numpy برای استخراج و تحلیل داده‌ها استفاده شدند.

۳.۳. روش‌های پیاده‌سازی شده

کد تمام پیاده‌سازی ها در سایت گیت‌هاب قرار داده شده است.
برای پیاده‌سازی سه الگوریتم رایج طبقه بندی بیز‌ساده، رگرسیون لجستیک و جنگل‌های تصادفی را در نظر گرفته‌ایم.
معیار ارزیابی مدل‌ها log loss است. log loss معیاری برای بررسی میزان دقت یک الگوریتم طبقه‌بندی است. مقدار کمتر این تابع نشان دهنده دقیق‌تر بودن الگوریتم استفاده شده است. log loss با استفاده از متغیر دودویی { y }_{ i } در صورتی که احتمال رخداد آن \hat { { y }_{ t } } باشد از رابطه زیر محاسبه می‌گردد:

L=-\frac { 1 }{ n } \sum _{ i=1 }^{ n }{ [{ y }_{ i }\log { \hat { { (y }_{ i })+(1-{ y }_{ i })\log { (1-\hat { { y }_{ i } } ) } } } ] }

مقدار ۶۰٪ از دادگان train صرف یادگیری و ۴۰٪ آن برای ارزیابی الگوریتم استفاده شد. همچنین این الگوریتم‌های یادگیری بر روی دادگان تست هم اجرا و فایل نتایج بدست آمده از پیش‌بینی‌ها برای ارسال در سایت kaggle تهیه میشود. مقدار log loss به دست آمده برای هر کدام از الگوریتم‌ها در جدول
زیر آمده است:

بیز ساده رگرسیون لجستیک جنگل‌های تصادفی
۲.۶۱ ۲.۶۲ ۱۵.۳

روش بیز ساده و رگرسیون لجستیک عملکرد بسیار نزدیکی به هم دارند اما زمان اجرای بیز ساده به مراتب کمتر بود. روش جنگل‌های تصادفی نیز نتوانست عملکرد قابل قبولی را نسبت به دو روش قبلی از خود نشان بدهد.

۴. کارهای آینده

۵. مراجع

[1] http://www.theguardian.com/cities/2014/jun/25/predicting-crime-lapd-los-angeles-police-data-analysis-algorithm-minority-report
[2] Chainey, Spencer, Lisa Tompson, and Sebastian Uhlig. "The utility of hotspot mapping for predicting spatial patterns of crime." Security Journal 21.1 (2008): 4-28.
[3] Cohen, Lawrence E., and Marcus Felson. "Social change and crime rate trends: A routine activity approach." American sociological review (1979): 588-608.
[4] Chainey, Spencer, Svein Reid, and Neil Stuart. When is a hotspot a hotspot? A procedure for creating statistically robust hotspot maps of crime. Taylor & Francis, London, England, 2002.
[5] Iqbal, Rizwan, et al. "An experimental study of classification algorithms for crime prediction." Indian Journal of Science and Technology 6.3 (2013): 4219-4225.


  1. Crime hotspot

  2. Hotspot mapping

  3. Point mapping

  4. Spatial ellipses

  5. Thematic mapping of administrative units

  6. Grid thematic mapping

  7. Kernel density estimation

  8. Supervised learning

  9. Classification

  10. Naive Bayes

  11. Decision tree

علیرضا نوریان

خوبه که تونستید روی داده‌ها مدل آموزش بدید و «جرم» پیش‌بینی کنید.
بهتر بود اگر در مورد این روش‌هایی که استفاده کردید کمی توضیح می‌دادید یا در مورد تابع ارزیابی‌تون.
برای این مساله می‌تونید ابزارهای «رده‌بندی» بیشتری رو در مرحله بعد تست کنید و البته کمی هم در مورد نحوه کارشون و ویژگی‌هاشون توضیح بدید.
همین‌طور خوبه که تحلیل کنید چرا نتیجه‌ها متفاوت هستن و یک رده‌بند بهتر از دیگری عمل می‌کنه.