একটি স্প্যাম শ্রেণিবদ্ধকরণ তৈরি করা: পাইসপার্ক + এমএললিব বনাম সেজমেকার + এক্সজিবিস্ট

এই নিবন্ধে, আমি প্রথমে আপনাকে অ্যাপাচি স্পার্ক, এর পাইথন এপিআই (ওরফে পাইএসপার্ক) এবং স্পার্ক এমএললিবায় প্রয়োগ করা বিভিন্ন ধরণের মেশিন লার্নিং অ্যালগরিদমগুলি ব্যবহার করে একটি স্প্যাম শ্রেণিবদ্ধকরণ কীভাবে তৈরি করবেন তা দেখাব।

তারপরে, আমরা একই ডাটা সেটে প্রশিক্ষিত একটি এক্সজিবিস্ট মডেলকে প্রশিক্ষণ, সংরক্ষণ এবং মোতায়েনের জন্য নতুন অ্যামাজন সেজমেকার পরিষেবাটি ব্যবহার করব।

সমস্ত কোড একটি জপিটার নোটবুকে চলে, গিথুব এ উপলব্ধ :)

পাইস্পার্ক + এমএললিব

বড় ছবি

আমাদের কাঁচা ডেটা সেটটি দুটি ফাইলে সঞ্চিত 1-লাইন বার্তায় গঠিত:

  • ‘হাম’ ফাইল: 4827 বৈধ বার্তা,
  • ‘স্প্যাম’ ফাইল: 7৪7 বার্তা।

এই বার্তাগুলি শ্রেণিবদ্ধ করার জন্য, আমাদের দুটি শ্রেণীর সাথে একটি মধ্যবর্তী ডেটা সেট তৈরি করতে হবে। এই উদ্দেশ্যে, আমরা ফিচার হ্যাশিং নামে একটি সাধারণ তবে দক্ষ কৌশল ব্যবহার করতে যাচ্ছি:

  • ডেটা সেটে প্রতিটি বার্তার জন্য আমরা প্রথমে এর শব্দগুলিকে একটি নির্দিষ্ট সংখ্যক বালতিতে হ্যাশ করি (বলুন, 1000)।
  • তারপরে, আমরা প্রতিটি শব্দের জন্য শূন্য-অঘটনকে নির্দেশ করে একটি ভেক্টর তৈরি করি: এগুলি এমন বৈশিষ্ট্য যা কোনও বার্তা স্প্যাম কিনা তা সিদ্ধান্ত নিতে ব্যবহৃত হবে।
  • বৈধ বার্তার জন্য, সংশ্লিষ্ট লেবেলটি শূন্য হবে, অর্থাত্ বার্তাটি স্প্যাম নয়। তদনুসারে, একটি স্প্যাম বার্তার জন্য, লেবেলটি এক হবে।

একবার আমরা শেষ হয়ে গেলে, আমাদের মধ্যবর্তী ডেটা সেটটি হবে:

  • 4827 শব্দ ভেক্টরগুলিকে একটি শূন্য সহ লেবেলযুক্ত,
  • 747 শব্দ ভেক্টরগুলির একটিতে লেবেলযুক্ত।

প্রশিক্ষণ এবং বৈধকরণের জন্য আমরা এটি 80/20 বিভক্ত করব এবং বেশ কয়েকটি শ্রেণিবদ্ধকরণ অ্যালগরিদমের মধ্য দিয়ে চলব।

পূর্বাভাসের জন্য, প্রক্রিয়াটি একই রকম হবে: বার্তাটি হ্যাশ করুন, মডেলটিতে ভেক্টর শব্দটি প্রেরণ করুন এবং পূর্বাভাসিত ফলাফল পান।

এত কঠিন না, আরে? চল কাজ করা যাক!

মধ্যবর্তী ডেটা সেট বিল্ডিং

আমাদের প্রথম পদক্ষেপটি উভয় ফাইল লোড করা এবং বার্তাগুলিকে কথায় বিভক্ত করা।

তারপরে, আমরা প্রতিটি বার্তাটি 1000 ওয়ার্ড বালতিতে প্রেরণ করছি। আপনি দেখতে পাচ্ছেন, প্রতিটি বার্তাটি বালতি সংখ্যা এবং উপস্থিতিগুলিকে ধারণ করে একটি বিরল ভেক্টরে পরিণত হয়।

