JavaRush /Java Blog /Random-TK /Java döredijiler üçin maşyn öwrenmek, 1-nji bölüm

Java döredijiler üçin maşyn öwrenmek, 1-nji bölüm

Toparda çap edildi
Maşyn öwrenmek algoritmini düzüň we Java ulanyp ilkinji çaklaýyş funksiýaňyzy ösdüriň. Öz-özi sürýän awtoulaglar, ýüz tanamak ulgamlary we ses kömekçileri hemmesi maşyn öwrenmek tehnologiýalaryny we çarçuwalaryny ulanyp ösdürilýär. Bu diňe ilkinji tolkun. Geljekki 10 ýylda önümleriň täze nesli dünýämizi üýtgeder we programmalary, önümleri we amaly programmalary ösdürmäge täze çemeleşmeleri döreder. Java döredijiler üçin maşyn öwrenmek, 1-nji bölümJava programmisti hökmünde, tehnologiýa kompaniýalarynyň maşyn öwrenmäge ep-esli maýa goýup başlandan soň, bu tolkuny tutmak isleýärsiňiz. Bu gün öwrenýän zatlaryňyzy indiki bäş ýyl üçin ulanyp bilersiňiz. Emma nireden başlamaly? Bu makala bu soraga jogap bermegi maksat edinýär. Maşyn öwrenmek algoritmini durmuşa geçirmek we taýýarlamak boýunça gysga gollanmamyza eýerip, maşyn öwrenmegiň ýörelgeleri barada ilkinji gezek düşünersiňiz. Okuw algoritminiň gurluşy we ony öwretmek, baha bermek we iň gowy çaklama takyklygyny üpjün edýän funksiýany saýlamak üçin ulanyp boljak aýratynlyklar barada öwreneniňizden soň, JVM çarçuwasyny (Weka) nädip ulanmalydygyna düşünersiňiz. maşyn öwrenmek çözgütlerini gurmak. Bu makala gözegçilik edilýän maşyn öwrenişine ünsi jemleýär, sebäbi akylly programmalary döretmekde iň köp ulanylýan ýörelge.

Maşyn öwrenmek we emeli intellekt

Maşyn öwrenmek, adam aklyna öýkünip bilýän maşynlary döretmegi maksat edinýän emeli intellekt ulgamyndan ösdi. "Maşyn öwrenmek" adalgasy kompýuter biliminde dörän hem bolsa, emeli intellekt ylymyň täze ugry däl. 20-nji asyryň ellinji ýyllaryň başynda matematik Alan Týuring tarapyndan işlenip düzülen Týuring synagy , hasaplaýyş maşynynyň hakyky akyl-paýhasynyň bardygyny ýa-da ýokdugyny kesgitlemek üçin döredilen ilkinji synaglardan biridir. Týuring synagyna görä, kompýuter, enjam bilen gürleşýändigine düşünmän, adamy görkezmek bilen adam aňynyň bardygyny subut edýär.
Java döredijiler üçin maşyn öwrenmek, 1-nji bölüm
Häzirki wagtda köp sanly meşhur maşyn öwreniş çemeleşmeleri onlarça ýyllyk pikirlere esaslanýar. Emma hasaplamagyň soňky onýyllygy (we paýlanan hasaplaýyş platformalary) maşyn öwrenmek algoritmlerini ulanmak üçin ýeterlik güýç getirdi. Olaryň köpüsi köp mukdarda matrisa köpeltmesini we beýleki matematiki hasaplamalary talap edýär. Entyigrimi ýyl ozal şeýle hasaplamalara mümkinçilik berýän hasaplaýyş tehnologiýalary diňe ýokdy, ýöne indi hakykata öwrüldi. Maşyn öwrenmek algoritmleri programmalara hiliň gowulaşmagy amala aşyrmaga we adam gatyşmazdan mümkinçiliklerini giňeltmäge mümkinçilik berýär. Maşyn öwrenmek arkaly işlenip düzülen programma, öz koduny özbaşdak täzeläp ýa-da giňeldip bilýär.

Gözegçiliksiz okuw vs gözegçilik edilmedik okuw

