Gradient Descent
இதன் cost மதிப்பு infinity என்பதால், இதைக் குறைப்பதற்கு ஒன்றுமில்லை, இருந்தாலும் gradient descent முறையில் சரியான பெராமீட்டர்ஸ் கண்டுபிடிக்கலாம். லீனியர் ரெக்ரேஷனில் ஒரு குறிப்பிட்ட error மதிப்பு கொஞ்சம் கொஞ்சமாகக் குறைந்து கொண்டே வரும்போது, அதற்கான வரைபடமானது கின்னம் போன்று குவிந்த நிலையில் அமையும். இந்நிலைக்கு convex என்று பெயர். ஆகவே அக்குவிநிலையின் அடிப்பாகமே குளோபல் ஆப்டிமம் ஆகும். ஆனால் லாஜிஸ்டிக் ரெக்ரேஷனில் error மதிப்பு 0,1 0,1 என ஏறியிறங்கி ஏறியிறங்கி பல்வேறு லோக்கல் ஆப்டிமம் கொண்டிருக்கும். இது போன்ற non – convex நிலைக்கும் Gradient Descent பயன்படுத்தலாம்.
Support Vector Machine
லாஜிஸ்டிக் ரெக்ரேஷன் செய்யும் அதே வேலையை இன்னும் துல்லியமாகச் செய்ய உதவுவதே Support Vector Machine ஆகும். லீனியர் டேட்டாவுக்கு லாஜிஸ்டிக் அமைக்கும் டெசிஷன் பவுண்டரியை இது இன்னும் துல்லியமாக, இரு பக்கமும் சமமான மார்ஜின் விட்டு அமைக்கிறது. எனவேதான் இது large margin classifier என்று அழைக்கப்படுகிறது. Non-linear டேட்டாவுக்கு features எண்ணிக்கையை அதிகப்படுத்தாமல், kernel என்ற கான்செப்ட்டை பயன்படுத்துகிறது. இது ஒவ்வொரு feature-லும் ஒரு data point-ஐ தேர்ந்தெடுத்து அதனை landmark என்று அழைக்கிறது. மற்ற data points அந்த லேண்ட்மார்க்குக்கு அருகில் இருப்பின் 1 எனவும், இல்லையெனில் 0 எனவும் அமைத்து அதே feature-ஐ மறு உருவாக்கம் செய்கிறது. இதனால் Non லீனியர் வடிவம் நீங்கி விடுகிறது. features-ம் டேட்டாவும் சரியான விகிதத்தில் இருக்கும்பொழுது, தேவையில்லாமல் Non லீனியர் டேட்டாவை கவர் செய்யும் பொருட்டு, features அதிகரிக்கப்படுவதை இது தவிர்க்கிறது. polynomial kernel, string kernel, chi squared kernel, histogram intersection kernel, gaussian kernel போன்றவை இதற்காகப் பயன்படுகின்றன. Linear kernel என்பது லீனியர் டேட்டாவிற்காக SVM பயன்படுத்தும் கிளாசிபையர் ஆகும்.
Multi class classification – Decision Trees & Random Forest
இரண்டில் ஒன்றைத் தேர்ந்தெடுக்க உதவுவது லாஜிஸ்டிக் ரெக்ரேஷன் எனில், பலவற்றிலிருந்து ஒன்றைத் தேர்ந்தெடுக்க உதவுவது மல்டி கிளாஸ் கிளாசிஃபிகேஷன் ஆகும். இதுவும் அதே சிக்மாய்டு ஃபங்ஷனைத் தான் பயன்படுத்துகிறது. எடுத்துக்காட்டாக, பத்து வகையான கேட்டகிரி இருந்தாலும், ஒவ்வொரு முறையும் ஒரு விசயத்தை ஒன்று எனவும், மற்ற ஒன்பது விஷயங்களை ஜீரோ எனவும் வைத்து, பத்து முறை கிளாசிஃபை செய்து கற்றுக் கொள்கிறது. Decision Trees, Random Forest போன்றவை இதற்கு உதவுகின்றன. Entropy அல்லது Gini gain போன்ற மெட்ரிக்சை இவை பயன்படுத்துகின்றன. என்ட்ரோபி என்பது ஒவ்வொரு பிரிவிலும் எந்த அளவுக்கு மற்ற வகை டேட்டாக்கள் கலந்துள்ளன என்பதைக் கணக்கிட உதவும் மெட்ரிக்ஸ் ஆகும். கினி கெயின் என்பது ஒவ்வொரு feature-ம் கலப்பு விகிதத்தைக் குறைக்க எந்த அளவுக்கு முனைகின்றன என்பதைக் கணக்கிட உதவும் மெட்ரிக்ஸ் ஆகும். இவை முதலில் என்ட்ரோபியை கணக்கிட்டு, பின்னர் ஏதோ ஒரு feature-ஐ எடுத்து வகைப்படுத்திய பின், மீண்டும் ஒவ்வொரு கேட்டகிரியிலும் என்ட்ரோபியை கணக்கிடும். இவ்வாறாக தொடர்ந்து ஒவ்வொரு ஃபீச்சர்ரையும் வைத்து பிரித்துக் கொண்டே வந்து கடைசியில், ஒவ்வொரு கேட்டகிரியிலும் என்ட்ரோபி மதிப்பு ஜீரோவாகவோ அல்லது அதற்கு நெருங்கிய எண்ணாகவோ வரும்பொழுது கற்றலை நிறுத்திக் கொள்கிறது. இவ்வாறாக, random முறையில் features-ஐ தேர்ந்தெடுத்து டேட்டாவை வகைப்படுத்த முயலுவதால் இவை, Eager Learners என்று அழைக்கப்படுகின்றன.
Clustering
டேட்டாவை பல்வேறு குழுக்களாக பிரிப்பதற்கு கிளஸ்டரிங் என்று பெயர். K- means எனும் அல்காரிதம் இதற்கு உதவுகிறது. இதில் K என்பது எத்தனை குழுக்களாகப் பிரிக்க வேண்டும் என்பதைக் குறிக்கிறது. அதைக் கண்டுபிடிக்கும் வேலையை Elbow method செய்கிறது. எடுத்துக்காட்டாக, 30 மாணவர்கள் அடங்கிய வகுப்பறையை குறைந்தபட்சம் 2 குழுக்களாகவோ, அதிகபட்சம் 15 குழுக்களாகவோ (இருவர் இருவராக) பிரிக்கலாம். ஆகவே எந்த மதிப்பு பொருத்தமானதாக இருக்கும் என்பதைக் கண்டுபிடிக்க உதவுவதே Elbow method ஆகும். இது 2,3,4….. என பல்வேறு எண்ணிக்கையில் குழுக்களை அமைத்து, சோதித்துப் பார்த்து அதிலிருந்து ஒரு சரியான எண்ணை தேர்ந்தெடுக்கிறது. ஒவ்வொரு முறையும் குழுவில் உள்ள தரவுகள் அதன் சராசரி மதிப்பிலிருந்து (centroids) எவ்வளவு தூரம் தள்ளி இருக்கின்றன என்பதைக் கணக்கிட்டு (cdist) அதனை ஒரு வரைபடமாக வரைகிறது. குழுக்களின் எண்ணிக்கை பெருகப் பெருக, இந்த cdist மதிப்பு குறைவதை வரைபடத்தில் காணலாம். ஒரு குறிப்பிட்ட இடத்தில் இது செங்குத்தாக இறங்கிக் குறைவது நின்று, சற்று சாய்வான நேர்கோட்டின் வழி, மீச்சிறு அளவில் குறைவதைக் காணலாம். பார்ப்பதற்கு செங்குத்தாக இறங்கி நீளும் முழங்கையின் முட்டி போன்று காணப்படுவதால், இதற்கு elbow method என்று பெயர் வந்தது. மடங்கி விரியும் இடத்தில் எந்த எண் உள்ளதோ, அந்த எண்ணிக்கையில் குழுக்களை அமைக்க வேண்டும் என்பதே இதன் பொருள்.
Euclidean Distance என்பது இரண்டு வெக்டர்களுக்கிடையே உள்ள தூரத்தைக் கணக்கிட உதவும் முறை ஆகும். இதை வைத்தே cdist மதிப்பு கணக்கிடப்படுகிறது.
Silhouette coefficient என்பது எந்த அளவுக்கு திறம்பட குழுக்கள் பிரிக்கப்பட்டுள்ளது என்பதை அறிந்து கொள்ள உதவும் மெட்ரிக் ஆகும். ஒவ்வொரு குழுவிலும் உள்ள டேட்டாக்கள் எந்த அளவு இடைவெளி விட்டு அமைந்துள்ளன என்பதையும், ஒரு குழுவுக்கும் அடுத்த குழுவுக்கும் இடையே உள்ள இடைவெளியையும் கணக்கிட்டு ஸ்கோர் ஒன்றினை வெளிப்படுத்தும். குழுக்களின் எண்ணிக்கை அதிகரிக்க அதிகரிக்க இந்த ஸ்கோர் குறைந்து கொண்டே வரும்.
Handling Text in Training Data – Vectorization
வார்த்தைகளையும், வாக்கியங்களையும் பெற்றிருக்கும் பயிற்சி டேட்டாவை எண் வடிவில் குறிப்பதற்கு vectorization என்று பெயர். எடுத்துக்காட்டாக Male, Female, Transgender ஆகிய மூன்று மதிப்புகள் மட்டுமே sex எனும் column-ல் காணப்படும். இதுபோன்ற ஓரிரு வார்த்தைகளை திரும்பத் திரும்ப வெளிப்படுத்தும் ஒன்றை வெக்டராக மாற்ற Dictvectorizer() பயன்படுகிறது. இது அம்மதிப்புகளை 0,1,2 எனும் மூன்று எண்களால் குறியிட்டு ஒரு டிக்க்ஷனரியை உருவாக்கும். பின்னர் மும்மூன்று elements-ஐக் கொண்ட வெக்டர்களால் இது ஒவ்வொரு மதிப்பையும் குறிக்கும். அதாவது [1 0 0] = Male, [0 1 0] = Female, [0 0 1] = Transgender. ஒன்று எந்த இடத்தில் உள்ளதோ அந்த வார்த்தையைக் குறிப்பதாக அர்த்தம். இதுவே one-hot encoding என்று அழைக்கப்படுகிறது. டிக்க்ஷனரியில் உள்ள வார்த்தைகளே tokens ஆகும். டோக்கன்ஸ் எண்ணிக்கைக்கு ஏற்ப வெக்டரின் அளவு அதிகரிக்கும்.
அடுத்ததாக பல்வேறு வாக்கியங்களைப் பெற்று விளங்கும் complaints, feedback போன்றவற்றை வெக்டராக மாற்ற Countvectorizer() பயன்படுகிறது. இது அனைத்து வாக்கியங்களிலும் உள்ள unique வார்த்தைகளை கணக்கிட்டு, அவற்றை 0,1,2…. n எனக்குறியிட்டு ஒரு டிக்க்ஷனரியை உருவாக்கும். பின்னர் இதில் உள்ள டோக்கன்ஸ் எண்ணிக்கைக்கு ஏற்ப ஒரு வெக்டரை உருவாக்கி, ஒவ்வொரு வாக்கியத்தையும் குறிக்கும். ஒவ்வொரு வாக்கியத்திலும் எந்தெந்த வார்த்தைகள் மட்டும் உள்ளனவோ அந்த இடத்தில் 1 எனவும், மீதி இடங்களில் 0 எனவும் அமைத்து அந்த வெக்டர் காணப்படும். இதுவே bag of words ஆகும்.
- Euclidean distance என்பது இரண்டு வெக்டர்களுக்கிடையேயான தூரத்தைக் கணக்கிடுகிறது. அதாவது வெக்டர்களாக மாற்றப்பட்ட வாக்கியங்கள் எந்த அளவுக்கு ஒன்றோடொன்று தொடர்புடையவை என்பதைக் கணக்கிட இது உதவும்.
- வாக்கியங்களை 0,1 எனக் குறிப்பது binary frequency எனில், ஒரே வாக்கியத்தில் இருமுறை இடம் பெற்றுள்ள வார்த்தையை 2 எனக் குறிப்பது term frequency ஆகும். இதை normalize செய்து வெளிப்படுத்த விரும்பினால் Tfidvectorizer() -ஐப் பயன்படுத்தலாம்.
- Hashingvectorizer என்பது டிக்க்ஷனரி உருவாக்கம் என்ற இடைநிலையை தவிர்த்து நேரடியாக வெக்டரை உருவாக்குகிறது.
Hughes Effect – Sparse vector
அதிக அளவு 0- ஐக் கொண்ட வெக்டர் Sparse vector என்ற பெயரில் அழைக்கப்படும். மேற்கண்ட முறைகளில், tokens அதிகரித்தால் வெக்டரில் உள்ள 0’s அதிகரிக்கும். ஜென் ஏ.ஐ. பகுதியில் இந்த வெக்டரின் அளவு தான் no. of features ஆகும். ஆகவே Features அதிகம், டேட்டா குறைவு என்பது overfitting பிரச்சனையை உண்டாக்கும் என்பதை முன்னரே கண்டோம். அதுவே இங்கு curse of dimensionality / Hughes effect என்று அழைக்கப்படுகிறது. இப்பிரச்சனையைக் கையாள்வதற்காக வந்ததே NLTK package ஆகும்.
- இது tokens அளவைக் குறைக்கிறது.
- இதை import செய்வதன் மூலம் ஒருசில ஆங்கிலத் துணைச் சொற்கள் சேமிக்கப்படுவதில்லை. அவை தானாகவே அர்த்தம் புரிந்து கொள்ளப்படுகின்றன.
- அதேபோல் ஒரே மாதிரியான பல சொற்களை தனித்தனி டோக்கன்களாக சேமிக்காமல், அதன் வேர்ச்சொல் மட்டும் சேமிக்கப்படுகிறது. மற்றவை தானாகவே அர்த்தம் புரிந்து கொள்ளப்படுகின்றன.
இதுபோன்ற பல்வேறு strategy-களை பயன்படுத்தி NLTK பேக்கேஜ் வெக்டரின் அளவினைக் குறைக்க உதவுகிறது. இதைப் பற்றி விளக்கமாக ஜென் ஏ.ஐ. பகுதியில் காணலாம்.
முந்தைய பகுதிகள் –
எளிய தமிழில் Generative AI – 1
எளிய தமிழில் Generative AI – 2