Machine Learning – 10 – Feature Selection

ஒரு கோப்பினுள் பல்வேறு columns இருக்கிறதெனில், அவற்றுள் எந்தெந்த column மதிப்புகளைப் பொறுத்து நாம் கணிக்கின்ற விஷயம் அமைகிறது எனக் கண்டுபிடிப்பதே feature selection ஆகும். உதாரணத்துக்கு 400, 500 columns-ஐக் கொண்டுள்ள கோப்பிலிருந்து, prediction-க்கு உதவும் ஒருசில முக்கிய columns-ஐத் தேர்வு செய்வது feature selection ஆகும். இதற்கு முதலில் நம்மிடமுள்ள columns-process variables, manipulated variables & disturbance variables எனும் 3 வகையின் கீழ் பிரிக்க வேண்டும். இதில் manipulated மற்றும் disturbance இரண்டும் input-க்கான parameter-ஆகவும், process என்பது output-க்கான parameter-ஆகவும் அமைகிறது.

  • Manipulated Variables (MV) – இவ்வகையின் கீழ் அமையும் columns-ல் உள்ள மதிப்புகளை நம்மால் மாற்றி அமைக்க முடியும். நமக்கேற்றவாறு  இதனை நாம் கையாளலாம்.
  • Disturbance Variables (DV) – இதனை நம்மால் நேரடியாக மாற்றி அமைக்க முடியாது. ஆனால் manipulated-ன் மதிப்பினைப் பொறுத்தே இதன் மதிப்பு அமைகிறது.
  • Process Variales (PV) – பல்வேறு செயல்முறைகளைப் பொறுத்து இதிலுள்ள மதிப்புகள் அமையும். அதாவது மற்ற columns மதிப்புகளைப் பொறுத்தே இதன் மதிப்பு அமைகிறது. எனவே இதில் நாம் மாற்றுவதற்கு எதும் கிடையாது .

மேற்கண்டவாறு பிரித்த பின் ஒவ்வொரு variable-க்கும் மற்ற variables-வுடன் இருக்கும் தொடர்பினைக் கணக்கிடல் வேண்டும். இதுவே correlation எனப்படும். இதன் மதிப்பு -1 லிருந்து +1 வரை அமையும். -1 என்பது எதிர்மறைத் தொடர்பையும், +1 நேர்மறைத் தொடர்பையும் குறிக்கும். 

உதாரணத்துக்கு “உண்ணும் உணவின் அளவு”, “உடற்பயிற்சி செய்யும் நேரம்”, “எடை குறைப்பு புத்தகங்களைப் படிக்கும் நேரம்” போன்ற சில பல features-ஐ வைத்து, உடலின் எடைஎனும் ஒரு விஷயத்தை நாம் கணிக்கப் போவதாகக் கொண்டால் அதற்கான correlation matrixல் உள்ள மதிப்புகள் பின்வருமாறு அமையும். 

  • Positive Correlation: உடலின் எடைக்கும் உண்ணும் உணவின் அளவுக்குமான தொடர்பு +1 என வெளிப்படும். உணவின் அளவு அதிகரித்தால் எடை அதிகரிக்கும்.
  • Positive Correlation: உடலின் எடைக்கும் உடற்பயிற்சி செய்யும் நேரத்திற்குமான தொடர்பு -1 என வெளிப்படும். உடற்பயிற்சி செய்யும் நேரம் அதிகரித்தால் உடலின் எடை குறையும்.
  • Zero Correlation: எடை குறைப்பு பற்றிய புத்தகங்களைப் படிக்கும் நேரத்துடன் கொண்டுள்ள தொடர்பு 0 என வெளிப்படும். படிக்கும் நேரத்திற்க்கும் உடலின் எடைக்கும் யாதொரு சம்மந்தமும் இல்லை
  • இவையல்லாத வேறு சில features இருப்பின் அவை கொண்டுள்ள தொடர்பினைப் பொறுத்து, அதற்கான மதிப்பு -1 லிருந்து 1 வரை அமையும்.

Highly Correlated features (MV – DV) : 

