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 कीस्ट्रोक घटनाओं का विश्लेषण करके पूरा किया जाता है - जो टाइपिंग पैटर्न निकालने के लिए कंप्यूटर कीबोर्ड पर एक कीस्ट्रोक बनाते हैं। लेख इस बात की जांच करेगा कि किसी उपयोगकर्ता की भविष्यवाणी करने के लिए वास्तविक जीवन स्थितियों में इन एमएल मॉडल का उपयोग कैसे किया जा सकता है।


पिछले लेख में बताया गया था कि हम 100 उपयोगकर्ताओं के +880 कीबोर्ड इनपुट के सेट पर 3 एमएल मॉडल को कैसे प्रशिक्षित कर सकते हैं, जिन्हें एक ही पाठ को 12 बार लिखने के लिए कहा गया था।


वे ऐप्स जिनका उपयोग हम वास्तविक जीवन की स्थिति का अनुकरण करने के लिए करेंगे।

वास्तविक जीवन की स्थिति का अनुकरण


वास्तुकला

सैंडबॉक्स : वास्तविक जीवन परिदृश्यों का परीक्षण करने के लिए हम इसका उपयोग करेंगे डाकिया + फ्लास्क .


उत्पादन : जब हम इस एप्लिकेशन को उत्पादन में ले जाना चाहते हैं तो हम फ्लास्क कोड के बिट्स को कोड के साथ बदल सकते हैं एडब्ल्यूएस लैम्ब्डा .


फ्लास्क एक वेब-फ्रेमवर्क है जिसका उपयोग हम लैम्ब्डा + एपीआई गेटवे को दोहराने के लिए कर सकते हैं।


लैम्ब्डा 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 में आपको बस स्क्रिप्ट चलाने की आवश्यकता है क्योंकि यह स्वचालित रूप से फ्लास्क ऐप शुरू कर देगा।


मेरे मामले में, मैं IntelliJ Idea का उपयोग कर रहा हूं इसलिए मैं बस स्क्रिप्ट चलाता हूं (दाएं क्लिक करें → चलाएं):

आईडीई

वास्तविक जीवन परिदृश्य का परीक्षण

एक बार जब स्क्रिप्ट आईडीई के निचले हिस्से में शुरू हो जाती है तो आपको पायथन कंसोल दिखाई देगा जो सूचित करेगा कि वेबसेवा लोकलहोस्ट और पोर्ट 5000 पर शुरू हो गई है (मुझे लगता है कि यह डिफ़ॉल्ट है हालांकि इसे कॉन्फ़िगर भी किया जा सकता है)।

फ्लास्क ऐप के साथ पायथन कंसोल अनुरोधों की प्रतीक्षा कर रहा है


अब हर बार जब हम HTTP अनुरोध POST करते हैं, तो हम वास्तविक जीवन परिदृश्य का अनुकरण करते हुए फ्लास्क ऐप को ट्रिगर कर देंगे।

पोस्ट अनुरोध:

पोस्ट बॉडी

पायथन कंसोल उत्तर:

सांत्वना उत्तर

डाकिये की प्रतिक्रिया:

डाकिये की प्रतिक्रिया

कोड डीपडाइव

 @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)})


उपरोक्त कोड फ्लास्क-ऐप पर सेट है, हालांकि कुछ पंक्तियों पर टिप्पणी और अनटिप्पणी करके, आप आसानी से लैम्ब्डा पर स्विच कर सकते हैं।


संरचना बहुत सरल है, हम बस एक अन्य फ़ंक्शन को कॉल कर रहे हैं, जो कि Prediction_user() है और POST अनुरोध से json बॉडी को इनपुट के रूप में प्रदान कर रहा है।

भविष्यवाणी_उपयोगकर्ता()

 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]


यह फ़ंक्शन सरल रूप से लिखा गया है, मॉडल पैरामीटर के आधार पर हम विशिष्ट पूर्व-प्रशिक्षित एमएल मॉडल को लोड करने का निर्णय लेते हैं।


पूर्व-प्रशिक्षित मॉडल के साथ हम उपयोगकर्ता की भविष्यवाणी करते हैं और उसे अनुरोधकर्ता को लौटा देते हैं। ( अंतिम पोस्टमैन प्रतिक्रिया फोटो देखें )


मॉडलों का प्रशिक्षण इस लेख के भाग I में किया गया है, ऊपर दिए गए लिंक को देखें


यदि आपको लेख पसंद आया और आप मेरा समर्थन करना चाहेंगे, तो सुनिश्चित करें:

🔔 मेरे पीछे आओ बोगदान टुडोराचे

🔔 मेरे साथ जुड़ें: लिंक्डइन | reddit