JavaRush /Блоги Java /Random-TG /Омӯзиши мошинҳо барои таҳиягарони Java, Қисми 2

Омӯзиши мошинҳо барои таҳиягарони Java, Қисми 2

Дар гурӯҳ нашр шудааст
Омӯзиши мошинҳо барои таҳиягарони Java, Қисми 1
Омӯзиши мошинсозӣ барои таҳиягарони Java, Қисми 2 - 1

Арзёбии функсияи an objectивӣ

Ёдовар мешавем, ки функсияи мақсаднок , ки ҳамчун функсияи пешгӯӣ низ маълум аст, натиҷаи омодагӣ ё раванди таълим мебошад. Аз ҷиҳати математикӣ мушкил пайдо кардани функсияест, ки тағирёбандаро ҳамчун вуруд қабул мекунад хва арзиши пешбинишударо бармегардонад у.
Омӯзиши мошинсозӣ барои таҳиягарони Java, Қисми 2 - 2
Дар омӯзиши мошинсозӣ, функсияи хароҷот (J(θ))барои ҳисоб кардани арзиши хато ё "арзиш" -и функсияи ҳадафи додашуда истифода мешавад.
Омӯзиши мошинсозӣ барои таҳиягарони Java, Қисми 2 - 3
Функсияи хароҷот нишон медиҳад, ки модел то чӣ андоза ба маълумоти омӯзиш мувофиқат мекунад. Барои муайян кардани арзиши функсияи ҳадафи дар боло нишондодашуда хатои квадратии ҳар як хонаро ҳисоб кардан лозим аст (i). Хатогӣ масофаи байни арзиши ҳисобшуда ува арзиши воқеии yхона аз мисол аст i.
Омӯзиши мошинсозӣ барои таҳиягарони Java, Қисми 2 - 4
Масалан, нархи воқеии хона бо масоҳати 1330 = 6,500,000 € . Ва фарқи байни нархи пешгӯии хона аз рӯи функсияи ҳадафи таълимшуда €7,032,478 аст : фарқият (ё хато) €532,478 аст . Шумо инчунин метавонед ин фарқиятро дар графики боло бинед. Фарқият (ё хато) ҳамчун хатҳои сурхи амудӣ барои ҳар як ҷуфти омӯзиши нархҳо нишон дода мешавад. Пас аз ҳисоб кардани арзиши функсияи ҳадафи таълимшуда, шумо бояд хатогии квадратиро барои ҳар як хона дар мисол ҷамъ кунед ва арзиши асосиро ҳисоб кунед. Чӣ қадаре ки арзиши нарх камтар бошад (J(θ)), пешгӯиҳои функсияи ҳадафи мо ҳамон қадар дақиқтар хоҳанд буд. Рӯйхати 3 татбиқи оддии Java-и функсияи хароҷотро нишон медиҳад, ки ҳамчун вуруд вазифаи ҳадаф, рӯйхати маълумоти омӯзишӣ ва тамғакоғазҳои бо онҳо алоқамандро мегирад. Арзишҳои пешгӯӣ дар як давра ҳисоб карда мешаванд ва хатогӣ бо роҳи тарҳ кардани арзиши воқеии нарх (аз тамға гирифташуда) ҳисоб карда мешавад. Баъдтар, квадрати хатогиҳо ҷамъбаст карда, арзиши хато ҳисоб карда мешавад. Арзиш ҳамчун арзиши навъи баргардонида мешавад double:

Рӯйхат - 3

public static double cost(Function<ltDouble[], Double> targetFunction,
 List<ltDouble[]> dataset,
 List<ltDouble> labels) {
 int m = dataset.size();
 double sumSquaredErrors = 0;

 // рассчет квадрата ошибки («разницы») для каждого тренировочного примера и //добавление его к сумме
 for (int i = 0; i < m; i++) {
 // получаем вектор признаков из текущего примера
 Double[] featureVector = dataset.get(i);
 // предсказываем meaning и вычисляем ошибку базируясь на реальном
 //значении (метка)
 double predicted = targetFunction.apply(featureVector);
 double label = labels.get(i);
 double gap = predicted - label;
 sumSquaredErrors += Math.pow(gap, 2);
 }

 // Вычисляем и возращаем meaning ошибки (чем меньше тем лучше)
 return (1.0 / (2 * m)) * sumSquaredErrors;
}
Ба хондан дар бораи Java таваҷҷӯҳ доред? Ба гурӯҳи Java Developer ҳамроҳ шавед !

