Upgrade to Pro — share decks privately, control downloads, hide ads and more …

commons-math3 ではじめるゆるふわ統計&機械学習

commons-math3 ではじめるゆるふわ統計&機械学習

DBFlute フェス 2014 http://connpass.com/event/9544/ での発表資料です。
commons-math3 を使って基本統計量を求めたり相関係数を求めたり仮説検定してみたり、はたまた回帰モデルで予測してみたりクラスタリングする方法についてゆるふわに説明しています。

E77287648aff5484ac7659748e45c936?s=128

KOMIYA Atsushi

November 22, 2014
Tweet

Transcript

  1. commons-math3 Ͱ͸͡ΊΔ ΏΔ;Θ౷ܭˍػցֶश DBFlute fes 2014 2014.11.22 at BizReach @komiya_atsushi

  2. ࠷ॳʹݴ͓ͬͯ͘

  3. ๻ͷ࿩͸ DB ʹԿΒؔ܎ͳ͍ ࿩Ͱ͢ͷͰɺDB ͷ࿩Λฉ͖͍ͨ ํ͸ͥͻ B ձ৔ʹ޲͔ΘΕΔ͜ͱ Λ͓͢͢Ί͠·͢

  4. ͓·ͩΕ

  5. ,0.*:""UTVTIJ !LPNJZB@BUTVTIJ

  6. None
  7. ʮੈքதͷྑ࣭ͳ৘ใΛඞཁͳਓʹૹΓಧ͚Δʯ ͨΊʹɺौ୩ɾࡩٰொͰ ೔ʑδϟόδϟό͍ͯ͠·͢

  8. ຊ୊ʹೖΔલʹͻͱ͜ͱ (ຊ೔ొஃ͢ΔͨΊͷϛογϣϯ)

  9. DBFlute ͷσʔλϕʔε αϙʔτঢ়گ

  10. None
  11. None
  12. None
  13. Redshift ͱ͔ Hive ͱ͔ Presto ͱ͔΋ɺ αϙʔτͯ͘͠ΕΔͱ ͏Ε͍͠ͳ (*´Ő`*)

  14. ࠓ೔ͷ࿩

  15. Java Ͱ౷ܭ Java Ͱػցֶश

  16. ʮ౷ܭͩͬͨΒɺExcel ࢖͑͹͍͍͡ΌΜʯ ʮͪΐͬͱؤுΕ͹ɺR ͰػցֶशͰ͖ΔΑʁʯ

  17. ͓ͬ͠ΌΔ͜ͱ͸͝΋ͬͱ΋

  18. ͋͑ͯ Java Ͱ΍Δඞཁ͸ͳ͍Α͏ ͳؾ΋͢ΔΜ͚ͩͲɺSIer ͷओྗݴ ޠ͍ͬͯͬͨΒδϟόͩ͠ɺδϟό ͱ͍ͬͨΒόονԽ͠΍͍͢͠… ˞஫ɿݸਓͷओ؍ʹΑΔ΋ͷͰ͢

  19. ͦ͏͍͏Θ͚ͰɺΏΔ;Θʹʂ

  20. ΈΜͳ͍͖ͩ͢ Apache commons ͷ commons-math3 Λ ࢖ͬͯΈΑ͏ʂ

  21. ύοέʔδ֓આ

  22. • org.apache.commons.math3 • distribution … ֬཰෼෍ • linear … ߦྻԋࢉ

    • ml … ػցֶश • cluster … ΫϥελϦϯά • neuralnet … χϡʔϥϧωοτϫʔΫ • optim … ʢઢܗܭը๏ͳͲͷʣ࠷దԽ • stat • correlation … ૬ؔ܎਺ • descriptive … هड़౷ܭ • inference … Ծઆݕఆ • regression … ճؼ ˞શύοέʔδͰ͸ͳ͘ɺҰ෦Λྻڍ
  23. distribution • ֬཰෼෍ • ͱʹ͔͘๛෋Ͱɺϝδϟʔͳ΋ͷ͸͢΂ͯ཈͑ͯ͋Δײ͡ • ਖ਼ن෼෍ • t ෼෍

    • ϙΞιϯ෼෍ • ΧΠೋ৐෼෍ • ϕʔλ෼෍ • ϫΠϒϧ෼෍ • …ͳͲͳͲ
  24. ml.clustering • ڭࢣͳ͠ػցֶशͷʮΫϥελϦϯάʯ • ఏڙ͞Ε͍ͯΔͷ͸ඇ֊૚ܕΫϥελϦϯάͷ ΞϧΰϦζϜͷΈ • ͋·Γॆ࣮͍ͯ͠ͳ͍ • Fuzzy

    K-means • K-means++ • DBSCAN
  25. stat.correlation • Ұൠతͳ૬ؔ܎਺ͷ࣮૷͕ఏڙ͞Ε͍ͯΔ • ʢϐΞιϯͷʣ૬ؔ܎਺ • εϐΞϚϯͷॱҐ૬ؔ܎਺ • έϯυʔϧͷॱҐ૬ؔ܎਺

  26. stat.descriptive • ͍ΘΏΔʮهड़౷ܭʯͱݺ͹Ε͍ͯΔ΋ͷ • ֤छ౷ܭྔͷࢉग़Λ͢Δ͜ͱ͕Ͱ͖Δ • Ϟʔϝϯτ • ฏۉɺ෼ࢄɺඪ४ภࠩɺ࿪౓ɺઑ౓ •

    ॱং • ࠷େ஋ɺ࠷খ஋ɺதԝ஋ɺύʔηϯλΠϧ
  27. stat.inference • ʮਪଌ౷ܭʯͱݺ͹Ε͍ͯΔ΋ͷ • ओʹԾઆݕఆͷ࣮૷͕ఏڙ͞Ε͍ͯΔ • ೋ߲ݕఆ • ΧΠೋ৐ݕఆ •

    t ݕఆ • …ͳͲͳͲ
  28. stat.regression • આ໌ม਺͔Β݁ՌΛ༧ଌ͢Δʮճؼʯ • ୯ճؼ / ॏճؼͷ྆ํΛఏڙ͍ͯ͠Δ • ࠷খೋ৐ճؼʢOrdinary least

    squares regressionʣ • ҰൠԽઢܗճؼʢGeneralized least squares regressionʣ
  29. ࣮ࡍʹࢼͯ͠ΈΑ͏

  30. bit.ly/dbflute-fes-2014-komiya

  31. هड़౷ܭ

  32. ʮ೔ຊͷ໺ٿબखͷ೥เ͕Ͳ͏ͳ͍ͬͯΔͷ͔ɺ ฏۉ஋͚ͩͰ͸ͳͯͬ͘͘͟Γͱ஌Γ͍ͨʯ • DescriptiveStatistics ΫϥεΛ࢖͍·͢ • DescriptiveStatistics#addValue()  Ͱ
 ਺஋ʢ೥เʣΛ௥Ճ͍͖ͯ͠·͢ •

    ԼهϝιουͰ౷ܭྔΛࢉग़Ͱ͖·͢ • ฏۉ #getMean() • ඪ४ภࠩ #getStandardDeviation() • ύʔηϯλΠϧ #getPercentile(p)
  33. Ծઆݕఆ

  34. ʮ༑ୡʹ΋ΒͬͨαΠίϩ͕͋ΔΜ͚ͩ Ͳɺ͜ΕͬͯϑΣΞͳαΠίϩͳͷ͔ͳʁʯ • ʢ࿡໘ମʣαΠίϩͷ֤໨ͷग़ݱ֬཰͕౳͍͔͠Λ֬ೝ͢Δ ͨΊʹɺΧΠೋ৐ݕఆΛ࢖͍·͢ • ChiSquareTest ΫϥεΛར༻͠·͢ • ֤ࣄ৅ͷظ଴͞ΕΔ֬཰ʢ1/6ʣͱ؍ଌ݁Ռͷ౓਺ʢ࣮ࡍʹ

    αΠίϩΛৼͬͯΈͯɺͦΕͧΕͷ໨ͷग़ͨճ਺ʣɺ༗ҙਫ ४Λࢦఆͯ͠ ChiSquareTest#chiSquareTest() Λݺͼग़ ͢͜ͱͰɺݕఆ݁ՌʢؼແԾઆͷڐ༰ʗ٫Լʣ͕ಘΒΕ·͢ • ؼແԾઆ ʹ αΠίϩͷ֤໨ͷग़ݱ֬཰͸౳͍͠
  35. ૬ؔ܎਺

  36. ʮ͓ʔ͍ɺ̋̋܅ɺ݄ผͷฏۉؾԹͱϏʔϧͷ ച্͸૬͍ؔͯ͠Δͷ͔ɺௐ΂ͯ͘Εͳ͍͔ Ͷʁʯ • ૬ؔͷ༗ແΛ֬ೝ͢ΔͨΊʹɺ૬ؔ܎਺Λ
 ࢉग़͢Δඞཁ͕͋Γ·͢ • PearsonsCorrelation ΫϥεΛ࢖͍·͢ •

    ࣄલʹɺ૬ؔ܎਺ΛٻΊ͍ͨ 2 ͭͷ਺஋ྻΛ
 ͦΕͧΕ double ഑ྻʹ͓͖ͯ͠·͢ • PearsonsCorrelation#correlation()  Ͱ
 ਺஋ྻͷ૬ؔ܎਺Λࢉग़͢Δ͜ͱ͕Ͱ͖·͢
  37. ճؼ

  38. ʮ͓ʔ͍ɺ̋̋܅ɺͳΜͱͳ͘૬͍ؔͯ͠Δͷ ͸෼͔͔ͬͨΒ͞ɺࠓ౓͸݄ผͷฏۉؾԹ͔Β Ϗʔϧͷച্Λ༧ଌͯ͠Έͯ͘Εͳ͍͔Ͷʁʯ • ʮ݄ผͷฏۉؾԹʯͱ͍͏Ұͭͷઆ໌ม਺͔Β໨ తม਺Ͱ͋ΔʮϏʔϧͷച্ʯΛ༧ଌ͢ΔͷͰɺ ୯ճؼͱͳΓ·͢ • SimpleRegression ΫϥεΛ࢖͍·͢

    • SimpleRegression#addData(x,  y) Ͱɺ
 આ໌ม਺ x ͱ໨తม਺ y Λ௥Ճ͍͖ͯ͠·͢ • SimpleRegression#predict(x)  Ͱ༧ଌ஋ΛಘΔ ͜ͱ͕Ͱ͖·͢
  39. ΫϥελϦϯά

  40. ʮԶ͞ɺΞϠϝͷ᣾΍Ֆหͷ෯ɾ௕͞Λଌఆ͢Δͷ͕झຯ Ͱଌఆ݁Ռͷσʔλ͕खݩʹ͋ΔΜ͚ͩͲɺ͜ΕΛͦͷಛ ௃͔ΒͳΜͱͳ̏ͭ͘ʹάϧʔϐϯά͍ͨ͠ΜͩΑͶ…ʯ • ΫϥελϦϯάΛ͢ΔͨΊʹɺଌఆσʔλΛ֨ೲ͢ΔΫϥεΛ࡞ Δඞཁ͕͋Γ·͢ • Clusterable ΠϯλϑΣʔεΛ࣮૷͢Δඞཁ͕͋Γ·͢ •

    ଌఆσʔλΛσʔλΫϥεͷΦϒδΣΫτʹ͠·͢ • KMeansPlusPlusClusterer ΫϥεΛར༻͠·͢ • KMeansPlusPlusClusterer#cluster()  ͰɺΫϥελϦϯά݁ ՌΛಘΔ͜ͱ͕Ͱ͖·͢ • ҰͭͷΫϥελͷ৘ใʹ૬౰͢Δ CentroidCluster ΦϒδΣ ΫτͷϦετ͕ฦ٫͞Ε·͢
  41. ·ͱΊ

  42. commons-math3 ࢖͑͹… • ౷ܭॲཧ͸͹ͬͪΓͩͶʂ • ͪΐͬͱͨ͠ػցֶशλεΫ΋Ͱ͖ͪΌ͏Α • ΫϥελϦϯά͙Β͍͔͠ͳ͍͚Ͳ… • ࢖͍ํ΋ͦΜͳʹ೉͘͠͸ͳ͍ʂ

    • ͲͷΑ͏ͳೖྗσʔλΛ༩͑Ε͹Α͍͔Λҙࣝ ͢Δ
  43. Ͱ΋ɺ΋͏ͪΐͬͱػցֶश͍ͨ͠… • େن໛σʔλΛѻ͍͍ͨͳΒ • ͍·΍ΔͳΒ Apache Spark ͓͢͢Ί • Hive

    ؀ڥ͕͋ΔͳΒ hivemall Ͱ΋͍͍͔΋ • Mahout ͸…… • খن໛σʔλͷ৔߹͸ • liblinear • Weka
  44. ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