Skip to content

Margus Roo –

If you're inventing and pioneering, you have to be willing to be misunderstood for long periods of time

  • Cloudbreak Autoscale fix
  • Endast

Arvutid ja paragrahvid II: tarkvara- ja sisulitsentsid

Posted on December 4, 2012 - December 4, 2012 by margusja

Pean sissejuhatuseks mainima, et minu toodud näited ei jaotu negatiivseteks ega positiivseteks. Pigem on toodud näited olukordadest, kus vastavalt litsentseeritud tarkvara on omal kohal olnud.

Kuna paljud firmad teemakohast informatsiooni ei avalda, siis toon näiteid enda kogemustest.

Esimene

Eestis rahandussektoris tegutsev rahvusvaheline filiaal korraldas avaliku konkursi tarkvaralahenduse arendamiseks. Pakkumisel osalesid firma X ja Y.

Firma X kasutas kommertstarkvara nii arendusprotsessis kui ka serveripoolsete komponentide osas. Firma Y kasutas lihtsamaid arendusvahendeid. Näiteks IDE Eclipse. Serveri poole ZendServer, mida saab samuti teatud funktsionaalsust mitte vajades tasuta. Samuti kasutas firma X serveripoolsete komponentidena nn vabavaralisi lahendusi. Näitena Apache veebiserver.

Kuna tellitud lahendus ei olnud tellija põhisüsteem vaid pigem toetav komponent, siis tulenevalt asjaolust, et firma Y pakkumine oli mitmeid kordasid odavam, kui firma X oma, siis teostas projekti firma Y.

Siit võib taas esile kerkida igipõline küsimus, kuidas tagatakse vabatarkvara puhul lahenduse toetus? Tellija ei omanud võimekust Unixi laadse operatsioonisüsteemi hooldamiseks, samuti antud platvormi peale paigaldatud teenuste osas.

Siinkohal oli lahenduseks antud teenuse sisseostmine firmalt Y, kes realiseeris kogu projekti. Lisakulu see ei olnud, kuna igal juhul oleks tulnud antud lahendusele haldur otsida.

Teine

Firma X (Ei ole seotud esimeses näites toodud ettevõttega) omas mitmeid, äriliselt mitteotstarbekaid servereid, mis pakkusid teenuseid firma sisemise toimimise jaoks, samuti  ka vähestele klientidele. Servereid hooldas kõrvaltööna firmas tarkvaralahendusi arendav inimene, kellelt siiski nõuti teenuste küllaltki kõrget käideldavust, mis omakorda häiris põhitööd märkimisväärselt.

Lahenduseks oli olemasolevate teenuste kolimine firma Y (ei ole seotud esimeses näites kasutatud firmaga) haldusesse. Firma Y kasutas Microsoft serveritarkvara ja omas koolitatud spetsialiste, kes tagasid teenuste kokkulepitud mahus toimimise.

Tulemusena sai tarkvaraarendaja keskenduda oma põhitööle, millest tõusis suurem kasu firmale X, võrreldes ajaga, kui põhitöö kõrvalt tuli ka servereid ja tugiteenuseid hallata.

Antud näide on toodud just vastukaaluks esimesele, et toonitada asjaolu, et alati ei ole vajalik iga hinna eest ise, näiliselt vähe tähelepanu nõudvaid, teenuseid pakkuda. Tänases IT maailmas on pigem oma alale spetsialiseerumine suurema tuluga seotud, kui proovida katta kogu spekter.

 

Kolmas

Firma X (ei ole seotud kahes esimeses näites toodud firmadega) soovis oma tarkvaralahendusele, mille eripära oli tingimus, et lahendus võib erinevatel aegadel vajada raudvaralise – (CPU, RAM) ning tarkvaralise (horisontaalse laienemise võimalus. Näiteks, cache, DNS roudrobin) laiendamise võimalust.  Lisaks ei omanud ettevõtte X kompetentsi antud valdkonnas.

Lahendus oli kaheosaline. Tarkvara (vajas Microsoft serverit) paigaldati Amazon cloud (EZ2) keskkonda, mis vastas eeltoodud nõuetele. Amazone cloud keskkonnas oleva lahenduse haldusega tegeles firma Y (ei ole seotud ülemiste kahe näitega), kes omas sertifitseeritud spetsialiste.

Viimane näide on minu vaatenurgast kombinatsioon vaba- ja kommertstarkvara ristkasutusest.

Kokkuvõtteks võiksin tuua mõttetera, et päris silmaklappidega ei ole mõttekas IT maailmas liikuda. Pigem on tarvis kaaluda erinevate võimaluste positiivseid ja negatiivseid külgi ja tulemusest lähtuvalt konkreetse probleemi lahendus valida.

 

Posted in IT eetilised

Pildike uue kuvariga (24tolli)

Posted on November 29, 2012 by margusja

