નફો:
- ડેટા લિકેજના પ્રકારોને ઓળખવાની ક્ષમતા (લક્ષ્ય, સમય, પ્રીપ્રોસેસિંગ, જૂથબદ્ધ પંક્તિ) અને એલાર્મ તરીકે 'સાચું બનવા માટે ખૂબ સારું' સ્કોરને ક્વેરી કરવાની ક્ષમતા
- ટેસ્ટ સેટ, પાઇપલાઇન અને યોગ્ય વિભાજન (કાલક્રમિક/જૂથબદ્ધ)ને વહેલા અલગ કરીને લિકેજને રોકવાની ક્ષમતા
- નિશ્ચિત બીજ, સંસ્કરણ નિયંત્રણ અને મેન્યુઅલ પગલાંને દૂર કરીને વિશ્લેષણને પુનઃઉત્પાદનક્ષમ બનાવવાની ક્ષમતા
બે ભૂલો છે જે ડેટા સાયન્સમાં સૌથી વધુ પ્રયત્નો વેડફી નાખે છે, અને તે બંને કપટી છે કારણ કે જ્યારે "બધું સારું લાગે છે" ત્યારે જ તે આપત્તિ તરફ દોરી જાય છે. પ્રથમ ડેટા લીકેજ છે: મોડેલ ટેસ્ટ સેટ પર સરસ કામ કરે છે પરંતુ ઉત્પાદનમાં ક્રેશ થાય છે. બીજું અપ્રુત્પાદનક્ષમતા છે: તમે છ મહિના પછી વિશ્લેષણ ચલાવો છો અને સંપૂર્ણપણે અલગ પરિણામ મેળવો છો. આ એકમ ઊંડાણપૂર્વક આ બે મુશ્કેલીઓને જાણવા અને ટાળવા માટે સમર્પિત છે. AI બંને જોખમો વધારી શકે છે (ઝડપથી જનરેટ કરે છે, છુપાયેલા લિક સૂચવે છે, તમારા માટે મેન્યુઅલ પગલાં લેવાનું સરળ બનાવે છે) પરંતુ જો યોગ્ય રીતે ઉપયોગ કરવામાં આવે તો તેને ઘટાડી પણ શકે છે. તફાવત શિસ્તમાં છે.
ડેટા લીક: ક્લેરવોયન્ટ મોડેલ
ડેટા લિકેજ એ છે જ્યારે મોડેલ તાલીમ દરમિયાન એવી માહિતી જુએ છે જે વાસ્તવિક આગાહીના સમયે તેની પાસે નહીં હોય. મોડેલ આ માહિતી સાથે "ચીટ્સ" કરે છે, ટેસ્ટ સેટ પર સરસ લાગે છે, પરંતુ તે માહિતી વિના ઉત્પાદનમાં ક્રેશ થાય છે. લીકનું લક્ષણ લગભગ હંમેશા સમાન હોય છે: સાચું હોવું ખૂબ સારું છે. જ્યારે તમે 99% સચોટતા જુઓ ત્યારે તમે આનંદ કરો તે પહેલાં, તમારે લીક્સ જોવું જોઈએ.
લિકેજના મુખ્ય પ્રકારો છે:
1. ધ્યેય લીકેજ: એક લક્ષણ એ ધ્યેયનું પરિણામ છે. "રદ કરવામાં આવી હતી" આગાહીમાં, "રદ કરવાની તારીખ" અથવા "રિફંડ રકમ" કૉલમ લક્ષ્યનું પરિણામ છે; જ્યારે પરિણામ સ્પષ્ટ થશે ત્યારે જ તેઓ ભરવામાં આવશે.
2. સમય લીક: ભૂતકાળમાં ભવિષ્યની માહિતી લાવવી. "છેલ્લા 30 દિવસની સરેરાશ" ની ગણતરી કરતી વખતે, આગાહીના દિવસ પછીના દિવસોનો સમાવેશ કરો અથવા સમય શ્રેણીને અવ્યવસ્થિત રીતે વિભાજીત કરો.
3. પ્રી-પ્રોસેસિંગ લીકેજ: તાલીમ/પરીક્ષણ પાર્ટીશન પહેલા તમામ ડેટામાંથી સ્કેલિંગ, ફિલિંગ, કોડિંગ જેવા શીખવા પરિવર્તન. પરીક્ષણ ડેટાની સરેરાશ તાલીમમાં દખલ કરે છે.
4. ડુપ્લિકેટ/જૂથવાળી પંક્તિ લીક: એક જ વ્યક્તિની પંક્તિઓ તાલીમ અને પરીક્ષણ બંનેમાં હાજર હોય છે (વિવિધ સેટમાં એક જ દર્દીની બે મુલાકાત). મોડેલ વ્યક્તિને યાદ કરે છે.
લીક પ્રકાર
કેવી રીતે જન્મે છે
કેવી રીતે અટકાવવું
લક્ષ્ય લીક
કૉલમ કે જે લક્ષ્યનું પરિણામ છે
"શું મારી પાસે તે આગાહી સમયે છે" પરીક્ષણ
સમય લીક
ભવિષ્યને ભૂતકાળમાં લાવવું
કાલક્રમિક વિભાગ, વિન્ડો નિયંત્રણ
પ્રીપ્રોસેસિંગ લીક
પૂર્વ-વિભાજિત રૂપાંતર
પાઇપલાઇન, તાલીમથી જ ફિટ
જૂથબદ્ધ પંક્તિ લીક
બે સેટમાં સમાન એકમ
જૂથ દ્વારા વિભાજિત કરો (ગ્રુપકેફોલ્ડ)
લીકેજ અટકાવવા માટેની એકમાત્ર શિસ્ત
તમામ પ્રકારના લીક્સ માટેનો સામાન્ય ઉકેલ એક વાક્યમાં ઉકળે છે: વાસ્તવિક ભવિષ્યની નકલ કરવા માટે શક્ય તેટલી વહેલી તકે પરીક્ષણ સેટને અલગ કરો અને તેને કંઈપણ "શિખવવું" નહીં. વ્યવહારમાં, આનો અર્થ છે: પ્રથમ વિભાજન કરો, પછી ફક્ત તાલીમમાંથી જ તમામ પરિવર્તનો શીખો અને તેમને પાઇપલાઇનમાં લાગુ કરો (એક માળખું જે એક જ સાંકળમાં તમામ પગલાં એકત્રિત કરે છે). દરેક સુવિધા માટે, પ્રશ્ન પૂછો "શું આગાહી સમયે મારી પાસે આ માહિતી છે?" જો સમય હોય, તો તેને કાલક્રમિક રીતે વિભાજીત કરો; જો સમાન એકમ પુનરાવર્તિત હોય, તો જૂથ દ્વારા વિભાજીત કરો.
સાવધાન: લીકનું સૌથી ખતરનાક પાસું એ છે કે તે પોતાની જાતને સફળતા તરીકે રજૂ કરે છે. ખરાબ મોડલ દેખીતી રીતે નબળા પરિણામો લાવશે અને તેની નોંધ લેવામાં આવશે; લીક થયેલું મૉડલ સરસ કામ કરે છે, દરેકને ખુશ કરે છે અને ઉત્પાદનમાં મૂકવામાં આવે છે — ત્યાંથી પતન શરૂ થાય છે. તેથી જ "ખૂબ સારું" પરિણામ એ અલાર્મનું કારણ છે, ઉજવણીનું નહીં.
પ્રજનનક્ષમતા: સમાન પરિણામ બે વાર મેળવવું
પ્રજનનક્ષમતા એ સમાન પરિણામ મેળવવાની ક્ષમતા છે જ્યારે તમે અન્ય સમયે, અન્ય મશીન પર ફરીથી વિશ્લેષણ ચલાવો છો. આ વિના, તમારું વિશ્લેષણ પ્રાસંગિક છે, વૈજ્ઞાનિક નથી. મુખ્ય કારણો અને ઉકેલો જે પ્રજનનક્ષમતાને નબળી પાડે છે:
મેન્યુઅલ સ્ટેપ્સ: એક્સેલમાં સેલને મેન્યુઅલી બદલવું, ચાર્ટને મેન્યુઅલી એડિટ કરવું. ઉકેલ: દરેક સ્ટેપ કોડમાં રાખો.
અનફિક્સ્ડ રેન્ડમનેસ: મોડલ ટ્રેનિંગ, સેમ્પલિંગ, સ્પ્લિટિંગમાં રેન્ડમનેસનો સમાવેશ થાય છે. ઉકેલ: રેન્ડમ સીડ (રેન્ડમ જનરેટરનું પ્રારંભિક મૂલ્ય) ઠીક કરો (રેન્ડમ_સ્ટેટ=42).
સંસ્કરણ બદલાય છે: જ્યારે લાઇબ્રેરી સંસ્કરણ બદલાય છે ત્યારે પરિણામ બદલાઈ શકે છે. ઉકેલ: ફિક્સ ડિપેન્ડન્સી (requirements.txt, પર્યાવરણ ફાઇલ).
કોઈ રેકોર્ડ રાખવાનું નથી: તે સ્પષ્ટ નથી કે કયો ડેટા, કયો કોડ, કયો પેરામીટરનો ઉપયોગ કરવામાં આવ્યો હતો. સોલ્યુશન: વર્ઝન કંટ્રોલ (ગિટ - સિસ્ટમ કે જે કોડના તમામ વર્ઝનને સાચવે છે) અને ડેટા વર્ઝનિંગ.
"તે ફક્ત મારા મશીન પર કામ કરે છે": ઉકેલ: પર્યાવરણને દસ્તાવેજ કરો, જો શક્ય હોય તો કન્ટેનર (ડોકર) નો ઉપયોગ કરો.
ત્રણ નાના કેસો
કેસ 1 — લક્ષ્ય લીક. આરોગ્ય વિશ્લેષણમાં "દર્દીને ફરીથી દાખલ કરવામાં આવશે કે કેમ" તેની આગાહી કરતી "ડિસ્ચાર્જ પછીની દવા" કૉલમ દર્શાવવામાં આવી હતી. દર્દીના ડિસ્ચાર્જ થયા બાદ જ આ કોલમ ભરવામાં આવતી હતી. મોડેલે 96% આપ્યું, ઉત્પાદનમાં 61%. 8 અઠવાડિયાનો પ્રોજેક્ટ કચરો હતો. પાઠ: દરેક લક્ષણને પૂછો "શું તે આગાહી સમયે હાજર છે?"
કેસ 2 — પ્રીપ્રોસેસિંગ લીક. એક ટીમે તમામ ડેટાનું માપ કાઢ્યું અને પછી તેને વિભાજિત કર્યું. પરીક્ષણ ડેટાનો સરેરાશ સ્કેલિંગમાં સામેલ હતો. સીવી સ્કોર 89%, વાસ્તવિક ઉત્પાદન 76%. જ્યારે હું પાઇપલાઇનમાં ગયો અને માત્ર તાલીમથી જ પરિવર્તન વિશે શીખ્યો ત્યારે નકલી સફળતા અદૃશ્ય થઈ ગઈ. પાઠ: પહેલા વિભાજન કરો, પછી રૂપાંતર કરો.
કેસ 3 - પુનઃઉત્પાદન કરવામાં નિષ્ફળતા. એક વિશ્લેષક ત્રણ મહિના પછી મેનેજમેન્ટને રજૂ કરેલો ચાર્ટ અપડેટ કરવા માંગતો હતો પરંતુ તેણે તે કેવી રીતે બનાવ્યું તે યાદ રાખી શક્યું નહીં; Excel માં ઘણા બધા પગલાં જાતે જ કરવામાં આવ્યા હતા. પરિણામ ન આવ્યું અને વિશ્વાસ ડગમગી ગયો. પાઠ: કોઈ મેન્યુઅલ પગલાં નહીં, બધું કોડ અને ગિટમાં છે.
ચાર નકલ કરી શકાય તેવા નમૂનાઓ
1) લીક નિરીક્ષણ:
તમારી ભૂમિકા: લીક ઇન્સ્પેક્ટર. લક્ષ્ય: "મંથન" (0/1), આગાહી સંદર્ભ તારીખ: રેકોર્ડ_તારીખ. હું તમને આ સુવિધાઓની સૂચિ આપીશ. દરેક સુવિધા માટે: (a) શું તે ધ્યેયનું પરિણામ છે, (b) શું તે મારા માટે અનુમાન સમયે ઉપલબ્ધ છે, (c) શું સમય વિન્ડોમાં ભવિષ્યનો સમાવેશ થાય છે? તેને "અસુરક્ષિત/શંકાસ્પદ/લીક" તરીકે ચિહ્નિત કરો અને કારણ લખો. લક્ષણો: [સૂચિ]
2) લીક-મુક્ત પાઇપલાઇન:
સ્ક્લેરન પાઇપલાઇન સેટ કરો: પ્રથમ સ્પ્લિટ ટ્રેન/ટેસ્ટ (સ્તરીકરણ, સીડ=42), પછી માત્ર તાલીમથી પાઇપલાઇનમાં તમામ પ્રીપ્રોસેસિંગ (ઇમ્પ્યુટ, સ્કેલ, એન્કોડ) ફિટ કરો. કોડ લીક-મુક્ત કેમ છે, કયું પગલું ક્યાં શીખ્યા તે સમજાવો.
3) પુનઃઉત્પાદનક્ષમતા ચેકલિસ્ટ કોડ:
હું મારા વિશ્લેષણને પુનઃઉત્પાદનક્ષમ બનાવવા માંગુ છું. કોડ/સ્ટ્રક્ચર સૂચવે છે કે જે ઉમેરે છે: (1) બધી અવ્યવસ્થિતતા માટે સખત બીજ, (2) પ્રિન્ટીંગ લાઇબ્રેરી વર્ઝન વપરાયેલ, (3) ડેટા અને આઉટપુટ માટે તારીખ/સંસ્કરણ ટેગ. કોઈ મેન્યુઅલ પગલાં નથી તેની ખાતરી કરવા માટે મને એક ચેકલિસ્ટ પણ આપો.
4) જૂથબદ્ધ પાર્ટીશન (સમાન એકમ લીક):
ડેટામાં સમાન ગ્રાહક_id બહુવિધ પંક્તિઓમાં અસ્તિત્વમાં છે. એક વિભાજન કરો (GroupKFold orGroupShuffleSplit, group = customer_id) જે સમાન ગ્રાહકને તાલીમ અને પરીક્ષણ બંનેમાં આવતા અટકાવે છે. વિભાજન પછી બંને સેટમાં કોઈ ગ્રાહક નથી તે ચકાસવા માટે કોડ શામેલ કરો.
નબળા પ્રોમ્પ્ટ / મજબૂત પ્રોમ્પ્ટ
નબળા પ્રોમ્પ્ટ:
મારા મોડેલે 98% સચોટતા પરત કરી, શું તે મહાન નથી? કોડ ઑપ્ટિમાઇઝ કરો.
98%ની ઉજવણી લીકને છુપાવે છે. ઑપ્ટિમાઇઝ કરતા પહેલા, તે પ્રશ્ન થવો જોઈએ કે આ સ્કોર વાસ્તવિક છે કે નહીં.
શક્તિશાળી પ્રોમ્પ્ટ:
તમારી ભૂમિકા: લીક ઇન્સ્પેક્ટર. મારું મોડેલ ટેસ્ટ સેટ પર 98% ચોકસાઈ આપે છે, જે મને "સાચું હોવું ખૂબ સારું" લાગે છે. તપાસો: (1) લક્ષ્યના પરિણામની કોઈપણ વિશેષતાઓ છે, (2) વિભાજન પહેલાં કરવામાં આવેલા રૂપાંતરણો છે, (3) બે સેટમાં સમાન એકમ છે, (4) શું કોઈ સમય લીક છે. કોઈપણ શંકાસ્પદ મુદ્દાઓની સૂચિ બનાવો; લીક શોધવા પર ધ્યાન કેન્દ્રિત કરો, સ્કોર ફિક્સ કરવા પર નહીં.
અહીં, ઉચ્ચ સ્કોર એ પ્રશ્ન કરવા માટેના સંકેત તરીકે ગણવામાં આવે છે, ઉજવણી કરવા માટે નહીં.
સામાન્ય ભૂલો
- "ખૂબ સારા" પરિણામની ઉજવણી. ખૂબ-સારા-થી-સાચા સ્કોર એ લીક ચેતવણી છે, સિદ્ધિ નથી.
- વિભાજન પહેલા તમામ ડેટામાંથી પરિવર્તન શીખવું. સૌથી સામાન્ય લીક; પાઇપલાઇન સાથે પ્રથમ વિભાજિત કરો.
- સમય શ્રેણીને અવ્યવસ્થિત રીતે વિભાજીત કરવી. મોડેલ ભવિષ્ય જુએ છે; કાલક્રમિક વિભાજન આવશ્યક છે.
- બે સેટમાં સમાન એકમ છોડીને. મોડેલ વ્યક્તિને યાદ કરે છે; જૂથ દ્વારા વિભાજીત કરો.
- મેન્યુઅલી પગલું ભરવું અને કોડમાં લખવું નહીં. વિશ્લેષણ અફર બની જાય છે; બધું કોડ અને ગિટમાં હોવું જોઈએ.
ટીપ: તમારા પ્રોજેક્ટની શરૂઆતમાં બે-વાક્ય "સન્માનની પ્રતિજ્ઞા" લખો: "મેં ઉત્પાદનમાં જોતાં પહેલાં ટેસ્ટ સેટને કોઈપણ રીતે સ્પર્શ કર્યો નથી. દરેક પગલું કોડમાં છે અને બીજ નિશ્ચિત છે." જો તમે પ્રામાણિકપણે આ બે વાક્યો પર સહી કરી શકતા નથી, તો તમારું પરિણામ હજી વિશ્વસનીય નથી.
સારાંશમાં
ડેટા લિકેજ અને બિન-પ્રજનનક્ષમતા એ ડેટા વિજ્ઞાનમાં બે સૌથી મોંઘી સાયલન્ટ ભૂલો છે. લીકેજ એ ભવિષ્યનું મોડેલનું વિઝન છે અને તે પોતાની જાતને ખોટી સફળતા તરીકે રજૂ કરે છે; ઉકેલ એ છે કે ટેસ્ટ સેટને વહેલા વિભાજિત કરો, ફક્ત તાલીમ (પાઈપલાઈન) થી જ પરિવર્તનો શીખો, દરેક લક્ષણને "શું આગાહી સમયે મારી પાસે છે" એવો પ્રશ્ન પૂછો અને યોગ્ય વિભાજન કરો (કાલક્રમિક/જૂથબદ્ધ). પ્રજનનક્ષમતા એ જ પરિણામ બે વાર મેળવવામાં સક્ષમ છે; તેનું સોલ્યુશન મેન્યુઅલી સ્ટેપ્સ દૂર કરવા, બીજને પિન કરવા, વર્ઝનને ફ્રીઝ કરવા અને બધું જ ગિટમાં રાખવાનું છે. AI આ જોખમોને વધારી અથવા ઘટાડી શકે છે; તે તમારી શિસ્ત છે જે નક્કી કરે છે.
એપ્લિકેશન કાર્ય
તમે બનાવેલ મોડેલની વિશેષતાઓની સૂચિ લો (અથવા અનુમાનિત એક) અને દરેક સુવિધાને પ્રશ્ન પૂછો "શું આગાહી સમયે મારી પાસે આ માહિતી છે?" લેખિતમાં; ઓછામાં ઓછો એક લીક ઉમેદવાર શોધો. પછી તમારા વિશ્લેષણને પુનઃઉત્પાદનયોગ્ય બનાવવા માટે એક ચેકલિસ્ટ ભરો: શું બીજ નિશ્ચિત છે, શું ત્યાં મેન્યુઅલ પગલાં છે, શું સંસ્કરણ નોંધાયેલ છે, શું તે ગિટમાં છે. ખામીઓને ઠીક કરો.
ચેકલિસ્ટ
- [ ] શું મેં લીક ચેતવણી તરીકે "To Good to be true" સ્કોરની ક્વેરી કરી હતી?
- [ ] શું મેં વિભાજન પછીના તમામ પરિવર્તનો શીખ્યા, માત્ર તાલીમથી?
- [ ] શું મેં સમય/જૂથ માળખું (કાલક્રમ/ગ્રુપકેફોલ્ડ) અનુસાર વિભાજિત કર્યું છે?
- [ ] શું મેં તમામ અવ્યવસ્થિતતાને નિશ્ચિત બીજ સાથે પુનરાવર્તિત કરી છે?
- [ ] શું મેં મેન્યુઅલ પગલાં દૂર કર્યા અને બધું કોડ અને સંસ્કરણ નિયંત્રણમાં રાખ્યું?