లాభాలు:
- డొమైన్ పరిజ్ఞానంతో అర్థవంతమైన డెరివేటివ్ ఫీచర్లను రూపొందించగల సామర్థ్యం మరియు తగిన పద్ధతులతో వర్గీకరణ వర్గాలను ఎన్కోడ్ చేయగల సామర్థ్యం (వన్-హాట్, లేబుల్, లక్ష్యం)
- మోడల్ రకం (ప్రామాణికీకరణ, సాధారణీకరణ) ప్రకారం సంఖ్యా చరరాశులను స్కేల్ చేయగల సామర్థ్యం మరియు అనవసరమైన లేదా అసంపూర్ణ స్కేలింగ్ను నివారించడం
- శిక్షణ/పరీక్ష విభజన తర్వాత మరియు శిక్షణ నుండి మాత్రమే అన్ని పరివర్తనలను నేర్చుకోవడం ద్వారా ఫీచర్ లీకేజీని నివారించగల సామర్థ్యం
మెషీన్ లెర్నింగ్లో ఒక పాత సామెత ఉంది: "అప్లైడ్ మెషీన్ లెర్నింగ్ తప్పనిసరిగా ఫీచర్ ఇంజనీరింగ్." ఎందుకంటే మీరు ఎంచుకున్న అల్గోరిథం కంటే మోడల్కు మీరు అందించే ఇన్పుట్ల నుండి మోడల్ విజయం తరచుగా వస్తుంది. ఫీచర్ ఇంజనీరింగ్ అనేది మోడల్ నుండి నేర్చుకోగలిగే ముడి డేటా నుండి అర్ధవంతమైన సంకేతాలను ఉత్పత్తి చేసే కళ. కృత్రిమ మేధస్సు అనేది ఈ దశలో ఆలోచనల యొక్క గొప్ప మూలం: మీరు "ఈ డేటా నుండి ఏ లక్షణాలను ఉత్పత్తి చేయవచ్చు" అని అడిగినప్పుడు, ఇది డజన్ల కొద్దీ సూచనలను జాబితా చేస్తుంది. కానీ ఈ సూచనలలో కొన్ని విలువైనవి కావచ్చు, కొన్ని పనికిరానివి కావచ్చు మరియు కొన్ని ప్రమాదకరమైనవి కావచ్చు (లీక్). దాన్ని క్రమబద్ధీకరించడం మీ పని.
ఫీచర్ ఇంజనీరింగ్ ఎందుకు
ముడి డేటా చాలా అరుదుగా దాని ఉత్తమ రూపంలో మోడల్కు వస్తుంది. "పుట్టిన తేదీ" కాలమ్ మాత్రమే అర్థరహితం అయితే, దాని నుండి ఉత్పన్నమయ్యే "వయస్సు" విలువ బలమైన సంకేతం. మీరు "ఆర్డర్ టైమ్స్టాంప్" నుండి "వారంలో రోజు", "పగలు/రాత్రి", "ఇది సెలవుదినా" వంటి లక్షణాలను సంగ్రహించవచ్చు. మీరు నిష్పత్తిని ("అప్పు/ఆదాయ నిష్పత్తి") ఉత్పత్తి చేయడానికి రెండు నిలువు వరుసలను కలపవచ్చు. ఇక్కడ, ఫీచర్ ఇంజనీరింగ్ డొమైన్ పరిజ్ఞానాన్ని గణిత సిగ్నల్గా అనువదిస్తుంది; అందుకే ఇది అత్యంత మానవ మేధస్సు అవసరమయ్యే దశ.
వర్గీకరణ వేరియబుల్లను సంఖ్యలుగా మార్చడం: కోడింగ్
నమూనాలు సాధారణంగా సంఖ్యలతో పని చేస్తాయి, వచనంతో కాదు. వర్గీకరణ వేరియబుల్స్ (నగరం, రంగు, ఉత్పత్తి రకం వంటివి) సంఖ్యలుగా మార్చడాన్ని ఎన్కోడింగ్ అంటారు. మూడు సాధారణ పద్ధతులు:
వన్-హాట్ ఎన్కోడింగ్: ప్రతి వర్గానికి 0/1 విలువతో ప్రత్యేక నిలువు వరుసను తెరుస్తుంది. "నగరం" కోసం, ఇస్తాంబుల్, అంకారా, ఇజ్మీర్ నిలువు వరుసలు ఏర్పడతాయి; ఒక కస్టమర్ ఇస్తాంబుల్ నుండి వచ్చినట్లయితే, ఆ కాలమ్ మాత్రమే 1 అవుతుంది. వర్గాల సంఖ్య తక్కువగా ఉన్నప్పుడు అనువైనది; చాలా కేటగిరీలు ఉంటే అది వందల కొద్దీ నిలువు వరుసలను ఉత్పత్తి చేస్తుంది (దీనిని "సైజ్ పేలుడు" అంటారు).
లేబుల్ ఎన్కోడింగ్: ప్రతి వర్గానికి ఒక సంఖ్యను ఇస్తుంది (ఇస్తాంబుల్=0, అంకారా=1). ఇది చాలా సులభం, కానీ ఇది అనుకోకుండా మోడల్కు ఒక క్రమాన్ని బోధించవచ్చు (అంకారా > ఇస్తాంబుల్ లాగా); కాబట్టి ఇది క్రమం లేని వర్గాలలో జాగ్రత్తగా ఉపయోగించబడుతుంది.
టార్గెట్ ఎన్కోడింగ్: ప్రతి వర్గాన్ని ఆ వర్గంలోని టార్గెట్ వేరియబుల్ సగటుతో భర్తీ చేస్తుంది. ఇది చాలా శక్తివంతమైనది, కానీ లీకేజ్ యొక్క అత్యంత ప్రమాదకరమైన మూలం: మీరు పరీక్ష డేటా యొక్క లక్ష్యాన్ని పరిగణనలోకి తీసుకుంటే, మోడల్ భవిష్యత్తును చూస్తుంది. ఇది శిక్షణ డేటా నుండి మరియు జాగ్రత్తగా (క్రాస్ ధ్రువీకరణలోపు) మాత్రమే లెక్కించబడాలి.
స్కేలింగ్: పెద్ద సంఖ్యలు మోడల్ను అధిగమించవు
కొన్ని నమూనాలు (దూర-ఆధారితవి, లీనియర్ మోడల్లు, న్యూరల్ నెట్వర్క్లు) వేరియబుల్స్ స్థాయికి సున్నితంగా ఉంటాయి. "ఆదాయం" (0-500,000) మరియు "వయస్సు" (0-100) ఒకే నమూనాలోకి వస్తే, ఆదాయం పెద్దది అయినందున ఆధిపత్యం చెలాయిస్తుంది. స్కేలింగ్ దీనిని పరిష్కరిస్తుంది. రెండు సాధారణ పద్ధతులు: ప్రామాణీకరణ (ప్రతి విలువను "సగటు నుండి ఎన్ని ప్రామాణిక విచలనాలు"గా మారుస్తుంది) మరియు సాధారణీకరణ (కనిష్ట-గరిష్ట సాధారణీకరణ - విలువలను 0-1 పరిధిలోకి కుదిస్తుంది). చెట్టు-ఆధారిత నమూనాలు (నిర్ణయ వృక్షాలు, యాదృచ్ఛిక అటవీ) స్కేల్ ఇన్సెన్సిటివ్, వాటికి స్కేలింగ్ అవసరం లేదు.
హెచ్చరిక: స్కేలింగ్ మరియు కోడింగ్ పారామితులు (సగటు, ప్రామాణిక విచలనం, వర్గం-సగటు మ్యాపింగ్) శిక్షణ డేటా నుండి మాత్రమే లెక్కించబడాలి, ఆపై అదే పరీక్ష డేటాకు వర్తింపజేయాలి. పరీక్ష డేటాతో సహా లీకేజీ మరియు మీ మోడల్ వాస్తవానికి ఉన్నదాని కంటే మెరుగ్గా కనిపించేలా చేస్తుంది.
ఫీచర్ ఇంజనీరింగ్లో లీకేజీ గుండె
ఫీచర్ జనరేషన్ అంటే డేటా లీకేజ్ చాలా తరచుగా ఉద్భవిస్తుంది. రెండు విలక్షణమైన తప్పులు: టైమ్ లీక్ — భవిష్యత్ సమాచారాన్ని కలిగి ఉండే ఫీచర్ను రూపొందించడం ("చివరి 30 రోజుల సగటు"ని లెక్కించేటప్పుడు సూచన రోజు తర్వాత రోజులతో సహా). గణాంకాల లీకేజీ — శిక్షణ/పరీక్ష విభజనకు ముందు మొత్తం డేటా నుండి ఫీచర్ (స్కేలింగ్ యావరేజ్, టార్గెట్ ఎన్కోడింగ్ విలువ)ను గణించడం. నియమం: ట్రైన్/టెస్ట్ స్ప్లిట్ చేసిన తర్వాత ప్రతి రూపాంతరం మరియు శిక్షణ డేటా నుండి మాత్రమే తెలుసుకోండి. దీన్ని క్రమం తప్పకుండా చేయడానికి సురక్షితమైన మార్గం పైప్లైన్ను ఉపయోగించడం - ఇది ఒకే గొలుసులో అన్ని రూపాంతరాలను సేకరించి, విభజన తర్వాత వాటిని వర్తించే నిర్మాణం.
పద్ధతి
దేనికి
లీకేజీ ప్రమాదం
గమనించండి
వన్-హాట్ ఎన్కోడింగ్
కొన్ని వర్గాలతో వేరియబుల్
తక్కువ
బహుళ వర్గాలలో పరిమాణాన్ని పేలుతుంది
లేబుల్ కోడింగ్
క్రమబద్ధీకరించబడిన వర్గం
తక్కువ
అవుట్ ఆఫ్ ఆర్డర్ తప్పు క్రమాన్ని బోధిస్తుంది
లక్ష్య ఎన్కోడింగ్
బహుళ-వర్గం, బలమైన సంకేతం
చాలా ఎక్కువ
కేవలం విద్య నుండి, CV లో
ప్రమాణీకరణ
సరళ/దూర నమూనాలు
మధ్యస్థ
పారామితి విద్యపై మాత్రమే ఆధారపడి ఉంటుంది
టైమ్ విండో ఫీచర్
సమయ శ్రేణి
అధిక
భవిష్యత్తును జోడించండి
మూడు చిన్న కేసులు
కేసు 1 - విలువైన ఆస్తి. క్రెడిట్ బృందం ముడి "నెలవారీ ఆదాయం" మరియు "నెలవారీ రుణ చెల్లింపు" నిలువు వరుసల నుండి "రుణ-ఆదాయ నిష్పత్తి" లక్షణాన్ని రూపొందించింది. ఈ సింగిల్ డెరైవ్డ్ ఫీచర్ మోడల్ ఖచ్చితత్వాన్ని 71% నుండి 79%కి పెంచింది; ఎందుకంటే ఇది రేటు, సంపూర్ణ ఆదాయం కాదు, నిజంగా ప్రమాదాన్ని నిర్ణయించింది. పాఠం: డొమైన్ పరిజ్ఞానం ద్వారా ఉత్పన్నమయ్యే నిష్పత్తులు బలమైన సంకేతాలు.
కేస్ 2 — టార్గెట్ ఎన్కోడింగ్ లీక్. ఒక బృందం "జిప్ కోడ్"ని టార్గెట్ ఎన్కోడింగ్తో (ఆ ప్రాంతంలోని సగటు చర్న్ రేట్) సంఖ్యగా మార్చింది, అయితే విభజించడానికి ముందు మొత్తం డేటా నుండి అలా చేసింది. మోడల్ టెస్ట్ సెట్లో 94% ఇచ్చింది, ఉత్పత్తిలో 68%కి పడిపోయింది. 6 వారాల శ్రమ వృధా. పాఠం: లక్ష్య కోడింగ్ శిక్షణలో మాత్రమే జాగ్రత్తగా చేయబడుతుంది.
కేస్ 3 - స్కేలింగ్ మర్చిపోవడం. ఒక విశ్లేషకుడు రాబడి (0-400,000) మరియు కస్టమర్ వయస్సు (18-75) స్కేలింగ్ లేకుండా దూర-ఆధారిత మోడల్గా అందించారు. మోడల్ వయస్సు ప్రభావాన్ని అణిచివేసేందుకు దాదాపు ప్రత్యేకంగా ఆదాయాన్ని చూసింది. స్కేలింగ్ జోడించబడినప్పుడు, విభజన అర్థవంతంగా మారింది. పాఠం: దూరం/సరళ నమూనాలలో స్కేలింగ్ నిర్లక్ష్యం చేయబడదు.
నాలుగు కాపీ చేయగల టెంప్లేట్లు
1) ఫీచర్ ఆలోచన ఉత్పత్తి (తొలగింపు మీ ఇష్టం):
మీ పాత్ర: ఫీచర్ ఇంజనీరింగ్ అసిస్టెంట్. నా df నిలువు వరుసలు: పుట్టిన_తేదీ, ఆర్డర్_టైమ్ (టైమ్స్టాంప్), ఆదాయం_tl, అప్పు_tl, నగరం, ఉత్పత్తి_వర్గం. లక్ష్యం: "రుణం తిరిగి చెల్లించబడుతుందా" (0/1). ఈ నిలువు వరుసల నుండి రూపొందించబడే 15 లక్షణాలను సూచించండి; ఒక్కొక్కటి లీకేజీ (తక్కువ/మధ్యస్థం/అధిక) ప్రమాదాన్ని పేర్కొనండి. భవిష్యత్తు సమాచారాన్ని కలిగి ఉన్న వాటిని స్పష్టంగా గుర్తించండి.
2) సురక్షిత కోడింగ్ (పోస్ట్-స్ప్లిట్):
"నగరం" మరియు "product_category"ని వన్-హాట్ ఎన్కోడ్ చేసే కోడ్ను వ్రాయండి. ముఖ్యమైనది: శిక్షణ డేటాకు మాత్రమే ఎన్కోడింగ్ని అమర్చండి, ఆపై పరీక్ష డేటాను మార్చండి (sklearn OneHotEncoderతో). మీరు విద్యలో కనిపించని వర్గాన్ని (handle_unknown) ఎలా నిర్వహిస్తారో వివరించండి.
3) పైప్లైన్తో లీక్-ఫ్రీ కన్వర్షన్:
స్క్లెర్న్ పైప్లైన్ని సెటప్ చేయండి: సంఖ్యా నిలువు వరుసలకు StandardScaler వర్తింపజేయండి, వర్గీకర నిలువు వరుసలకు OneHotEncoderని వర్తింపజేయండి, చివరలో వర్గీకరణను జోడించండి. రైలు/పరీక్ష విభజన తర్వాత మరియు శిక్షణ నుండి మాత్రమే అన్ని పరివర్తనలు నేర్చుకుంటాయని హామీ ఇవ్వండి. కోడ్ను వివరించండి మరియు అది ఎందుకు లీక్ ఫ్రీగా ఉందో వివరించండి.
4) టైమ్ విండో ఫీచర్ (లీకేజ్ కంట్రోల్):
ప్రతి కస్టమర్ కోసం "గత 30 రోజులలో ఆర్డర్ల సంఖ్య" లక్షణాన్ని రూపొందించండి, కానీ సూచన రోజు తర్వాత డేటాను ఎప్పుడూ చేర్చవద్దు. కోడ్ భవిష్యత్తును చూడదని లైన్ వారీగా వివరించండి. నేను సూచన తేదీ కాలమ్ను అందిస్తాను.
బలహీనమైన ప్రాంప్ట్ / బలమైన ప్రాంప్ట్
బలహీనమైన ప్రాంప్ట్:
ఈ డేటాకు మంచి లక్షణాలను జోడించండి.
"మంచిది" నిర్వచించబడలేదు, లక్ష్యం అస్పష్టంగా ఉంది, లీకేజీ నియంత్రణ లేదు. AI యాదృచ్ఛికంగా, బహుశా లీకైన లక్షణాలను ఉత్పత్తి చేస్తుంది.
శక్తివంతమైన ప్రాంప్ట్:
మీ పాత్ర: ఫీచర్ ఇంజనీర్. లక్ష్యం: "30 రోజులలో చర్న్" (0/1), అంచనా వేసిన సూచన తేదీ: save_date. df.Taskలో లావాదేవీ చరిత్ర ఉంది: 8 ఫీచర్లను రూపొందించండి, ప్రతి దాని కోసం "ప్రిడిక్షన్ సమయంలో నా దగ్గర ఈ సమాచారం ఉందా" అనే ప్రశ్నకు సమాధానం ఇవ్వండి. సమయ విండో లక్షణాలలో సూచన తేదీ తర్వాత తేదీని జోడించడం. రైలు/పరీక్ష విభాగం తర్వాత అమలు చేయడానికి పైప్లైన్-అనుకూల మార్గంలో కోడ్ను వ్రాయండి.
ఇక్కడ, లక్ష్యం, సూచన సమయం మరియు లీకేజీ నియంత్రణ ప్రారంభం నుండి నిర్వచించబడ్డాయి.
సాధారణ తప్పులు
- విభజనకు ముందు మొత్తం డేటా నుండి పరివర్తనను నేర్చుకోవడం. స్కేలింగ్/ఎన్కోడింగ్ పరామితి పరీక్ష డేటాను చూసినట్లయితే, లీకేజీ జరుగుతుంది.
- లక్ష్య కోడింగ్ యొక్క అజాగ్రత్త ఉపయోగం. ఇది అత్యంత శక్తివంతమైనది కానీ చాలా లీకే పద్ధతి; కేవలం శిక్షణ నుండి, క్రాస్ ధ్రువీకరణలో.
- టైమ్ విండో ఫీచర్తో భవిష్యత్తును జోడిస్తోంది. సూచన రోజు తర్వాత "చివరి 30 రోజులు" గణనను నమోదు చేస్తే, మోడల్ భవిష్యత్తును చూస్తుంది.
- ట్రీ మోడల్లో అనవసరమైన స్కేలింగ్ మరియు లీనియర్ మోడల్లో అసంపూర్ణ స్కేలింగ్. మోడల్ రకాన్ని బట్టి స్కేలింగ్ నిర్ణయాలు తీసుకోబడతాయి.
- ప్రశ్న లేకుండా AI యొక్క ప్రతి ఫీచర్ సూచనను జోడిస్తోంది. సూచనలు పనికిరాని మరియు లీకైన లక్షణాలను కలిగి ఉండవచ్చు.
చిట్కా: మీరు రూపొందించే ప్రతి ఫీచర్ కోసం ఒక్కొక్క ప్రశ్నను వ్రాయండి: "నేను అంచనా వేసే సమయంలో నా వద్ద ఉన్న సమాచారంతో నేను ఈ విలువను లెక్కించవచ్చా?" సమాధానం స్పష్టంగా "అవును" కాకపోతే, ఫీచర్ని ఉపయోగించవద్దు. ఈ ఒక్క క్రమశిక్షణ చాలా ఫీచర్-సంబంధిత లీక్లను తొలగిస్తుంది.
సారాంశంలో
ఫీచర్ ఇంజనీరింగ్ అనేది ముడి డేటా నుండి అర్థవంతమైన సంకేతాలను రూపొందించే కళ మరియు తరచుగా అల్గోరిథం కంటే మోడల్ విజయాన్ని నిర్ణయిస్తుంది. ఎన్కోడింగ్ వర్గీకరణలు (వన్-హాట్, లేబుల్, లక్ష్యం), స్కేలింగ్ సంఖ్యలు (ప్రామాణికీకరణ, సాధారణీకరణ) మరియు డొమైన్ పరిజ్ఞానంతో ఉత్పన్న లక్షణాలను ఉత్పత్తి చేయడం ప్రాథమిక సాధనాలు. కానీ ఈ దశ లీక్ యొక్క గుండె కూడా: శిక్షణ/పరీక్ష విభజన తర్వాత మరియు శిక్షణ డేటా నుండి మాత్రమే అన్ని పరివర్తనలు నేర్చుకోవాలి. AI చాలా ఆలోచనలను ఉత్పత్తి చేస్తుంది; ప్రమాదకరమైన వాటి నుండి విలువైన వాటిని వేరు చేసేది మానవ తీర్పు.
అప్లికేషన్ టాస్క్
లక్ష్య వేరియబుల్ని ఎంచుకోండి మరియు మీ వద్ద ఉన్న నిలువు వరుసల నుండి కనీసం ఐదు డెరివేటివ్ ఫీచర్లను రూపొందించండి. వాటిలో ప్రతిదానికి, "అంచనా సమయంలో నేను అందుబాటులో ఉన్నాను" అనే ప్రశ్నకు వ్రాతపూర్వకంగా సమాధానం ఇవ్వండి మరియు కనీసం ఒకదానిని "లీకేజ్ యొక్క అధిక ప్రమాదం" అని తొలగించండి. విభజన తర్వాత అమలు చేయడానికి పైప్లైన్లోని సురక్షిత లక్షణాలను కోడ్ చేయండి.
చెక్లిస్ట్
- [ ] రైలు/పరీక్ష విభజన తర్వాత నేను అన్ని రూపాంతరాలను వర్తింపజేసానా?
- [ ] నేను శిక్షణ నుండి స్కేలింగ్/ఎన్కోడింగ్ పారామితులను మాత్రమే నేర్చుకున్నానా?
- [ ] నేను ప్రతి ఫీచర్ కోసం "ప్రిడిక్షన్ సమయంలో నా దగ్గర ఇది ఉందా" అనే ప్రశ్నకు సమాధానం ఇచ్చానా?
- లక్ష్య కోడింగ్ వంటి అధిక-ప్రమాద పద్ధతులతో నేను అదనపు జాగ్రత్తలు తీసుకున్నానా?
- [ ] నేను మోడల్ రకం (చెట్టు/లీనియర్) కోసం తగిన విధంగా స్కేల్ చేయాలని నిర్ణయించుకున్నానా?