கீழ்க்கண்ட உதாரணத்தில், data.csv எனும் கோப்பிற்குள் உள்ள columns-ல் எது எது என்னென்ன வகையான parameters எனும் விவரத்தை நாம் domain expert-ன் உதவி கொண்டு தெரிந்து கொள்ளலாம். உதாரணத்துக்கு A முதல் Z வரை பெயர்கள் கொண்ட 26 features-ல் A,B,C,D,E,F ஆகியவை process parameters ஆகவும், மற்றவை manipulated மற்றும் disturbance parameters ஆகவும் கருதியுள்ளோம். எனவே முதலில் process parameters அனைத்தும் dataframe-லிருந்து நீக்கப்படுகின்றன. பின்னர் மீதியுள்ள manipulated மற்றும் disturbance parameters-க்கான correlation கண்டுபிடிக்கப்பட்டு, அது கோப்பு வடிவிலும், வரைபட வடிவிலும் வெளிப்படுத்தப்பட்டுள்ளது. இவற்றில் அதிக அளவு நேர்மறை மற்றும் எதிர்மறைத் தொடர்பு கொண்டுள்ளவை dataframe-லிருந்து நீக்கப்படுகின்றன. அதாவது -98,-99,-1,98,99,1 எனும் தொடர்பினைப் பெற்றிருக்கும் இரு features-ல் ஒன்று நீக்கப்படுகிறது. இவ்வாறாக manipulated மற்றும் disturbance-க்கிடையில் அதிகத் தொடர்பு கொண்டுள்ள அம்சங்கள் கண்டுபிடிக்கப்பட்டு அவற்றில் ஒன்று நீக்கப்படுகிறது. மீதமுள்ள அனைத்தும் training_data எனும் பெயரில் சேமிக்கப்படுகிறது. இதுவே நமது process variable-க்கும், தேர்ந்தெடுக்கப்பட்ட manipulated & disturbance variable-க்குமான தொடர்பினைக் கண்டறிவதற்கு உள்ளீடாக அமைகிறது. இவைகள் அனைத்தும் நாம் கணிக்க வேண்டிய process variable-வுடன் கொண்டுள்ள தொடர்பினைக் கண்டுபிடித்து, அதில் 0 தொடர்பு பெற்றுள்ள columns-ஐ நீக்குவது அடுத்த படியாக அமைகிறது. 

நிரலுக்கான வெளியீடு:

(20, 17) Index([‘G’, ‘H’, ‘J’, ‘K’, ‘M’, ‘N’, ‘P’, ‘Q’, ‘R’, ‘S’, ‘T’, ‘U’, ‘V’, ‘W’, ‘X’, ‘Y’, ‘Z’], dtype=’object’)

Zero Correlated features (PV – MV,DV) : 

“A” என்பது நாம் கணிக்க வேண்டிய process parameter எனக் கொள்வோம். training_data எனும் கோப்பிற்குள், இந்த  “A” -வை கடைசி column-ஆக இணைத்து கீழ்க்கண்ட நிரலுக்கு உள்ளீடாக அனுப்பவும். பின்னர் A-க்கும் மற்ற parameters-க்குமான தொடர்பினைக் கண்டுபிடித்து, அதில் 0 தொடர்பு கொண்டுள்ள MV, DV -யை நிக்கிவிடவும். இங்கு 0.6 -க்கும் குறைவான அதாவது 0.1, 0.2, 0.3, 0.4, 0.5 எனும் மதிப்புகளைப் பெற்றுள்ள columns நீக்கப்படுகின்றன. 

நிரலுக்கான வெளியீடு:
(20, 18) Index([‘G’, ‘H’, ‘J’, ‘K’, ‘M’, ‘N’, ‘P’, ‘Q’, ‘R’, ‘S’, ‘T’, ‘U’, ‘V’, ‘W’, ‘X’, ‘Y’, ‘Z’, ‘A’], dtype=’object’)
(20, 17) Index([‘G’, ‘H’, ‘J’, ‘K’, ‘M’, ‘N’, ‘P’, ‘Q’, ‘R’, ‘S’, ‘T’, ‘U’, ‘V’, ‘W’, ‘X’, ‘Y’, ‘A’], dtype=’object’)

Recursive Feature Elimination Technique : 

இது RFE technique என்று அழைக்கப்படும். Randomforest, Decisiontree, Adaboost, Extratrees, gradient boosting போன்ற algorithms தானாகவே features-ஐ தேர்வு செய்யும் அளவுக்கு திறன் பெற்று விளங்கும். ஆனால், linear regression, ridge, lasso, elasticnet போன்ற algorithms-க்கு இத்தகைய techniques மூலம் நாம் தான் features-ஐ தேர்வு செய்து வழங்க வேண்டும். இந்த நுட்பமானது ஒரு algorithm-ஐ உள்ளீடாகப் பெற்றுக் கொண்டு, ஒவ்வொரு feature-க்கும் ranking-ஐ வழங்குகிறது.. இதில் rank 1 பெற்றுள்ள feature-ஐ மட்டும் தேர்வு செய்து நாம் பயன்படுத்தலாம்.

இங்கு feature_importances_ எனும்  method, decisiontree-ன் மீது செயல்பட்டு, அனைத்து features-க்குமான ranking-ஐ வெளிப்படுத்தியுள்ளதைக் காணலாம். ஆனால் இந்த method, linear regression மீது செயல்படாது. எனவே RFE மூலம் நாம்தான் ranking-ஐ வெளிப்படுத்துமாறு செய்ய வேண்டும். பின்னர் இதிலிருந்து Rank 1 வெளிப்பட்டுள்ள features-ஐ மட்டும் தேர்வு செய்து பயன்படுத்தலாம்.

நிரலுக்கான வெளியீடு:
Selected Features for DecisionTree [9.52359304e-04 0.00000000e+00 0.00000000e+00
0.00000000e+00 0.00000000e+00 6.15147906e-03 2.23327627e-03 7.70622020e-02
0.00000000e+00 0.00000000e+00 1.10263284e-03 2.33946020e-04
0.00000000e+00 0.00000000e+00 9.12264104e-01 0.00000000e+00]
Selected Features for LinearRegression [ 1 1 10 1 1 9 8 3 5 2 6 7 1
1 1 4 1]

%d bloggers like this: