paint-brush
কীস্ট্রোক ডায়নামিক্স — ব্যবহারকারীর পূর্বাভাস দেওয়া — ল্যাম্বডা অ্যাপদ্বারা@tudoracheabogdan
453 পড়া
453 পড়া

কীস্ট্রোক ডায়নামিক্স — ব্যবহারকারীর পূর্বাভাস দেওয়া — ল্যাম্বডা অ্যাপ

দ্বারা Bogdan Tudorache8m2023/10/22
Read on Terminal Reader

অতিদীর্ঘ; পড়তে

এই নিবন্ধটি ব্যবহারকারী সনাক্তকরণের জন্য আচরণগত বায়োমেট্রিক্সের একটি ফর্ম হিসাবে কীস্ট্রোক গতিবিদ্যার ব্যবহার সম্পর্কে বিস্তারিত আলোচনা করে। মেশিন লার্নিং মডেলগুলি ব্যবহার করে, নিবন্ধটি তদন্ত করে যে কীভাবে প্রতিটি ব্যক্তির অনন্য টাইপিং শৈলী - বিশেষত, কী-প্রেস এবং কী-রিলিজ ইভেন্টগুলির ধরণগুলি - পরিচয় যাচাই করার জন্য নিযুক্ত করা যেতে পারে। ব্যবহারকারীর প্রমাণীকরণ এবং ভবিষ্যদ্বাণীর জন্য বাস্তব-বিশ্বের পরিস্থিতিতে কীভাবে এই মেশিন লার্নিং মডেলগুলি প্রয়োগ করা যেতে পারে তা জানুন।
featured image - কীস্ট্রোক ডায়নামিক্স — ব্যবহারকারীর পূর্বাভাস দেওয়া — ল্যাম্বডা অ্যাপ
Bogdan Tudorache HackerNoon profile picture
0-item
1-item
2-item

ব্যবহারকারীর স্বীকৃতির জন্য এই নিবন্ধের মেশিন লার্নিং মডেলগুলিতে ব্যবহৃত কীস্ট্রোক গতিবিদ্যা হল আচরণগত বায়োমেট্রিক্স৷ কীস্ট্রোক ডায়নামিক্স স্বতন্ত্র উপায় ব্যবহার করে যা প্রত্যেক ব্যক্তি তাদের পরিচয় নিশ্চিত করতে টাইপ করে। এটি কী-প্রেস এবং কী-রিলিজে 2টি কীস্ট্রোক ইভেন্ট বিশ্লেষণ করে সম্পন্ন করা হয় — যা টাইপিং প্যাটার্ন বের করতে কম্পিউটার কীবোর্ডে একটি কীস্ট্রোক তৈরি করে। নিবন্ধটি পরীক্ষা করবে কিভাবে এই ML মডেলগুলি বাস্তব জীবনের পরিস্থিতিতে ব্যবহার করা যেতে পারে একজন ব্যবহারকারীর ভবিষ্যদ্বাণী করতে।


পূর্ববর্তী নিবন্ধটি বর্ণনা করেছে যে কিভাবে আমরা 3 ML মডেলকে প্রশিক্ষণ দিতে পারি, 100 জন ব্যবহারকারীর কাছ থেকে +880 কীবোর্ড ইনপুটের একটি সেটে যাকে একই পাঠ্য 12 বার লিখতে বলা হয়েছিল।


বাস্তব জীবনের পরিস্থিতি অনুকরণ করতে আমরা যে অ্যাপগুলি ব্যবহার করব।

একটি বাস্তব জীবনের পরিস্থিতি অনুকরণ


স্থাপত্য

স্যান্ডবক্স : বাস্তব জীবনের পরিস্থিতি পরীক্ষা করার জন্য আমরা ব্যবহার করব পোস্টম্যান + ফ্লাস্ক .


উত্পাদন : যখন আমরা এই অ্যাপ্লিকেশনটিকে উত্পাদনে স্থানান্তর করতে চাই তখন আমরা কেবল ফ্লাস্ক কোডের বিটগুলিকে একটি কোড দিয়ে প্রতিস্থাপন করতে পারি এডব্লিউএস ল্যাম্বদা .


ফ্লাস্ক হল একটি ওয়েব-ফ্রেমওয়ার্ক যা আমরা Lambda + API গেটওয়ের প্রতিলিপি করতে ব্যবহার করতে পারি।