পরবর্তী পদক্ষেপটি আমাদের বৈশিষ্ট্যগুলি লেবেল করা: স্প্যামের জন্য 1, অ-স্প্যামের জন্য 0। ফলাফল হ'ল লেবেলযুক্ত নমুনাগুলির সংগ্রহ যা ব্যবহারের জন্য প্রস্তুত।

পরিশেষে, আমরা প্রশিক্ষণের জন্য পরীক্ষার জন্য 80/20 সেট বিভক্ত করি এবং পরীক্ষার জন্য এবং উভয় আরডিডি ক্যাশে করি কারণ আমরা সেগুলি বারবার ব্যবহার করব।

এখন আমরা এই ডেটা সেট সহ বেশ কয়েকটি মডেলকে প্রশিক্ষণ দিতে যাচ্ছি। তাদের নির্ভুলতা পরিমাপ করতে, এখানে আমরা ব্যবহার করতে যাচ্ছি এমন স্কোরিং ফাংশন: কেবলমাত্র পরীক্ষার সেটে সমস্ত নমুনার পূর্বাভাস দিন, ভবিষ্যদ্বাণী করা লেবেলকে আসল লেবেল এবং গণনার যথার্থতার সাথে তুলনা করুন।

স্পার্ক এমএললিবের সাথে ডেটা সেটটিকে শ্রেণিবদ্ধকরণ

আমরা নিম্নলিখিত শ্রেণিবদ্ধকরণ অ্যালগরিদম ব্যবহার করতে যাচ্ছি:

  • এসজিডি অপ্টিমাইজারের সাথে লজিস্টিক রিগ্রেশন,
  • LBFGS অপ্টিমাইজারের সাথে লজিস্টিক রিগ্রেশন,
  • সমর্থন ভেক্টর মেশিন,
  • সিদ্ধান্ত গাছ,
  • গ্রেডিয়েন্ট বুস্টড ট্রি,
  • র্যান্ডম অরণ্য,
  • নাইভ বয়েস।

পণ্য সরবরাহ সংশ্লেষণ

আসুন লজিস্টিক রিগ্রেশন দিয়ে শুরু করি, সমস্ত শ্রেণিবদ্ধের মা।

সমর্থন ভেক্টর মেশিন

আর একটি জনপ্রিয় অ্যালগরিদম এসভিএম সম্পর্কে কী?

গাছ

এবার আসুন আমরা গাছ ভিত্তিক শ্রেণিবিন্যাসের তিনটি প্রকার চেষ্টা করি। পূর্ববর্তী আলগোস থেকে এপিআই কিছুটা আলাদা।

নাইভ বয়েস

সর্বশেষে তবে সর্বনিম্ন নয়, আসুন নায়েভ বেয়েস শ্রেণিবদ্ধের চেষ্টা করি।

এটি অন্যান্য সমস্ত অ্যালগোসের থেকে অত্যন্ত উচ্চতর। আসুন বাস্তব জীবনের কয়েকটি নমুনা পূর্বাভাস দেওয়ার চেষ্টা করি।

তাদের সঠিকভাবে ভবিষ্যদ্বাণী করা হয়েছিল। এটি দেখতে বেশ ভাল মডেলের মতো। এখন কেন এই স্কোরগুলি উন্নত করার চেষ্টা করবেন না? আমি বেশিরভাগ অ্যালগরিদমের জন্য ডিফল্ট প্যারামিটার ব্যবহার করেছি, উন্নতির নিশ্চয়ই জায়গা আছে :) আপনি নোটবুকের সমস্ত এপিআই-এর লিঙ্কগুলি খুঁজে পেতে পারেন, তাই নির্দ্বিধায় দূরে সরে যাবেন!

এটি দুর্দান্ত, কিন্তু ...

এখনও অবধি, আমরা কেবল স্থানীয়ভাবে কাজ করেছি। এটি কিছু প্রশ্ন উত্থাপন করে:

  1. আমরা কীভাবে আরও বড় ডেটা সেটটিতে প্রশিক্ষণ দেব?
  2. আমরা কীভাবে আমাদের মডেলটিকে প্রযোজনায় স্থাপন করব?
  3. আমাদের মডেলটি স্কেল করবে কীভাবে আমরা জানতে পারি?

এই প্রশ্নগুলি - স্কেলাবিলিটি এবং মোতায়েন - প্রায়শই মেশিন লার্নিং প্রকল্পগুলির নিষিদ্ধ। "এটি আমার মেশিনে কাজ করে" থেকে "এটি স্কুলে 24/7 স্কেল উত্পাদন করে" যাওয়ার দিকে সাধারণত প্রচুর পরিশ্রম প্রয়োজন।

আশা আছে. পড়তে :)

সেজমেকার + এক্সজিবিস্ট

এই ব্যথা পয়েন্টগুলি সমাধান করা আমাজন সেজমেকারের মূল বিষয়। আসুন আমাদের ব্যবহারের ক্ষেত্রে পুনরায় দেখা যাক।

অন্তর্নির্মিত অ্যালগরিদম

যেমনটি আমরা আগে দেখেছি, প্রচুর শ্রেণিবদ্ধকরণ অ্যালগরিদম রয়েছে। "ডান" একটিকে বেছে নেওয়া এবং এটির "সেরা" বাস্তবায়ন ("ডান" এবং "সেরা" সংজ্ঞায়িত করার চেষ্টা করার জন্য সৌভাগ্য) খুব সহজ কাজ নয়। ভাগ্যক্রমে, সেজমেকার আপনাকে বেশ কয়েকটি বিল্ট-ইন অ্যালগরিদম সরবরাহ করে। সেগুলি আমাজন কর্তৃক বাস্তবায়ন করা হয়েছে, সুতরাং আমি অনুমান করি যে আপনি তাদের সঠিকভাবে সম্পাদন এবং স্কেল করার আশা করতে পারেন :)

ভবিষ্যতের নিবন্ধগুলিতে আলোচনার জন্য আপনি নিজের কোড, আপনার নিজস্ব প্রাক-প্রশিক্ষিত মডেল ইত্যাদিও আনতে পারেন! গিথুবে আরও সেজমেকার উদাহরণ: রিগ্রেশন, মাল্টি-ক্লাসের শ্রেণিবিন্যাস, চিত্রের শ্রেণিবিন্যাস ইত্যাদি

এখানে, আমরা বাইনারি শ্রেণিবদ্ধকরণের জন্য গ্রেডিয়েন্ট বুস্টড ট্রিগুলির একটি জনপ্রিয় বাস্তবায়ন এক্সজিবিস্ট ব্যবহার করতে যাচ্ছি।

সংক্ষেপে, সেজমেকার এসডিকে আমাদের তা দেবে:

  • আমাদের ডেটা সেটে এক্সজিবিস্টকে প্রশিক্ষণের জন্য পরিচালিত অবকাঠামো তৈরি করুন,
  • মডেলটি সেজমেকারে সংরক্ষণ করুন,
  • আমাদের মডেল পরিবেশন করতে একটি REST শেষ পয়েন্ট কনফিগার করুন,
  • আরআরএসটি শেষের পয়েন্টে মডেল স্থাপন করতে পরিচালিত অবকাঠামো তৈরি করুন,
  • নমুনা কয়েক উপর মডেল প্রার্থনা।

চল এটা করি!

সঞ্চয়স্থান এবং ডেটা সেট আপ করা হচ্ছে

প্রথম জিনিসগুলি: এস 3 ডেটা সেট এবং সমস্ত নিদর্শনগুলি সঞ্চয় করতে ব্যবহৃত হবে (কী আশ্চর্য)। আসুন তাহলে কয়েকটি বিষয় ঘোষণা করি। ইঙ্গিত: এস 3 বালতিটি সেজমেকারের মতোই অঞ্চলে থাকতে হবে।

এক্সজিবিস্টের এই প্রয়োগের জন্য ডেটা সিএসভি বা লিবিএসভিএম ফর্ম্যাটে থাকা দরকার। এর পরে চেষ্টা করা যাক, ফলাফলগুলি ফাইলগুলি এস 3 তে অনুলিপি করুন এবং সেজমেকার আইএএম ভূমিকাটি ধরুন।

সুন্দর লাগছে. এখন প্রশিক্ষণ কাজ সেট আপ করা যাক।

প্রশিক্ষণ কাজ সেট আপ

অ্যামাজন সেজমেকার প্রশিক্ষণ কাজ চালানোর জন্য ডকার পাত্রে ব্যবহার করে। আমাদের যে অঞ্চলে চলছে সেটির সাথে আমাদের ধারকটির নাম বাছাই করতে হবে।

