Polynomial Regression
ஒரு நேர் கோட்டில் பொருந்தாத சற்று சிக்கலான தரவுகளுக்கு polynomial regression-ஐப் பயன்படுத்தலாம். கீழ்க்கண்ட நிரலில் ஒரு வீட்டிற்கான சதுர அடியும், அதற்கான விலையும் கொடுக்கப்பட்டுள்ளது. இதில் linear மற்றும் 2nd order, 3rd order, 4th order & 5th order polynomial பொருத்திப் பார்க்கப் படுகிறது.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import pandas as pd | |
import matplotlib.pyplot as plt | |
from sklearn.linear_model import LinearRegression | |
from sklearn.preprocessing import PolynomialFeatures | |
X = pd.DataFrame([100,200,300,400,500,600],columns=['sqft']) | |
y = pd.DataFrame([543543,34543543,35435345,34534,34534534,345345],columns=['Price']) | |
lin = LinearRegression() | |
lin.fit(X, y) | |
plt.scatter(X, y, color = 'blue') | |
plt.plot(X, lin.predict(X), color = 'red') | |
plt.title('Linear Regression') | |
plt.xlabel('sqft') | |
plt.ylabel('Price') | |
plt.show() | |
for i in [2,3,4,5]: | |
poly = PolynomialFeatures(degree = i) | |
X_poly = poly.fit_transform(X) | |
poly.fit(X_poly, y) | |
lin2 = LinearRegression() | |
lin2.fit(X_poly, y) | |
plt.scatter(X, y, color = 'blue') | |
plt.plot(X, lin2.predict(poly.fit_transform(X)), color = 'red') | |
plt.title('Polynomial Regression') | |
plt.xlabel('sqft') | |
plt.ylabel('Price') | |
plt.show() |
linear regression-ஐ வைத்துப் பொருத்தும் போது, அதற்கான கோடு எந்த ஒரு தரவுகளின் மீதும் பொருந்தாமல் பின்வருமாறு அமைகிறது. இதுவே under fitting எனப்படும்.
எனவே 2nd order முறையில் அதனுடைய cube கண்டுபிடிக்கப்பட்டு அவற்றை தரவுகளுடன் பொருத்த முயலும்போது பின்வருமாறு அமைகிறது. இதுவே non-linear function எனப்படும். அதாவது இது ஒரு நேர் கோடாக அமையாது.
அவ்வாறே 3rd order-ல் தரவுகளுடைய cube கண்டுபிடிக்கப்பட்டு அவை தரவுகளுக்கு இன்னும் சற்று அருகில் செல்வதைக் காணலாம்.
கடைசியாக 4th order-ல் அனைத்துத் தரவுகளின் மீதும் முழுதாகப் பொருந்துமாறு non-linear அமைகிறது. இதுவே over fitting என்று அழைக்கப்படும். இதுபோன்ற over fitting-ம் சரியானது அல்ல.
எனவே எந்த order-ல் அனைத்துத் தரவுகளின் மீதும், நமது non-linear பரவலாகப் பொருந்துகிறதோ (over fitting அல்லாமல்), அதையே நாம் கணிப்பிற்கு எடுத்துக் கொள்ளலாம். இம்முறையில் ஒரு எண்ணிற்கு அடுத்தடுத்த மடங்குகள் கண்டுபிடிக்கப்படுவதால் , இதற்கான சமன்பாடு அதன் மடங்குகளைப் பொறுத்து பின்வருமாறு அமைகிறது. அதிக அளவில் எண்கள் அதிகரிக்கப்படுவதால் feature scaling-ன் பயன்பாடு இங்கு அதிக முக்கியத்துவம் பெறுகிறது.
Underfitting – High bias:
கணிப்புக்கான கோடானது தரவுகளின் மீது அதிகமாகப் பொருந்தாத நிலையே underfitting எனப்படுகிறது. அதிக அளவு தரவுகளுக்கு குறைந்த features கொண்டு கணிக்கும் போது இந்நிலை ஏற்படுகிறது. இதுவே high bias பிரச்சனை என்றும் அழைக்கப்படுகிறது. ஏனெனில் மிகக் குறைந்த அளவு அம்சங்களைச் சார்ந்தே இது செயல்படுகிறது. உதாரணத்துக்கு 50,000 தரவுகளுக்கு(m) இரண்டே இரண்டு features-ஐக் கொண்டு கணிக்கும் போது தரவுகள் எதுவும் கோட்டில் பொருந்தாது. எனவே இதுபோன்ற பிரச்சனைக்கு தரவுகளின் எண்ணிக்கையை அதிகரிப்பது தீர்வாகாது. features- ன் எண்ணிக்கையை மட்டுமே அதிகரிக்க வேண்டும்.
Overfitting – High variance:
அதிக அளவு features-ஐ சேர்ப்பதன் மூலம் underfitting-ஐத் தவிர்க்கலாம் என ஏற்கெனவே பார்த்தோம். அதுவே அளவுக்கு அதிகமாக சேர்த்துவிட்டால், overfitting என்ற நிலை ஏற்பட்டு விடுகிறது. இதனைத் தவிர்ப்பதற்காக சேர்க்கப்படுவதே regularization parameter ஆகும். அதாவது தரவுகளின் எண்ணிக்கை குறைவாக இருந்து, features அதிகமாக இருக்கும்போது இந்நிலை ஏற்படும். உதாரணத்துக்கு வெறும் 50 தரவுகளுக்கு, 250 features கொண்டு கணிக்கும்போது கோடானது, அனைத்துத் தரவுகளின் மீதும் அளவுக்கு அதிகமாகப் பொருந்துகிறது. இதுவே high variance என்று அழைக்கப்படுகிறது. இதனைத் தவிர்க்க features எண்ணிக்கையை மிகவும் குறைத்தாலும் high bias ஆகிவிடுகிறது. இதுவே bias-variance tradeoff என்று அழைக்கப்படுகிறது. இது போன்ற பிரச்சனைகளை தவிர்க்க features எண்ணிக்கையை சரியான அளவுக்கு குறைக்க வேண்டும் அல்லது regularization-ஐப் பயன்படுத்தலாம்.
Regularization:
இது ஒவ்வொரு feature-வுடனும் இணைக்கப்படும் parameter-ன் (தீட்டாக்களின்) அளவைக் குறைக்கிறது. எனவே features-ன் எண்ணிக்கை அதிகமாக இருந்தாலும், அவை கணிப்பில் குறைந்த அளவே பங்கேற்குமாறு செய்யலாம். linear regression-வுடன் இது இணையும் போது, அதற்கான சமன்பாடு பின்வருமாறு அமைகிறது.
இதில் லாம்டா என்பதுதான் regularization-க்கான parameter. இதன் மதிப்பு 1 லிருந்து தொடங்கி அனைத்து feature –க்கும் அமைவதைக் காணவும் (j =1 to n). ஏனெனில் x0 –ன் மதிப்பு எப்போதும் 1 என இருக்குமென்பதை ஏற்கனவே கண்டோம். ஆகவே தீட்டா0 –வுடைய மதிப்பைக் குறைக்கத் தேவையில்லை.
அதேபோல் லாம்டாவின் மதிப்பு மிக அதிகமாகவும் இருக்கக் கூடாது. மிகக் குறைவாகவும் இருக்கக் கூடாது. குறைவாக இருந்தாலும், overfitting-ஐத் தவிர்க்காது. அதிகமாக இருந்தாலும் bias ஏற்படக் காரணமாகிவிடும். எனவே சரியான அளவில் இருக்க வேண்டும்.
Gradient descent-வுடன் regularization இணையும்போது, அதற்கான சமன்பாடு பின்வருமாறு அமையும். இங்கும் தீட்டா0 –வுடன் இணையாமல், தீட்டா1 –லிருந்து regularization இணைக்கப்படுகிறது.
குறைந்த cost கண்டுபிடிப்பதற்கான சாதாரண சூத்திரத்துடன் regularization இணையும்போது, அது பின்வருமாறு அமையும்.
Normal Equation:
இதனை neural network, logistic regression என்று அனைத்து விதமான algorithm-களிலும் பயன்படுத்தலாம்.