Омӯзиши вазифаи мақсаднок

Гарчанде ки функсияи хароҷот барои арзёбии сифати функсияи мақсаднок ва параметрҳои тета кӯмак мекунад, шумо ба ҳар ҳол бояд параметрҳои мувофиқтарини тетаро пайдо кунед. Барои ин шумо метавонед алгоритми пастшавии градиентро истифода баред.

Пастшавии градиент

Пастшавии градиент функсияи хароҷотро кам мекунад. Ин маънои онро дорад, ки он барои дарёфти параметрҳои тета истифода мешавад, ки (J(θ))дар асоси маълумоти омӯзишӣ арзиши ҳадди ақал доранд. Дар ин ҷо як алгоритми соддакардашуда барои ҳисоб кардани арзишҳои нави тета мувофиқ аст:
Омӯзиши мошинсозӣ барои таҳиягарони Java, Қисми 2 - 5
Ҳамин тариқ, параметрҳои вектори тета бо ҳар як такрори алгоритм беҳтар мешаванд. Коэффисиенти омӯзиш α шумораи ҳисобҳоро дар ҳар як такрор муайян мекунад. Ин ҳисобкуниро то пайдо шудани арзишҳои "хуб" тета анҷом додан мумкин аст. Масалан, функсияи регрессияи хатӣ дар зер се параметри тета дорад:
Омӯзиши мошинсозӣ барои таҳиягарони Java, Қисми 2 - 6
Дар ҳар як такрор арзиши нав барои ҳар як параметрҳои тета ҳисоб карда мешавад: , , ва . Пас аз ҳар як такрор, татбиқи нав ва мувофиқтарро метавон бо истифода аз вектори нави тета 0 , θ 1 , θ 2 } эҷод кард . Рӯйхати -4 рамзи Java-ро барои алгоритми таназзули градиент нишон медиҳад. Тета барои функсияи регрессия бо истифода аз маълумоти омӯзишӣ, маълумоти маркер, суръати омӯзиш омӯхта мешавад . Дар натиҷа функсияи ҳадафи беҳтаршуда бо истифода аз параметрҳои тета хоҳад буд. Усул такрор ба такрор даъват карда мешавад, ки вазифаи нав ва параметрҳои нави тетаро аз ҳисобҳои қаблӣ гузаронад. Ва ин зангҳо то он даме, ки функсияи ҳадафи танзимшуда ба платои ҳадди ақалл мерасад, такрор карда мешаванд: θ0θ1θ2LinearRegressionFunction(α)train()

Рӯйхат - 4

public static LinearRegressionFunction train(LinearRegressionFunction targetFunction,
 List<ltDouble[]> dataset,
 List<ltDouble> labels,
 double alpha) {
 int m = dataset.size();
 double[] thetaVector = targetFunction.getThetas();
 double[] newThetaVector = new double[thetaVector.length];

 // вычисление нового значения тета для каждого element тета массива
 for (int j = 0; j < thetaVector.length; j++) {
 // сумируем разницу ошибки * признак
 double sumErrors = 0;
 for (int i = 0; i < m; i++) {
 Double[] featureVector = dataset.get(i);
 double error = targetFunction.apply(featureVector) - labels.get(i);
 sumErrors += error * featureVector[j];
 }

 //вычисляем новые значения тета
 double gradient = (1.0 / m) * sumErrors;
 newThetaVector[j] = thetaVector[j] - alpha * gradient;
 }

 return new LinearRegressionFunction(newThetaVector);
}
Барои он ки хароҷот пайваста кам шавад, шумо метавонед J(θ)пас аз ҳар як қадами омӯзиш функсияи хароҷотро иҷро кунед. Пас аз ҳар як такрор, хароҷот бояд кам шавад. Агар ин рӯй надиҳад, ин маънои онро дорад, ки арзиши коэффисиенти омӯзиш хеле калон аст ва алгоритм танҳо арзиши минималиро аз даст додааст. Дар чунин ҳолат, алгоритми таназзули градиент ноком мешавад. Қитъаҳои зер функсияи ҳадафро бо истифода аз параметрҳои нави ҳисобшудаи тета, ки аз вектори ибтидоии тета оғоз мекунанд, нишон медиҳанд {1.0, 1.0}. Сутуни чап нақшаи функсияи пешгӯиро пас аз 50 такрор нишон медиҳад; сутуни миёна пас аз 200 такрор; ва сутуни рост пас аз 1000 такрор. Аз инхо дида метавонем, ки нарх пас аз хар як такрор паст мешавад ва вазифаи нави максад бехтар ва бехтар мувофик меояд. Пас аз 500-600 такрор, параметрҳои тета дигар ба таври назаррас тағир намеёбанд ва нарх ба платои устувор мерасад. Пас аз ин, дурустии функсияи мақсаднокро бо ин роҳ такмил додан мумкин нест.
Омӯзиши мошинсозӣ барои таҳиягарони Java, Қисми 2 - 7
Дар ин ҳолат, гарчанде ки хароҷот пас аз 500-600 такрорӣ дигар ба таври назаррас коҳиш наёбад, функсияи мақсаднок ҳанӯз оптималӣ нест. Ин ихтилофро нишон медиҳад . Дар омӯзиши мошинсозӣ истилоҳи "номувофиқӣ" барои нишон додани он истифода мешавад, ки алгоритми омӯзиш тамоюлҳои асосиро дар додаҳо пайдо намекунад. Дар асоси таҷрибаи воқеии ҳаёт, эҳтимол дорад, ки коҳиши нархи як метри мураббаъ барои моликияти калонтар интизор шавад. Аз ин хулоса баровардан мумкин аст, ки моделе, ки барои раванди омӯзиши функсияҳои мақсаднок истифода мешавад, ба маълумоти кофӣ мувофиқат намекунад. Тафовут аксар вақт аз ҳад зиёд содда кардани модел аст. Ин дар ҳолати мо рӯй дод, функсияи мақсаднок хеле содда аст ва барои таҳлил як параметр - майдони хонаро истифода мебарад. Аммо ин маълумот барои дақиқ пешгӯии нархи хона кофӣ нест.

