$30 off During Our Annual Pro Sale. View Details »

Kaggle PetFinder 2nd Place Solution

Kaggle PetFinder 2nd Place Solution

Shotaro Ishihara

July 12, 2019
Tweet

More Decks by Shotaro Ishihara

Other Decks in Technology

Transcript

  1. Adoption Prediction
    2nd Place Solution
    Kaggle Tokyo Meetup #6
    July 13th, 2019
    [kaggler-ja] Wodori

    View Slide

  2. ຊൃදʹ͍ͭͯ
    • ,BHHMF%JTDVTTJPO
    IUUQTXXXLBHHMFDPNDQFUGJOEFSBEPQUJPO
    QSFEJDUJPOEJTDVTTJPO
    • ϙΤϜύʔτ
    IUUQTLBFSV
    OBOUPLBIBUFOBCMPHDPNFOUSZ

    View Slide

  3. ໨࣍
    ίϯϖ֓ཁͱ݁Ռ
    νʔϜղ๏ͷ঺հ
    ೖ৆ޙͷల։

    View Slide

  4. ίϯϖ֓ཁͱ݁Ռ

    View Slide

  5. ίϯϖ֓ཁ
    • ೥݄຤ʙ೥݄຤ʹΘͨͬͯ։࠵
    • ʮϚϨʔγΞͷϖοτγϣοϓͰͷݘɾೣ͕Ҿ͖औΒΕΔ
    ଎͞Λ༧ଌ͢Δʯͱ͍͏͓୊
    IUUQTXXXLBHHMFDPNDQFUGJOEFSBEPQUJPOQSFEJDUJPO

    View Slide

  6. ར༻Ͱ͖Δσʔλ
    • ϖοτͷը૾ܗࣜσʔλ
    • આ໌จ΍ϖοτͷ໊લͳͲͷςΩετܗࣜσʔλ
    • ਎௕ɾମॏɾଐੑͳͲͷςʔϒϧܗࣜσʔλ
    • ඞཁʹԠͯ͡֎෦σʔλ΋ར༻Մೳ

    View Slide

  7. UBSHFUͷৄࡉʢ෼ྨλεΫʣ
    • ݘɾೣ͕Ҿ͖औΒΕΔ଎͞
    • ϦετΞοϓͷ౰೔ʢ೔໨ʣ
    • ϦετΞοϓͷʙ೔໨
    • ϦετΞοϓͷʙ೔໨
    • ϦετΞοϓͷʙ೔໨
    • Ҿ͖औΒΕͳ͍

    View Slide

  8. ධՁࢦඪ
    • RVBESBUJDXFJHIUFELBQQBʢॏΈ෇͖Χού܎਺ʣ
    • ͍ۙ෼ྨͰ֎ͨ࣌͠ͷଛࣦ͸খ͍͕͞ɺԕ͍෼ྨͰ֎͢ͱ
    ଛࣦ͕େ͖͍

    IUUQTCFMMDVSWFKQTUBUJTUJDT
    CMPHIUNM

    View Slide

  9. TUBHF੍ ,FSOFM0OMZ
    • TUBHF੍
    • UFTUEBUB͕׬શʹ৽͍͠σʔλʹࠩ͠ସΘΔ
    • ,FSOFM0OMZ
    • Ұ࿈ͷॲཧΛ,BHHMF಺ͷϓϩάϥϜ࣮ߦ؀ڥʹهड़
    • (16࣮ߦ࣌ؒ͸I

    View Slide

  10. ࢀՃऀશମͷେ·͔ͳํ਑
    • ෼ྨ໰୊͕ͩɺճؼͰղ͍ͯɺ$7࠷దͳᮢ஋ΛܾΊΔ
    • QVCMJDLFSOFMͰ͸(#%5͕ओྲྀ
    • ը૾΍ςΩετ͔Βಛ௃ྔநग़͠ɺςʔϒϧͱ݁߹
    • Ұ෦//ܥ΋͕͋ͬͨɺείΞ͸௿͔ͬͨ
    • ࠩผԽཁҼͷҰͭͩͬͨ

    View Slide

  11. ݁ՌʢQVCMJDҐQSJWBUFҐʣ

    View Slide

  12. νʔϜղ๏ͷ঺հ

    View Slide

  13. ղ๏ͷ֓ཁ
    • Ϟσϧͷ3JEHFTUBDLJOH
    • /FVSBM/FUXPSL
    • -JHIU(#.
    • -JHIU(#.
    • 9(#PPTU
    • ͭͷޙॲཧ
    • 3BOLBWFSBHJOHͰᮢ஋࠷దԽ
    • ը૾ॏෳͷൃݟ

    View Slide

  14. νʔϜϝϯόʔ
    • ೔ຊਓਓνʔϜʢLBHHMFSKBʣ
    • LBFSVSVSV ZOLUL V UBLVPLP HFHF
    • ೔ຊޠ 4MBDLͰ΍ΓऔΓ
    • εϓϨουγʔτͰλεΫͳͲΛ؅ཧ
    • ίʔυ͸,BHHMF ,FSOFMΛ'PSL

    View Slide

  15. LFSVSVSVιϩࢀՃ
    • QVCMJDLFSOFMϕʔεʹಔϝμϧݍ಺
    ʢऴྃΧ݄൒લʣ
    • ػցֶशΤϯδχΞ΁ͷస৬ʹ΋੒ޭ
    • స৬ॕ͍Ͱ V ZOLUL ͱҿΈձ
    ʢਓͷग़ձ͍͸લճͷNFFUVQʣ

    IUUQTUBCFMPHDPNUPLZP""

    View Slide

  16. ਓ͕αϒϚʔδ

    View Slide

  17. ਓମ੍
    • LFSVSVSVϞσϧΛ৳͹͢ʢਓ͕޷͖উखίϝϯτʣ
    • ZOLUL͸͔ΒCBTFMJOFϞσϧΛߏங
    • V͸աڈίϯϖؚΊEJTDVTTJPOͳͲΛ୳ࡧ
    • ۜϝμϧݍ಺ʹ౸ୡ

    View Slide

  18. UBLVPLP
    • ং൫ʹࢀՃ͍ͯͨ͠
    • ਓମ੍ͷ೔ޙ

    View Slide

  19. ਓମ੍
    • LFSVSVSVϞσϧΛ৳͹͢
    • ZOLULϞσϧ΋஀ੜ
    ʢZOZULϞσϧ͔Β೿ੜ͠UBLVPLPϞσϧ͕஀ੜʣ
    • ۚϝμϧ·Ͱɺ΋͏ͻͱԡ͠

    ίʔυϚʔδ CZUBLVPLP
    ߴ଎Խ CZZOLUL

    View Slide

  20. ҐҐͰνʔϜϚʔδ
    • ڧLFSOFMެ։Ͱएׯ-#͕
    ߥΕΔதɺHFHF͞Μ͕
    αϒఔ౓ͰҐ·Ͱ౸ୡ
    • UXJUUFSͰ%.ૹ৴
    ʢ໘ࣝ͸ͳ͔ͬͨʣ

    View Slide

  21. ਓମ੍
    • LFSVSVSVϞσϧ
    • UBLVPLPϞσϧ
    • HFHFϞσϧ
    • ۚϝμϧݍ಺Ͱऴྃɺ࠷ऴ݁Ռ͸Ґ

    View Slide

  22. Ҏޙɺ֤ਓʹΑΔղઆ
    • UZV@GFBUVSFT // -(#.
    • L@GFBUVSFT -(#.
    • H@GFBUVSFT9(#
    • 3*%(&TUBDLJOHCZZOLUL
    • ͦͷଞ CZV

    View Slide

  23. UBLVPLP

    View Slide

  24. ྲྀΕ
    • ,FSOFMͷίʔυ͕ղಡ೉
    • ZOLUL͞Μ͕શ෦ϦϑΝΫλϦϯάɻͦΕΛஔ͖౔࢈ʹதࠃ
    ʹཱཱྀͬͨ
    • UBLVPLP͕ϝΠϯͰҾ͖ܧ͗ɺਫ਼౓޲্

    View Slide

  25. ಛ௃ ςΩετ
    • %FTDSJQUJPONFUBUFYUGFBUVSFT TFOUJNFOU
    BOOPUT@EFTD CSFFE

    • 1VODUTͷॲཧ FYXIBU`T XIBU`T
    • .JTTQFMMͷॲཧ FYXIBUTXIBUJT
    • 4UFNNJOHFYHPJOHHP
    • /VNCFSͷॲཧ FYDBUTDBUT
    • #08UGJEG#.47%/.'

    View Slide

  26. ಛ௃ ςΩετ
    • %FTDSJQUJPOPOMZ
    • 1VODUTͷॲཧ
    • .JTTQFMMͷॲཧ
    • /VNCFSͷॲཧ
    • &NCFEEJOHXJUIHMPWFBOEGBTUUFYU2VPSBSE NFUIPE
    • "WFSBHJOHFNCFEEJOHWFDUPSQFSSPXT

    View Slide

  27. ಛ௃ ςΩετ
    • 2VPSBSE NFUIPE
    • FNCFEEJOHͰׂ͖ͨ߹

    • ଞͷલॲཧ΋֤ϓϩηεͰ
    FNCFEEJOHׂ߹Λ֬ೝ͠ɺ
    ৗʹ্͕Δํ๏Λબ୒ͨ͠

    View Slide

  28. ಛ௃ ςΩετ
    • ਫ਼౓্͕͕Βͳ͔ͬͨ΋ͷ
    • #FSU &MNP
    • HMPWFUXJUUFSWFDUPSͳͲଞͷFNCFEEJOHT QZNBHOJUVEF

    • 4DSBUDIͰֶशͨ͠XW GBTUUFYU
    • .FUBUFYUGFBUVSFTͷFNCFEEJOHT
    • -FOHUIͳͲͷUFYU౷ܭྔ
    • தࠃޠͷલॲཧ

    View Slide

  29. ಛ௃ ը૾
    • $//GFBUVSFT
    • ,FSBT EFOTFOFU *ODFQUJPO3FTOFU7
    • ԼهϕϯνϚʔΫΛݩʹɺਫ਼౓ͷߴ͍$//Ϟσϧ͔Βॱʹݕ౼
    • IUUQTHJUIVCDPNDHOPSUIDVUUCFODINBSLJOHLFSBTQZUPSDI

    View Slide

  30. ಛ௃ ը૾
    • ਫ਼౓্͕͕Βͳ͔ͬͨ΋ͷ
    • ଞͷ$//NPEFM LFSBTQZUPSDI

    • /*."
    • "WJUPͰ࢖ΘΕ͍ͯͨը૾ͷ౷ܭྔ XIJUFOFTT EVMMOFTT FUDʜ


    View Slide

  31. ಛ௃ ςʔϒϧ
    • "HHSFHBUJPO
    • 4JNQMFNFUIPE
    • 3BUJPNFUIPE
    • Ձ֨ CSFFEࣲݘ ࣲݘͷฏۉֹͷ৔߹ SBUJP
    • %JGGNFUIPE
    • Ձ֨ CSFFEࣲݘ ࣲݘͷฏۉֹͷ৔߹ EJGG

    View Slide

  32. ಛ௃ ςʔϒϧ
    • ΧςΰϦͷڞى -%"47%
    • શΧςΰϦͷ૊Έ߹Θͤʢ࣍·Ͱʣ
    • JOUFSBDUJPOTGFBUVSFT
    • FY"HF2VBOUJUZ
    • FYUFSOBMEBUB
    • ֆจࣈ
    • 4UBUF #SFFE #SFFESBOLJOH

    View Slide

  33. ಛ௃ ͦͷଞ
    • ,FSOFMͰ͸σʔλʹରͯ͠ɺը૾ຕɺNFUBKTPOGJMF΋
    ݸ͔͠࢖༻͍ͯ͠ͳ͔ͬͨ
    • ࣮ࡍʹ͸ෳ਺͋ΓɺͦΕΒ͸શ෦࢖༻ͯ͠ฏۉΛऔͬͨ
    • ͋Δσʔλ͸શ෦࢖͏͜ͱ͕ॏཁʂ
    • ಛ௃ੜ੒ʹUZV QBSU͚ͩͰTFD͔͚ͨͷͰɺଞΛ͍ͩ
    Ϳѹഭͨ͠PS[

    View Slide

  34. ಛ௃ ಛ௃બ୒
    • શ෦Ͱdͷಛ௃
    • -(#.ͷJNQPSUBODFUPQΛબ୒
    • BMM ͳͲͰ୳ࡧ͠ɺ$7ͱ-#ΛݟܾͯΊͨ
    • ࣮͸΋ͬͱগͳ͍ํ͕$7ͱQSJWBUF͸Α͔ͬͨ

    View Slide

  35. Ϟσϧ
    • -(#.ͱ//
    • #FTUTJOHMF͸-(#.ͰUI //ͰUI
    • ΞϯαϯϒϧͰ࢖༻ͯͨ͠ͷ͸-(#.ͰUI //͸Ґ͘Β͍
    ͷ΍ͭ ಛʹUI //͸$7ߴ͔͕ͬͨ1VCMJD͕গ͠Լ͕ͬͨ

    • ֶश࣌ؒ͸//ͰTFD -(#.ͰTFD
    • -(#.ͷύϥϝʔλ
    • ,FSOFMͷؙύΫϦ

    View Slide

  36. Ϟσϧ //
    • 0QUJNJ[FS"EBN
    • -PTT3.4&
    • 4DIFEVMFS$-3

    View Slide

  37. 7JTVBMJ[F
    'FBUVSFJNQPSUBODF 1%1

    View Slide

  38. LBFSVSVSV

    View Slide

  39. ํ਑
    • $//GFBUVSFT ࣍ݩ
    EPDWFD ࣍ݩ
    UGJEG ͨ͘͞Μ

    • ߴ࣍ݩϕΫτϧΛ௿࣍ݩʹ௵ͯ͠ར༻͢Δ͜ͱʹࣥ৺
    • NFBO WBSͳͲͷ౷ܭྔ΍ 47%ͳͲΛଟ༻͠ɺTDPSF͕৳ͼͨ΋ͷ
    ͚ͩར༻ ݁Ռతʹ࣌ؒઅ໿ʹ

    • "HHSFHBUJPOͱͯ΋ޮ͖ͦ͏
    • UFYU౷ܭྔಛ௃ͳͲ΋ "HHSFHBUJPOͨ͠
    • $7ͪΐͬͱ্͕ͬͨ

    View Slide

  40. ಛ௃ ը૾
    • $//GFBUVSFT
    • ,FSBTEFOTFOFU
    • 47%Ͱ ࣍ݩ ࣍ݩʹѹॖ

    View Slide

  41. ಛ௃ ը૾
    • "WJUPίϯϖͷΧʔωϧͰݟ͚ͭͨը૾ͷαΠζಛ௃
    • TJ[F XJEUI IFJHIU
    ΛΧʔωϧͰެ։
    • LBFSVSVSV NPEFMʹ͸ޮ͔ͣ΋ɺ࠷ޙʹՃೖͨ͠ HFHFࢯ
    ͕ϕʔεʹ͍ͯͨ͠ΧʔωϧͰ࢖ΘΕ͍ͯͨ

    View Slide

  42. ಛ௃ ςΩετ
    • γϯϓϧͳલॲཧ
    • TUPQ@XPSET จࣈ ͷআ֎
    • খจࣈԽɺվߦ λϒ ਺ࣈͷ࡟আ
    • ه߸ͷஔ׵

    View Slide

  43. ಛ௃ ςΩετ
    • %FTDSJQUJPONFUBUFYUGFBUVSFT TFOUJNFOU
    BOOPUT@EFTD

    • -FOHUIͳͲͷ UFYU౷ܭྔ
    • -FOHUIͳͲͷ UFYU౷ܭྔΛ 3FTDVFS*% Ͱ HSPVQCZ
    • UGJEG47%Ͱѹॖ

    View Slide

  44. ಛ௃ ςΩετ
    • %FTDSJQUJPOPOMZ
    • %PDWFD࣍ݩͷ෼ࢄදݱΛ NFBO WBSͳͲͰڧҾ
    ʹ࣍ݩΛམͱͯ͠ར༻

    View Slide

  45. ಛ௃ ςʔϒϧ
    • "HHSFHBUJPO
    • 3FTDVFS*% Λ LFZʹ
    • ໟͷ௕͞ɺେ͖͞ɺख਺ྉɺ݈߁ঢ়ଶͳͲઆ໌ޮ͖ͦ͏ͳ΋ͷ
    ʹద༻ ৭ɺੑผͳͲ͸ º

    • μϝԡ͠Ͱઆ໌จͷ-FOHUIͳͲʹ΋ద༻

    View Slide

  46. 8IBUEJEO`UXPSL
    • ը૾
    • 1Z5PSDI൛ EFOTFOFU
    • EBUB@MPBEFSͰͷฒྻॲཧ OVN@XPSLFS૿ͰΤϥʔ

    • ςΩετ
    • 4$%7 87 TDSBUDI


    View Slide

  47. 8IBUEJEO`UXPSL
    • &YUFSOBMEBUB
    • DVUFͰݕࡧͯ͠ग़͖ͯͨݘೣը૾σʔληοτͰֶशͨ͠
    NPEFMͰ QSFEJDUͯ͠ ಛ௃ΛಘΔ
    • EBUBTFUͷDMFBOJOH͕଍Γͳ͔ͬͨ

    View Slide

  48. 'FBUVSFJNQPSUBODF

    View Slide

  49. ͓·͚
    • 4FFEΨνϟͰ΋ۚݍʢ΄΅ೖ৆ݍʣ

    trial seed kaeru_seed Private Ranking
    6 31416 58 0.44945 3rd
    7 310416 1033 0.44659 6th
    8 310416 1324 0.44955 3rd
    9 310416 1604 0.45096 2nd
    10 310416 1757 0.45491 2nd
    trial seed kaeru_seed Private Ranking
    1 77777 133777 0.45358 2nd
    2 31414 1625 0.45072 2nd
    3 31415 1433 0.44914 3rd
    4 31415 1631 0.45271 2nd
    5 31415 1850 0.44837 5th

    View Slide

  50. HFHF

    View Slide

  51. શମ૾
    • UFTUͬΆ͘ͳ͍USBJOσʔλΛ࡟ͬͨ


    *NBHF
    5BCMF
    5FYU
    %FOTFOFU
    *NBHFTJ[F OVN
    47%
    &YUFSOBM
    "SFB 1PQVMBUJPO
    #SFFEEFUBJMJOGP
    .FUBEBUB
    4FOUJNFOU
    'SFRVFODZFODPEJOH
    5'*%' 47% MJHIUHCN YHCPPTU
    USBJO
    EBUB
    ʢUFTUʹࣅ͍ͯͳ͍σʔλͷΛ࡟আʣ
    UFTU
    USBJOUFTUΛ
    ෼ྨ͢ΔΑ͏ʹֶश

    View Slide

  52. ޮ͍ͨͷʁ
    • 1VCMJDͰ͸େ͖͘ޮ͍͕ͨɺ1SJWBUFͰ͸ޮ͔ͳ͔ͬͨ
    • -BUFTVCNJTTJPOͯ͠Έ͕ͨɺ݁Ռ͸΄΅มΘΒͣʢҙຯͳ͠ʣ
    • ΍ͨΒͱอޢ਺͕ଟ͍3FTDVFS*%Λ࡟͍ͬͯΔΑ͏ʹݟ͑ͨ
    • ݁ہɺγϯάϧͩͱಔϝμϧݍ

    View Slide

  53. ্ख͍͔͘ͳ͔ͬͨू
    • جຊ͏·͍͔͘ͳ͔ͬͨ
    • &YUFSOBMEBUBΛ໊دͤͯ͠΋Βͬͨ΍ͭ
    • 4FFEBWFSBHJOHʢ28,͕ෆ҆ఆͩͬͨͷͰ΍ͬͯΈ͕ͨʣ
    • ݘೣͷ৭Λॱংई౓ʹ͢Δʢྫɿനˠփ৭ˠࠇʣ
    • قઅੑʢςΩετ͔Β+BOVBSZͱ͔ൈ͖औΔʣ
    • ͳͲ

    View Slide

  54. ZOLUL

    View Slide

  55. 3JEHF4UBDLJOH
    • 4JOHMFNPEFM͸͍͍ͤͥNPEFM
    • $7είΞΛݟͯɺ4UBDLFSΛݕ౼
    • -(#."WFSBHF3JEHF
    • #FTU4JOHMF -(#.
    $7 1SJWBUF UI

    • #FTU4UBDLJOH$7 1SJWBUF OE


    View Slide

  56. 3BOLBWFSBHJOH
    • 3JEHF΁ͷೖྗͷલॲཧͱͯ͠ɺਖ਼نԽΛߦͬͨ
    • TDJQZTUBUTSBOLEBUBΛ࠾༻
    • SBOLԽ͢Δ͜ͱͰɺGPME͝ͱͷ༧ଌ஋ͷ෼෍ͷࠩΛٵऩ
    • ධՁࢦඪͷ28,͸ᮢ஋ͷӨڹΛड͚΍͘͢ɺ༧ଌ஋ͷ෼෍
    ͷӨڹ͸େ͖͍

    View Slide

  57. 1PTU1SPDFTTJOH
    • 5SBJOͱ5FTUʹॏෳ͢Δը૾͕ଘࡏ
    • TU TUBHFͰ͸ɺຕҎ্
    • OE TUBHFͰ͸ɺຕҎ্
    • 3FTDVFS*%͸ผ
    • ࠨͷྫͰ͸ɺ౤ߘ೔ʹ೔ͷ։͖

    Train
    Test

    View Slide

  58. 1PTU1SPDFTTJOH
    • JNBHFIBTIͱ͍͏ϥΠϒϥϦΛ࢖͍ɺॏෳը૾Λ୳ࡧ
    • ,FSOFMͷ࣮ߦ࣌ؒͱͷ݉Ͷ߹͍ͰɺαϜωΛؚΊຕ໨·Ͱͷը૾
    Λ࢖༻
    • ॏෳ͕͋Δ৔߹ɺ5FTUσʔλͷ༧ଌ஋ΛରԠ͢Δ5SBJOσʔλͷ໨
    తม਺ͷ஋ʹஔ͖׵͑Δ
    QVCMJD QSJWBUF


    View Slide

  59. V

    View Slide

  60. ΍ͬͨ͜ͱ
    • టष͍͜ͱॾʑ୲౰
    • աڈίϯϖؚΊͯEJTDVTTJPOΛ௥͏
    • FYUFSOBM EBUBͷ࡞੒
    • σʔλΫϨϯδϯά
    • ݱঢ়੔ཧɺλεΫ؅ཧ
    • PETBJΛݟΔ
    • UXJUUFS
    • ೣΧϑΣʹߦ͘

    IUUQXXXOFDPSFQVCMJDKQBDDFTTIUNMUPLZP

    View Slide

  61. σʔλΫϨϯδϯά
    • UZQPࣙॻΛਓྗͰ࡞ΔͨΊͷ5JQT IUUQTVQVSBIBUFOBCMPHDPNFOUSZ
    • σʔληοτͷ௲Γϛε͸ඞͣ௚͢΂͖͔ʁ IUUQTVQVSBIBUFOBCMPHDPNFOUSZ

    View Slide

  62. ೖ৆ޙͷల։

    View Slide

  63. ೖ৆ޙͷల։
    ࠶ݱίʔυɾղ๏ࢿྉͷఏग़
    8JOOFS`T$BMM
    1FUGJOEFSͰͷ׆༻

    View Slide

  64. ऴྃ௚ޙʹ࿈བྷ͕དྷΔ

    View Slide

  65. ࠶ݱίʔυɾղ๏ࢿྉͷఏग़
    • ࠶ݱίʔυ
    • ,FSOFM0OMZίϯϖͳͷͰɺఏग़ແ͠Ͱ0,ͩͬͨ
    • ʢී௨ͷίϯϖͰ΍Δ࡞ۀΛίϯϖதʹڧ͍ΒΕ͍ͯΔʁʣ
    • ղ๏ࢿྉ
    • 1PXFSQPJOUͰϖʔδऑ
    • #BDLHSPVOE4VNNBSZ'FBUVSFTFMFDUJPOFOHJOFFSJOH
    5SBJOJOHNFUIPET*NQPSUBOUGJOEJOHT4JNQMFNPEFM

    View Slide

  66. 8JOOFS`TDBMM
    • ෼ϓϨθϯ
    • ෼࣭ٙ

    View Slide

  67. 1FUGJOEFSͰͷ׆༻
    • ೖ৆ऀͷϞσϧΛ౷߹͠ lVMUJNBUFNPEFMz Λ࣮૷த
    • ϖοτͷૣظҾ͖औΓʹܨ͛Δ໨త
    ϖοτͷϓϩϑΟʔϧΛείΞ෇͚
    ԿΛमਖ਼͢΂͖͔ఏҊʢը૾ɾςΩετͳͲʣ
    • 1FUGJOEFSͷػցֶशϓϩδΣΫτϖʔδʹࣸਅ͕ࡌͬͨ

    View Slide

  68. Thank you for all!

    View Slide