Gözegçilik edilýän we gözegçilik edilmedik okuw, maşyn öwrenmekde iň meşhur iki çemeleşme. Iki wariant hem gatnaşyklary gurmak we öwrenmek üçin maşyna köp mukdarda maglumat ýazgylaryny iýmitlendirmegi talap edýär. Şeýle ýygnan maglumatlar adatça "aýratynlyk wektory" diýilýär . Mysal üçin, belli bir ýaşaýyş jaýymyz bar. Bu ýagdaýda aýratynlyk wektory: jaýyň umumy meýdany, otaglaryň sany, jaýyň gurlan ýyly we ş.m. ýaly aýratynlyklary öz içine alyp biler. Gözegçilikde , aýratynlyk wektorlary bilen baglanyşykly soraglara jogap bermek üçin maşyn öwrenmek algoritmi öwredilýär. Algoritmi öwretmek üçin oňa aýratynlyk wektorlary we degişli bellikler toplumy berilýär. Baglanyşyk belligi adam (mugallym) tarapyndan berilýär we berlen soraga dogry "jogap" bar. Okuw algoritmi, içerki gurluşy we olaryň arasyndaky gatnaşyklary tapmak üçin aýratynlyk wektorlaryny we dogry bellikleri seljerýär. Şeýlelik bilen, enjam soraglara dogry jogap bermegi öwrenýär. Mysal hökmünde, gozgalmaýan emläk söwdasy üçin belli bir akylly programmany göz öňünde tutup bileris. Ölçegini, otaglaryň sanyny we jaýlaryň toplumy üçin gurlan ýyly öz içine alýan aýratynlyk wektoryny ulanyp öwredip bolýar. Adam bu faktorlara esaslanyp, her bir jaýyň dogry bahasy bilen bellik bellemeli. Bu maglumatlary seljermek bilen, akylly programma “Bu jaý üçin näçe pul alyp bilerin?” Diýen soraga jogap bermeli.
Java hakda okamak isleýärsiňizmi? Java Developer toparyna goşulyň !
Taýýarlyk prosesi tamamlanandan soň, täze giriş maglumatlary bellik edilmeýär. Enjam, hatda näbelli, belliksiz aýratynlyk wektorlary üçinem soraglara dogry jogap bermegi başarmaly. Gözegçiliksiz okuwda, algoritm adam bellikleri bolmazdan (ýa-da sorag bermezden) jogaplary çaklamak üçin döredildi. Belligi ýa-da netijäni kesgitlemegiň ýerine, gözegçilik edilmedik okuw algoritmleri ozal näbelli gatnaşyklary ýüze çykarmak üçin uly maglumatlar toplumyny we hasaplaýyş güýjüni ulanýarlar. Mysal üçin, sarp ediş önümleriniň marketinginde gözegçilik edilmedik okuw, gizlin gatnaşyklary ýa-da müşderileriň toparlaryny kesgitlemek üçin ulanylyp bilner, bu bolsa ahyrky netijede marketing programmasyny gowulaşdyrmaga ýa-da täzesini döretmäge kömek edip biler. Bu makalada gözegçilik edilýän maşyn öwrenişine ünsi jemläris; häzirki wagtda iň köp ulanylýan çemeleşme.

Gözegçilik edilýän maşyn öwrenmek

Machinehli maşyn öwrenmek maglumatlara esaslanýar. Gözegçilik edilýän maşyn öwreniş taslamasy üçin, berilýän soraga manyly jogap berýän görnüşde maglumatlary markerler bilen bellemeli. Aşakda, 1-nji tablisada her bir jaý maglumat ýazgysyna “jaýyň bahasy” diýilýär. Recordazgy maglumatlary bilen jaýyň bahasynyň arasyndaky baglanyşygy kesgitlemek bilen, algoritm ahyrsoňy berlen sanawda ýok jaýlaryň bazar bahasyny çaklamagy başarmaly. (Jaýyň meýdany inedördül metrde görkezilýär we jaýyň bahasy ýewroda bolýar).
Tablisa 1. Jaýlaryň sanawy
Gol çekiň Gol çekiň Gol çekiň Bellik
Jaý meýdany Otaglaryň sany Jaýyň ýaşy Garaşylýan jaý bahasy
90 m2 / 295 fut 2 otag 23 ýaşynda 9 249,000
101 m2 / 331 fut 3 otag n / A 8 338,000
1330 m2 / 4363 fut 11 otag 12 ýyl 6,500,000 €
Ilkinji etapda maglumatlary el bilen bellik edersiňiz, ýöne ahyrynda programmaňyzy özbaşdak etmegi öwredersiňiz. Bu çemeleşmäniň e-poçta müşderileri bilen işleýändigini gören bolsaňyz gerek, e-poçta spam bukjasyna geçirmek üçin "Bu e-poçta spammy?" Diýen soraga jogap berersiňiz. Jogap bereniňizde, görmek islemeýän e-poçtaňyzy tanamak üçin programmany öwredýärsiňiz. Programmanyň spam süzgüji, şol bir çeşmeden gelen habarlary bellemek ýa-da şol bir mazmuny öz içine almak we degişli düzgünlere laýyklykda dolandyrmak üçin taýýarlanýar. Bellikli maglumatlar bazalary diňe taýýarlyk we synag maksatlary üçin zerurdyr. Bu ädim tamamlanandan soň, maşyn öwrenmek algoritmi bellik edilmedik maglumatlaryň üstünde işleýär. Mysal üçin, çaklama algoritmini jaý hakda täze, belliksiz ýazgy bilen üpjün edip bilersiňiz, we taýýarlyk maglumatlaryndan alnan “bilimlere” esaslanyp, jaýyň garaşylýan bahasyny awtomatiki çaklamaly.

