નફો:
- ડોમેન જ્ઞાન સાથે અર્થપૂર્ણ વ્યુત્પન્ન સુવિધાઓ ઉત્પન્ન કરવાની ક્ષમતા અને યોગ્ય પદ્ધતિઓ (વન-હોટ, લેબલ, લક્ષ્ય) સાથે સ્પષ્ટ શ્રેણીઓને એન્કોડ કરવાની ક્ષમતા
- મોડલ પ્રકાર (માનકીકરણ, સામાન્યીકરણ) અનુસાર સંખ્યાત્મક ચલોને માપવાની ક્ષમતા અને બિનજરૂરી અથવા અપૂર્ણ સ્કેલિંગ ટાળવા
- તાલીમ/પરીક્ષણના વિભાજન પછી અને માત્ર તાલીમથી જ તમામ પરિવર્તનો શીખીને લક્ષણ લિકેજને ટાળવાની ક્ષમતા
મશીન લર્નિંગમાં એક જૂની કહેવત છે: "એપ્લાઇડ મશીન લર્નિંગ એ અનિવાર્યપણે ફીચર એન્જિનિયરિંગ છે." કારણ કે મોડેલની સફળતા ઘણીવાર તમે કયા અલ્ગોરિધમને પસંદ કરો છો તેના બદલે તમે મોડેલને કયા ઇનપુટ્સ આપો છો તેના પરથી આવે છે. ફીચર એન્જિનિયરિંગ એ કાચા ડેટામાંથી અર્થપૂર્ણ સિગ્નલો ઉત્પન્ન કરવાની કળા છે જેમાંથી મોડેલ શીખી શકે છે. આ તબક્કે કૃત્રિમ બુદ્ધિ એ વિચારોનો સમૃદ્ધ સ્ત્રોત છે: જ્યારે તમે પૂછો કે "આ ડેટામાંથી કઈ વિશેષતાઓ ઉત્પન્ન કરી શકાય છે", ત્યારે તે ડઝનેક સૂચનોની યાદી આપે છે. પરંતુ આમાંના કેટલાક સૂચનો મૂલ્યવાન હોઈ શકે છે, કેટલાક નકામા હોઈ શકે છે, અને કેટલાક જોખમી (લીક) હોઈ શકે છે. તેને ઉકેલવાનું તમારું કામ છે.
શા માટે ફિચર એન્જિનિયરિંગ
કાચો ડેટા ભાગ્યે જ તેના શ્રેષ્ઠ સ્વરૂપમાં મોડેલ પર આવે છે. જ્યારે "જન્મ તારીખ" કૉલમ એકલી અર્થહીન છે, ત્યારે તેમાંથી પેદા થયેલ "વય" મૂલ્ય એક મજબૂત સંકેત છે. તમે "ઓર્ડર ટાઇમસ્ટેમ્પ" માંથી "સપ્તાહનો દિવસ", "દિવસ/રાત્રી", "શું તે રજા છે" જેવી વિશેષતાઓ મેળવી શકો છો. તમે ગુણોત્તર ("દેવું/આવક ગુણોત્તર") બનાવવા માટે બે કૉલમને જોડી શકો છો. અહીં, ફિચર એન્જિનિયરિંગ ડોમેન જ્ઞાનને ગાણિતિક સંકેતમાં અનુવાદિત કરી રહ્યું છે; અને તેથી જ તે એક એવો તબક્કો છે જેને સૌથી વધુ માનવ બુદ્ધિની જરૂર હોય છે.
વર્ગીકૃત ચલોને નંબરોમાં રૂપાંતરિત કરવું: કોડિંગ
મોડલ સામાન્ય રીતે સંખ્યાઓ સાથે કામ કરે છે, ટેક્સ્ટ સાથે નહીં. વર્ગીકૃત ચલોને (જેમ કે શહેર, રંગ, ઉત્પાદનનો પ્રકાર) નંબરોમાં રૂપાંતરિત કરવું એ એન્કોડિંગ કહેવાય છે. ત્રણ સામાન્ય પદ્ધતિઓ:
વન-હોટ એન્કોડિંગ: દરેક કેટેગરી માટે 0/1ના મૂલ્ય સાથે એક અલગ કૉલમ ખોલે છે. "શહેર" માટે, ઇસ્તંબુલ, અંકારા, ઇઝમિર કૉલમ રચાય છે; જો કોઈ ગ્રાહક ઈસ્તાંબુલનો હોય, તો માત્ર તે કૉલમ 1 હશે. જ્યારે કેટેગરીની સંખ્યા ઓછી હોય ત્યારે આદર્શ; જો ત્યાં ઘણી બધી શ્રેણીઓ હોય તો તે સેંકડો કૉલમ્સ ઉત્પન્ન કરે છે (આને "કદ વિસ્ફોટ" કહેવામાં આવે છે).
લેબલ એન્કોડિંગ: દરેક શ્રેણીને નંબર આપે છે (ઇસ્તાંબુલ=0, અંકારા=1). તે સરળ છે, પરંતુ તે આકસ્મિક રીતે મોડેલને ક્રમ શીખવી શકે છે (જેમ કે અંકારા > ઈસ્તાંબુલ); તેથી તેનો ઉપયોગ બિનક્રમાંકિત શ્રેણીઓમાં સાવધાની સાથે કરવામાં આવે છે.
લક્ષ્ય એન્કોડિંગ: તે શ્રેણીમાં લક્ષ્ય ચલની સરેરાશ સાથે દરેક શ્રેણીને બદલે છે. તે ખૂબ જ શક્તિશાળી છે, પરંતુ લિકેજનો સૌથી ખતરનાક સ્ત્રોત છે: જો તમે પરીક્ષણ ડેટાના લક્ષ્યને ધ્યાનમાં લો છો, તો મોડેલ ભવિષ્ય જુએ છે. તેની ગણતરી માત્ર પ્રશિક્ષણ ડેટામાંથી અને કાળજીપૂર્વક (ક્રોસ-વેલિડેશનની અંદર) થવી જોઈએ.
સ્કેલિંગ: મોટી સંખ્યાઓ મોડેલને ડૂબી જતી નથી
કેટલાક મોડલ (અંતર-આધારિત, રેખીય મોડલ, ન્યુરલ નેટવર્ક) ચલોના સ્કેલ પ્રત્યે સંવેદનશીલ હોય છે. જો "આવક" (0-500,000) અને "વય" (0-100) સમાન પેટર્નમાં આવે છે, તો આવક માત્ર કારણ કે તે મોટી છે. સ્કેલિંગ આને સુધારે છે. બે સામાન્ય પદ્ધતિઓ: માનકીકરણ (દરેક મૂલ્યને "માધ્યમથી કેટલા પ્રમાણભૂત વિચલનો દૂર" માં રૂપાંતરિત કરે છે) અને સામાન્યીકરણ (ન્યૂનતમ-મહત્તમ સામાન્યીકરણ — મૂલ્યોને 0-1 શ્રેણીમાં સંકુચિત કરે છે). વૃક્ષ-આધારિત મોડેલો (નિર્ણય વૃક્ષો, રેન્ડમ ફોરેસ્ટ) સ્કેલ અસંવેદનશીલ છે, તેમને સ્કેલિંગની જરૂર નથી.
સાવધાન: સ્કેલિંગ અને કોડિંગ પેરામીટર્સ (મીન, પ્રમાણભૂત વિચલન, કેટેગરી-મીન મેપિંગ) ની ગણતરી ફક્ત તાલીમ ડેટામાંથી જ થવી જોઈએ, પછી તે જ પરીક્ષણ ડેટા પર લાગુ થવી જોઈએ. ટેસ્ટ ડેટા સહિત લિકેજ છે અને તમારા મોડેલને તે વાસ્તવમાં છે તેના કરતાં વધુ સારું લાગે છે.
ફીચર એન્જિનિયરિંગમાં લીકેજનું હાર્દ
ફીચર જનરેશન એ છે જ્યાં મોટાભાગે ડેટા લીક થાય છે. બે લાક્ષણિક ભૂલો: ટાઈમ લીક — એક લક્ષણ ઉત્પન્ન કરે છે જેમાં ભવિષ્યની માહિતી શામેલ હોય છે (જેમાં "છેલ્લા 30 દિવસની સરેરાશ"ની ગણતરી કરતી વખતે આગાહીના દિવસ પછીના દિવસોનો સમાવેશ થાય છે). આંકડાકીય લીકેજ — તાલીમ/પરીક્ષણના વિભાજન પહેલા તમામ ડેટામાંથી વિશેષતા (સ્કેલિંગ એવરેજ, લક્ષ્ય એન્કોડિંગ મૂલ્ય)ની ગણતરી કરવી. નિયમ: ટ્રેન/ટેસ્ટ સ્પ્લિટ કર્યા પછી દરેક ટ્રાન્સફોર્મેશન શીખો અને માત્ર ટ્રેનિંગ ડેટામાંથી. આને નિયમિતપણે કરવાનો સૌથી સુરક્ષિત રસ્તો એ છે કે પાઇપલાઇનનો ઉપયોગ કરવો - એક માળખું કે જે એક જ સાંકળમાં તમામ રૂપાંતરણોને એકત્રિત કરે છે અને વિભાજન પછી તેને લાગુ કરે છે.
પદ્ધતિ
શેના માટે
લિકેજનું જોખમ
નોંધ
એક-ગરમ એન્કોડિંગ
થોડી શ્રેણીઓ સાથે ચલ
નીચું
બહુવિધ કેટેગરીમાં કદને વિસ્ફોટ કરે છે
લેબલ કોડિંગ
સૉર્ટ કરેલ શ્રેણી
નીચું
આઉટ ઓફ ઓર્ડર ખોટો ક્રમ શીખવે છે
લક્ષ્ય એન્કોડિંગ
બહુ-શ્રેણી, મજબૂત સંકેત
ખૂબ ઊંચા
માત્ર શિક્ષણથી, સીવીમાં
માનકીકરણ
રેખીય/અંતરના મોડલ
મધ્યમ
પરિમાણ માત્ર શિક્ષણ પર આધાર રાખે છે
સમય વિન્ડો લક્ષણ
સમય શ્રેણી
ઉચ્ચ
ભવિષ્ય ઉમેરો
ત્રણ નાના કેસો
કેસ 1 - મૂલ્યવાન મિલકત. ક્રેડિટ ટીમે કાચી "માસિક આવક" અને "માસિક દેવું ચુકવણી" કૉલમમાંથી "દેવું-થી-આવક ગુણોત્તર" સુવિધા જનરેટ કરી. આ એકલ વ્યુત્પન્ન વિશેષતાએ મોડલની ચોકસાઈને 71% થી વધારીને 79% કરી; કારણ કે તે દર હતો, સંપૂર્ણ આવક નહીં, જે ખરેખર જોખમ નક્કી કરે છે. પાઠ: ડોમેન જ્ઞાન દ્વારા જનરેટ થયેલ ગુણોત્તર મજબૂત સંકેતો છે.
કેસ 2 — લક્ષ્ય એન્કોડિંગ લીક. એક ટીમે "ઝિપ કોડ" ને લક્ષ્ય એન્કોડિંગ (તે વિસ્તારમાં સરેરાશ મંથન દર) સાથે નંબરમાં રૂપાંતરિત કર્યું, પરંતુ વિભાજન પહેલાં તમામ ડેટામાંથી આમ કર્યું. મોડેલે ટેસ્ટ સેટ પર 94% આપ્યું, જે ઉત્પાદનમાં ઘટીને 68% થઈ ગયું. 6 અઠવાડિયાની મહેનત વેડફાઈ ગઈ. પાઠ: લક્ષ્ય કોડિંગ કાળજીપૂર્વક કરવામાં આવે છે, ફક્ત તાલીમની અંદર.
કેસ 3 - સ્કેલિંગ ભૂલી જવું. એક વિશ્લેષકે રેવન્યુ (0-400,000) અને ગ્રાહકની ઉંમર (18-75)ને સ્કેલિંગ કર્યા વિના અંતર આધારિત મોડલમાં ખવડાવી હતી. આ મોડેલ વયની અસરને કચડીને, આવક પર લગભગ વિશિષ્ટ રીતે દેખાતું હતું. જ્યારે સ્કેલિંગ ઉમેરવામાં આવ્યું, ત્યારે વિભાજન અર્થપૂર્ણ બન્યું. પાઠ: અંતર/રેખીય મોડેલોમાં સ્કેલિંગની ઉપેક્ષા કરવામાં આવતી નથી.
ચાર નકલ કરી શકાય તેવા નમૂનાઓ
1) ફિચર આઈડિયા જનરેશન (નાબૂદી તમારા પર છે):
તમારી ભૂમિકા: ફીચર એન્જિનિયરિંગ સહાયક. મારી df કૉલમ: જન્મ_તારીખ, ઓર્ડર_ટાઇમ (ટાઇમસ્ટેમ્પ), આવક_ટીએલ, ડેટ_ટીએલ, શહેર, ઉત્પાદન_શ્રેણી. લક્ષ્ય: "લોન ચૂકવવામાં આવશે" (0/1). આ કૉલમમાંથી જનરેટ કરી શકાય તેવી 15 સુવિધાઓ સૂચવો; દરેક માટે લિકેજનું જોખમ સ્પષ્ટ કરો (નીચું/મધ્યમ/ઉચ્ચ) ભવિષ્યની માહિતી ધરાવતી હોય તેને સ્પષ્ટપણે ચિહ્નિત કરો.
2) સુરક્ષિત કોડિંગ (વિભાજન પછી):
કોડ લખો જે એક-હોટ "શહેર" અને "ઉત્પાદન_શ્રેણી" ને એન્કોડ કરે છે. મહત્વપૂર્ણ: એન્કોડિંગને ફક્ત તાલીમ ડેટામાં ફિટ કરો, પછી પરીક્ષણ ડેટાને રૂપાંતરિત કરો (સ્ક્લેર્ન OneHotEncoder સાથે). સમજાવો કે તમે શિક્ષણમાં અદ્રશ્ય શ્રેણી (હેન્ડલ_અનનોન) કેવી રીતે હેન્ડલ કરો છો.
3) પાઇપલાઇન સાથે લીક-મુક્ત રૂપાંતરણ:
sklearn પાઇપલાઇન સેટ કરો: આંકડાકીય કૉલમ પર સ્ટાન્ડર્ડસ્કેલર, વર્ગીકૃત કૉલમમાં OneHotEncoder લાગુ કરો, અંતે ક્લાસિફાયર ઉમેરો. ખાતરી આપો કે તમામ પરિવર્તનો ટ્રેન/ટેસ્ટ સ્પ્લિટ પછી અને માત્ર તાલીમથી જ શીખી શકાય છે. કોડ સમજાવો અને તે શા માટે લીક ફ્રી છે.
4) ટાઈમ વિન્ડો ફીચર (લિકેજ કંટ્રોલ):
દરેક ગ્રાહક માટે "છેલ્લા 30 દિવસમાં ઓર્ડરની સંખ્યા" એટ્રિબ્યુટ જનરેટ કરો, પરંતુ આગાહીના દિવસ પછી ક્યારેય ડેટા શામેલ કરશો નહીં. લાઇન બાય લાઇન સમજાવો કે કોડ ભવિષ્યમાં જોતો નથી. હું સંદર્ભ તારીખ કૉલમ પ્રદાન કરીશ.
નબળા પ્રોમ્પ્ટ / મજબૂત પ્રોમ્પ્ટ
નબળા પ્રોમ્પ્ટ:
આ ડેટામાં સારી પ્રોપર્ટીઝ ઉમેરો.
"સારું" અવ્યાખ્યાયિત છે, લક્ષ્ય અસ્પષ્ટ છે, ત્યાં કોઈ લિકેજ નિયંત્રણ નથી. AI રેન્ડમ, કદાચ લીકી, સુવિધાઓ જનરેટ કરે છે.
શક્તિશાળી પ્રોમ્પ્ટ:
તમારી ભૂમિકા: ફીચર એન્જિનિયર. લક્ષ્ય: "30 દિવસમાં મંથન" (0/1), અનુમાનિત સંદર્ભ તારીખ: save_date. df માં ટ્રાન્ઝેક્શન ઇતિહાસ છે. કાર્ય: 8 સુવિધાઓ જનરેટ કરો, દરેક માટે "શું આગાહી સમયે મારી પાસે આ માહિતી છે" પ્રશ્નનો જવાબ આપો. સમય વિન્ડોમાં સંદર્ભ તારીખ પછીની તારીખ ઉમેરવી. ટ્રેન/પરીક્ષણ વિભાગ પછી એક્ઝિક્યુટ કરવા માટે પાઇપલાઇન-સુસંગત રીતે કોડ લખો.
અહીં, લક્ષ્ય, સંદર્ભ સમય અને લિકેજ નિયંત્રણ શરૂઆતથી વ્યાખ્યાયિત થયેલ છે.
સામાન્ય ભૂલો
- વિભાજન પહેલા તમામ ડેટામાંથી પરિવર્તન શીખવું. જો સ્કેલિંગ/એન્કોડિંગ પેરામીટર ટેસ્ટ ડેટા જુએ છે, તો લીકેજ થાય છે.
- લક્ષ્ય કોડિંગનો બેદરકાર ઉપયોગ. તે સૌથી શક્તિશાળી પરંતુ સૌથી વધુ લીકી પદ્ધતિ છે; માત્ર તાલીમથી, ક્રોસ વેલિડેશનમાં.
- ટાઈમ વિન્ડો ફીચર સાથે ભવિષ્ય ઉમેરવું. જો આગાહીના દિવસ પછી "છેલ્લા 30 દિવસ" ની ગણતરી દાખલ કરવામાં આવે, તો મોડેલ ભવિષ્ય જુએ છે.
- ટ્રી મોડેલમાં બિનજરૂરી સ્કેલિંગ અને રેખીય મોડેલમાં અપૂર્ણ સ્કેલિંગ. સ્કેલિંગ નિર્ણયો મોડેલ પ્રકાર અનુસાર લેવામાં આવે છે.
- AI ના દરેક લક્ષણ સૂચનને કોઈ પ્રશ્ન વિના ઉમેરવું. સૂચનોમાં નકામી અને લીકી સુવિધાઓ શામેલ હોઈ શકે છે.
ટીપ: તમે જનરેટ કરો છો તે દરેક વિશેષતા માટે એક જ પ્રશ્ન લખો: "શું હું આગાહી કરતી વખતે મારી પાસે રહેલી માહિતી સાથે આ મૂલ્યની ગણતરી કરી શકું?" જો જવાબ સ્પષ્ટ "હા" નથી, તો સુવિધાનો ઉપયોગ કરશો નહીં. આ સિંગલ ડિસિપ્લિન મોટાભાગના ફીચર-સંબંધિત લીક્સને દૂર કરે છે.
સારાંશમાં
ફીચર એન્જિનિયરિંગ એ કાચા ડેટામાંથી અર્થપૂર્ણ સિગ્નલો બનાવવાની કળા છે અને ઘણીવાર એલ્ગોરિધમ કરતાં મોડેલની સફળતા વધુ નક્કી કરે છે. એન્કોડિંગ શ્રેણીઓ (એક-હોટ, લેબલ, લક્ષ્ય), સ્કેલિંગ અંકશાસ્ત્ર (માનકીકરણ, સામાન્યીકરણ) અને ડોમેન જ્ઞાન સાથે વ્યુત્પન્ન સુવિધાઓ ઉત્પન્ન કરવી એ મૂળભૂત સાધનો છે. પરંતુ આ તબક્કો લીકનું હાર્દ પણ છે: તમામ રૂપાંતરણો તાલીમ/પરીક્ષણના વિભાજન પછી અને માત્ર તાલીમ ડેટામાંથી જ શીખવા જોઈએ. AI પુષ્કળ વિચારો પેદા કરે છે; તે માનવ ચુકાદો છે જે મૂલ્યવાનને ખતરનાકથી અલગ પાડે છે.
એપ્લિકેશન કાર્ય
લક્ષ્ય ચલ પસંદ કરો અને તમારી પાસે હોય તે કૉલમમાંથી ઓછામાં ઓછી પાંચ વ્યુત્પન્ન સુવિધાઓ ડિઝાઇન કરો. તેમાંના દરેક માટે, લેખિતમાં "શું હું આગાહી સમયે ઉપલબ્ધ છું" પ્રશ્નનો જવાબ આપો અને ઓછામાં ઓછા એકને "લિકેજના ઉચ્ચ જોખમ" તરીકે દૂર કરો. પછી પાર્ટીશન પછી અમલમાં મૂકવાની પાઇપલાઇનમાં સુરક્ષિત સુવિધાઓને કોડ કરો.
ચેકલિસ્ટ
- શું મેં ટ્રેન/ટેસ્ટ સ્પ્લિટ પછી તમામ ટ્રાન્સફોર્મેશન લાગુ કર્યા છે?
- [ ] શું મેં તાલીમમાંથી માત્ર સ્કેલિંગ/એન્કોડિંગ પરિમાણો શીખ્યા?
- [ ] શું મેં દરેક વિશેષતા માટે "શું મારી પાસે તે આગાહી સમયે છે" પ્રશ્નનો જવાબ આપ્યો છે?
- [ ] શું મેં ટાર્ગેટ કોડિંગ જેવી ઉચ્ચ જોખમી પદ્ધતિઓ સાથે વધારાની કાળજી લીધી છે?
- [ ] શું મેં મોડેલ પ્રકાર (વૃક્ષ/રેખીય) માટે યોગ્ય માપન કરવાનું નક્કી કર્યું છે?