Илова кардани хусусиятҳо ва миқёси онҳо

Агар шумо фаҳмед, ки вазифаи ҳадафи шумо ба масъалае, ки шумо ҳал кардан мехоҳед, мувофиқат намекунад, онро ислоҳ кардан лозим аст. Роҳи маъмули ислоҳи номувофиқатӣ ин илова кардани хусусиятҳои иловагӣ ба вектори хусусият мебошад. Дар мисоли нархи хона, шумо метавонед хусусиятҳоро ба монанди шумораи ҳуҷраҳо ё синну соли хона илова кунед. Яъне, ба ҷои истифодаи вектори дорои як арзиши хусусият {size}барои тавсифи хона, шумо метавонед вектори дорои якчанд арзишҳоро истифода баред, масалан, {size, number-of-rooms, age}. Дар баъзе мавридҳо, шумораи хусусиятҳо дар маълумоти мавҷудаи омӯзиш кофӣ нест. Пас кӯшиш кардан лозим аст, ки хусусиятҳои полиномие, ки бо истифода аз хусусиятҳои мавҷуда ҳисоб карда мешаванд, истифода баранд. Масалан, шумо имкон доред, ки функсияи an objectивии муайян кардани нархи хонаро васеъ кунед, то он хусусияти ҳисобшудаи метри мураббаъ (x2) -ро дар бар гирад:
Омӯзиши мошинсозӣ барои таҳиягарони Java, Қисми 2 - 8
Истифодаи якчанд хусусиятҳо миқёси хусусиятро талаб мекунад , ки барои стандартизатсия кардани диапазон дар хусусиятҳои гуногун истифода мешавад. Ҳамин тариқ, диапазони арзишҳо барои атрибути андозаи 2 аз диапазони арзишҳои атрибути андоза ба таври назаррас калонтар аст. Бе миқёси хусусият, андозаи 2 ба функсияи хароҷот беасос таъсир мерасонад. Хатогие, ки аз ҷониби атрибути андозаи 2 ҷорӣ карда шудааст , назар ба хатогие, ки аттрибути андоза ворид кардааст, хеле калонтар хоҳад буд. Алгоритми оддии миқёси хусусият дар зер оварда шудааст:
Омӯзиши мошинсозӣ барои таҳиягарони Java, Қисми 2 - 9
Ин алгоритм дар синф FeaturesScalingдар codeи мисоли зер амалӣ карда мешавад. Синф FeaturesScalingусули тиҷоратии эҷоди функсияи миқёсро пешниҳод мекунад, ки ба маълумоти омӯзишӣ мутобиқ карда шудааст. Дар дохилӣ, мисолҳои маълумоти омӯзишӣ барои ҳисоб кардани арзишҳои миёна, ҳадди ақал ва максималӣ истифода мешаванд. Функсияи натиҷавӣ вектори хусусиятро мегирад ва як навро бо хусусиятҳои миқёсӣ тавлид мекунад. Миқёси хусусиятҳо ҳам барои раванди омӯзиш ва ҳам барои пешгӯӣ зарур аст, ки дар зер нишон дода шудааст:
// создание массива данных
List<ltDouble[]> dataset = new ArrayList<>();
dataset.add(new Double[] { 1.0, 90.0, 8100.0 }); // feature vector of house#1
dataset.add(new Double[] { 1.0, 101.0, 10201.0 }); // feature vector of house#2
dataset.add(new Double[] { 1.0, 103.0, 10609.0 }); // ...
//...

// создание меток
List<ltDouble> labels = new ArrayList<>();
labels.add(249.0); // price label of house#1
labels.add(338.0); // price label of house#2
labels.add(304.0); // ...
//...

// создание расширенного списка признаков
Function<ltDouble[], Double[]> scalingFunc = FeaturesScaling.createFunction(dataset);
List<ltDouble[]> scaledDataset = dataset.stream().map(scalingFunc).collect(Collectors.toList());

// создаем функцию которая инициализирует теты и осуществляет обучение //используя коэффициент обучения 0.1

LinearRegressionFunction targetFunction = new LinearRegressionFunction(new double[] { 1.0, 1.0, 1.0 });
for (int i = 0; i < 10000; i++) {
 targetFunction = Learner.train(targetFunction, scaledDataset, labels, 0.1);
}

// делаем предсказание стоимости дома с площадью 600 m2
Double[] scaledFeatureVector = scalingFunc.apply(new Double[] { 1.0, 600.0, 360000.0 });
double predictedPrice = targetFunction.apply(scaledFeatureVector);
Тавре ки бештар ва бештар хусусиятҳо илова карда мешаванд, мувофиқат ба вазифаи ҳадаф меафзояд, аммо эҳтиёт шавед. Агар шумо аз ҳад дур равед ва хусусиятҳои аз ҳад зиёд илова кунед, шумо метавонед функсияи an objectивии аз ҳад зиёдро омӯзед.

Аз ҳад зиёд мувофиқат кардан ва тасдиқи байниҳамдигарӣ

Аз ҳад зиёд мувофиқат вақте рух медиҳад, ки функсия ё модел ба маълумоти омӯзиш хеле хуб мувофиқат мекунад, то он дараҷае, ки садо ё вариантҳои тасодуфиро дар маълумоти омӯзиш сабт мекунад. Намунаи аз ҳад зиёд мувофиқат кардан дар диаграммаи рости зер нишон дода шудааст:
Омӯзиши мошинсозӣ барои таҳиягарони Java, Қисми 2 - 10
Аммо, модели аз ҳад зиёд мувофиқат кардан дар маълумоти омӯзишӣ хеле хуб кор мекунад, аммо дар маълумоти воқеии номаълум кор намекунад. Якчанд роҳҳо барои пешгирӣ кардани аз ҳад зиёд вуҷуд доранд.
  • Барои омӯзиш маҷмӯи маълумоти калонтарро истифода баред.
  • Чӣ тавре ки дар графикҳои боло нишон дода шудааст, хусусиятҳои камтарро истифода баред.
  • Алгоритми такмилёфтаи омӯзиши мошинро истифода баред, ки танзимро ба назар мегирад.
Агар алгоритми пешгӯӣ аз маълумоти омӯзишӣ бартарӣ дошта бошад, он гоҳ хусусиятҳоеро, ки ба дурустии он фоида намеоранд, нест кардан лозим аст. Мушкилот пайдо кардани хусусиятҳое мебошад, ки нисбат ба дигарон ба дурустии пешгӯӣ таъсири назаррас доранд. Тавре ки дар графикҳо нишон дода шудааст, изофанависиро бо ёрии графикҳо ба таври визуалӣ муайян кардан мумкин аст. Ин барои графикҳои дорои 2 ё 3 координата хуб кор мекунад, агар шумо зиёда аз 2 хусусиятро истифода баред, кашидан ва арзёбии график душвор мегардад. Ҳангоми тасдиқи байнисоҳавӣ, шумо моделҳоро пас аз омӯзиш бо истифода аз маълумоти ба алгоритми номаълум пас аз анҷоми раванди таълим дубора санҷед. Маълумоти мавҷуда бо тамғагузорӣ бояд ба 3 маҷмӯи тақсим карда шавад:
  • маълумот оид ба таълим;
  • маълумоти тафтиш;
  • маълумоти санҷиш.