Lihtsalt selline meeleolupildike, kuidas uus kuvar minu töölauale sobitub 🙂

Posted in Varia

Kõrvitsapidu 2012

Posted on November 27, 2012 by margusja
Posted in Varia

Tants intellektuaalomandi ümber

Posted on November 25, 2012 - November 25, 2012 by margusja

Sissejuhatuseks paar mõtet. Kuna ma kommertstarkvara ise ei kirjuta ja tarbin oma leiva teenimiseks samuti avatud lähtekoodiga tarkvara, siis ma justkui mõtlen, et mind see teema väga ei puuduta. Olen siiani ühiskonnas antud teemal toimuvasse suhtunud kõrvalvaatajana. Samas olen ka mina alla laadinud tasuta e-raamatuid, muusikat jne, mõtlemata sügavalt seadusandlusele.

• Moral Rights Unchanged

Halleluuja!

• Free Non-Commercial Sharing

Kui me räägime muusikast, kirjandusest, filmidest, siis lõpptarbijaks on tavakodanik. Kui nüüd 20 aastat tagasi eelmainitud intellektiomandit mingil viisil kopeeriti ja edasi jagati, siis võrreldes tänaste võimalustega (internet, mobiilne tehnoloogia, p2p) oli see minu arust kaduväike. Sellest tulenevalt jääb protsentuaalselt autoril täna suurem osa oma töö eest saamata võrreldes 20 aasta taguse ajaga.

Vastukaaluks võiks muidugi arutleda teemal, et kui varastada on lihtsam, kui osta, siis loomulikult omistatakse toode illegaalsel teel. Siinkohal on olnud heaks teerajajaks omal ajal Apple, kes pakub iTunes Store kaudu väga palju sellist toodangut, millest me antud kirjatükis räägime. Ja seda kõike väga mugavalt, mille läbi võidab kasutaja ja tootja. Antud juhul ei taandugi asi mitte juristide lauale vaid keegi tegi võimaluse osta mugavamalt, kui varastada.

• 20 Years Of Commercial Monopoly

Kui ma ehitan õlgedest maja. See on minu maja. Mingit moodi ei kinnitata seda maja minule mingiks ajaks. No ja kui maja, mis on õlgedest nädala aja pärast laiali on, on see minu probleem. Kui ma ehitan järgmise maja kivist ja see maja kestab sajandeid. Selles majas võib elada minu laps, tema lapsed jne. Ma mõtlen, et hästi tehtud maja.

Mingist nurgast võiks ju küsida, et miks intellektuaalse omandiga teisiti on? Miks ei võiks minu vanaisa tarkus, ka mind teenida?

Loomulikult on vastukaaluks siin probleem, kui liialt pikk õiguste omistamine, mingit teist protsessi segab. Samas, kui minu maja jääb nüüd ette suurele rajatavale maanteele, siis ilmselt hakatakse minuga läbirääkimisi pidama maja ostmise asjus, mille tulemusena saaksin ma endale korraliku elamise kusagil mujal. Teine äärmus on muidugi võõrandamine, mis tuleneb samuti ju asjaolust, et alati on tähtsamaid protsesse, kui üksikisiku huvid.

Iseasi, kui maja olemus kinnistatakse autoriga ja sellest tulenevalt maju ei tohiks enam ehitada ilma autorile selle eest raha maksmata. Samas see teema on juba idiootlike patentide väljastamise teema, mis on antud arutelu skoobist väljas.

• Registration After 5 Years

Olen kahe käega selle poolt, et bürokraatia taha ei tohiks teadussaavutused jääda. Hetkel seadusandlus seda võimaldab tõesti.

Omaniku seostamist objektiga tehti Eestis ka domeenideformi raames. Kui nüüd paralleele tõmmata, siis asjad muutusid praktilisest vaatenurgast palju lihtsamaks. Hetkel on tõesti väga lihtne domeeniomaniku leida. Vastukaaluks on tõusnud ka seadusandluse keerukus selles valdkonnas, mille tulemusena on domeeniäri lausa poliitiliseks suudetud ajada.

• Free Sampling

Siinkohal on üldse raske minul, kes ma ennast siiani pole selle teemaga vaevanud, mingit seisukohta võtta. Ühelt poolt ma täiesti saan aru, et Free Sampling oleks edasiviivaks jõuks ehk uutele teostele. Sama toimub ju avatud lähtekoodiga tarkvaramaailmas. Keegi teeb aluse, sinna peale teeb kolmas täiendusi. Ajalugu näitab, et see toote tervist arvestades on positiivne nähtus.

Teisest küljest kapitalistlikus ühiskonnas, autori seisukohast võttes, soovitakse oma tulemust siiski täiel määral realiseerida.

• A Ban on DRM