Bir enjam nädip çaklamagy öwrenýär

Gözegçilik edilýän maşyn öwrenmekdäki kynçylyk, berlen sorag üçin degişli çaklama funksiýasyny tapmakdyr. хMatematiki taýdan kynçylyk, üýtgeýjini giriş hökmünde kabul edýän we çak edilýän bahany yzyna gaýtaryp berýän funksiýany tapmakdyr у. Gipotezalaryň bu funksiýasy (hθ), taýýarlyk işiniň netijesidir. Köplenç gipoteza funksiýasyna obýektiw funksiýa ýa-da çaklama funksiýasy hem diýilýär.
y = h θ (x)
Köplenç хbu maglumatlar massiwidir. Mysalymyzda, bu otaglaryň sanyndan we jaýyň meýdanyndan ybarat jaýy kesgitleýän iki ölçegli elementdir. Şeýle gymmatlyklaryň toplumy aýratynlyk wektorydyr. Belli bir obýektiw funksiýany kesgitlemek bilen, her aýratynlyk wektoryny çaklamak üçin ulanyp bileris х. {101.0, 3.0}Jaýyň bahasyny çaklamak üçin, jaýyň meýdanyndan we otaglaryň sanyndan ybarat aýratynlyk wektoryny ulanyp, obýektiw funksiýa çagyrmaly :
// целевая функция h (результат процесса обучения)
Function<Double[], Double> h = ...;

// определяем целевой вектор с площадью дома=101 и количеством комнат=3
Double[] x = new Double[] { 101.0, 3.0 };

// и предсказываем цену дома (метка)
double y = h.apply(x);
Mysal-1-den deslapky kodda, massiwdäki bahalar хöý aýratynlyklarynyň wektoryny görkezýär. Obýektiw funksiýa bilen yzyna gaýtarylan baha у, jaýyň çak edilýän bahasydyr. Maşyn öwrenmegiň maksady, näbelli giriş parametrlerini göz öňünde tutup, mümkin boldugyça takyk işlejek obýektiw funksiýany kesgitlemekdir. Maşyn öwrenmekde obýektiw funksiýa (hθ)käwagt model diýilýär. Bu model okuw prosesiniň netijesidir.
Java döredijiler üçin maşyn öwrenmek, 1-nji bölüm
Bellikli okuw nusgalaryna esaslanyp, okuw algoritmi okuw maglumatlarynda gurluşlary ýa-da nagyşlary gözleýär. Şeýlelik bilen maglumatlar üçin umuman gowy bir model döredýär. Düzgün bolşy ýaly, okuw prosesi tebigatda gözleg işidir. Köplenç bu proses algoritmleriň we konfigurasiýalaryň dürli wariantlaryny ulanyp birnäçe gezek gaýtalanýar. Netijede, ähli modeller iň gowulary saýlanan öndürijilik ölçeglerine esaslanýar. Bu model, geljekde gözegçilik edilmedik maglumatlar üçin takmynan bahalary hasaplamak üçin ulanylýar.

Çyzykly regressiýa