যথেষ্ট সহজ প্রশিক্ষণ কনফিগার করার সময়। আমরা যাচ্ছি:

  • একটি বাইনারি শ্রেণিবদ্ধকারী তৈরি করুন,
  • S3 থেকে libsvm ফর্ম্যাটে প্রশিক্ষণ এবং বৈধতা ডেটা সেটগুলি আনুন,
  • 100 টি পুনরাবৃত্তির জন্য একটি একক m4.4xlarge উদাহরণের ট্রেন।

এটি বেশ মুখবন্ধ, তবে আতঙ্কিত হবেন না:

  • সমস্ত অ্যালগরিদমের কাছে সাধারণ প্যারামিটারগুলি ক্রিয়েট্রাইটিংজব এপিআই ডকুমেন্টেশনে সংজ্ঞায়িত করা হয়েছে।
  • অ্যালগরিদম-নির্দিষ্ট পরামিতিগুলি অ্যালগরিদম পৃষ্ঠায় সংজ্ঞায়িত করা হয়, উদাঃ XGBoost।

প্রশিক্ষণ এবং মডেল সংরক্ষণ

ঠিক আছে, আসুন এই পার্টিটি চলুক। প্রশিক্ষণ শুরুর সময়।

6 মিনিট পরে, আমাদের মডেল প্রস্তুত। অবশ্যই, এই জাতীয় একটি ছোট ডেটা সেটটির জন্য এটি কিছুটা দীর্ঘ :) খুব সুন্দর, হাহ?

ঠিক আছে, সেজমেকারে এই মডেলটি সংরক্ষণ করি। ক্রিয়েটমোডেল এপিআই সহ বেশ সোজা।

শেষের অবস্থানটি তৈরি করা হচ্ছে

এখানে সত্যিই ভাল অংশ আসে। আমরা এই মডেলটি মোতায়েন করব এবং এটিকে প্রার্থনা করব। হ্যাঁ, ঠিক তেমন।

প্রথমত, আমাদের ক্রেডিটঅ্যান্ডপয়েন্ট কনফাইগ এপিআই দিয়ে একটি এন্ডপয়েন্ট কনফিগারেশন তৈরি করতে হবে: অনুমানের জন্য আমরা একটি একক এম 4.এক্সলেজ ব্যবহার করব, আমাদের মডেলটিতে 100% ট্র্যাফিক যাবে (আমরা ভবিষ্যতের পোস্টে এ / বি পরীক্ষার দিকে নজর দেব) ।

মডেল মোতায়েন

এখন আমরা এই প্রান্তে আমাদের প্রশিক্ষিত মডেলটি তৈরি করুনপয়েন্ট এপিআইপি দিয়ে স্থাপন করতে পারি।

শেষ পয়েন্টটি চালু করা হচ্ছে

আমরা এখন শেষ পয়েন্টটি প্রার্থনা করতে প্রস্তুত। আসুন ডেটা সেট থেকে কয়েকটি নমুনা (libsvm ফর্ম্যাটে) ধরুন এবং তাদের পূর্বাভাস দিন।

উভয় নমুনা সঠিকভাবে পূর্বাভাস দেওয়া হয়। সাব্বাস।

উপসংহার

আপনি দেখতে পাচ্ছেন, সেজমেকার আপনাকে আপনার মেশিন লার্নিং প্রকল্পগুলি শেষ হতে চালাতে সহায়তা করে: নোটবুক পরীক্ষা, মডেল প্রশিক্ষণ, মডেল হোস্টিং, মডেল স্থাপনা।

আপনি যদি সেজেমেকার (এবং যদি আপনি অনিবার্য ভবিষ্যতের পোস্টগুলির জন্য অপেক্ষা না করতে পারেন!) ব্যবহার করতে পারেন এমন অন্যান্য উপায় সম্পর্কে আগ্রহী হন, তবে আমি সম্প্রতি রেকর্ড করেছি এমন একটি ওভারভিউ এখানে।

এটি আজকের জন্য। পড়ার জন্য আপনাকে অনেক ধন্যবাদ।

এই দানব পোস্টটি 1981 সাল থেকে এই কিংবদন্তি বিদেশী শোতে বার বার শুনার সময় লেখা হয়েছিল (এটি একটি দীর্ঘ পোস্ট ছিল)।