Siin võiks ehk kivi visata riikide seadusandluse kapsaaeda. Ilmselt on suurfirmad oma juristide armeega kaugelt üle suurema osa riikide seadusandlusest.  Teisalt, kui nüüd üks väikeriik võtab kätte ja pusserdab valmis seaduse, mis mõne suure muusikaäri tõekspidamistega vastuollu läheb, siis ma pakun, et kannatab ilmselt selle riigi rahvas – antud riigis vastavat toodet lihtsalt ei saa olema.

Viimase mõttevälgatuse taustal võiks teema kokku mõttega, et inimeste enda poolt tehtud seadused, teistele inimestele, hästi ei passi.

Posted in IT eetilised

Mahaut and UserSimilarity

Posted on November 20, 2012 - November 20, 2012 by margusja

Teemaks siis mahout ja kahe userID (X ja Y) vaheline sarnasus.

https://builds.apache.org/job/Mahout-Quality/javadoc/org/apache/mahout/cf/taste/impl/similarity/PearsonCorrelationSimilarity.html

Matemaatiline valem:

Vajame selleks org.apache.mahout.cf.taste.impl.similarity.PearsonCorrelationSimilarity pakki, mida java keeles saame endale:

import org.apache.mahout.cf.taste.impl.similarity.PearsonCorrelationSimilarity;

Loome ka objekti similarity:

UserSimilarity similarity = new PearsonCorrelationSimilarity (model); // model on mahout DataModel objekt, mida siinkohal ei hakka lahti joonistama.

Selle tulemusena avaneb meile võimalused kasutada meetodit userSimilarity:

Double sim = similarity.userSimilarity(X,Y); // X ja Y, mis on toodud meetodi argumentidena on DataModel userID-d

Posted in LinuxTagged mahout, similarity

Info- ja võrguühiskond

Posted on November 19, 2012 - November 20, 2012 by margusja

http://www.eduskunta.fi/efakta/vk/tuv/challenges_of_the_globalinformationsociety.pdf

Pealiskaudselt võttes on tegu majandusgeograafilise probleemiga. Ja kas see on üldse probleem. Ilmselt on tegu inimkonna loomuliku protsessiga.

Minu üllatusmomendi tasandas natukene fakt, et tegu on 2004 aasta kirjatükiga. Antud ajahetkel ei pidanud olema hiromant, et aru saada, millised protsessid infoühiskonnas toimuvad. 1980 aasta oleks see mõttekäik olnud tõeliselt huvitav.

Antud kirjatükk toonitas spetsialiseerumise tähtsust, samas teema analüüsimine vajab teadmisi poliitikast, majandust, IT, riigi sotsiaalhoolhoolekandest ja rahandust – ühesõnaga vastukaaluks soovitusele hoopis väga laias spektris.

Lugedes ülaltoodud lingil olevat materjali pean suures osas lihtsalt nõustuma seal toodud mõtetega.

Tooksin mõned kohad, mis mind mõtisklema panid:

Mõte, et indiviid peaks tegema tööd, mis on pigem hobi, kui töö ja mille tulemusena töö (hobi) tulem on parem ja kvaliteetsem. See on vastuoluline teema. Mina olen üks vähestest (vähemalt Eesti ühiskonnas), kes juba aastaid teeb tööd, mida ma teeksin ka ilma rahata. Samas fakt, et tänases infoühiskonnas on siiski suurem osa liikmeid, kes teevad tööd, mis neile ei meeldi murettekitav. Sellest küsimus, kas Eesti on üldse infoühiskonda esindav mudel. Fakt, et Soome suurfirmad on kolinud meie riiki oma rutiinse töö tegemise (Ensto) näitab pigem, et Eesti on arengumaa, kus osta pigem lihtsama töö tegemiseks ressursse. Minu mõistusesse ei mahu skeem, kus suurem osa riigi tööjõulisest elanikkonnast teeb seda, mis neile meeldib. Seda enam, et ka Eesti (nagu ka muu Euroopa) on demograafiliselt seal maal, et tegu on vananeva ühiskonnaga. Minu tutvusringkond on ehk liialt ühepalgeline, kuid raske on ette kujutada inimest, kes fännab vanainimeste tagant sita koristamist. Ehk oli viimane näide liialt äärmuslik, kuid ilmselt sai lugeja aru, mida ma silmas pidasin – no ei saa kõigil olla tööd, mis neile meeldiks.

Teisalt ühiskonnamudel, kus tööd teevad need, kes armastavad oma tööd ja seeläbi paremat tulemust saavutavad on mingis mõttes ehk natukene Vana-Rooma ühiskonnale sarnane. Pean silmas siinkohal asjaolu, et rutiinsema ja odavama töö teeks ära sisserännanud tööjõud, kes ka makse maksavad. Seeläbi saab intelligentsem ühiskonnakiht tegeleda loovtööga, mis on infoühiskonna edasiviiv jõud.