Bir enjamy “pikirlenmegi” öwretmek üçin ilki bilen ulanjak okuw algoritmiňizi saýlamaly. Mysal üçin, çyzykly regressiýa. Bu iň ýönekeý we iň meşhur gözegçilik edilýän maşyn öwrenmek algoritmlerinden biridir. Algoritm giriş aýratynlyklary bilen netije bellikleriniň arasyndaky baglanyşygyň çyzyklydygyny göz öňünde tutýar. θ Aşakdaky umumy çyzykly regressiýa funksiýasy, parametr (teta) bilen köpeldilen aýratynlyk wektorynyň ähli elementlerini jemlemek bilen çak edilýän bahany yzyna gaýtaryp berýär . Bu parametr, okuw maglumatlaryna esaslanýan regressiýa funksiýasyny uýgunlaşdyrmak ýa-da “sazlamak” üçin okuw wagtynda ulanylýar.
h θ (x) = θ 0 * 1 + θ 1 * x 1 + ... θ n * x n
Çyzykly regressiýa funksiýasynda, teta parametri we aýratynlyk parametrleri abunalar bilen sanlanýar. Abuna ýazgy wektoryň parametr parametrini (θ)we aýratynlyk parametrini kesgitleýär. (х)X 01 aýratynlygynyň hemişelik çalşyk terminidigini we hasaplama maksatlary üçin ähmiýetlidigine üns beriň. Netijede, jaýyň meýdany ýaly möhüm parametrleriň görkezijisi x 1 bilen başlaýar . Şeýlelik bilen, x 1 aýratynlyk wektorynyň (jaý meýdany) birinji bahasy bellenen bolsa, x 2 indiki bahany (otaglaryň sany) we ş.m. alar. Mysal-2, matematiki taýdan h θ (x) hökmünde görkezilen çyzykly regressiýa funksiýasynyň Java ýerine ýetirilişini görkezýär . Ityönekeýlik üçin hasaplamalar ulanylýar double. Usulda apply(), massiwiň birinji elementiniň 1,0 deň boljakdygy we bu funksiýanyň daşynda goýulmagy üpjün edilýär. Mysal 2: Java-da çyzykly regressiýa
public class LinearRegressionFunction implements Function<Double[], Double> {
 private final double[] thetaVector;

 LinearRegressionFunction(double[] thetaVector) {
 this.thetaVector = Arrays.copyOf(thetaVector, thetaVector.length);
 }

 public Double apply(Double[] featureVector) {
 // с целью упрощения вычислений первый элемент должен быть equals 1.0
 assert featureVector[0] == 1.0;

 // простое последовательное сложение
 double prediction = 0;
 for (int j = 0; j < thetaVector.length; j++) {
 prediction += thetaVector[j] * featureVector[j];
 }
 return prediction;
 }

 public double[] getThetas() {
 return Arrays.copyOf(thetaVector, thetaVector.length);
 }
}
Täze mysal döretmek üçin LinearRegressionFunctionparametri görkezmeli θ. Bu parametr ýa-da wektor, umumy çyzykly regressiýa funksiýasyny esasy okuw maglumatlaryna uýgunlaşdyrmak üçin ulanylýar. Programmada ulanylýan parametr, θokuw mysallaryna esaslanyp, okuw wagtynda düzediler. Öwredilen maksat funksiýasynyň hili, okuw üçin taýýarlanan maglumatlaryň hiline bagly bolar. Aşakdaky mysalda LinearRegressionFunctionsuratlandyrmak üçin jaýyň ululygyna baglylykda baha çaklamalaryny ulanýarys. X 0 1,0 bahasy bilen hemişelik bolmalydygyny göz öňünde tutup, obýektiw funksiýa iki parametr ulanyp başlaýar θ, bu ýerde okuw prosesiniň netijesi. Täze mysal döredilenden soň, meýdany 1330 inedördül metr bolan jaýyň bahasy aşakda görkezilişi ýaly çak ediler:
// тета вектор, используемый в этом примере, является результатом процесса обучения
double[] thetaVector = new double[] { 1.004579, 5.286822 };
LinearRegressionFunction targetFunction = new LinearRegressionFunction(thetaVector);

// создание вектора признаков со значениями x0=1 (для удобства вычислений) и //x1=площадь дома
Double[] featureVector = new Double[] { 1.0, 1330.0 };

// выполняем расчеты
double predictedPrice = targetFunction.apply(featureVector);
Aşakdaky suratda çaklamanyň obýektiw funksiýasynyň grafigini (gök çyzyk) görüp bilersiňiz. Jaýyň meýdanynyň ähli gymmatlyklary üçin obýektiw funksiýany hasaplamak arkaly alynýar. Diagrammada okuw üçin ulanylýan baha meýdany jübütleri hem bar.
Java döredijiler üçin maşyn öwrenmek, 1-nji bölüm
Häzirki wagtda çaklama diagrammasy gaty gowy görünýär. Grafanyň koordinatlary (ýagdaýy we ýapgytlygy) wektor tarapyndan kesgitlenýär θ { 1.004579, 5.286822 }. θWhichöne haýsy -wektoryň programmaňyza has laýykdygyny nädip kesgitläp bilersiňiz ? Birinjisini ýa-da ikinji parametrini üýtgetseňiz, funksiýa has laýyk gelermi? Iň oňat teta wektoryny kesgitlemek üçin obýektiw funksiýanyň näderejede gowy işleýändigini bahalandyrýan peýdaly funksiýa gerek. DOWAM ED TO .N Iňlis dilinden terjime . Awtory: Gregor Rot, Programma arhitektory, JavaWorld.
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION