Theory
Model કેટલું ખોટું પડે છે?
તમે marks ની આગાહી કરવા regression model બનાવ્યું. એ આગાહીઓ કરે છે; ખરા marks પણ ખબર છે. તો પ્રશ્ન એ થાય: એ કેટલું ખોટું પડે છે? Model સુધારવું હોય તો પહેલાં એની ભૂલને એક આંકડામાં માપવી પડે, અને એ આંકડાને loss (અથવા error) function કહે છે.
આ પાઠ regression માટે સૌથી વધુ વપરાતાં ત્રણ માપ આવરી લે છે: mean absolute error (MAE), mean squared error (MSE) અને R-squared. આપણે ત્રણેય એક નાના, ગણી બતાવેલા દાખલા પર ગણીશું જેથી વ્યાખ્યાઓ નક્કર બને. ભૂલ જેટલી ઓછી એટલું સારું; R-squared જેટલો ઊંચો એટલું સારું.
Theory
ગણી બતાવેલો દાખલો, અને MAE
ચાર આગાહીઓ લો. ખરા marks છે 3, 5, 7, 9; model આગાહી કરે છે 4, 5, 7, 6. દરેકની ભૂલ એટલે ખરી કિંમત ઓછા આગાહી: -1, 0, 0, 3.
Mean Absolute Error (MAE) એ ભૂલોના કદ ની સરેરાશ છે (નિરપેક્ષ કિંમત, ચિહ્ન ધ્યાનમાં લીધા વગર):
MAE = (|-1| + |0| + |0| + |3|) / 4 = (1 + 0 + 0 + 3) / 4 = 4 / 4 = 1
એટલે સરેરાશ રીતે model 1 mark જેટલું ચૂકે છે. MAE લક્ષ્યના જ એકમમાં હોય છે અને સમજવામાં સહેલો છે: એ ખાલી સામાન્ય રીતે કેટલું ચૂકાય છે એ કહે છે.
Theory
MSE, અને એ મોટી ભૂલોને કેમ સજા કરે છે
Mean Squared Error (MSE) ભૂલોના વર્ગ ની સરેરાશ લે છે:
MSE = ((-1) નો વર્ગ + 0 નો વર્ગ + 0 નો વર્ગ + 3 નો વર્ગ) / 4 = (1 + 0 + 0 + 9) / 4 = 10 / 4 = 2.5
ધ્યાન આપો કે એ જ આગાહીઓ માટે MSE (2.5) એ MAE (1) કરતાં મોટો છે. કારણ છે 3 જેટલી ભૂલ: એનો વર્ગ કરતાં 9 થાય, જે સરેરાશ પર છવાઈ જાય છે. MSE નો એ જ મુખ્ય ગુણધર્મ છે: વર્ગ કરવાથી એ નાની ભૂલો કરતાં મોટી ભૂલોને ઘણી વધારે સજા કરે છે. એટલે જ્યારે મોટી ભૂલો ખાસ કરીને ખરાબ હોય અને તમે ઇચ્છતા હો કે model એમનાથી બચે, ત્યારે MSE વાપરવાનું માપ છે. (એની નબળાઈ પણ એ જ છે: વર્ગ કરવાથી એ outliers પ્રત્યે વધુ સંવેદનશીલ બની જાય છે.)
Practical
MAE અને MSE ગણવાં (ચકાસેલું)
actual = [3, 5, 7, 9]
predicted = [4, 5, 7, 6]
n = len(actual)
errors = [a - p for a, p in zip(actual, predicted)] # [-1, 0, 0, 3]
mae = sum(abs(e) for e in errors) / n # (1+0+0+3)/4 = 1.0
mse = sum(e*e for e in errors) / n # (1+0+0+9)/4 = 2.5
print(mae) # 1.0
print(mse) # 2.5 -> મોટો, કારણ કે 3 નો વર્ગ 9 થાય છેThis example runs in Gri-Learn on the web, where you can edit it and see the output.
Theory
R-squared: કેટલું સમજાવાયું
R-squared જુદો જ પ્રશ્ન પૂછે છે: લક્ષ્યમાં રહેલી વધઘટનો કેટલો ભાગ model સમજાવી શકે છે? એ model ની ભૂલોને એક સાદા ધોરણ સામે સરખાવે છે, એટલે કે ફક્ત સરેરાશની આગાહી કરવા સામે.
R-squared = 1 ઓછા (SS_res / SS_tot), જ્યાં SS_res એટલે ભૂલોના વર્ગનો સરવાળો અને SS_tot એટલે સરેરાશથી થતી કુલ વર્ગીય વધઘટ. આપણા દાખલા માટે: ખરી કિંમતોની સરેરાશ 6 છે, એટલે SS_tot = (3-6) નો વર્ગ + (5-6) નો વર્ગ + (7-6) નો વર્ગ + (9-6) નો વર્ગ = 9 + 1 + 1 + 9 = 20, અને SS_res = 1 + 0 + 0 + 9 = 10. તેથી R-squared = 1 ઓછા 10/20 = 0.5.
0.5 નો R-squared એટલે model અડધી વધઘટ સમજાવે છે. 1 ની નજીક હોય તો ઉત્તમ; 0 એટલે ફક્ત સરેરાશ ધારી લેવા કરતાં કંઈ સારું નહીં.
Quiz
ભૂલો [-1, 0, 0, 3] માટે MAE 1 છે પણ MSE 2.5 છે. અહીં MSE એ MAE કરતાં મોટો કેમ છે?
- કારણ કે MSE એ MAE કરતાં વધુ data points વાપરે છે
- કારણ કે MSE દરેક ભૂલનો વર્ગ કરે છે, એટલે 3 ની ભૂલ 9 બની જાય છે અને મોટી ભૂલોને વધુ ભારે સજા મળે છે
- કારણ કે MAE 3 જેટલી ભૂલને સાવ ગણતરીમાં લેતો જ નથી
- આ ભૂલ છે; MSE હંમેશા MAE બરાબર જ હોવો જોઈએ
Show the answer
કારણ કે MSE દરેક ભૂલનો વર્ગ કરે છે, એટલે 3 ની ભૂલ 9 બની જાય છે અને મોટી ભૂલોને વધુ ભારે સજા મળે છે
MSE સરેરાશ લેતાં પહેલાં દરેક ભૂલનો વર્ગ કરે છે, એટલે સૌથી મોટી ભૂલ છવાઈ જાય છે: 3 ની ભૂલનો વર્ગ 9 થાય, જે MSE (2.5) ને MAE (1) થી ઉપર ધકેલે છે. વિકલ્પ A ખોટો છે: બંને એ જ ચાર data points વાપરે છે; તફાવત વર્ગ કરવા સામે નિરપેક્ષ કિંમત લેવાનો છે, સંખ્યાનો નહીં. વિકલ્પ C ખોટો છે: MAE માં 3 ની ભૂલ ગણાય જ છે, એ પોતાની નિરપેક્ષ કિંમત 3 તરીકે સરવાળામાં ભળે છે (1+0+0+3=4, ભાગ્યા 4 બરાબર 1); ફક્ત એનો વર્ગ થતો નથી. વિકલ્પ D ખોટો છે: MSE અને MAE રચના પ્રમાણે જ સામાન્ય રીતે જુદા હોય છે, અને એ ફક્ત ખાસ કિસ્સામાં જ સરખા થાય (જેમ કે બધી ભૂલો 0 કે 1 હોય). મુખ્ય ગુણધર્મ: વર્ગ કરવાથી MSE મોટી ભૂલોને MAE કરતાં ઘણી વધારે સજા કરે છે.
Think first
MAE ક્યારે પસંદ કરવો અને MSE ક્યારે?
બંને regression ની ભૂલ માપે છે. વર્ગ કરવો (MSE) ક્યારે યોગ્ય પસંદગી છે, અને MAE ક્યારે વધુ સારો? વિચારીને પછી tap કરો.
Show the answer
પસંદગી બે વાત પર આધારે કરો: તમે મોટી ભૂલોને કેટલી સજા કરવા માગો છો, અને outliers વિશે તમારું વલણ શું છે.
MSE દરેક ભૂલનો વર્ગ કરે છે, એટલે થોડીક મોટી ચૂક આખા સ્કોર પર છવાઈ જાય છે. મોટી ભૂલો પ્રમાણથી વધારે મોંઘી પડતી હોય ત્યારે આ જ જોઈએ છે: જો 10 જેટલું ચૂકવું એ 5 જેટલું ચૂકવા કરતાં બમણું નહીં પણ ઘણું વધારે ખરાબ હોય, તો MSE ની ભારે સજા model ને મોટી ભૂલોથી દૂર રહેવા દબાણ કરે છે. એ જ સંવેદનશીલતા એની નબળાઈ પણ છે: એક જ વિચિત્ર outlier MSE ને ફુલાવી દે અને model ને એ એક બિંદુ પાછળ દોડાવી શકે.
MAE દરેક ભૂલને એના કદના પ્રમાણમાં જ ગણે છે (વર્ગ કર્યા વગર), એટલે એ outliers સામે વધુ ટકાઉ છે; એક અસાધારણ ભૂલ એને ફક્ત એટલી જ ખસેડે જેટલું એનું કદ છે, એના વર્ગ જેટલું નહીં. તેથી જ્યારે તમારા data માં એવા outliers હોય જેમને fit પર છવાવા દેવા ન હોય, અથવા જ્યારે તમને લક્ષ્યના પોતાના એકમમાં 'સામાન્ય રીતે કેટલું ચૂકાય છે' એવો સીધો આંકડો જોઈતો હોય, ત્યારે MAE વધુ યોગ્ય છે.
MSE ત્યારે વધુ યોગ્ય છે જ્યારે મોટી ભૂલો ખરેખર ડરવા જેવી હોય અને તમારો data એકંદરે સ્વચ્છ હોય; ઉપરાંત એના ગાણિતિક ગુણધર્મો સારા હોવાથી ઘણા algorithms તાલીમ દરમિયાન એનો લાભ લે છે.
વ્યવહારમાં વિશ્લેષકો ઘણી વાર બંને જુએ છે: સમજી શકાય એવા સામાન્ય-ભૂલના આંકડા માટે MAE, મોટી ભૂલો સૌથી અગત્યની હોય ત્યારે MSE (અથવા એનું વર્ગમૂળ), અને કુલ કેટલી વધઘટ સમજાવાઈ એ માટે R-squared. માપ એ પ્રમાણે પસંદ કરો કે મોટી ચૂક થોડી દુખવી જોઈએ કે ઘણી.
Summary
Key takeaways
- Loss function એક જ આંકડામાં માપે છે કે model કેટલું ખોટું પડે છે; ભૂલ જેટલી ઓછી એટલું સારું.
- દરેક આગાહીની ભૂલ એટલે ખરી કિંમત ઓછા આગાહી; ખરી [3,5,7,9] અને આગાહી [4,5,7,6] માટે ભૂલો [-1,0,0,3] થાય.
- Mean Absolute Error (MAE) ભૂલોના કદની સરેરાશ લે છે: (1+0+0+3)/4 = 1; એ લક્ષ્યના એકમમાં હોય છે અને વાંચવામાં સહેલો છે.
- Mean Squared Error (MSE) ભૂલોના વર્ગની સરેરાશ લે છે: (1+0+0+9)/4 = 2.5; વર્ગ કરવાથી એ મોટી ભૂલોને વધુ સજા કરે છે.
- અહીં MSE (2.5) એ MAE (1) કરતાં વધારે છે કારણ કે 3 ની ભૂલનો વર્ગ 9 થાય છે.
- R-squared = 1 ઓછા SS_res/SS_tot; અહીં 1 ઓછા 10/20 = 0.5, એટલે model અડધી વધઘટ સમજાવે છે (1 ની નજીક ઉત્તમ, 0 એટલે ધોરણ જેટલું જ).
- યાદ રાખવાની કડી: MAE એટલે સામાન્ય ચૂક, MSE મોટી ભૂલોને સજા કરે, અને R-squared એટલે સમજાવાયેલી વધઘટનો ભાગ.