Loomulikult tuleb luua võõrtööjõule lähteriigis keskkond, kus ollakse valmis endast parimat andma. See omakorda nõuab suuresti oma mõtteviisi muutmist. Hetkel näiteks Eesti ei saa selles valdkonnas väga kõvasti sõna võtta. Viimane probleem põlvneb omakorda minuarust asjaolul, et hetkel kardab kohalik oma töö pärast, mida ta käib vastumeelselt tegemas. Lühidalt siis, valitsus ei suuda sotsiaalseid tagatisi piisavalt tagada, et mõtteviis paraneks. Kana või muna probleem.

Tõstaks esile ühe teema, milles ma autoriga olen väga ühel meelel ja võiksin tuua oma kogemusest ka näite. Ühe hiljutise projekti käigus töötasime välja IT lahenduse. Klient tellis ka graafilise liidese kolmandalt osapoolelt meie lahenduse jaoks. Kolmas osapool hakkas ehitama projekti, mille maksumus ületas tunduvalt kliendi jaoks põhiprojekti summa. Antud lähenemine ei saanud olla kindlasti õige ja klient katkestas kolmanda osapoolega suhte. Kuna meile tundus antud projekti peale puuduva GUI ehitamine imelihtne, siis teostasime selle kõrvalprojektina ja praktiliselt tasuta võrreldes põhiprojektiga. Klient oli rahul. Kuidas saime endale lubada põhiprojekti kõrvalt ka GUI implementeerimist? Toon välja, et me oleme väga piiratud ressursiga väike meeskond. Lahendus oli kiires ja praktiliselt toimivas prototüübis, mis kliendile meeldis ja mille me väga lihtsalt vabavaralise lahenduse peale teostasime. Väga vähe tuli kohendada, et antud lahendus kliendi nõuetega vastavusse saada. Ühesõnaga tööriistade ja vahendite tark kasutamine. Lihtne vanasõna (mis sobib ideaalselt ka infoühiskonnas) ütleb, et jalgratast ei ole mõtet leiutada.

Asjaolu, et infoühiskonnas kasvavad noored (samuti ka täisealised) vajavad head haridust on kindlasti oluline. Samas toonitaks, et haridus on iga ühiskonnamudeli puhul edu aluseks olnud.  Tänases Eestis saavad vähesed endale head haridust lubada. Ja mingil põhjusel tean ma rohkem inimesi, kes makstes ise oma õppemaksu, eelistavad ärijuhtimist, kui IT alast kõrgharidust. Siin ka mingi põhimõtteline probleem minuarust, mida ma siin lahata ei jõua.

Toonitatud oli vajadus puhata ja füüsilise aktiivsuse osakaalu suurendamine. Teoorias on see hea soovitus. Kuid reaalsuses kirjutan ma hetkel ka seda arvustust oma uneajast. Mis mind motiveerib? Tööandja? Otseselt ei. Ehk on see alateadlik soov püsida konkurentsis. Ehk on see sellest, et IT valdkonnas koguaeg tekib juurde uusi lahendusi, mida on vajalik uurida, et omal alal tasemel olla. Põhjuseid võib olla erinevaid, aga aega puhkamiseks on võimalik leida vähem. Ja siin ei ole taas ainult IT sektoris küsimus. Tänane majandusmudel paneb ka ettevõtjad olukorda, kus nad ei saa väga lihtsalt oma töötajatele stressivaba puhkust lubada. On olnud juhuseid, kus mõni tööline on peale puhkuselt naasmist koondatud, kuna on aru saadud, et tema arvelt on võimalus kulusid kokku hoida. Viimane probleem võib viia asjaoluni, et tööline hakkab enda vajalikust fabritseerima, mis ei ole pikas perspektiivis kuidagi ettevõttele ega ühiskonnale kasulik. Seega probleem, mis on täna lahendamata.

Kui nüüd jätta IT tahaplaanile, siis mina võtaks teema kokku mõttega, et maailm (pean silmas kogu universumi) püüab kõike tasakaalus  hoida. Inimene pusserdab siin oma asja ja kui ta kusagil midagi liiga äärmuslikuks muudab, annab see ilmselt kusagilt teisest äärest tunda. Sama seaduse võime paigutada tagasi meie poliitikasse, majandusse ja praegu juba käsilolevasse infoajastusse. Kui kusagil keegi mõtleb ja toodab lendavaid ideesid, siis kusagil on keegi, kes need peaks koodi laduma. Lisaks peab olema mingi kamp, kes meile süüa teeb ja meie tagant koristab.

 

Posted in IT eetilised

java.lang.NoClassDefFoundError: org/apache/mahout/cf/taste/model/DataModel

Posted on November 18, 2012 by margusja

Probleem

23:32:36 margusja@IRack> vimjava -classpath target/my-app-1.0-SNAPSHOT.jar com.mycompany.app.App
Exception in thread “main” java.lang.NoClassDefFoundError: org/apache/mahout/cf/taste/model/DataModel
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2442)
at java.lang.Class.getMethod0(Class.java:2685)
at java.lang.Class.getMethod(Class.java:1620)
at sun.launcher.LauncherHelper.getMainMethod(LauncherHelper.java:492)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:484)
Caused by: java.lang.ClassNotFoundException: org.apache.mahout.cf.taste.model.DataModel
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
… 6 more

Lahendus

Puudus viide org/apache/mahout/cf/taste/model/DataModel, mida saab häda pärast täpsustada:

00:06:39 margusja@IRack> javjava -classpath target/my-app-1.0-SNAPSHOT.jar:target/mahout-core-0.8-20121116.235610-121.jar  com.mycompany.app.App

Posted in LinuxTagged java, mahout, maven

Failed to execute goal on project my-app: Could not resolve dependencies for project com.mycompany.app:my-app:jar:1.0-SNAPSHOT: Could not find artifact org.apache.mahout:mahout-core:jar:0.8-SNAPSHOT

Posted on November 17, 2012 - November 17, 2012 by margusja

Probleem

22:52:46 margusja@IRack> cp mvn compile
[INFO] Scanning for projects…
[INFO]
[INFO] ————————————————————————
[INFO] Building my-app 1.0-SNAPSHOT
[INFO] ————————————————————————
[WARNING] The POM for org.apache.mahout:mahout-core:jar:0.8-SNAPSHOT is missing, no dependency information available
[INFO] ————————————————————————
[INFO] BUILD FAILURE
[INFO] ————————————————————————
[INFO] Total time: 0.409s
[INFO] Finished at: Sat Nov 17 22:52:51 EET 2012
[INFO] Final Memory: 2M/81M
[INFO] ————————————————————————
[ERROR] Failed to execute goal on project my-app: Could not resolve dependencies for project com.mycompany.app:my-app:jar:1.0-SNAPSHOT: Could not find artifact org.apache.mahout:mahout-core:jar:0.8-SNAPSHOT -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException

Lahendus

Tirime kohale jar faili, mida vajame. Antud juhul mahout-core…

Paneme oma reposse

23:10:12 margusja@IRack> vimmvn install:install-file -DgroupId=org.apache.mahout -DartifactId=mahout-core -Dversion=0.8-SNAPSHOT -Dpackaging=jar -Dfile=target/mahout-core-0.8-20121116.235610-121.jar
[INFO] Scanning for projects…
[INFO]
[INFO] ————————————————————————
[INFO] Building my-app 1.0-SNAPSHOT
[INFO] ————————————————————————
[INFO]
[INFO] — maven-install-plugin:2.3.1:install-file (default-cli) @ my-app —
[INFO] Installing /Users/margusja/java/my-app/target/mahout-core-0.8-20121116.235610-121.jar to /Users/margusja/.m2/repository/org/apache/mahout/mahout-core/0.8-SNAPSHOT/mahout-core-0.8-SNAPSHOT.jar
[INFO] ————————————————————————
[INFO] BUILD SUCCESS
[INFO] ————————————————————————
[INFO] Total time: 1.101s
[INFO] Finished at: Sat Nov 17 23:10:53 EET 2012
[INFO] Final Memory: 3M/81M
[INFO] ————————————————————————

Posted in LinuxTagged java, mahout, maven

Mahout Item based methods

Posted on November 16, 2012 - November 16, 2012 by margusja

On oluline, millist meetodit kasutada, lahendades erinevaid probleeme.

Üks lihtne näide. Meil on 1000 000 reaga andmehulk (UserID, ItemID, preference)

PearsonCorrelationSimilarity

[INFO] — exec-maven-plugin:1.2.1:java (default-cli) @ my-app —
12/11/16 20:59:38 INFO file.FileDataModel: Creating FileDataModel for file /tmp/ratings.txt
12/11/16 20:59:38 INFO file.FileDataModel: Reading file info…
12/11/16 20:59:40 INFO file.FileDataModel: Processed 1000000 lines
12/11/16 20:59:40 INFO file.FileDataModel: Read lines: 1000209
12/11/16 20:59:40 INFO model.GenericDataModel: Processed 6040 users
12/11/16 20:59:40 INFO eval.AbstractDifferenceRecommenderEvaluator: Beginning evaluation using 0.95 of GroupLensDataModel
12/11/16 20:59:40 INFO model.GenericDataModel: Processed 333 users
12/11/16 20:59:40 INFO eval.AbstractDifferenceRecommenderEvaluator: Beginning evaluation of 312 users
12/11/16 20:59:40 INFO eval.AbstractDifferenceRecommenderEvaluator: Starting timing of 312 tasks in 2 threads
12/11/16 20:59:40 INFO eval.StatsCallable: Average time per recommendation: 2ms
12/11/16 20:59:40 INFO eval.StatsCallable: Approximate memory used: 174MB / 275MB
12/11/16 20:59:40 INFO eval.StatsCallable: Unable to recommend in 0 cases
12/11/16 20:59:40 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 974
12/11/16 20:59:40 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 526
12/11/16 20:59:40 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1837
12/11/16 20:59:40 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 2544
12/11/16 20:59:40 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 2157
12/11/16 20:59:40 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 3781
12/11/16 20:59:40 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 325
12/11/16 20:59:40 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1439
12/11/16 20:59:40 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 2211
12/11/16 20:59:41 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 313
12/11/16 20:59:41 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 867
12/11/16 20:59:41 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 864
12/11/16 20:59:41 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 255
12/11/16 20:59:41 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1932
12/11/16 20:59:41 INFO eval.AbstractDifferenceRecommenderEvaluator: Evaluation result: 0.8425337616195027
0.8425337616195027
[INFO] ————————————————————————
[INFO] BUILD SUCCESS
[INFO] ————————————————————————
[INFO] Total time: 6.510s
[INFO] Finished at: Fri Nov 16 20:59:41 EET 2012
[INFO] Final Memory: 9M/272M
[INFO] ————————————————————————

real 0m8.268s
user 0m11.295s
sys 0m0.731s
[hduser@vm37 my-app]$

 

EuclideanDistanceSimilarity

[INFO] — exec-maven-plugin:1.2.1:java (default-cli) @ my-app —
12/11/16 21:01:57 INFO file.FileDataModel: Creating FileDataModel for file /tmp/ratings.txt
12/11/16 21:01:57 INFO file.FileDataModel: Reading file info…
12/11/16 21:01:59 INFO file.FileDataModel: Processed 1000000 lines
12/11/16 21:01:59 INFO file.FileDataModel: Read lines: 1000209
12/11/16 21:01:59 INFO model.GenericDataModel: Processed 6040 users
12/11/16 21:01:59 INFO eval.AbstractDifferenceRecommenderEvaluator: Beginning evaluation using 0.95 of GroupLensDataModel
12/11/16 21:01:59 INFO model.GenericDataModel: Processed 299 users
12/11/16 21:01:59 INFO eval.AbstractDifferenceRecommenderEvaluator: Beginning evaluation of 282 users
12/11/16 21:01:59 INFO eval.AbstractDifferenceRecommenderEvaluator: Starting timing of 282 tasks in 2 threads
12/11/16 21:01:59 INFO eval.StatsCallable: Average time per recommendation: 6ms
12/11/16 21:01:59 INFO eval.StatsCallable: Approximate memory used: 172MB / 274MB
12/11/16 21:01:59 INFO eval.StatsCallable: Unable to recommend in 0 cases
12/11/16 21:01:59 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 304
12/11/16 21:02:00 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1351
12/11/16 21:02:00 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 119
12/11/16 21:02:00 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 437
12/11/16 21:02:00 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 961
12/11/16 21:02:00 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 2400
12/11/16 21:02:00 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1679
12/11/16 21:02:00 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1044
12/11/16 21:02:00 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1114
12/11/16 21:02:00 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 2620
12/11/16 21:02:00 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1472
12/11/16 21:02:00 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 2233
12/11/16 21:02:00 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 815
12/11/16 21:02:00 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 2215
12/11/16 21:02:00 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 2246
12/11/16 21:02:00 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1896
12/11/16 21:02:00 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 3346
12/11/16 21:02:00 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 3320
12/11/16 21:02:00 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 2855
12/11/16 21:02:00 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1442
12/11/16 21:02:00 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 3043
12/11/16 21:02:00 INFO eval.AbstractDifferenceRecommenderEvaluator: Evaluation result: 0.7924501920488942
0.7924501920488942
[INFO] ————————————————————————
[INFO] BUILD SUCCESS
[INFO] ————————————————————————
[INFO] Total time: 6.476s
[INFO] Finished at: Fri Nov 16 21:02:00 EET 2012
[INFO] Final Memory: 9M/271M
[INFO] ————————————————————————

TanimotoCoefficientSimilarity