Дар ин ҳолат 60 фоизи сабтҳои тамғагузорие, ки хонаҳоро тавсиф мекунанд, бояд дар раванди таълими вариантҳои алгоритми мақсаднок истифода шаванд. Пас аз раванди омӯзиш, нисфи маълумоти боқимонда (қаблан истифода нашудаанд) бояд барои тафтиш кардани он, ки алгоритми ҳадафи таълимшуда дар маълумоти номаълум хуб иҷро мекунад, истифода шавад. Одатан, алгоритме, ки аз дигарон беҳтар иҷро мекунад, барои истифода интихоб карда мешавад. Маълумоти боқимонда барои ҳисоб кардани арзиши хато барои модели ниҳоии интихобшуда истифода мешавад. Дигар усулҳои тасдиқкунии салиб вуҷуд доранд, ба монанди k-fold . Бо вуҷуди ин, ман онҳоро дар ин мақола тавсиф намекунам.

Воситаҳои омӯзиши мошинҳо ва чаҳорчӯбаи Weka

Аксари чаҳорчӯбаҳо ва китобхонаҳо маҷмӯи васеи алгоритмҳои омӯзиши мошинро пешниҳод мекунанд. Илова бар ин, онҳо интерфейси мувофиқи сатҳи баландро барои омӯзиш, озмоиш ва коркарди моделҳои додаҳо таъмин мекунанд. Weka яке аз чаҳорчӯбаҳои маъмултарин барои JVM мебошад. Weka як китобхонаи амалии Java мебошад, ки дорои санҷишҳои графикӣ барои тасдиқи моделҳо мебошад. Намунаи дар поён овардашуда китобхонаи Weka-ро барои сохтани маҷмӯи маълумотҳои омӯзишӣ истифода мебарад, ки дорои хусусиятҳо ва нишонаҳо мебошад. Усули setClassIndex()- барои аломатгузорӣ. Дар Weka, тамға ҳамчун синф муайян карда мешавад:
// определяем атрибуты для признаков и меток
ArrayList<ltAttribute> attributes = new ArrayList<>();
Attribute sizeAttribute = new Attribute("sizeFeature");
attributes.add(sizeAttribute);
Attribute squaredSizeAttribute = new Attribute("squaredSizeFeature");
attributes.add(squaredSizeAttribute);
Attribute priceAttribute = new Attribute("priceLabel");
attributes.add(priceAttribute);


// создаем и заполняем список признаков 5000 примеров
Instances trainingDataset = new Instances("trainData", attributes, 5000);
trainingDataset.setClassIndex(trainingSet.numAttributes() - 1);
Instance instance = new DenseInstance(3);

instance.setValue(sizeAttribute, 90.0);
instance.setValue(squaredSizeAttribute, Math.pow(90.0, 2));
instance.setValue(priceAttribute, 249.0);
trainingDataset.add(instance);
Instance instance = new DenseInstance(3);
instance.setValue(sizeAttribute, 101.0);
...
Маҷмӯи маълумот ва an objectи намунавӣ метавонад аз файл захира ва бор карда шавад. Weka ARFF (Format Relation File Attribute) -ро истифода мебарад, ки аз ҷониби меъёрҳои графикии Weka дастгирӣ карда мешавад. Ин маҷмӯаи додаҳо барои омӯзиши функсияи an objectивӣ, ки ҳамчун таснифгар дар Weka маъруф аст, истифода мешавад. Пеш аз ҳама, шумо бояд функсияи ҳадафро муайян кунед. Рамзи дар поён овардашуда LinearRegressionнамунаи таснифотро эҷод мекунад. Ин таснифот бо истифода аз buildClassifier(). Ин усул buildClassifier()параметрҳои тетаро дар асоси маълумоти омӯзишӣ дар ҷустуҷӯи беҳтарин модели ҳадаф интихоб мекунад. Бо Weka, ба шумо лозим нест, ки дар бораи муқаррар кардани суръати омӯзиш ё шумораи такрорҳо хавотир шавед. Weka инчунин миқёси хусусиятҳоро мустақилона иҷро мекунад.
Classifier targetFunction = new LinearRegression();
targetFunction.buildClassifier(trainingDataset);
Пас аз анҷом додани ин танзимот, функсияи ҳадаф метавонад барои пешгӯии нархи хона истифода шавад, тавре ки дар зер нишон дода шудааст:
Instances unlabeledInstances = new Instances("predictionset", attributes, 1);
unlabeledInstances.setClassIndex(trainingSet.numAttributes() - 1);
Instance unlabeled = new DenseInstance(3);
unlabeled.setValue(sizeAttribute, 1330.0);
unlabeled.setValue(squaredSizeAttribute, Math.pow(1330.0, 2));
unlabeledInstances.add(unlabeled);