Lambda হল AWS-এ হোস্ট করা একটি সার্ভারবিহীন ওয়েব-পরিষেবা, যা বিভিন্ন ভাষায় লেখা ইভেন্ট চালিত কোড চালাতে পারে, তবে এই অ্যাপের জন্য আমরা পাইথন ব্যবহার করব।


ডেটা প্রবাহ হল:

  1. আমরা আইডেন্টিফিকেশন ডেটা সহ হেডার লোড করি এবং আমরা যে মডেলটি ব্যবহার করতে চাই, এটি মূলত আমাদের json পেলোড। হেডারে আমরা অনুমোদন কী যোগ করব (শুধুমাত্র পণ্য)
  2. আমরা ফ্লাস্ক অ্যাপ/এপিআই গেটওয়েতে HTTP POST পদ্ধতির অনুরোধ করি
  3. এপিআই গেটওয়ে অথরিজাইটন কী (এপিআই কী) পরীক্ষা করে এবং যদি এটি অনুরোধ গ্রহণ করে, প্রক্রিয়াকরণের জন্য ল্যাম্বডাকে পেলোড পাঠায়
  4. FlaskApp/Lambda অন্তর্নিহিত কোড চালায়
  5. রিটার্ন বডিতে আমরা যা পাই তা হল ভবিষ্যদ্বাণী করা ব্যবহারকারীর আইডি যদি ইভেন্ট সফল হয়, অন্যথায় আমরা একটি ত্রুটি বার্তা পাই


হিগল লেভেল ওভারভিউ


আর্কিটেকচার + ডেটা প্রবাহের উচ্চ-স্তরের ওভারভিউ


পূর্বে উল্লিখিত সমস্ত কোড আপনি Github প্রকল্প পৃষ্ঠায় খুঁজে পেতে পারেন:

https://github.com/BogdanAlinTudorache/KeystrokeDynamics


পোস্টম্যানের অনুরোধ

কাঁচা

 { "info": { "_postman_id": "c62ddbda-e487-432f-998a-4dfc9313f0fa", "name": "BogdanTudorache", "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" }, "item": [ { "name": "predict_user", "request": { "method": "POST", "header": [], "body": { "mode": "raw", "raw": "{\n \"Model\": \"RF\",\n \"HT\": {\n \"Mean\": 48.43,\n \"STD\": 23.34\n },\n \"PPT\": {\n \"Mean\": 120.43,\n \"STD\": 37.41\n },\n \"RRT\": {\n \"Mean\": 124.43,\n \"STD\": 45.34\n },\n \"RPT\": {\n \"Mean\": 132.56,\n \"STD\": 47.12\n }\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "http://127.0.0.1:5000", "protocol": "http", "host": [ "127", "0", "0", "1" ], "port": "5000" } }, "response": [] } ] }


আপনি GitHub থেকে ফাইলটি ডাউনলোড করতে পারেন।

শরীর

 { "Model": "RF", "HT": { "Mean": 48.43, "STD": 23.34 }, "PPT": { "Mean": 120.43, "STD": 37.41 }, "RRT": { "Mean": 124.43, "STD": 45.34 }, "RPT": { "Mean": 132.56, "STD": 47.12 } }


ফ্লাস্ক অ্যাপ / ল্যাম্বডা অ্যাপ

যদি আমরা AWS-এ সবকিছু সরানোর আগে প্রক্রিয়াটি স্যান্ডবক্স পরীক্ষা করতে চাই তবে আমাদের অবশ্যই ফ্লাস্ক ব্যবহার করে একটি এন্ড-টু-এন্ড কল প্রতিলিপি করতে হবে।

ফ্লাস্ক অ্যাপ কিভাবে শুরু করবেন?

GitHub-এ, আপনি flask_lambda_function.py-এর সম্পূর্ণ সংস্করণ পাবেন এবং যেকোনো IDE-তে আপনাকে স্ক্রিপ্টটি চালাতে হবে কারণ এটি স্বয়ংক্রিয়ভাবে ফ্লাস্ক অ্যাপ চালু করবে।


আমার ক্ষেত্রে, আমি ইন্টেলিজে আইডিয়া ব্যবহার করছি তাই আমি কেবল স্ক্রিপ্টটি চালাই (ডান ক্লিক করুন → রান):

আইডিই

একটি বাস্তব-জীবনের দৃশ্যকল্প পরীক্ষা করা হচ্ছে

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

ফ্লাস্ক অ্যাপ সহ পাইথন কনসোল অনুরোধের জন্য অপেক্ষা করছে


এখন যখনই আমরা একটি HTTP অনুরোধ POST করি, তখন আমাদের বাস্তব জীবনের দৃশ্যের অনুকরণ করে ফ্লাস্ক অ্যাপটি ট্রিগার হবে।

অনুরোধ পোস্ট করুন:

পোস্ট শরীর

পাইথন কনসোল উত্তর:

কনসোল উত্তর

পোস্টম্যান প্রতিক্রিয়া:

পোস্টম্যানের প্রতিক্রিয়া

কোড DeepDive

 @app.route('/', methods=['GET', 'POST']) def index(): # Bellow code should be uncommented when running in AWS:Lambda # above should be commented as well as flask import + app definition # def lambda_handler(event, context): """ Lambda handler: When a request hits the API gateway linked to this lambda_function this is the function that gets called. The request data is passed as the event variable which is a dictionary object, in this case it the json of the POST request from which we extract the body details """ # Parses the details from the POST request: extracts model and input data # Based on model it imports the trained model from local # Outputs the predicted user based on input data try: prediction = functions.predict_user(request.get_json()) # Below code should be uncommented when running from AWS, above should be commented. # prediction = functions.predict_user(event) return jsonify({'statuscode': 200, 'status': 'success', 'predicted user': str(prediction) }) except Exception as e: return jsonify({'statuscode': 400, 'status': 'error', 'message': str(e)})


উপরের কোডটি ফ্লাস্ক-অ্যাপে সেট করা হয়েছে তবে কিছু লাইনে মন্তব্য ও মন্তব্য না করে আপনি সহজেই Lambda-এ যেতে পারেন।


গঠনটি খুবই সহজ, আমরা কেবল অন্য একটি ফাংশনকে কল করছি, যা হল predict_user() এবং POST অনুরোধ থেকে json বডি ইনপুট হিসাবে প্রদান করে।

predict_user()

 def predict_user(event): """ Gets the input details from the body of the POST request and returns the predicted user """ # Print the event for debugging purposes print(event) # Check if the message has the correct body structure if ['Model', 'HT', 'PPT', 'RRT', 'RPT'] == list(event.keys()): print(f"Model is:", event['Model']) if event["Model"] == "SVM": # Load the trained SVM model from the joblib file model_path = os.path.join(basedir, 'models', 'svm_model.joblib') model = joblib.load(model_path) elif event["Model"] == "RF": # Load the trained Random Forest model from the joblib file model_path = os.path.join(basedir, 'models', 'rf_model.joblib') model = joblib.load(model_path) elif event["Model"] == "XGBoost": # Load the trained XGBoost model from the joblib file model_path = os.path.join(basedir, 'models', 'xgb_model.joblib') model = joblib.load('model_path') # Extract the features from the event dictionary features = [ event['HT']['Mean'], event['HT']['STD'], event['PPT']['Mean'], event['PPT']['STD'], event['RRT']['Mean'], event['RRT']['STD'], event['RPT']['Mean'], event['RPT']['STD'] ] # Make a prediction using the loaded model and the extracted features prediction = model.predict([features]) # Return the predicted user return prediction[0]


এই ফাংশনটি সরলভাবে লেখা হয়েছে, মডেল প্যারামিটারের উপর নির্ভর করে আমরা নির্দিষ্ট প্রাক-প্রশিক্ষিত এমএল মডেল লোড করার সিদ্ধান্ত নিই।


প্রাক-প্রশিক্ষিত মডেলের সাহায্যে আমরা ব্যবহারকারীর ভবিষ্যদ্বাণী করি এবং অনুরোধকারীকে ফেরত দেই। ( শেষ পোস্টম্যান প্রতিক্রিয়া ছবি দেখুন )


মডেলদের প্রশিক্ষণ এই নিবন্ধের প্রথম অংশে করা হয়েছে, উপরের লিঙ্কটি দেখুন


আপনি যদি নিবন্ধটি পছন্দ করেন এবং আমাকে সমর্থন করতে চান তবে নিশ্চিত করুন:

🔔 আমাকে অনুসরণ করুন বোগদান টুডোরাচে

🔔 আমার সাথে সংযোগ করুন: LinkedIn | রেডডিট