[INFO] — exec-maven-plugin:1.2.1:java (default-cli) @ my-app —
12/11/16 21:03:04 INFO file.FileDataModel: Creating FileDataModel for file /tmp/ratings.txt
12/11/16 21:03:04 INFO file.FileDataModel: Reading file info…
12/11/16 21:03:06 INFO file.FileDataModel: Processed 1000000 lines
12/11/16 21:03:06 INFO file.FileDataModel: Read lines: 1000209
12/11/16 21:03:06 INFO model.GenericDataModel: Processed 6040 users
12/11/16 21:03:07 INFO eval.AbstractDifferenceRecommenderEvaluator: Beginning evaluation using 0.95 of GroupLensDataModel
12/11/16 21:03:07 INFO model.GenericDataModel: Processed 287 users
12/11/16 21:03:07 INFO eval.AbstractDifferenceRecommenderEvaluator: Beginning evaluation of 265 users
12/11/16 21:03:07 INFO eval.AbstractDifferenceRecommenderEvaluator: Starting timing of 265 tasks in 2 threads
12/11/16 21:03:07 INFO eval.StatsCallable: Average time per recommendation: 2ms
12/11/16 21:03:07 INFO eval.StatsCallable: Approximate memory used: 179MB / 274MB
12/11/16 21:03:07 INFO eval.StatsCallable: Unable to recommend in 0 cases
12/11/16 21:03:07 INFO eval.AbstractDifferenceRecommenderEvaluator: Evaluation result: 0.79503719853545
0.79503719853545
[INFO] ————————————————————————
[INFO] BUILD SUCCESS
[INFO] ————————————————————————
[INFO] Total time: 6.632s
[INFO] Finished at: Fri Nov 16 21:03:07 EET 2012
[INFO] Final Memory: 9M/271M
[INFO] ————————————————————————

LogLikelihoodSimilarity

[INFO] — exec-maven-plugin:1.2.1:java (default-cli) @ my-app —
12/11/16 21:05:05 INFO file.FileDataModel: Creating FileDataModel for file /tmp/ratings.txt
12/11/16 21:05:05 INFO file.FileDataModel: Reading file info…
12/11/16 21:05:07 INFO file.FileDataModel: Processed 1000000 lines
12/11/16 21:05:07 INFO file.FileDataModel: Read lines: 1000209
12/11/16 21:05:08 INFO model.GenericDataModel: Processed 6040 users
12/11/16 21:05:08 INFO eval.AbstractDifferenceRecommenderEvaluator: Beginning evaluation using 0.95 of GroupLensDataModel
12/11/16 21:05:08 INFO model.GenericDataModel: Processed 297 users
12/11/16 21:05:08 INFO eval.AbstractDifferenceRecommenderEvaluator: Beginning evaluation of 282 users
12/11/16 21:05:08 INFO eval.AbstractDifferenceRecommenderEvaluator: Starting timing of 282 tasks in 2 threads
12/11/16 21:05:08 INFO eval.StatsCallable: Average time per recommendation: 3ms
12/11/16 21:05:08 INFO eval.StatsCallable: Approximate memory used: 178MB / 275MB
12/11/16 21:05:08 INFO eval.StatsCallable: Unable to recommend in 0 cases
12/11/16 21:05:08 INFO eval.AbstractDifferenceRecommenderEvaluator: Evaluation result: 0.813376035770476
0.813376035770476
[INFO] ————————————————————————
[INFO] BUILD SUCCESS
[INFO] ————————————————————————
[INFO] Total time: 6.558s
[INFO] Finished at: Fri Nov 16 21:05:08 EET 2012
[INFO] Final Memory: 9M/272M
[INFO] ————————————————————————

Antud tulemustest on näha, et antud andmehulga puhul annab parema tulemuse TanimotoCoefficientSimilarity ja EuclideanDistanceSimilarity, mis kindlasti ei tähenda, et mõnes teises olukorras teisi meetodeid mitte kaaluda.

 

AGA saab alati paremini

SlopeOneRecommender 

[INFO] — exec-maven-plugin:1.2.1:java (default-cli) @ my-app —
12/11/16 22:49:49 INFO file.FileDataModel: Creating FileDataModel for file /tmp/ratings.txt
12/11/16 22:49:49 INFO file.FileDataModel: Reading file info…
12/11/16 22:49:51 INFO file.FileDataModel: Processed 1000000 lines
12/11/16 22:49:51 INFO file.FileDataModel: Read lines: 1000209
12/11/16 22:49:51 INFO model.GenericDataModel: Processed 6040 users
12/11/16 22:49:51 INFO eval.AbstractDifferenceRecommenderEvaluator: Beginning evaluation using 0.95 of GroupLensDataModel
12/11/16 22:49:51 INFO model.GenericDataModel: Processed 302 users
12/11/16 22:49:51 INFO slopeone.MemoryDiffStorage: Building average diffs…
12/11/16 22:49:55 INFO eval.AbstractDifferenceRecommenderEvaluator: Beginning evaluation of 283 users
12/11/16 22:49:55 INFO eval.AbstractDifferenceRecommenderEvaluator: Starting timing of 283 tasks in 2 threads
12/11/16 22:49:55 INFO eval.StatsCallable: Average time per recommendation: 22ms
12/11/16 22:49:55 INFO eval.StatsCallable: Approximate memory used: 277MB / 481MB
12/11/16 22:49:55 INFO eval.StatsCallable: Unable to recommend in 0 cases
12/11/16 22:49:55 INFO eval.AbstractDifferenceRecommenderEvaluator: Evaluation result: 0.7236027312886469
0.7236027312886469
[INFO] ————————————————————————
[INFO] BUILD SUCCESS
[INFO] ————————————————————————
[INFO] Total time: 10.150s
[INFO] Finished at: Fri Nov 16 22:49:55 EET 2012
[INFO] Final Memory: 8M/459M
[INFO] ————————————————————————

real 0m11.922s
user 0m15.635s
sys 0m0.975s


Posted in LinuxTagged machin learning, mahout

Uus meedia. Foorumid

Posted on November 14, 2012 by margusja

Foorum kui mõiste on väga vana. Juba Vana-Roomas oli foorumi nimeline, mis kujutas endast platsi keset linna, kuhu koguneti ühiskondlikult olulisi asju arutama. Selliseid kogunemiskohtasid, kus rahvas sai päevakohaseid teemasid arutada, tunti ka mujal maailmas. Siit võib järeldada, et läbi aegade on vaja olnud väljundit, kus inimesed, kes ehk ei otsusta otseselt midagi, saaksid oma arvamust avaldada. Sellist funktsiooni on foorumid läbi aegade endas kandnud.

Infoajastul on foorumi funktsionaalsus tasapisi liikunud interneti. Interneti algusaastatel olid foorumid pigem IT inimeste pärusmaa. Tänaseks on olukord väga palju muutunud. Erinevad tarkvaralised lahendused, mis pakuvad foorumi funktsionaalsust on väga palju. Väga lihtsa vaevaga on võimalik seadistada uus foorum, millest tulenevalt võime täna kohata pea iga keskkonna juures keskkonda, kus osalejad saavad oma arvamust avaldada ja teiste vaateid oponeerida.

Kui Vana-Rooma foorumis tuli oma arvamust avaldades arvestada asjaoluga, et arvamuse avaldaja oli teada ja võis juhtuda, et ebapopulaarse arvamuse avaldaja sai ühiskonnas ebasoosingu osaliseks. Sellest tulenevalt toimis kaks olulist protsessi. Esiteks – oma arvamust viia võimalikult selgelt paljude kuulajateni, tuli teema, mida käsitleti, enda jaoks põhjalikult selgeks teha. Teiseks – ebapopulaarsuse ja tagakiusamise oht oli olemas, sellest tulenevalt ei avaldatud igat arvamust, mis on mingis mõttes sellise formaadi negatiivne külg.

Internetis olevas foorumis jääb osalisele tihti tunne, et ollakse anonüümne (Tegelikult on anonüümseks jäämiseks tarvis teha palju rohkem, kui valida oma kasutajanimeks Karu Kati.). Viimasest tulenevalt kaotavad nn traditsioonilise foorumi reeglid (läbimõeldud teema käsitlus, ebasoosingu oht) oma kaalu. Sellest tulenevalt on internetifoorumid tihti väga äärmuslikud. Paljud foorumid on pealtnäha labased ja pealiskaudsed. Puudub igasugune netiketi jälgimine. Näitena tooksin Delfi keskkonda kuuluva foorumi Vastukaaluks leiame väga erinevaid spetsiifilisi keskkondasid, kuhu on kogunenud oma ala asjatundjaid, kes käsitlevad teemasid põhjalikult. Lisaks peetakse kinni netiketist. Viimased keskkonnad on sarnasemad nn Vana-Rooma foorumitele. Tooksin ka siia ühe näite

Võib jääda mulje, et keskkonnad, kus pealtnäha toimub väga pealiskaudne teemakäsitlus, kus arvamust avaldavad osalejad, kes teemat ei valda on mõttetud. Mina arvan, et ei ole. Sellised keskkonnad, olgugi, et mitte alati huvitavad ja harivad on tihti väga selgeks indikatsiooniks mingi ühiskonna valupunktile. Ma leian, et sellistes keskkondadest on samuti võimalik kasuliku tagasisidet saada.

Kokkuvõtteks võib ütelda, et foorum kui selline on endiselt ühiskonnas vajalik nähtus, mida aktiivselt kasutatakse. Foorumi kolimisega interneti on muutunud käsitlus, kuidas me foorumitest kajastuvat infot kasutame ja kas üldse kasutame.

Posted in IT eetilisedTagged ie

Posts navigation

Older posts
Newer posts

The Master

Categories

  • Apache
  • Apple
  • Assembler
  • Audi
  • BigData
  • BMW
  • C
  • Elektroonika
  • Fun
  • Hadoop
  • help
  • Infotehnoloogia koolis
  • IOT
  • IT
  • IT eetilised
  • Java
  • Langevarjundus
  • Lapsed
  • lastekodu
  • Linux
  • M-401
  • Mac
  • Machine Learning
  • Matemaatika
  • Math
  • MSP430
  • Muusika
  • neo4j
  • openCL
  • Õpetaja identiteet ja tegevusvõimekus
  • oracle
  • PHP
  • PostgreSql
  • ProM
  • R
  • Turvalisus
  • Varia
  • Windows
Proudly powered by WordPress | Theme: micro, developed by DevriX.