double prediction = targetFunction.classifyInstance(unlabeledInstances.get(0));
Weka синферо пешниҳод мекунад Evaluation, ки классификатор ё модели омӯзонидашударо санҷед. Дар codeи зер, массиви интихобшудаи маълумоти тасдиқкунӣ барои пешгирӣ кардани натиҷаҳои бардурӯғ истифода мешавад. Натиҷаҳои андозагирӣ (арзиши хатогӣ) дар консол намоиш дода мешаванд. Одатан, натиҷаҳои арзёбӣ барои муқоисаи моделҳое истифода мешаванд, ки бо истифода аз алгоритмҳои гуногуни омӯзиши мошинсозӣ ё вариантҳои инҳо омӯзонида шудаанд:
Evaluation evaluation = new Evaluation(trainingDataset);
evaluation.evaluateModel(targetFunction, validationDataset);
System.out.println(evaluation.toSummaryString("Results", false));
Мисоли боло регрессияи хатиро истифода мебарад, ки арзишҳои ададӣ, ба монанди нархи хонаро дар асоси арзишҳои воридотӣ пешгӯӣ мекунад. Регрессияи хатӣ пешгӯии арзишҳои ададии пайвастаро дастгирӣ мекунад. Барои пешгӯии арзишҳои дуӣ ("Ҳа" ва "Не") шумо бояд алгоритмҳои дигари омӯзиши мошинро истифода баред. Масалан, дарахти қарор, шабакаҳои нейрон ё регрессияи логистикӣ.
// использование логистической регрессии
Classifier targetFunction = new Logistic();
targetFunction.buildClassifier(trainingSet);
Шумо метавонед яке аз ин алгоритмҳоро истифода баред, масалан, барои пешгӯӣ кардани паёми почтаи электронӣ спам ё пешгӯии обу ҳаво ё пешгӯии он, ки оё хона хуб фурӯхта мешавад. Агар шумо хоҳед, ки алгоритми худро барои пешгӯии обу ҳаво ё чӣ қадар зуд фурӯхтани хона таълим диҳед, ба шумо маҷмӯи додаҳои дигар лозим аст, масалан.topseller:
// использование атрибута маркера topseller instead of атрибута маркера цена
ArrayList<string> classVal = new ArrayList<>();
classVal.add("true");
classVal.add("false");

Attribute topsellerAttribute = new Attribute("topsellerLabel", classVal);
attributes.add(topsellerAttribute);
Ин маҷмӯаи додаҳо барои омӯзиши таснифгари нав истифода мешавад topseller. Пас аз омӯзиш, занги пешгӯӣ бояд индекси синфи нишонаро баргардонад, ки метавонад барои ба даст овардани арзиши пешбинишуда истифода шавад.
int idx = (int) targetFunction.classifyInstance(unlabeledInstances.get(0));
String prediction = classVal.get(idx);

Хулоса

Гарчанде ки омӯзиши мошинсозӣ бо омор зич алоқаманд аст ва мафҳумҳои зиёди математикиро истифода мебарад, маҷмӯаи омӯзиши мошинсозӣ ба шумо имкон медиҳад, ки бидуни дониши амиқи математика ба ҳамгироӣ кардани омӯзиши мошинсозӣ ба барномаҳои худ шурӯъ кунед. Аммо, чӣ қадаре ки шумо алгоритмҳои асосии омӯзиши мошинсозӣ, ба монанди алгоритми регрессияи хатиро, ки мо дар ин мақола омӯхтаем, беҳтар фаҳмед, ҳамон қадар шумо метавонед алгоритми дурустро интихоб кунед ва онро барои иҷрои беҳтарин танзим кунед. Тарҷума аз англисӣ. Муаллиф: Грегор Рот, Архитектори нармафзор, JavaWorld.
Шарҳҳо
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION