මැෂිමකට 2 වරක් චක්කරය උගන්වමු

Duminda Wijesinghe
3 min readAug 14, 2019

අපි හිතමු, අපිට අවශ්‍යයි අපි දෙන ඕනෙම සංඛ්‍යාවක් 2 න් ගුණකරන software එකක්. මේක හරිම සරල ගනනය කිරීමක්. Input එක a නම් output එක 2a වෙන්න ඕන. නමුත් මෙතනදි අපිට 2 කියන ගුණකය අපේ software එකේ ලියල තියන්න (hard code කරන්න) වෙනවා. එහෙම නොකර machine learning භාවිතා කරල මේ software එක ලියන්නත් පුලුවන්.

අපිට software එකට මෙහෙම කියන්න පුලුවන් “Input එක 2 නම් output එක 4 වෙන්න ඕන, input එක 3 නම් output එක 6 වෙන්න ඕන”, මේ විදිහට inputs සහ outputs රාශියක් යොදාගෙන, ඒ සංඛ්‍යා අතර තියෙන සම්බන්දය (relationship) හොයාහගන්න අපිට පුලුවන්. මේ හොයාගන්න relationship එකට අපි කියනවා model එකක් කියල.

Inputs සහ outputs අතර සම්බන්දය හොයගෙන අපි කලින් කතාකරපු model එක ගොඩනගන ක්‍රියාවලියට කියන්නේ training කියල. මේ සදහා විවිධ algorithms භාවිතා වෙනවා.

මේ algorithms අපි ලියන softwares වලදී යොදාගන්න ඒවායේ අන්තර්ගත ගනනය කිරීම් සහ ගණිත න්‍යායන් (mathematical theories) දැනගැනීම අත්‍යාවශ්‍ය නැහැ. Software එක ලියන programming language එක මොකක් උනත් ඒ language එකට අදාල machine learning libraries පහසුවෙන්ම හොයාගන්න පුලුවන්. අද වෙනකොට බහුලව බාවිතාවෙන programming languages කිහිපයකට අදාල machine learning libraries පහල තියෙනවා.

  1. JavascriptML.js
  2. PythonScikit learn
  3. JavaWeka
  4. C++ML Pack
  5. GoGo learn

දැන් අපේ software එක Javascript වලින් ලියමු. මේකට අපි පාවිච්චි කරන්නේ ML.js.

const SimpleLinearRegression = ML.SimpleLinearRegression;

අපි මෙතැනදි පාවිච්චි කරල තියෙන්නෙ simple linear regression කියන algorithm එක. input සහ output data අතර රේඛිය සම්බන්ධයක් තියෙනවා කියල උපකල්පනය කරන්න පුළුවන් අවස්ථා වලදී, වෙන විදිහකින් කිව්වොත් inputs X අක්ශයටත් outputs Y අක්ශයටත් යොදාගෙන අපේ data ප්‍රස්ථාරගත කලොත් data points ආසන්න වශයෙන් හෝ සරල රේඛාවක පිහිටන අවස්ථාවක මේ algorithm එක පාවිච්චි කරන්න පුළුවන්.

// training data
const x = [1,2,3]; // inputs
const y = [2,4,6]; // outputs

මේ තියෙන්නේ training data. අපි මේ data වලට විවිධ තැන වලදි training data, data samples, data points, features & labels, data set ආදී නම් වලින් හදුන්වනවා.

// training
const model = new ML.SimpleLinearRegression(x, y);

මෙතැනදී තමයි ඉගෙනීම/ඉගැන්වීම (learning/training ) සිද්ධවෙන්නේ. Training අවසානයේ අපිට ලැබෙනවා model එකක්.

// model details
console.log(`
Slope: ${model.slope}
Intercept: ${model.intercept}
Function: ${model.toString()}
`);
Slope: 2
Intercept: 0
Function: f(x) = 2 * x

ඇත්තටම model එක විදිහට අපිට ලැබෙන්නේ y = ax + bආකාරයේ අනුක්‍රමණය (slope) 2 සහ අන්තඃකණ්ඩය (intercept) 0 වෙන ශ්‍රිතයක්. මේ විදිහට බලනකොට machine learning කියන්නේ අපේ data set එක ආසන්න වශයෙන් නිරවද්‍යව පැහැදිලි කරන්න පුළුවන් ශ්‍රිතය ගොඩනගාගැනීමට.

const prediction = model.predict(i);

දැන් අපේ model එක පාවිච්චි කරලා අපිට අවශ්‍ය ඕනෙම input එකකට අදාල output එකක් පුරෝකථනය predict කරන්න පුළුවන්.

පහල link එකට ගියොත් ඔයාලට පුළුවන් code එකත් එක්ක සෙල්ලං කරලා බලන්න.

--

--