เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ

เบšเบปเบ”เบ„เบงเบฒเบกเบชเบปเบ™เบ—เบฐเบ™เบฒเบซเบผเบฒเบเบงเบดเบ—เบตเปƒเบ™เบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบชเบปเบกเบœเบปเบ™เบ—เบฒเบ‡เบ„เบฐเบ™เบดเบ”เบชเบฒเบ”เบ‚เบญเบ‡เป€เบชเบฑเป‰เบ™ regression เปเบšเบšเบ‡เปˆเบฒเบเบ”เบฒเบ (เบ„เบนเปˆ).

เบงเบดเบ—เบตเบเบฒเบ™เบ—เบฑเบ‡เปเบปเบ”เบ‚เบญเบ‡เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ—เบตเปˆเป„เบ”เป‰เบเปˆเบฒเบงเบกเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบญเบตเบ‡เปƒเบชเปˆเบงเบดเบ—เบตเบเบฒเบ™เบชเบตเปˆเบซเบผเปˆเบฝเบกเบ™เป‰เบญเบเบ—เบตเปˆเบชเบธเบ”. เบ‚เปโ€‹เปƒเบซเป‰โ€‹เบชเบฑเบ‡โ€‹เป€เบเบ”โ€‹เบงเบดโ€‹เบ—เบตโ€‹เบเบฒเบ™โ€‹เบ”เบฑเปˆเบ‡โ€‹เบ•เปเปˆโ€‹เป„เบ›โ€‹เบ™เบตเป‰โ€‹:

  • เบเบฒเบ™เปเบเป‰เป„เบ‚เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐ
  • Gradient Descent
  • Stochastic gradient descent

เบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเบงเบดเบ—เบตเบ‚เบญเบ‡เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡เป€เบชเบฑเป‰เบ™เบŠเบทเปˆ, เบšเบปเบ”เบ„เบงเบฒเบกเบชเบฐเบซเบ™เบญเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆเบ•เปˆเบฒเบ‡เป†, เป€เบŠเบดเปˆเบ‡เบชเปˆเบงเบ™เปƒเบซเบเปˆเปเบกเปˆเบ™เปเบšเปˆเบ‡เบญเบญเบเป€เบ›เบฑเบ™เบฅเบฒเบเบฅเบฑเบเบญเบฑเบเบชเบญเบ™เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”. เบ•เบปเบงเป€เบฅเบ เปเบฅเบฐเบœเบนเป‰เบ—เบตเปˆเปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆ เบ•เบปเบงเป€เบฅเบ. เบกเบฑเบ™เป„เบ”เป‰เบ–เบทเบเป€เบŠเบทเปˆเบญเบงเปˆเบฒเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ—เบฑเบเบชเบฐ เบ•เบปเบงเป€เบฅเบ เบˆเบฐเบซเบผเบธเบ”เบœเปˆเบญเบ™เบ„เปˆเบฒเปƒเบŠเป‰เบˆเปˆเบฒเบเปƒเบ™เบ„เบญเบกเบžเบดเบงเป€เบ•เบตเป‰.

เบฅเบฐเบซเบฑเบ”เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเปƒเบซเป‰เบขเบนเปˆเปƒเบ™เบšเบปเบ”เบ„เบงเบฒเบกเปเบกเปˆเบ™เบ‚เบฝเบ™เป€เบ›เบฑเบ™เบžเบฒเบชเบฒ python 2.7 เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ เบ›เบทเป‰เบกเบšเบฑเบ™เบ—เบถเบ Jupyter. เบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡เปเบฅเบฐเป„เบŸเบฅเปŒเบ—เบตเปˆเบกเบตเบ‚เปเป‰เบกเบนเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ–เบทเบเบˆเบฑเบ”เบžเบตเบกเบกเบฒเบขเบนเปˆ Github

เบšเบปเบ”เบ„เบงเบฒเบกเปเบกเปˆเบ™เปเบ™เปƒเบชเปˆเบ—เบฑเบ‡เบœเบนเป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™ เปเบฅเบฐเบœเบนเป‰เบ—เบตเปˆเป„เบ”เป‰เป€เบฅเบตเปˆเบกเบ„เปˆเบญเบเป†เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™เปเบกเปˆเบšเบปเบ”เบ‚เบญเบ‡เบเบฒเบ™เบชเบถเบเบชเบฒเบžเบฒเบเบ—เบตเปˆเบเบงเป‰เบฒเบ‡เบ‚เบงเบฒเบ‡เปƒเบ™เบ›เบฑเบ™เบเบฒเบ›เบฐเบ”เบดเบ” - เบเบฒเบ™เบฎเบฝเบ™เบฎเบนเป‰เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบ.

เป€เบžเบทเปˆเบญเบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เป€เบ–เบดเบ‡เป€เบญเบเบฐเบชเบฒเบ™, เบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰เบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเบซเบผเบฒเบ.

เป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบ•เบปเบงเบขเปˆเบฒเบ‡

เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบซเป‰เบฒเบ„เบธเบ™เบ„เปˆเบฒเบ—เบตเปˆเบกเบตเบฅเบฑเบเบชเบฐเบ™เบฐเบเบฒเบ™เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบช Y เบˆเบฒเบ X (เบ•เบฒเบ•เบฐเบฅเบฒเบ‡ 1):

เบ•เบฒเบ•เบฐเบฅเบฒเบ‡ 1 โ€œเป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบ•เบปเบงเบขเปˆเบฒเบ‡โ€

เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ

เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเบ„เบธเบ™เบ„เปˆเบฒ เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ เปเบกเปˆเบ™เป€เบ”เบทเบญเบ™เบ‚เบญเบ‡เบ›เบต, เปเบฅเบฐ เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ โ€” เบฅเบฒเบโ€‹เบฎเบฑเบšโ€‹เปƒเบ™โ€‹เป€เบ”เบทเบญเบ™โ€‹เบ™เบตเป‰โ€‹. เปƒเบ™เบ„เปเบฒเบชเบฑเบšเบ•เปˆเบฒเบ‡เป†เบญเบทเปˆเบ™เป†, เบฅเบฒเบเบฎเบฑเบšเปเบกเปˆเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเป€เบ”เบทเบญเบ™เบ‚เบญเบ‡เบ›เบต, เปเบฅเบฐ เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ - เป€เบ„เบทเปˆเบญเบ‡เบซเบกเบฒเบเบ”เบฝเบงเบ—เบตเปˆเบฅเบฒเบเบฎเบฑเบšเบ‚เบถเป‰เบ™เบเบฑเบš.

เบ•เบปเบงเบขเปˆเบฒเบ‡เปเบกเปˆเบ™เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ—เบฑเบ‡เบˆเบฒเบเบ—เบฑเบ”เบชเบฐเบ™เบฐเบ‚เบญเบ‡เบเบฒเบ™เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบ‚เบญเบ‡เบฅเบฒเบเป„เบ”เป‰เปƒเบ™เป€เบ”เบทเบญเบ™เบ‚เบญเบ‡เบ›เบต, เปเบฅเบฐเบˆเบฒเบเบˆเบธเบ”เบ‚เบญเบ‡เบˆเปเบฒเบ™เบงเบ™เบกเบนเบ™เบ„เปˆเบฒ - เบกเบตเบˆเปเบฒเบ™เบงเบ™เบซเบ™เป‰เบญเบเบซเบผเบฒเบเบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ. เปเบ™เบงเปƒเบ”เบเปเปˆเบ•เบฒเบก, เบ„เบงเบฒเบกเบ‡เปˆเบฒเบเบ”เบฒเบเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰, เบเป‰เบญเบ™เบงเปˆเบฒเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเป€เบงเบปเป‰เบฒเบงเปˆเบฒ, เป€เบžเบทเปˆเบญเบญเบฐเบ—เบดเบšเบฒเบ, เบšเปเปˆเบชเบฐเป€เบซเบกเบตเป„เบ›เบ”เป‰เบงเบเบ„เบงเบฒเบกเบ‡เปˆเบฒเบ, เบงเบฑเบ”เบชเบฐเบ”เบธเบ—เบตเปˆเบœเบนเป‰เป€เบฅเบตเปˆเบก assimilate. เปเบฅเบฐเบเบฑเบ‡เบ„เบงเบฒเบกเบ‡เปˆเบฒเบเบ”เบฒเบเบ‚เบญเบ‡เบ•เบปเบงเป€เบฅเบเบˆเบฐเบŠเปˆเบงเบเปƒเบซเป‰เบœเบนเป‰เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เปเบเป‰เป„เบ‚เบ•เบปเบงเบขเปˆเบฒเบ‡เปƒเบ™เป€เบˆเป‰เบเป‚เบ”เบเบšเปเปˆเบกเบตเบ„เปˆเบฒเปƒเบŠเป‰เบˆเปˆเบฒเบเปเบฎเบ‡เบ‡เบฒเบ™เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™.

เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเบเบฒเบ™เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ›เบฐเบกเบฒเบ™เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบ”เบตเป‚เบ”เบเบชเบปเบกเบœเบปเบ™เบ—เบฒเบ‡เบ„เบฐเบ™เบดเบ”เบชเบฒเบ”เบ‚เบญเบ‡เป€เบชเบฑเป‰เบ™ regression เปเบšเบšเบ‡เปˆเบฒเบเบ”เบฒเบ (เบ„เบนเปˆ) เบ‚เบญเบ‡เปเบšเบšเบŸเบญเบก:

เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ

เบšเปˆเบญเบ™เบ—เบตเปˆ เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ เปเบกเปˆเบ™เป€เบ”เบทเบญเบ™เบ—เบตเปˆเป„เบ”เป‰เบฎเบฑเบšเบฅเบฒเบเบฎเบฑเบš, เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ - เบฅเบฒเบโ€‹เบฎเบฑเบšโ€‹เบ—เบตเปˆโ€‹เบชเบญเบ”โ€‹เบ„เป‰เบญเบ‡โ€‹เบเบฑเบ™โ€‹เบเบฑเบšโ€‹เป€เบ”เบทเบญเบ™โ€‹, เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ ะธ เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ เปเบกเปˆเบ™เบ„เปˆเบฒเบชเปเบฒเบ›เบฐเบชเบดเบ”เบเบฒเบ™เบ–เบปเบ”เบ–เบญเบเบ‚เบญเบ‡เป€เบชเบฑเป‰เบ™เบ—เบตเปˆเบ„เบฒเบ”เบ„เบฐเป€เบ™.

เปƒเบซเป‰เบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบ„เปˆเบฒเบชเปเบฒเบ›เบฐเบชเบดเบ” เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ เบกเบฑเบเบˆเบฐเป€เบญเบตเป‰เบ™เบงเปˆเบฒ slope เบซเบผเบท gradient เบ‚เบญเบ‡เป€เบชเบฑเป‰เบ™เบ„เบฒเบ”เบ„เบฐเป€เบ™; เป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™เบ‚เบญเบ‡เบˆเปเบฒเบ™เบงเบ™เบ—เบตเปˆ เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ เป€เบกเบทเปˆเบญเบกเบฑเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡ เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ.

เปเบ™เปˆเบ™เบญเบ™, เบงเบฝเบเบ‡เบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เปเบกเปˆเบ™เบเบฒเบ™เป€เบฅเบทเบญเบเบ•เบปเบงเบ„เบนเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเปƒเบ™เบชเบปเบกเบœเบปเบ™ เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ ะธ เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ, เบ—เบตเปˆ deviations เบ‚เบญเบ‡เบกเบนเบ™เบ„เปˆเบฒเบฅเบฒเบเบฎเบฑเบšเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบ„เบดเบ”เป„เบฅเปˆเป‚เบ”เบเป€เบ”เบทเบญเบ™เบˆเบฒเบเบ„เปเบฒเบ•เบญเบšเบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡, i.e. เบ„เปˆเบฒเบ—เบตเปˆเบ™เปเบฒเบชเบฐเป€เบซเบ™เบตเปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบˆเบฐเบกเบตเบซเบ™เป‰เบญเบ.

เบงเบดเบ—เบตเบเบฒเบ™เบชเบตเปˆเบซเบผเปˆเบฝเบกเบ™เป‰เบญเบเบ—เบตเปˆเบชเบธเบ”

เบญเบตเบ‡เบ•เบฒเบกเบงเบดเบ—เบตเบเบฒเบ™เบชเบตเปˆเบซเบผเปˆเบฝเบกเบ™เป‰เบญเบเบ—เบตเปˆเบชเบธเบ”, เบเบฒเบ™เบšเปˆเบฝเบ‡เป€เบšเบ™เบ„เบงเบ™เบˆเบฐเบ–เบทเบเบ„เบดเบ”เป„เบฅเปˆเป‚เบ”เบเบเบฒเบ™เบชเบตเปˆเบซเบฅเปˆเบฝเบก. เป€เบ•เบฑเบเบ™เบดเบเบ™เบตเป‰เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เป€เบžเบทเปˆเบญเบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เบเบปเบเป€เบฅเบตเบเป€เบŠเบดเปˆเบ‡เบเบฑเบ™เปเบฅเบฐเบเบฑเบ™เบ‚เบญเบ‡ deviations เบ–เป‰เบฒเบžเบงเบเป€เบ‚เบปเบฒเบกเบตเบญเบฒเบเบฒเบ™เบเบปเบ‡เบเบฑเบ™เบ‚เป‰เบฒเบก. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ–เป‰เบฒเบขเบนเปˆเปƒเบ™เบเปเบฅเบฐเบ™เบตเบซเบ™เบถเปˆเบ‡, เบเบฒเบ™เบšเปˆเบฝเบ‡เป€เบšเบ™เปเบกเปˆเบ™ +5 (เบšเบงเบโ€‹เบซเป‰เบฒโ€‹)โ€‹, เปเบฅเบฐโ€‹เบญเบทเปˆเบ™เป†โ€‹ -5 (เบฅเบปเบšเบซเป‰เบฒ), เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบœเบปเบ™เบฅเบงเบกเบ‚เบญเบ‡ deviations เบˆเบฐเบเบปเบเป€เบฅเบตเบเป€เบŠเบดเปˆเบ‡เบเบฑเบ™เปเบฅเบฐเบเบฑเบ™เบญเบญเบเปเบฅเบฐเบˆเปเบฒเบ™เบงเบ™ 0 (เบชเบนเบ™). เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบšเปเปˆเบชเบตเปˆเบซเบฅเปˆเบฝเบก deviation, เปเบ•เปˆเปƒเบŠเป‰เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ‚เบญเบ‡เป‚เบกเบ”เบนเบฅเปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™ deviation เบ—เบฑเบ‡เบซเบกเบปเบ”เบˆเบฐเป€เบ›เบฑเบ™เบšเบงเบเปเบฅเบฐเบˆเบฐเบชเบฐเบชเบปเบก. เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบšเปเปˆเบขเบนเปˆเปƒเบ™เบˆเบธเบ”เบ™เบตเป‰เป‚เบ”เบเบฅเบฐเบญเบฝเบ”, เปเบ•เปˆเบžเบฝเบ‡เปเบ•เปˆเบŠเบตเป‰เปƒเบซเป‰เป€เบซเบฑเบ™เบงเปˆเบฒเป€เบžเบทเปˆเบญเบ„เบงเบฒเบกเบชเบฐเบ”เบงเบเบ‚เบญเบ‡เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆ, เบกเบฑเบ™เป€เบ›เบฑเบ™เบ›เบฐเป€เบžเบ™เบตเบ—เบตเปˆเบˆเบฐเบชเบตเปˆเบซเบฅเปˆเบฝเบก deviation.

เบ™เบตเป‰เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบชเบนเบ”เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบเปเบฒเบ™เบปเบ”เบœเบปเบ™เบฅเบงเบกเบขเปˆเบฒเบ‡เบซเบ™เป‰เบญเบเบ‚เบญเบ‡ deviations เบฎเบฝเบšเบฎเป‰เบญเบ (เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”):

เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ

เบšเปˆเบญเบ™เบ—เบตเปˆ เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ เปเบกเปˆเบ™เบซเบ™เป‰เบฒเบ—เบตเปˆเบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเบกเบฒเบ™เบ„เปเบฒเบ•เบญเบšเบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡ (เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบฅเบฒเบเบฎเบฑเบšเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ„เบดเบ”เป„เบฅเปˆ),

เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ เปเบกเปˆเบ™เบ„เปเบฒเบ•เบญเบšเบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡ (เบฅเบฒเบเบฎเบฑเบšเบ—เบตเปˆเบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰เบขเบนเปˆเปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡),

เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ เปเบกเปˆเบ™เบ”เบฑเบ”เบŠเบฐเบ™เบตเบ•เบปเบงเบขเปˆเบฒเบ‡ (เบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡เป€เบ”เบทเบญเบ™เบ—เบตเปˆ deviation เบ–เบทเบเบเปเบฒเบ™เบปเบ”)

เปƒเบซเป‰เบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบ‚เบญเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆ, เบเปเบฒเบ™เบปเบ”เบชเบปเบกเบœเบปเบ™เบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบšเบฒเบ‡เบชเปˆเบงเบ™, เปเบฅเบฐเบžเป‰เบญเบกเบ—เบตเปˆเบˆเบฐเบเป‰เบฒเบงเป„เบ›เบชเบนเปˆเบเบฒเบ™เปเบเป‰เป„เบ‚เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐ. เปเบ•เปˆเบเปˆเบญเบ™เบญเบทเปˆเบ™เปเบปเบ”, เปƒเบซเป‰เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบชเบฑเป‰เบ™เป†เบเปˆเบฝเบงเบเบฑเบšเบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡ เปเบฅเบฐเบˆเบทเปˆเบˆเบณเบ„เบงเบฒเบกเปเบฒเบเบ—เบฒเบ‡เป€เบฅเบ‚เบฒเบ„เบฐเบ™เบดเบ”เบ‚เบญเบ‡เบญเบฐเบ™เบธเบžเบฑเบ™.

เบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡

เบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เปเบกเปˆเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‡เบฒเบ™เบ‚เบญเบ‡เบเบฒเบ™เบ„เบปเป‰เบ™เบซเบฒเบœเบปเบ™เบกเบฒเบˆเบฒเบเบเบฒเบ™เบ—เปเบฒเบ‡เบฒเบ™.

เบญเบฐเบ™เบธเบžเบฑเบ™เบ—เบตเปˆเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบซเบเบฑเบ‡? เบญเบฐเบ™เบธเบžเบฑเบ™เบ‚เบญเบ‡เบŸเบฑเบ‡เบŠเบฑเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบญเบฑเบ”เบ•เบฒเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ‚เบญเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆเปเบฅเบฐเบšเบญเบเบžเบงเบเป€เบฎเบปเบฒเบ—เบดเบ”เบ—เบฒเบ‡เบ‚เบญเบ‡เบกเบฑเบ™. เบ–เป‰เบฒเบญเบฐเบ™เบธเบžเบฑเบ™เปƒเบ™เบˆเบธเบ”เปƒเบ”เบ™เบถเปˆเบ‡เป€เบ›เบฑเบ™เบšเบงเบ, เบŸเบฑเบ‡เบŠเบฑเบ™เบˆเบฐเป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™, เบ–เป‰เบฒเบšเปเปˆเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบซเบ™เป‰เบฒเบ—เบตเปˆเบซเบผเบธเบ”เบฅเบปเบ‡. เปเบฅเบฐเบซเบผเบฒเบเบกเบนเบ™เบ„เปˆเบฒเบ‚เบญเบ‡เบญเบฐเบ™เบธเบžเบฑเบ™เบขเปˆเบฒเบ‡เปเบ—เป‰เบˆเบดเบ‡, เบญเบฑเบ”เบ•เบฒเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ‚เบญเบ‡เบ„เปˆเบฒเบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบตเปˆเบชเบนเบ‡เบ‚เบถเป‰เบ™, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบ„เบงเบฒเบกเบŠเบฑเบ™เบ‚เบญเบ‡เบเบฒเบŸเบŸเบฑเบ‡เบŠเบฑเบ™.

เบ•เบปเบงเบขเปˆเบฒเบ‡, เบžเบฒเบเปƒเบ•เป‰เป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเบ›เบฐเบชเบฒเบ™เบ‡เบฒเบ™ Cartesian, เบ„เปˆเบฒเบ‚เบญเบ‡เบญเบฐเบ™เบธเบžเบฑเบ™เบ—เบตเปˆเบˆเบธเบ” M(0,0) เป€เบ—เบปเปˆเบฒเบเบฑเบš. + 25 เปเบฒเบ เบ„เบงเบฒเบกเบงเปˆเบฒเปƒเบ™เบˆเบธเบ”เปƒเบ” เปœเบถเปˆเบ‡, เป€เบกเบทเปˆเบญเบ„เปˆเบฒเบ–เบทเบเบ›เปˆเบฝเบ™ เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ เป„เบ›เบ—เบฒเบ‡เบ‚เบงเบฒเป‚เบ”เบเบซเบปเบงเปœเปˆเบงเบเบ—เบณเบกเบฐเบ”เบฒ, เบ„เปˆเบฒ เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ โ€‹เป€เบžเบตเปˆเบกโ€‹เบ‚เบถเป‰เบ™ 25 เปœเปˆเบงเบโ€‹เบ—เบณโ€‹เบกเบฐโ€‹เบ”เบฒ. เปƒเบ™เบเบฒเบŸเบกเบฑเบ™เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบกเบตเบ„เปˆเบฒเป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เบชเบนเบ‡เบซเบผเบฒเบ เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ เบˆเบฒเบเบˆเบธเบ”เปƒเบ”เบซเบ™เบถเปˆเบ‡.

เบ•เบปเบงเบขเปˆเบฒเบ‡เบญเบทเปˆเบ™. เบ„เปˆเบฒเบญเบฐเบ™เบธเบžเบฑเบ™เปเบกเปˆเบ™เป€เบ—เบปเปˆเบฒเบเบฑเบ™ -0,1 เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเป€เบกเบทเปˆเบญเบ–เบทเบเบเบปเบเบเป‰เบฒเบ เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ เบ•เปเปˆเปœเบถเปˆเบ‡เบซเบปเบงเปœเปˆเบงเบเบ—เบณเบกเบฐเบ”เบฒ, เบ„เปˆเบฒ เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ เบซเบผเบธเบ”เบฅเบปเบ‡เบžเบฝเบ‡เปเบ•เปˆ 0,1 เบซเบ™เปˆเบงเบเบ—เปเบฒเบกเบฐเบ”เบฒ. เปƒเบ™เบ‚เบฐเบ™เบฐเบ”เบฝเบงเบเบฑเบ™, เปƒเบ™เบเบฒเบŸเบ‚เบญเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆ, เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบ„เบงเบฒเบกเบŠเบฑเบ™เบฅเบปเบ‡เบฅเบธเปˆเบกเบ—เบตเปˆเบšเปเปˆเบ„เปˆเบญเบเบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™. เปเบ•เป‰เบกเบเบฒเบ™เบ›เบฝเบšเบ—เบฝเบšเบเบฑเบšเบžเบนเป€เบ‚เบปเบฒ, เบกเบฑเบ™เบ„เบทเบเบฑเบšเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบฅเบปเบ‡เบŠเป‰เบฒเป†เบฅเบปเบ‡เบˆเบฒเบเบžเบนเบ—เบตเปˆเบญเปˆเบญเบ™เป‚เบเบ™, เบšเปเปˆเบ„เบทเบเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ, เบšเปˆเบญเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบ›เบตเบ™เบžเบนเบ—เบตเปˆเบชเบนเบ‡เบŠเบฑเบ™เบซเบผเบฒเบ :)

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบ‚เบญเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆ เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ เป‚เบ”เบเบšเปเปˆเบฅเบปเบ‡เบฎเบญเบเบเบฑเบ™ เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ ะธ เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ, เบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบ™เบปเบ” 1st order partial equations . เบซเบผเบฑเบ‡เบˆเบฒเบเบเปเบฒเบ™เบปเบ”เบชเบปเบกเบœเบปเบ™, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบฅเบฐเบšเบปเบšเบ‚เบญเบ‡เบชเบญเบ‡เบชเบปเบกเบœเบปเบ™, เป‚เบ”เบเบเบฒเบ™เปเบเป‰เป„เบ‚เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบชเบฒเบกเบฒเบ”เป€เบฅเบทเบญเบเป€เบญเบปเบฒเบ„เปˆเบฒเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบ‚เบญเบ‡เบชเปเบฒเบ›เบฐเบชเบดเบ”. เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ ะธ เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ, เป€เบŠเบดเปˆเบ‡เบ„เปˆเบฒเบ‚เบญเบ‡เบญเบฐเบ™เบธเบžเบฑเบ™เบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบ™เบขเบนเปˆเปƒเบ™เบˆเบธเบ”เบ—เบตเปˆเปƒเบซเป‰เบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เป‚เบ”เบเบ›เบฐเบฅเบดเบกเบฒเบ™เบซเบ™เป‰เบญเบเบซเบผเบฒเบ, เปเบฅเบฐเปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบเบฒเบ™เปเบเป‰เป„เบ‚เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบšเปเปˆเบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”. เปƒเบ™เบ„เปเบฒเบชเบฑเบšเบ•เปˆเบฒเบ‡เป†เบญเบทเปˆเบ™เป†, เบซเบ™เป‰เบฒเบ—เบตเปˆเบœเบดเบ”เบžเบฒเบ”เบขเบนเปˆเบ—เบตเปˆเบ•เบปเบงเบ„เบนเบ™เบ—เบตเปˆเบžเบปเบšเป€เบซเบฑเบ™เบˆเบฐเบšเบฑเบ™เบฅเบธเบ•เปเบฒเปˆเบชเบธเบ”เบ—เบตเปˆ, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบ„เปˆเบฒเบ‚เบญเบ‡เบญเบฐเบ™เบธเบžเบฑเบ™เบšเบฒเบ‡เบชเปˆเบงเบ™เบขเบนเปˆเปƒเบ™เบˆเบธเบ”เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบˆเบฐเป€เบ—เบปเปˆเบฒเบเบฑเบšเบชเบนเบ™.

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ•เบฒเบกเบเบปเบ”เบฅเบฐเบšเบฝเบšเบ‚เบญเบ‡เบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡, เบชเบปเบกเบœเบปเบ™เบญเบฐเบ™เบธเบžเบฑเบ™เบšเบฒเบ‡เบชเปˆเบงเบ™เบ‚เบญเบ‡เบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบต 1 เบเปˆเบฝเบงเบเบฑเบšเบ„เปˆเบฒเบชเปเบฒเบ›เบฐเบชเบดเบ”. เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ เบˆเบฐโ€‹เปƒเบŠเป‰โ€‹เบฎเบนเบšโ€‹เปเบšเบšโ€‹:

เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ

เบฅเบณเบ”เบฑเบšเบ—เบต 1 เบชเบปเบกเบœเบปเบ™เบญเบฐเบ™เบธเบžเบฑเบ™เบšเบฒเบ‡เบชเปˆเบงเบ™เบเปˆเบฝเบงเบเบฑเบš เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ เบˆเบฐโ€‹เปƒเบŠเป‰โ€‹เบฎเบนเบšโ€‹เปเบšเบšโ€‹:

เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบšเบฅเบฐเบšเบปเบšเบชเบปเบกเบœเบปเบ™เบ—เบตเปˆเบกเบตเบเบฒเบ™เปเบเป‰เป„เบ‚เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเบžเปเบชเบปเบกเบ„เบงเบ™:

เป€เบฅเบตเปˆเบก{เบชเบปเบกเบœเบปเบ™*}
เป€เบฅเบตเปˆเบก{เบเปเบฅเบฐเบ™เบต}
na + bsumlimits_{i=1}^nx_i โ€” sumlimits_{i=1}^ny_i = 0

sumlimits_{i=1}^nx_i(a +bsumlimits_{i=1}^nx_i โ€” sumlimits_{i=1}^ny_i) = 0
เบชเบดเป‰เบ™เบชเบธเบ”{cases}
เบชเบดเป‰เบ™เบชเบธเบ”{เบชเบปเบกเบœเบปเบ™*}

เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™, เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒ preload, เบเบงเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบเบฒเบ™เป‚เบซเบผเบ”เปเบกเปˆเบ™เบ–เบทเบเบ•เป‰เบญเบ‡, เปเบฅเบฐเบˆเบฑเบ”เบฎเบนเบšเปเบšเบšเบ‚เปเป‰เบกเบนเบ™.

เบเบณเบฅเบฑเบ‡เป‚เบซเบผเบ” เปเบฅเบฐเบˆเบฑเบ”เบฎเบนเบšเปเบšเบšเบ‚เปเป‰เบกเบนเบ™

เบกเบฑเบ™เบ„เบงเบ™เบˆเบฐเบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบ„เบงเบฒเบกเบˆเบดเบ‡เบ—เบตเปˆเบงเปˆเบฒเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เปเบเป‰เป„เบ‚เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐ, เปเบฅเบฐเบ•เปเปˆเบกเบฒเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™ gradient เปเบฅเบฐ stochastic descent, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ™เปเบฒเปƒเบŠเป‰เบฅเบฐเบซเบฑเบ”เปƒเบ™เบชเบญเบ‡เบ•เบปเบงเปเบ›: เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”. เบ•เบปเบงเป€เบฅเบ เปเบฅเบฐเป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบกเบฑเบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ•เป‰เบญเบ‡เบเบฒเบ™เบเบฒเบ™เบˆเบฑเบ”เบฎเบนเบšเปเบšเบšเบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบก (เป€เบšเบดเปˆเบ‡เบฅเบฐเบซเบฑเบ”).

เบเบฒเบ™เป‚เบซเบผเบ”เบ‚เปเป‰เบกเบนเบ™ เปเบฅเบฐเบฅเบฐเบซเบฑเบ”เบเบฒเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™

# ะธะผะฟะพั€ั‚ะธั€ัƒะตะผ ะฒัะต ะฝัƒะถะฝั‹ะต ะฝะฐะผ ะฑะธะฑะปะธะพั‚ะตะบะธ
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import math
import pylab as pl
import random

# ะณั€ะฐั„ะธะบะธ ะพั‚ะพะฑั€ะฐะทะธะผ ะฒ Jupyter
%matplotlib inline

# ัƒะบะฐะถะตะผ ั€ะฐะทะผะตั€ ะณั€ะฐั„ะธะบะพะฒ
from pylab import rcParams
rcParams['figure.figsize'] = 12, 6

# ะพั‚ะบะปัŽั‡ะธะผ ะฟั€ะตะดัƒะฟั€ะตะถะดะตะฝะธั Anaconda
import warnings
warnings.simplefilter('ignore')

# ะทะฐะณั€ัƒะทะธะผ ะทะฝะฐั‡ะตะฝะธั
table_zero = pd.read_csv('data_example.txt', header=0, sep='t')

# ะฟะพัะผะพั‚ั€ะธะผ ะธะฝั„ะพั€ะผะฐั†ะธัŽ ะพ ั‚ะฐะฑะปะธั†ะต ะธ ะฝะฐ ัะฐะผัƒ ั‚ะฐะฑะปะธั†ัƒ
print table_zero.info()
print '********************************************'
print table_zero
print '********************************************'

# ะฟะพะดะณะพั‚ะพะฒะธะผ ะดะฐะฝะฝั‹ะต ะฑะตะท ะธัะฟะพะปัŒะทะพะฒะฐะฝะธั NumPy

x_us = []
[x_us.append(float(i)) for i in table_zero['x']]
print x_us
print type(x_us)
print '********************************************'

y_us = []
[y_us.append(float(i)) for i in table_zero['y']]
print y_us
print type(y_us)
print '********************************************'

# ะฟะพะดะณะพั‚ะพะฒะธะผ ะดะฐะฝะฝั‹ะต ั ะธัะฟะพะปัŒะทะพะฒะฐะฝะธะตะผ NumPy

x_np = table_zero[['x']].values
print x_np
print type(x_np)
print x_np.shape
print '********************************************'

y_np = table_zero[['y']].values
print y_np
print type(y_np)
print y_np.shape
print '********************************************'

เบเบฒเบ™เป€เบšเบดเปˆเบ‡เป€เบซเบฑเบ™

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบกเบต, เบ—เปเบฒเบญเบดเบ”, เป‚เบซเบผเบ”เบ‚เปเป‰เบกเบนเบ™, เบญเบฑเบ™เบ—เบตเบชเบญเบ‡, เบเบงเบ”เป€เบšเบดเปˆเบ‡เบ„เบงเบฒเบกเบ–เบทเบเบ•เป‰เบญเบ‡เบ‚เบญเบ‡เบเบฒเบ™เป‚เบซเบผเบ”เปเบฅเบฐเบชเบธเบ”เบ—เป‰เบฒเบเป„เบ”เป‰เบฎเบนเบšเปเบšเบšเบ‚เปเป‰เบกเบนเบ™, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เป€เบšเบดเปˆเบ‡เป€เบซเบฑเบ™เบ„เบฑเป‰เบ‡เบ—เปเบฒเบญเบดเบ”. เบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเปƒเบŠเป‰เป€เบฅเบทเป‰เบญเบเป†เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เบตเป‰เปเบกเปˆเบ™ เปเบœเบ™เบ„เบนเปˆ เบซเป‰เบญเบ‡เบชเบฐ เปเบธเบ” เบ—เบฐเป€เบฅ. เปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบˆเปเบฒเบ™เบงเบ™เบˆเปเบฒเบเบฑเบ”, เบšเปเปˆเบกเบตเบˆเบธเบ”เปƒเบ”เปƒเบ™เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ” เบ—เบฐเป€เบฅ. เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเปƒเบŠเป‰เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบ›เบปเบเบเบฐเบ•เบด matplotlib เปเบฅเบฐเบžเบฝเบ‡เปเบ•เปˆเป€เบšเบดเปˆเบ‡เบขเบนเปˆเปƒเบ™เบเบฐเปเบˆเบเบเบฐเบˆเบฒเบ.

เบฅเบฐเบซเบฑเบ” Scatterplot

print 'ะ“ั€ะฐั„ะธะบ โ„–1 "ะ—ะฐะฒะธัะธะผะพัั‚ัŒ ะฒั‹ั€ัƒั‡ะบะธ ะพั‚ ะผะตััั†ะฐ ะณะพะดะฐ"'

plt.plot(x_us,y_us,'o',color='green',markersize=16)
plt.xlabel('$Months$', size=16)
plt.ylabel('$Sales$', size=16)
plt.show()

เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เป€เบฅเบเบ—เบต 1 โ€œเบเบฒเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเบฅเบฒเบเบฎเบฑเบšเบ‚เบญเบ‡เป€เบ”เบทเบญเบ™เบ‚เบญเบ‡เบ›เบตโ€

เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ

เบเบฒเบ™เปเบเป‰เป„เบ‚เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐ

เปƒเบซเป‰เปƒเบŠเป‰เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ—เบปเปˆเบงเป„เบ›เบ—เบตเปˆเบชเบธเบ”เปƒเบ™ python เปเบฅเบฐโ€‹เปเบเป‰โ€‹เป„เบ‚โ€‹เบฅเบฐโ€‹เบšเบปเบšโ€‹เบ‚เบญเบ‡โ€‹เบชเบปเบกโ€‹เบœเบปเบ™โ€‹:

เป€เบฅเบตเปˆเบก{เบชเบปเบกเบœเบปเบ™*}
เป€เบฅเบตเปˆเบก{เบเปเบฅเบฐเบ™เบต}
na + bsumlimits_{i=1}^nx_i โ€” sumlimits_{i=1}^ny_i = 0

sumlimits_{i=1}^nx_i(a +bsumlimits_{i=1}^nx_i โ€” sumlimits_{i=1}^ny_i) = 0
เบชเบดเป‰เบ™เบชเบธเบ”{cases}
เบชเบดเป‰เบ™เบชเบธเบ”{เบชเบปเบกเบœเบปเบ™*}

เบ•เบฒเบกเบเบปเบ”เบฅเบฐเบšเบฝเบšเบ‚เบญเบ‡ Cramer เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบŠเบญเบเบซเบฒเบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบ—เบปเปˆเบงเป„เบ›, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบ•เบปเบงเบเปเบฒเบ™เบปเบ”เป‚เบ”เบ เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ เปเบฅเบฐเป‚เบ”เบ เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบเบฒเบ™เปเบšเปˆเบ‡เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เป‚เบ”เบ เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ เป„เบ›เบซเบฒเบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบ—เบปเปˆเบงเป„เบ› - เบŠเบญเบเบซเบฒเบ„เปˆเบฒเบชเปเบฒเบ›เบฐเบชเบดเบ” เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบžเบงเบเป€เบฎเบปเบฒเบŠเบญเบเบซเบฒเบ„เปˆเบฒเบชเปเบฒเบ›เบฐเบชเบดเบ” เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ.

เบฅเบฐเบซเบฑเบ”เบเบฒเบ™เปเบเป‰เป„เบ‚เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐ

# ะพะฟั€ะตะดะตะปะธะผ ั„ัƒะฝะบั†ะธัŽ ะดะปั ั€ะฐัั‡ะตั‚ะฐ ะบะพัั„ั„ะธั†ะธะตะฝั‚ะพะฒ a ะธ b ะฟะพ ะฟั€ะฐะฒะธะปัƒ ะšั€ะฐะผะตั€ะฐ
def Kramer_method (x,y):
        # ััƒะผะผะฐ ะทะฝะฐั‡ะตะฝะธะน (ะฒัะต ะผะตััั†ะฐ)
    sx = sum(x)
        # ััƒะผะผะฐ ะธัั‚ะธะฝะฝั‹ั… ะพั‚ะฒะตั‚ะพะฒ (ะฒั‹ั€ัƒั‡ะบะฐ ะทะฐ ะฒะตััŒ ะฟะตั€ะธะพะด)
    sy = sum(y)
        # ััƒะผะผะฐ ะฟั€ะพะธะทะฒะตะดะตะฝะธั ะทะฝะฐั‡ะตะฝะธะน ะฝะฐ ะธัั‚ะธะฝะฝั‹ะต ะพั‚ะฒะตั‚ั‹
    list_xy = []
    [list_xy.append(x[i]*y[i]) for i in range(len(x))]
    sxy = sum(list_xy)
        # ััƒะผะผะฐ ะบะฒะฐะดั€ะฐั‚ะพะฒ ะทะฝะฐั‡ะตะฝะธะน
    list_x_sq = []
    [list_x_sq.append(x[i]**2) for i in range(len(x))]
    sx_sq = sum(list_x_sq)
        # ะบะพะปะธั‡ะตัั‚ะฒะพ ะทะฝะฐั‡ะตะฝะธะน
    n = len(x)
        # ะพะฑั‰ะธะน ะพะฟั€ะตะดะตะปะธั‚ะตะปัŒ
    det = sx_sq*n - sx*sx
        # ะพะฟั€ะตะดะตะปะธั‚ะตะปัŒ ะฟะพ a
    det_a = sx_sq*sy - sx*sxy
        # ะธัะบะพะผั‹ะน ะฟะฐั€ะฐะผะตั‚ั€ a
    a = (det_a / det)
        # ะพะฟั€ะตะดะตะปะธั‚ะตะปัŒ ะฟะพ b
    det_b = sxy*n - sy*sx
        # ะธัะบะพะผั‹ะน ะฟะฐั€ะฐะผะตั‚ั€ b
    b = (det_b / det)
        # ะบะพะฝั‚ั€ะพะปัŒะฝั‹ะต ะทะฝะฐั‡ะตะฝะธั (ะฟั€ะพะพะฒะตั€ะบะฐ)
    check1 = (n*b + a*sx - sy)
    check2 = (b*sx + a*sx_sq - sxy)
    return [round(a,4), round(b,4)]

# ะทะฐะฟัƒัั‚ะธะผ ั„ัƒะฝะบั†ะธัŽ ะธ ะทะฐะฟะธัˆะตะผ ะฟั€ะฐะฒะธะปัŒะฝั‹ะต ะพั‚ะฒะตั‚ั‹
ab_us = Kramer_method(x_us,y_us)
a_us = ab_us[0]
b_us = ab_us[1]
print ' 33[1m' + ' 33[4m' + "ะžะฟั‚ะธะผะฐะปัŒะฝั‹ะต ะทะฝะฐั‡ะตะฝะธั ะบะพัั„ั„ะธั†ะธะตะฝั‚ะพะฒ a ะธ b:"  + ' 33[0m' 
print 'a =', a_us
print 'b =', b_us
print

# ะพะฟั€ะตะดะตะปะธะผ ั„ัƒะฝะบั†ะธัŽ ะดะปั ะฟะพะดัั‡ะตั‚ะฐ ััƒะผะผั‹ ะบะฒะฐะดั€ะฐั‚ะพะฒ ะพัˆะธะฑะพะบ
def errors_sq_Kramer_method(answers,x,y):
    list_errors_sq = []
    for i in range(len(x)):
        err = (answers[0] + answers[1]*x[i] - y[i])**2
        list_errors_sq.append(err)
    return sum(list_errors_sq)

# ะทะฐะฟัƒัั‚ะธะผ ั„ัƒะฝะบั†ะธัŽ ะธ ะทะฐะฟะธัˆะตะผ ะทะฝะฐั‡ะตะฝะธะต ะพัˆะธะฑะบะธ
error_sq = errors_sq_Kramer_method(ab_us,x_us,y_us)
print ' 33[1m' + ' 33[4m' + "ะกัƒะผะผะฐ ะบะฒะฐะดั€ะฐั‚ะพะฒ ะพั‚ะบะปะพะฝะตะฝะธะน" + ' 33[0m'
print error_sq
print

# ะทะฐะผะตั€ะธะผ ะฒั€ะตะผั ั€ะฐัั‡ะตั‚ะฐ
# print ' 33[1m' + ' 33[4m' + "ะ’ั€ะตะผั ะฒั‹ะฟะพะปะฝะตะฝะธั ั€ะฐัั‡ะตั‚ะฐ ััƒะผะผั‹ ะบะฒะฐะดั€ะฐั‚ะพะฒ ะพั‚ะบะปะพะฝะตะฝะธะน:" + ' 33[0m'
# % timeit error_sq = errors_sq_Kramer_method(ab,x_us,y_us)

เบ™เบตเป‰เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบš:

เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ„เปˆเบฒเบ‚เบญเบ‡เบ„เปˆเบฒเบชเปเบฒเบ›เบฐเบชเบดเบ”เป„เบ”เป‰เบ–เบทเบเบžเบปเบšเป€เบซเบฑเบ™, เบœเบปเบ™เบฅเบงเบกเบ‚เบญเบ‡ deviations เบฎเบฝเบšเบฎเป‰เบญเบเป„เบ”เป‰เบ–เบทเบเบชเป‰เบฒเบ‡เบ•เบฑเป‰เบ‡เบ‚เบถเป‰เบ™. เปƒเบซเป‰เปเบ•เป‰เบกเป€เบชเบฑเป‰เบ™เบŠเบทเปˆเปƒเบชเปˆ histogram เบเบฐเปเบˆเบเบเบฐเบˆเบฒเบเบ•เบฒเบกเบ„เปˆเบฒเบชเปเบฒเบ›เบฐเบชเบดเบ”เบ—เบตเปˆเบžเบปเบšเป€เบซเบฑเบ™.

เบฅเบฐเบซเบฑเบ”เป€เบชเบฑเป‰เบ™ Regression

# ะพะฟั€ะตะดะตะปะธะผ ั„ัƒะฝะบั†ะธัŽ ะดะปั ั„ะพั€ะผะธั€ะพะฒะฐะฝะธั ะผะฐััะธะฒะฐ ั€ะฐััั‡ะตั‚ะฝั‹ั… ะทะฝะฐั‡ะตะฝะธะน ะฒั‹ั€ัƒั‡ะบะธ
def sales_count(ab,x,y):
    line_answers = []
    [line_answers.append(ab[0]+ab[1]*x[i]) for i in range(len(x))]
    return line_answers

# ะฟะพัั‚ั€ะพะธะผ ะณั€ะฐั„ะธะบะธ
print 'ะ“ั€ั„ะธะบโ„–2 "ะŸั€ะฐะฒะธะปัŒะฝั‹ะต ะธ ั€ะฐัั‡ะตั‚ะฝั‹ะต ะพั‚ะฒะตั‚ั‹"'
plt.plot(x_us,y_us,'o',color='green',markersize=16, label = '$True$ $answers$')
plt.plot(x_us, sales_count(ab_us,x_us,y_us), color='red',lw=4,
         label='$Function: a + bx,$ $where$ $a='+str(round(ab_us[0],2))+',$ $b='+str(round(ab_us[1],2))+'$')
plt.xlabel('$Months$', size=16)
plt.ylabel('$Sales$', size=16)
plt.legend(loc=1, prop={'size': 16})
plt.show()

เบ•เบฒเบ•เบฐเบฅเบฒเบ‡ 2 "เบ„เปเบฒเบ•เบญเบšเบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เปเบฅเบฐเบ„เปเบฒเบ™เบงเบ™"

เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ

เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบšเบดเปˆเบ‡เบ•เบฒเบ•เบฐเบฅเบฒเบ‡ deviation เบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเป€เบ”เบทเบญเบ™. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบšเปเปˆเป„เบ”เป‰เบฎเบฑเบšเบกเบนเบ™เบ„เปˆเบฒเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เปƒเบ”เป†เบˆเบฒเบเบกเบฑเบ™, เปเบ•เปˆเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เบ„เบงเบฒเบกเบขเบฒเบเบฎเบนเป‰เบขเบฒเบเป€เบซเบฑเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบเปˆเบฝเบงเบเบฑเบšเบชเบปเบกเบœเบปเบ™เบเบฒเบ™เบ–เบปเบ”เบ–เบญเบเปเบšเบšเป€เบชเบฑเป‰เบ™เปเบšเบšเบ‡เปˆเบฒเบเบ”เบฒเบเบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เป€เบ–เบดเบ‡เบเบฒเบ™เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเบ‚เบญเบ‡เบฅเบฒเบเป„เบ”เป‰เปƒเบ™เป€เบ”เบทเบญเบ™เบ‚เบญเบ‡เบ›เบต.

เบฅเบฐเบซเบฑเบ”เบ•เบฒเบ•เบฐเบฅเบฒเบ‡ deviation

# ะพะฟั€ะตะดะตะปะธะผ ั„ัƒะฝะบั†ะธัŽ ะดะปั ั„ะพั€ะผะธั€ะพะฒะฐะฝะธั ะผะฐััะธะฒะฐ ะพั‚ะบะปะพะฝะตะฝะธะน ะฒ ะฟั€ะพั†ะตะฝั‚ะฐั…
def error_per_month(ab,x,y):
    sales_c = sales_count(ab,x,y)
    errors_percent = []
    for i in range(len(x)):
        errors_percent.append(100*(sales_c[i]-y[i])/y[i])
    return errors_percent

# ะฟะพัั‚ั€ะพะธะผ ะณั€ะฐั„ะธะบ
print 'ะ“ั€ะฐั„ะธะบโ„–3 "ะžั‚ะบะปะพะฝะตะฝะธั ะฟะพ-ะผะตััั‡ะฝะพ, %"'
plt.gca().bar(x_us, error_per_month(ab_us,x_us,y_us), color='brown')
plt.xlabel('Months', size=16)
plt.ylabel('Calculation error, %', size=16)
plt.show()

เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ—เบต 3 โ€œเบเบฒเบ™เบšเปˆเบฝเบ‡เป€เบšเบ™, %โ€

เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ

เบšเปเปˆเบชเบปเบกเบšเบนเบ™เปเบšเบš, เปเบ•เปˆเบžเบงเบเป€เบฎเบปเบฒเป€เบฎเบฑเบ”เบชเปเบฒเป€เบฅเบฑเบ”เบงเบฝเบเบ‡เบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ.

เปƒเบซเป‰เบ‚เบฝเบ™เบซเบ™เป‰เบฒเบ—เบตเปˆ, เป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ”เบ„เปˆเบฒเบชเปเบฒเบ›เบฐเบชเบดเบ” เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ ะธ เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ เปƒเบŠเป‰เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ” เบ•เบปเบงเป€เบฅเบ, เบŠเบฑเบ”เป€เบˆเบ™เบเบงเปˆเบฒเบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ‚เบฝเบ™เบชเบญเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆ: เบซเบ™เบถเปˆเบ‡เปƒเบŠเป‰ pseudoinverse matrix (เบšเปเปˆเปเบ™เบฐเบ™เปเบฒเปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เปเบกเปˆเบ™เบชเบฑเบšเบชเบปเบ™เปเบฅเบฐเบšเปเปˆเบซเบกเบฑเป‰เบ™เบ„เบปเบ‡), เบญเบทเปˆเบ™เปƒเบŠเป‰เบชเบปเบกเบœเบปเบ™ matrix.

เบฅเบฐเบซเบฑเบ”เบเบฒเบ™เปเบเป‰เป„เบ‚เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐ (NumPy)

# ะดะปั ะฝะฐั‡ะฐะปะฐ ะดะพะฑะฐะฒะธะผ ัั‚ะพะปะฑะตั† ั ะฝะต ะธะทะผะตะฝััŽั‰ะธะผัั ะทะฝะฐั‡ะตะฝะธะตะผ ะฒ 1. 
# ะ”ะฐะฝะฝั‹ะน ัั‚ะพะปะฑะตั† ะฝัƒะถะตะฝ ะดะปั ั‚ะพะณะพ, ั‡ั‚ะพะฑั‹ ะฝะต ะพะฑั€ะฐะฑะฐั‚ั‹ะฒะฐั‚ัŒ ะพั‚ะดะตะปัŒะฝะพ ะบะพัั„ั„ะธั†ะตะฝั‚ a
vector_1 = np.ones((x_np.shape[0],1))
x_np = table_zero[['x']].values # ะฝะฐ ะฒััะบะธะน ัะปัƒั‡ะฐะน ะฟั€ะธะฒะตะดะตะผ ะฒ ะฟะตั€ะฒะธั‡ะฝั‹ะน ั„ะพั€ะผะฐั‚ ะฒะตะบั‚ะพั€ x_np
x_np = np.hstack((vector_1,x_np))

# ะฟั€ะพะฒะตั€ะธะผ ั‚ะพ, ั‡ั‚ะพ ะฒัะต ัะดะตะปะฐะปะธ ะฟั€ะฐะฒะธะปัŒะฝะพ
print vector_1[0:3]
print x_np[0:3]
print '***************************************'
print

# ะฝะฐะฟะธัˆะตะผ ั„ัƒะฝะบั†ะธัŽ, ะบะพั‚ะพั€ะฐั ะพะฟั€ะตะดะตะปัะตั‚ ะทะฝะฐั‡ะตะฝะธั ะบะพัั„ั„ะธั†ะธะตะฝั‚ะพะฒ a ะธ b ั ะธัะฟะพะปัŒะทะพะฒะฐะฝะธะตะผ ะฟัะตะฒะดะพะพะฑั€ะฐั‚ะฝะพะน ะผะฐั‚ั€ะธั†ั‹
def pseudoinverse_matrix(X, y):
    # ะทะฐะดะฐะตะผ ัะฒะฝั‹ะน ั„ะพั€ะผะฐั‚ ะผะฐั‚ั€ะธั†ั‹ ะฟั€ะธะทะฝะฐะบะพะฒ
    X = np.matrix(X)
    # ะพะฟั€ะตะดะตะปัะตะผ ั‚ั€ะฐะฝัะฟะพะฝะธั€ะพะฒะฐะฝะฝัƒัŽ ะผะฐั‚ั€ะธั†ัƒ
    XT = X.T
    # ะพะฟั€ะตะดะตะปัะตะผ ะบะฒะฐะดั€ะฐั‚ะฝัƒัŽ ะผะฐั‚ั€ะธั†ัƒ
    XTX = XT*X
    # ะพะฟั€ะตะดะตะปัะตะผ ะฟัะตะฒะดะพะพะฑั€ะฐั‚ะฝัƒัŽ ะผะฐั‚ั€ะธั†ัƒ
    inv = np.linalg.pinv(XTX)
    # ะทะฐะดะฐะตะผ ัะฒะฝั‹ะน ั„ะพั€ะผะฐั‚ ะผะฐั‚ั€ะธั†ั‹ ะพั‚ะฒะตั‚ะพะฒ
    y = np.matrix(y)
    # ะฝะฐั…ะพะดะธะผ ะฒะตะบั‚ะพั€ ะฒะตัะพะฒ
    return (inv*XT)*y

# ะทะฐะฟัƒัั‚ะธะผ ั„ัƒะฝะบั†ะธัŽ
ab_np = pseudoinverse_matrix(x_np, y_np)
print ab_np
print '***************************************'
print

# ะฝะฐะฟะธัˆะตะผ ั„ัƒะฝะบั†ะธัŽ, ะบะพั‚ะพั€ะฐั ะธัะฟะพะปัŒะทัƒะตั‚ ะดะปั ั€ะตัˆะตะฝะธั ะผะฐั‚ั€ะธั‡ะฝะพะต ัƒั€ะฐะฒะฝะตะฝะธะต
def matrix_equation(X,y):
    a = np.dot(X.T, X)
    b = np.dot(X.T, y)
    return np.linalg.solve(a, b)

# ะทะฐะฟัƒัั‚ะธะผ ั„ัƒะฝะบั†ะธัŽ
ab_np = matrix_equation(x_np,y_np)
print ab_np

เปƒเบซเป‰เบชเบปเบกเบ—เบฝเบšเป€เบงเบฅเบฒเบ—เบตเปˆเปƒเบŠเป‰เปƒเบ™เบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบ„เปˆเบฒเบชเปเบฒเบ›เบฐเบชเบดเบ” เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ ะธ เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ, เบญเบตเบ‡เบ•เบฒเบก 3 เบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบ™เปเบฒเบชเบฐเป€เบซเบ™เบต.

เบฅเบฐเบซเบฑเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเป€เบงเบฅเบฒเบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆ

print ' 33[1m' + ' 33[4m' + "ะ’ั€ะตะผั ะฒั‹ะฟะพะปะฝะตะฝะธั ั€ะฐัั‡ะตั‚ะฐ ะบะพัั„ั„ะธั†ะธะตะฝั‚ะพะฒ ะฑะตะท ะธัะฟะพะปัŒะทะพะฒะฐะฝะธั ะฑะธะฑะปะธะพั‚ะตะบะธ NumPy:" + ' 33[0m'
% timeit ab_us = Kramer_method(x_us,y_us)
print '***************************************'
print
print ' 33[1m' + ' 33[4m' + "ะ’ั€ะตะผั ะฒั‹ะฟะพะปะฝะตะฝะธั ั€ะฐัั‡ะตั‚ะฐ ะบะพัั„ั„ะธั†ะธะตะฝั‚ะพะฒ ั ะธัะฟะพะปัŒะทะพะฒะฐะฝะธะตะผ ะฟัะตะฒะดะพะพะฑั€ะฐั‚ะฝะพะน ะผะฐั‚ั€ะธั†ั‹:" + ' 33[0m'
%timeit ab_np = pseudoinverse_matrix(x_np, y_np)
print '***************************************'
print
print ' 33[1m' + ' 33[4m' + "ะ’ั€ะตะผั ะฒั‹ะฟะพะปะฝะตะฝะธั ั€ะฐัั‡ะตั‚ะฐ ะบะพัั„ั„ะธั†ะธะตะฝั‚ะพะฒ ั ะธัะฟะพะปัŒะทะพะฒะฐะฝะธะตะผ ะผะฐั‚ั€ะธั‡ะฝะพะณะพ ัƒั€ะฐะฒะฝะตะฝะธั:" + ' 33[0m'
%timeit ab_np = matrix_equation(x_np, y_np)

เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ

เบ”เป‰เบงเบเบ‚เปเป‰เบกเบนเบ™เบˆเปเบฒเบ™เบงเบ™เบ™เป‰เบญเบเป†, เบŸเบฑเบ‡เบŠเบฑเบ™ "เบ‚เบฝเบ™เบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡" เบญเบญเบเบกเบฒเบเปˆเบญเบ™, เป€เบŠเบดเปˆเบ‡เบŠเบญเบเบซเบฒเบ„เปˆเบฒเบชเปเบฒเบ›เบฐเบชเบดเบ”เป‚เบ”เบเปƒเบŠเป‰เบงเบดเบ—เบตเบเบฒเบ™เบ‚เบญเบ‡ Cramer.

เบ•เบญเบ™เบ™เบตเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบเป‰เบฒเบงเป„เบ›เบชเบนเปˆเบงเบดเบ—เบตเบญเบทเปˆเบ™เป€เบžเบทเปˆเบญเบŠเบญเบเบซเบฒเบ„เปˆเบฒเบชเปเบฒเบ›เบฐเบชเบดเบ”เป„เบ”เป‰ เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ ะธ เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ.

Gradient Descent

เบ—เปเบฒเบญเบดเบ”, เปƒเบซเป‰เบเปเบฒเบ™เบปเบ”เบชเบดเปˆเบ‡เบ—เบตเปˆ gradient เปเบกเปˆเบ™เบซเบเบฑเบ‡. เป€เบงเบปเป‰เบฒเบ‡เปˆเบฒเบเป†, gradient เปเบกเปˆเบ™เบชเปˆเบงเบ™เบ—เบตเปˆเบŠเบตเป‰เบšเบญเบเบ—เบดเบ”เบ—เบฒเบ‡เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบ•เบปเบงเบชเบนเบ‡เบชเบธเบ”เบ‚เบญเบ‡เบŸเบฑเบ‡เบŠเบฑเบ™. เป‚เบ”เบเบเบฒเบ™เบ›เบฝเบšเบ—เบฝเบšเบเบฑเบšเบเบฒเบ™เบ›เบตเบ™เบžเบน, เบšเปˆเบญเบ™เบ—เบตเปˆ gradient เบ›เบฐเป€เบŠเบตเบ™เบซเบ™เป‰เบฒเปเบกเปˆเบ™เบšเปˆเบญเบ™เบ—เบตเปˆ steepest เบ›เบตเบ™เบ‚เบถเป‰เบ™เป€เบ—เบดเบ‡เบ‚เบญเบ‡เบžเบนเป€เบ‚เบปเบฒ. เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเบกเบตเบžเบนเป€เบ‚เบปเบฒ, เบžเบงเบเป€เบฎเบปเบฒเบˆเบทเปˆเป„เบงเป‰เบงเปˆเบฒเปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบเบฒเบ™เบชเบทเบšเป€เบŠเบทเป‰เบญเบชเบฒเบ steepest เปƒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเบˆเบฐเบชเบฒเบกเบฒเบ”เบšเบฑเบ™เบฅเบธเป€เบ‚เบ”เบ—เบปเปˆเบ‡เบžเบฝเบ‡เป„เบงเป€เบ—เบปเปˆเบฒเบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰, เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบ•เปเบฒเปˆเบชเบธเบ”เบ—เบตเปˆ - เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเบ—เบตเปˆเบšเปเปˆเบกเบตเบซเบ™เป‰เบฒเบ—เบตเปˆเป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เบซเบผเบทเบซเบผเบธเบ”เบฅเบปเบ‡. เปƒเบ™เบˆเบธเบ”เบ™เบตเป‰, เบญเบฐเบ™เบธเบžเบฑเบ™เบˆเบฐเป€เบ—เบปเปˆเบฒเบเบฑเบšเบชเบนเบ™. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™ gradient, เปเบ•เปˆ antigradient. เป€เบžเบทเปˆเบญเบŠเบญเบเบซเบฒ antigradient เบ—เปˆเบฒเบ™เบžเบฝเบ‡เปเบ•เปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบ„เบนเบ™ gradient เป‚เบ”เบ -1 (เบฅเบปเบšเบซเบ™เบถเปˆเบ‡).

เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเป€เบญเบปเบฒเปƒเบˆเปƒเบชเปˆเบเบฑเบšเบ„เบงเบฒเบกเบˆเบดเบ‡เบ—เบตเปˆเบงเปˆเบฒเบŸเบฑเบ‡เบŠเบฑเบ™เบซเบ™เบถเปˆเบ‡เบชเบฒเบกเบฒเบ”เบกเบตเบซเบผเบฒเบ minima, เปเบฅเบฐเป„เบ”เป‰เบฅเบปเบ‡เป„เบ›เบซเบฒเบซเบ™เบถเปˆเบ‡เปƒเบ™เบ™เบฑเป‰เบ™เป‚เบ”เบเปƒเบŠเป‰ algorithm เบ—เบตเปˆเบชเบฐเป€เบซเบ™เบตเบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบšเปเปˆเบชเบฒเบกเบฒเบ”เบŠเบญเบเบซเบฒเบ•เปเบฒเปˆเบชเบธเบ”เบ—เบตเปˆเบญเบทเปˆเบ™, เป€เบŠเบดเปˆเบ‡เบญเบฒเบ”เบˆเบฐเบ•เปˆเปเบฒเบเบงเปˆเบฒเบ—เบตเปˆเบžเบปเบš. เปƒเบซเป‰เบœเปˆเบญเบ™เบ„เบฒเบ, เบ™เบตเป‰เบšเปเปˆเปเบกเปˆเบ™เป„เบžเบ‚เบปเปˆเบกเบ‚เบนเปˆเบ•เปเปˆเบžเบงเบเป€เบฎเบปเบฒ! เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบฅเบฑเบ‡เบˆเบฑเบ”เบเบฒเบ™เบเบฑเบšเบ•เปเบฒเปˆเบชเบธเบ”เบ—เบตเปˆเบซเบ™เบถเปˆเบ‡, เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบซเบ™เป‰เบฒเบ—เบตเปˆเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ เปƒเบ™เป€เบชเบฑเป‰เบ™เบชเบฐเปเบ”เบ‡เปเบกเปˆเบ™ parabola เบ›เบปเบเบเบฐเบ•เบด. เปเบฅเบฐเบ”เบฑเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ—เบธเบเบ„เบปเบ™เบ„เบงเบ™เบฎเบนเป‰เบ”เบตเบˆเบฒเบเบซเบผเบฑเบเบชเบนเบ”เบ„เบฐเบ™เบดเบ”เบชเบฒเบ”เบ‚เบญเบ‡เป‚เบฎเบ‡เบฎเบฝเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, parabola เบกเบตเบžเบฝเบ‡เปเบ•เปˆเบซเบ™เบถเปˆเบ‡เบ•เปเบฒเปˆเบชเบธเบ”เบ—เบตเปˆ.

เบซเบผเบฑเบ‡เบˆเบฒเบเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ„เบปเป‰เบ™เบžเบปเบšเบงเปˆเบฒเป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™ gradient, เปเบฅเบฐเบญเบตเบเบงเปˆเบฒ gradient เปเบกเปˆเบ™เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡, เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, vector เบ—เบตเปˆเบกเบตเบˆเบธเบ”เบ›เบฐเบชเบฒเบ™เบ‡เบฒเบ™เบ—เบตเปˆเปƒเบซเป‰, เบŠเบถเปˆเบ‡เป€เบ›เบฑเบ™เบ„เปˆเบฒเบชเปเบฒเบ›เบฐเบชเบดเบ”เบ”เบฝเบงเบเบฑเบ™เบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™. เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ ะธ เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบชเบทเบšเป€เบŠเบทเป‰เบญเบชเบฒเบ gradient.

เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเปเบ™เบฐเบ™เปเบฒเปƒเบซเป‰เบญเปˆเบฒเบ™เบžเบฝเบ‡เปเบ•เปˆเบชเบญเบ‡เบชเบฒเบกเบ›เบฐเป‚เบซเบเบเบเปˆเบฝเบงเบเบฑเบšเบชเบนเบ”เบเบฒเบ™เบชเบทเบšเป€เบŠเบทเป‰เบญเบชเบฒเบ:

  • เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบเปเบฒโ€‹เบ™เบปเบ”โ€‹เปƒเบ™โ€‹เบฅเบฑเบโ€‹เบชเบฐโ€‹เบ™เบฐ pseudoโ€‹-random เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบชเบฒเบ™โ€‹เบ‡เบฒเบ™โ€‹เบ‚เบญเบ‡โ€‹เบชเปเบฒโ€‹เบ›เบฐโ€‹เบชเบดเบ”โ€‹ เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ ะธ เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ. เปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบเปเบฒเบ™เบปเบ”เบ„เปˆเบฒเบชเปเบฒเบ›เบฐเบชเบดเบ”เบขเบนเปˆเปƒเบเป‰เบเบฑเบšเบชเบนเบ™. เบ™เบตเป‰เปเบกเปˆเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบปเปˆเบงเป„เบ›, เปเบ•เปˆเปเบ•เปˆเบฅเบฐเบเปเบฅเบฐเบ™เบตเบญเบฒเบ”เบˆเบฐเบกเบตเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡.
  • เบˆเบฒเบเบเบฒเบ™เบ›เบฐเบชเบฒเบ™เบ‡เบฒเบ™ เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ เบซเบฑเบเบ„เปˆเบฒเบ‚เบญเบ‡เบญเบฐเบ™เบธเบžเบฑเบ™เบชเปˆเบงเบ™เปœเบถเปˆเบ‡เบ‚เบญเบ‡เบฅเบณเบ”เบฑเบšเบ—เบต 1 เบขเบนเปˆเบˆเบธเบ” เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ–เป‰เบฒเบญเบฐเบ™เบธเบžเบฑเบ™เปเบกเปˆเบ™เบšเบงเบ, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบซเบ™เป‰เบฒเบ—เบตเปˆเป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เป‚เบ”เบเบเบฒเบ™เบซเบฑเบเบ„เปˆเบฒเบ‚เบญเบ‡เบญเบฐเบ™เบธเบžเบฑเบ™, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบเป‰เบฒเบงเป„เบ›เปƒเบ™เบ—เบดเบ”เบ—เบฒเบ‡เบเบปเบ‡เบเบฑเบ™เบ‚เป‰เบฒเบกเบ‚เบญเบ‡เบเบฒเบ™เป€เบ•เบตเบšเป‚เบ•, เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เปƒเบ™เบ—เบดเบ”เบ—เบฒเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบชเบทเบšเป€เบŠเบทเป‰เบญเบชเบฒเบ. เบ–เป‰เบฒเบญเบฐเบ™เบธเบžเบฑเบ™เป€เบ›เบฑเบ™เบฅเบปเบš, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบซเบ™เป‰เบฒเบ—เบตเปˆเบขเบนเปˆเปƒเบ™เบˆเบธเบ”เบ™เบตเป‰เบซเบผเบธเบ”เบฅเบปเบ‡เปเบฅเบฐเป‚เบ”เบเบเบฒเบ™เบซเบฑเบเบ„เปˆเบฒเบ‚เบญเบ‡เบญเบฐเบ™เบธเบžเบฑเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบเป‰เบฒเบเบญเบญเบเป„เบ›เปƒเบ™เบ—เบดเบ”เบ—เบฒเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบชเบทเบšเป€เบŠเบทเป‰เบญเบชเบฒเบ.
  • เบžเบงเบเป€เบฎเบปเบฒเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‡เบฒเบ™เบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบเบฑเบšเบเบฒเบ™เบ›เบฐเบชเบฒเบ™เบ‡เบฒเบ™ เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ: เบฅเบปเบšเบ„เปˆเบฒเบ‚เบญเบ‡เบญเบฐเบ™เบธเบžเบฑเบ™เบšเบฒเบ‡เบชเปˆเบงเบ™เบขเบนเปˆเบ—เบตเปˆเบˆเบธเบ” เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ.
  • เปƒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเบˆเบฐเบšเปเปˆเป€เบ•เบฑเป‰เบ™เป„เบ›เบซเบฒเบ•เปเบฒเปˆเบชเบธเบ”เบ—เบตเปˆเปเบฅเบฐเบšเบดเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบŠเปˆเบญเบ‡เป€เบฅเบดเบ, เบกเบฑเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบเปเบฒเบ™เบปเบ”เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบฑเป‰เบ™เบ•เบญเบ™เปƒเบ™เบ—เบดเบ”เบ—เบฒเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบชเบทเบšเป€เบŠเบทเป‰เบญเบชเบฒเบ. เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ‚เบฝเบ™เบšเบปเบ”เบ„เบงเบฒเบกเบ—เบฑเบ‡เบซเบกเบปเบ”เบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡เปเบฅเบฐเบงเบดเบ—เบตเบเบฒเบ™เบ›เปˆเบฝเบ™เบกเบฑเบ™เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบชเบทเบšเป€เบŠเบทเป‰เบญเบชเบฒเบเป€เบžเบทเปˆเบญเบซเบผเบธเบ”เบœเปˆเบญเบ™เบ„เปˆเบฒเปƒเบŠเป‰เบˆเปˆเบฒเบเปƒเบ™เบ„เบญเบกเบžเบดเบงเป€เบ•เบตเป‰. เปเบ•เปˆเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบงเบฝเบเบ‡เบฒเบ™เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เป€เบฅเบฑเบเบ™เป‰เบญเบเบขเบนเปˆเบ‚เป‰เบฒเบ‡เบซเบ™เป‰เบฒเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบชเป‰เบฒเบ‡เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบฑเป‰เบ™เบ•เบญเบ™เป‚เบ”เบเปƒเบŠเป‰เบงเบดเบ—เบตเบเบฒเบ™เบงเบดเบ—เบฐเบเบฒเบชเบฒเบ”เบ‚เบญเบ‡ "poke" เบซเบผเบท, เบเป‰เบญเบ™เบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒเป€เบงเบปเป‰เบฒเปƒเบ™เบ„เปเบฒเบชเบฑเบšเบ—เบปเปˆเบงเป„เบ›, เปƒเบ™เบ—เบฒเบ‡เบ—เบดเบ”เบชเบฐเบ”เบต.
  • เป€เบกเบทเปˆเบญเบžเบงเบเป€เบฎเบปเบฒเบกเบฒเบˆเบฒเบเบˆเบธเบ”เบ›เบฐเบชเบฒเบ™เบ‡เบฒเบ™ เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ ะธ เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ เบฅเบปเบšเบ„เปˆเบฒเบ‚เบญเบ‡เบญเบฐเบ™เบธเบžเบฑเบ™, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ›เบฐเบชเบฒเบ™เบ‡เบฒเบ™เปƒเบซเบกเปˆ เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ ะธ เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ. เบžเบงเบเป€เบฎเบปเบฒเป€เบญเบปเบฒเบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ•เปเปˆเป„เบ› (เบเบฒเบ™เบฅเบปเบš), เปเบฅเป‰เบงเบˆเบฒเบเบˆเบธเบ”เบ›เบฐเบชเบฒเบ™เบ‡เบฒเบ™เบ—เบตเปˆเบ„เบดเบ”เป„เบฅเปˆ. เปเบฅเบฐเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบงเบปเบ‡เบˆเบญเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡เปเบฅเบฐเบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡, เบˆเบปเบ™เบเปˆเบงเบฒ convergence เบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป„เบงเป‰เปเบกเปˆเบ™เบšเบฑเบ™เบฅเบธเป„เบ”เป‰.

เบ—เบฑเบ‡เปเบปเบ”! เบ•เบญเบ™เบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบžเป‰เบญเบกเบ—เบตเปˆเบˆเบฐเป„เบ›เบŠเบญเบเบซเบฒเบšเปˆเบญเบ™เป€เบฅเบดเบเบ—เบตเปˆเบชเบธเบ”เบ‚เบญเบ‡เบฎเปˆเบญเบ‡เบฎเบญเบ Mariana Trench. เปƒเบซเป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™.

เบฅเบฐเบซเบฑเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเบทเบšเป€เบŠเบทเป‰เบญเบชเบฒเบ gradient

# ะฝะฐะฟะธัˆะตะผ ั„ัƒะฝะบั†ะธัŽ ะณั€ะฐะดะธะตะฝั‚ะฝะพะณะพ ัะฟัƒัะบะฐ ะฑะตะท ะธัะฟะพะปัŒะทะพะฒะฐะฝะธั ะฑะธะฑะปะธะพั‚ะตะบะธ NumPy. 
# ะคัƒะฝะบั†ะธั ะฝะฐ ะฒั…ะพะด ะฟั€ะธะฝะธะผะฐะตั‚ ะดะธะฐะฟะฐะทะพะฝั‹ ะทะฝะฐั‡ะตะฝะธะน x,y, ะดะปะธะฝัƒ ัˆะฐะณะฐ (ะฟะพ ัƒะผะพะปั‡ะฐะฝะธัŽ=0,1), ะดะพะฟัƒัั‚ะธะผัƒัŽ ะฟะพะณั€ะตัˆะฝะพัั‚ัŒ(tolerance)
def gradient_descent_usual(x_us,y_us,l=0.1,tolerance=0.000000000001):
    # ััƒะผะผะฐ ะทะฝะฐั‡ะตะฝะธะน (ะฒัะต ะผะตััั†ะฐ)
    sx = sum(x_us)
    # ััƒะผะผะฐ ะธัั‚ะธะฝะฝั‹ั… ะพั‚ะฒะตั‚ะพะฒ (ะฒั‹ั€ัƒั‡ะบะฐ ะทะฐ ะฒะตััŒ ะฟะตั€ะธะพะด)
    sy = sum(y_us)
    # ััƒะผะผะฐ ะฟั€ะพะธะทะฒะตะดะตะฝะธั ะทะฝะฐั‡ะตะฝะธะน ะฝะฐ ะธัั‚ะธะฝะฝั‹ะต ะพั‚ะฒะตั‚ั‹
    list_xy = []
    [list_xy.append(x_us[i]*y_us[i]) for i in range(len(x_us))]
    sxy = sum(list_xy)
    # ััƒะผะผะฐ ะบะฒะฐะดั€ะฐั‚ะพะฒ ะทะฝะฐั‡ะตะฝะธะน
    list_x_sq = []
    [list_x_sq.append(x_us[i]**2) for i in range(len(x_us))]
    sx_sq = sum(list_x_sq)
    # ะบะพะปะธั‡ะตัั‚ะฒะพ ะทะฝะฐั‡ะตะฝะธะน
    num = len(x_us)
    # ะฝะฐั‡ะฐะปัŒะฝั‹ะต ะทะฝะฐั‡ะตะฝะธั ะบะพัั„ั„ะธั†ะธะตะฝั‚ะพะฒ, ะพะฟั€ะตะดะตะปะตะฝะฝั‹ะต ะฟัะตะฒะดะพัะปัƒั‡ะฐะนะฝั‹ะผ ะพะฑั€ะฐะทะพะผ
    a = float(random.uniform(-0.5, 0.5))
    b = float(random.uniform(-0.5, 0.5))
    # ัะพะทะดะฐะตะผ ะผะฐััะธะฒ ั ะพัˆะธะฑะบะฐะผะธ, ะดะปั ัั‚ะฐั€ั‚ะฐ ะธัะฟะพะปัŒะทัƒะตะผ ะทะฝะฐั‡ะตะฝะธั 1 ะธ 0
    # ะฟะพัะปะต ะทะฐะฒะตั€ัˆะตะฝะธั ัะฟัƒัะบะฐ ัั‚ะฐั€ั‚ะพะฒั‹ะต ะทะฝะฐั‡ะตะฝะธั ัƒะดะฐะปะธะผ
    errors = [1,0]
    # ะทะฐะฟัƒัะบะฐะตะผ ั†ะธะบะป ัะฟัƒัะบะฐ
    # ั†ะธะบะป ั€ะฐะฑะพั‚ะฐะตั‚ ะดะพ ั‚ะตั… ะฟะพั€, ะฟะพะบะฐ ะพั‚ะบะปะพะฝะตะฝะธะต ะฟะพัะปะตะดะฝะตะน ะพัˆะธะฑะบะธ ััƒะผะผั‹ ะบะฒะฐะดั€ะฐั‚ะพะฒ ะพั‚ ะฟั€ะตะดั‹ะดัƒั‰ะตะน, ะฝะต ะฑัƒะดะตั‚ ะผะตะฝัŒัˆะต tolerance
    while abs(errors[-1]-errors[-2]) > tolerance:
        a_step = a - l*(num*a + b*sx - sy)/num
        b_step = b - l*(a*sx + b*sx_sq - sxy)/num
        a = a_step
        b = b_step
        ab = [a,b]
        errors.append(errors_sq_Kramer_method(ab,x_us,y_us))
    return (ab),(errors[2:])

# ะทะฐะฟะธัˆะตะผ ะผะฐััะธะฒ ะทะฝะฐั‡ะตะฝะธะน 
list_parametres_gradient_descence = gradient_descent_usual(x_us,y_us,l=0.1,tolerance=0.000000000001)


print ' 33[1m' + ' 33[4m' + "ะ—ะฝะฐั‡ะตะฝะธั ะบะพัั„ั„ะธั†ะธะตะฝั‚ะพะฒ a ะธ b:" + ' 33[0m'
print 'a =', round(list_parametres_gradient_descence[0][0],3)
print 'b =', round(list_parametres_gradient_descence[0][1],3)
print


print ' 33[1m' + ' 33[4m' + "ะกัƒะผะผะฐ ะบะฒะฐะดั€ะฐั‚ะพะฒ ะพั‚ะบะปะพะฝะตะฝะธะน:" + ' 33[0m'
print round(list_parametres_gradient_descence[1][-1],3)
print



print ' 33[1m' + ' 33[4m' + "ะšะพะปะธั‡ะตัั‚ะฒะพ ะธั‚ะตั€ะฐั†ะธะน ะฒ ะณั€ะฐะดะธะตะฝั‚ะฝะพะผ ัะฟัƒัะบะต:" + ' 33[0m'
print len(list_parametres_gradient_descence[1])
print

เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ

เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เป„เบ”เป‰โ€‹เบ”เบณโ€‹เบฅเบปเบ‡โ€‹เป„เบ›โ€‹เบชเบนเปˆโ€‹เบฅเบธเปˆเบกโ€‹เบชเบธเบ”โ€‹เบ‚เบญเบ‡ Mariana Trench เปเบฅเบฐโ€‹เบขเบนเปˆโ€‹เบ—เบตเปˆโ€‹เบ™เบฑเป‰เบ™ เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เป„เบ”เป‰โ€‹เบžเบปเบšโ€‹เป€เบซเบฑเบ™โ€‹เบ„เปˆเบฒโ€‹เบชเบณโ€‹เบ›เบฐโ€‹เบชเบดเบ”โ€‹เบ”เบฝเบงโ€‹เบเบฑเบ™โ€‹เบ—เบฑเบ‡โ€‹เปเบปเบ” เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ ะธ เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ, เบŠเบถเปˆเบ‡เป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบ„เบฒเบ”เบซเบงเบฑเบ‡.

เบžเบฒเบเบฑเบ™เป„เบ›เบ”เบณเบ™เป‰เบณเบญเบตเบ, เบชเบฐเป€เบžเบฒเบฐเบŠเปˆเบงเบ‡เบ™เบตเป‰เบฅเบปเบ”เบ™เป‰เบณเป€เบฅเบดเบเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบ•เบฑเบกเป„เบ›เบ”เป‰เบงเบเป€เบ—เบฑเบเป‚เบ™เป‚เบฅเบเบตเบญเบทเปˆเบ™เป†เบ„เบทเบซเปเบชเบฐเปเบธเบ”. เบ•เบปเบงเป€เบฅเบ.

เบฅเบฐเบซเบฑเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเบทเบšเป€เบŠเบทเป‰เบญเบชเบฒเบ (NumPy)

# ะฟะตั€ะตะด ั‚ะตะผ ะพะฟั€ะตะดะตะปะธั‚ัŒ ั„ัƒะฝะบั†ะธัŽ ะดะปั ะณั€ะฐะดะธะตะฝั‚ะฝะพะณะพ ัะฟัƒัะบะฐ ั ะธัะฟะพะปัŒะทะพะฒะฐะฝะธะตะผ ะฑะธะฑะปะธะพั‚ะตะบะธ NumPy, 
# ะฝะฐะฟะธัˆะตะผ ั„ัƒะฝะบั†ะธัŽ ะพะฟั€ะตะดะตะปะตะฝะธั ััƒะผะผั‹ ะบะฒะฐะดั€ะฐั‚ะพะฒ ะพั‚ะบะปะพะฝะตะฝะธะน ั‚ะฐะบะถะต ั ะธัะฟะพะปัŒะทะพะฒะฐะฝะธะตะผ NumPy
def error_square_numpy(ab,x_np,y_np):
    y_pred = np.dot(x_np,ab)
    error = y_pred - y_np
    return sum((error)**2)

# ะฝะฐะฟะธัˆะตะผ ั„ัƒะฝะบั†ะธัŽ ะณั€ะฐะดะธะตะฝั‚ะฝะพะณะพ ัะฟัƒัะบะฐ ั ะธัะฟะพะปัŒะทะพะฒะฐะฝะธะตะผ ะฑะธะฑะปะธะพั‚ะตะบะธ NumPy. 
# ะคัƒะฝะบั†ะธั ะฝะฐ ะฒั…ะพะด ะฟั€ะธะฝะธะผะฐะตั‚ ะดะธะฐะฟะฐะทะพะฝั‹ ะทะฝะฐั‡ะตะฝะธะน x,y, ะดะปะธะฝัƒ ัˆะฐะณะฐ (ะฟะพ ัƒะผะพะปั‡ะฐะฝะธัŽ=0,1), ะดะพะฟัƒัั‚ะธะผัƒัŽ ะฟะพะณั€ะตัˆะฝะพัั‚ัŒ(tolerance)
def gradient_descent_numpy(x_np,y_np,l=0.1,tolerance=0.000000000001):
    # ััƒะผะผะฐ ะทะฝะฐั‡ะตะฝะธะน (ะฒัะต ะผะตััั†ะฐ)
    sx = float(sum(x_np[:,1]))
    # ััƒะผะผะฐ ะธัั‚ะธะฝะฝั‹ั… ะพั‚ะฒะตั‚ะพะฒ (ะฒั‹ั€ัƒั‡ะบะฐ ะทะฐ ะฒะตััŒ ะฟะตั€ะธะพะด)
    sy = float(sum(y_np))
    # ััƒะผะผะฐ ะฟั€ะพะธะทะฒะตะดะตะฝะธั ะทะฝะฐั‡ะตะฝะธะน ะฝะฐ ะธัั‚ะธะฝะฝั‹ะต ะพั‚ะฒะตั‚ั‹
    sxy = x_np*y_np
    sxy = float(sum(sxy[:,1]))
    # ััƒะผะผะฐ ะบะฒะฐะดั€ะฐั‚ะพะฒ ะทะฝะฐั‡ะตะฝะธะน
    sx_sq = float(sum(x_np[:,1]**2))
    # ะบะพะปะธั‡ะตัั‚ะฒะพ ะทะฝะฐั‡ะตะฝะธะน
    num = float(x_np.shape[0])
    # ะฝะฐั‡ะฐะปัŒะฝั‹ะต ะทะฝะฐั‡ะตะฝะธั ะบะพัั„ั„ะธั†ะธะตะฝั‚ะพะฒ, ะพะฟั€ะตะดะตะปะตะฝะฝั‹ะต ะฟัะตะฒะดะพัะปัƒั‡ะฐะนะฝั‹ะผ ะพะฑั€ะฐะทะพะผ
    a = float(random.uniform(-0.5, 0.5))
    b = float(random.uniform(-0.5, 0.5))
    # ัะพะทะดะฐะตะผ ะผะฐััะธะฒ ั ะพัˆะธะฑะบะฐะผะธ, ะดะปั ัั‚ะฐั€ั‚ะฐ ะธัะฟะพะปัŒะทัƒะตะผ ะทะฝะฐั‡ะตะฝะธั 1 ะธ 0
    # ะฟะพัะปะต ะทะฐะฒะตั€ัˆะตะฝะธั ัะฟัƒัะบะฐ ัั‚ะฐั€ั‚ะพะฒั‹ะต ะทะฝะฐั‡ะตะฝะธั ัƒะดะฐะปะธะผ
    errors = [1,0]
    # ะทะฐะฟัƒัะบะฐะตะผ ั†ะธะบะป ัะฟัƒัะบะฐ
    # ั†ะธะบะป ั€ะฐะฑะพั‚ะฐะตั‚ ะดะพ ั‚ะตั… ะฟะพั€, ะฟะพะบะฐ ะพั‚ะบะปะพะฝะตะฝะธะต ะฟะพัะปะตะดะฝะตะน ะพัˆะธะฑะบะธ ััƒะผะผั‹ ะบะฒะฐะดั€ะฐั‚ะพะฒ ะพั‚ ะฟั€ะตะดั‹ะดัƒั‰ะตะน, ะฝะต ะฑัƒะดะตั‚ ะผะตะฝัŒัˆะต tolerance
    while abs(errors[-1]-errors[-2]) > tolerance:
        a_step = a - l*(num*a + b*sx - sy)/num
        b_step = b - l*(a*sx + b*sx_sq - sxy)/num
        a = a_step
        b = b_step
        ab = np.array([[a],[b]])
        errors.append(error_square_numpy(ab,x_np,y_np))
    return (ab),(errors[2:])

# ะทะฐะฟะธัˆะตะผ ะผะฐััะธะฒ ะทะฝะฐั‡ะตะฝะธะน 
list_parametres_gradient_descence = gradient_descent_numpy(x_np,y_np,l=0.1,tolerance=0.000000000001)

print ' 33[1m' + ' 33[4m' + "ะ—ะฝะฐั‡ะตะฝะธั ะบะพัั„ั„ะธั†ะธะตะฝั‚ะพะฒ a ะธ b:" + ' 33[0m'
print 'a =', round(list_parametres_gradient_descence[0][0],3)
print 'b =', round(list_parametres_gradient_descence[0][1],3)
print


print ' 33[1m' + ' 33[4m' + "ะกัƒะผะผะฐ ะบะฒะฐะดั€ะฐั‚ะพะฒ ะพั‚ะบะปะพะฝะตะฝะธะน:" + ' 33[0m'
print round(list_parametres_gradient_descence[1][-1],3)
print

print ' 33[1m' + ' 33[4m' + "ะšะพะปะธั‡ะตัั‚ะฒะพ ะธั‚ะตั€ะฐั†ะธะน ะฒ ะณั€ะฐะดะธะตะฝั‚ะฝะพะผ ัะฟัƒัะบะต:" + ' 33[0m'
print len(list_parametres_gradient_descence[1])
print

เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ
เบ„เปˆเบฒเบชเบณเบ›เบฐเบชเบดเบ” เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ ะธ เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ เบ›เปˆเบฝเบ™เปเบ›เบ‡เบšเปเปˆเป„เบ”เป‰.

เบ‚เปเปƒเบซเป‰เป€เบšเบดเปˆเบ‡เบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เป„เบ”เป‰เบ›เปˆเบฝเบ™เปเบ›เบ‡เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบชเบทเบšเป€เบŠเบทเป‰เบญเบชเบฒเบ gradient, เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบœเบปเบ™เบฅเบงเบกเบ‚เบญเบ‡ deviations เบชเบตเปˆเบซเบฅเปˆเบฝเบกเป„เบ”เป‰เบ›เปˆเบฝเบ™เปเบ›เบ‡เบเบฑเบšเปเบ•เปˆเบฅเบฐเบ‚เบฑเป‰เบ™เบ•เบญเบ™.

เบฅเบฐเบซเบฑเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบงเบฒเบ‡เปเบœเบ™เบœเบปเบ™เบšเบงเบเบ‚เบญเบ‡ deviations เบฎเบฝเบšเบฎเป‰เบญเบ

print 'ะ“ั€ะฐั„ะธะบโ„–4 "ะกัƒะผะผะฐ ะบะฒะฐะดั€ะฐั‚ะพะฒ ะพั‚ะบะปะพะฝะตะฝะธะน ะฟะพ-ัˆะฐะณะพะฒะพ"'
plt.plot(range(len(list_parametres_gradient_descence[1])), list_parametres_gradient_descence[1], color='red', lw=3)
plt.xlabel('Steps (Iteration)', size=16)
plt.ylabel('Sum of squared deviations', size=16)
plt.show()

เป€เบชเบฑเป‰เบ™เบชเบฐเปเบ”เบ‡เบ—เบต 4 โ€œเบœเบปเบ™เบฅเบงเบกเบ‚เบญเบ‡เบเบฒเบ™เบšเปˆเบฝเบ‡เป€เบšเบ™เบชเบตเปˆเบซเบผเปˆเบฝเบกเบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบชเบทเบšเป€เบŠเบทเป‰เบญเบชเบฒเบ gradientโ€

เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ

เปƒเบ™เบเบฒเบŸเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป€เบซเบฑเบ™เบงเปˆเบฒเปƒเบ™เปเบ•เปˆเบฅเบฐเบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบซเบผเบธเบ”เบฅเบปเบ‡, เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบˆเปเบฒเบ™เบงเบ™เบ—เบตเปˆเปเบ™เปˆเบ™เบญเบ™เบ‚เบญเบ‡ iterations เบžเบงเบเป€เบฎเบปเบฒเบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เป€เบชเบฑเป‰เบ™เบญเบญเบเบ•เบฒเบกเบฅเบงเบ‡เบ™เบญเบ™เป€เบเบทเบญเบš.

เบชเบธเบ”เบ—เป‰เบฒเบ, เปƒเบซเป‰เบ›เบฐเป€เบกเบตเบ™เบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบ‚เบญเบ‡เป€เบงเบฅเบฒเบ›เบฐเบ•เบดเบšเบฑเบ”เบฅเบฐเบซเบฑเบ”:

เบฅเบฐเบซเบฑเบ”เป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ”เป€เบงเบฅเบฒเบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆ gradient descent

print ' 33[1m' + ' 33[4m' + "ะ’ั€ะตะผั ะฒั‹ะฟะพะปะฝะตะฝะธั ะณั€ะฐะดะธะตะฝั‚ะฝะพะณะพ ัะฟัƒัะบะฐ ะฑะตะท ะธัะฟะพะปัŒะทะพะฒะฐะฝะธั ะฑะธะฑะปะธะพั‚ะตะบะธ NumPy:" + ' 33[0m'
%timeit list_parametres_gradient_descence = gradient_descent_usual(x_us,y_us,l=0.1,tolerance=0.000000000001)
print '***************************************'
print

print ' 33[1m' + ' 33[4m' + "ะ’ั€ะตะผั ะฒั‹ะฟะพะปะฝะตะฝะธั ะณั€ะฐะดะธะตะฝั‚ะฝะพะณะพ ัะฟัƒัะบะฐ ั ะธัะฟะพะปัŒะทะพะฒะฐะฝะธะตะผ ะฑะธะฑะปะธะพั‚ะตะบะธ NumPy:" + ' 33[0m'
%timeit list_parametres_gradient_descence = gradient_descent_numpy(x_np,y_np,l=0.1,tolerance=0.000000000001)

เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ

เบšเบฒเบ‡เบ—เบตเบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบฅเบฑเบ‡เป€เบฎเบฑเบ”เบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบ—เบตเปˆเบœเบดเบ”เบžเบฒเบ”, เปเบ•เปˆเบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡เบกเบฑเบ™เป€เบ›เบฑเบ™เบซเบ™เป‰เบฒเบ—เบตเปˆ "เบ‚เบฝเบ™เบขเบนเปˆเป€เบฎเบทเบญเบ™" เบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเบ—เบตเปˆเบšเปเปˆเปƒเบŠเป‰เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”. เบ•เบปเบงเป€เบฅเบ เป€เบฎเบฑเบ”เบงเบฝเบเบซเบผเบฒเบเบเบงเปˆเบฒเป€เบงเบฅเบฒเบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเบ‚เบญเบ‡เบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบตเปˆเปƒเบŠเป‰เบซเป‰เบญเบ‡เบชเบฐเปเบธเบ” เบ•เบปเบงเป€เบฅเบ.

เปเบ•เปˆเบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเป„เบ”เป‰เบขเบทเบ™เบขเบนเปˆ, เปเบ•เปˆเบเปเบฒเบฅเบฑเบ‡เบเป‰เบฒเบงเป„เบ›เบชเบนเปˆเบเบฒเบ™เบชเบถเบเบชเบฒเบญเบตเบเบงเบดเบ—เบตเบซเบ™เบถเปˆเบ‡เบ—เบตเปˆเบซเบ™เป‰เบฒเบ•เบทเปˆเบ™เป€เบ•เบฑเป‰เบ™เบ—เบตเปˆเบˆเบฐเปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™ regression linear เบ‡เปˆเบฒเบเบ”เบฒเบ. เบžเบปเบšเบเบฑเบ™!

Stochastic gradient descent

เป€เบžเบทเปˆเบญเปƒเบซเป‰เป€เบ‚เบปเป‰เบฒเปƒเบˆเป€เบ–เบดเบ‡เบซเบผเบฑเบเบเบฒเบ™เบ‚เบญเบ‡เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบ‚เบญเบ‡เบเบฒเบ™เบชเบทเบšเป€เบŠเบทเป‰เบญเบชเบฒเบ gradient stochastic, เบกเบฑเบ™เบ”เบตเบเบงเปˆเบฒเบ—เบตเปˆเบˆเบฐเบเปเบฒเบ™เบปเบ”เบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบ‚เบญเบ‡เบกเบฑเบ™เบˆเบฒเบเบเบฒเบ™เบชเบทเบšเป€เบŠเบทเป‰เบญเบชเบฒเบ gradient เบ—เบปเปˆเบงเป„เบ›. เบžเบงเบเป€เบฎเบปเบฒ, เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบเบฒเบ™เบชเบทเบšเป€เบŠเบทเป‰เบญเบชเบฒเบ gradient, เปƒเบ™เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡เบญเบฐเบ™เบธเบžเบฑเบ™เบ‚เบญเบ‡ เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ ะธ เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ เป„เบ”เป‰เบ™เปเบฒเปƒเบŠเป‰เบœเบปเบ™เบฅเบงเบกเบ‚เบญเบ‡เบ„เปˆเบฒเบ‚เบญเบ‡เบฅเบฑเบเบชเบฐเบ™เบฐเบ—เบฑเบ‡เบซเบกเบปเบ”เปเบฅเบฐเบ„เปเบฒเบ•เบญเบšเบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡เบ—เบตเปˆเบกเบตเบขเบนเปˆเปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡ (เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบœเบปเบ™เบฅเบงเบกเบ‚เบญเบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”. เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ ะธ เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ). เปƒเบ™ stochastic gradient descent, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบšเปเปˆเบ™เปเบฒเปƒเบŠเป‰เบ„เปˆเบฒเบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบกเบตเบขเบนเปˆเปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡, เปเบ•เปˆเปเบ—เบ™เบ—เบตเปˆเบˆเบฐ, pseudo-random เป€เบฅเบทเบญเบเบญเบฑเบ™เบ—เบตเปˆเป€เบญเบตเป‰เบ™เบงเปˆเบฒเบ”เบฑเบ”เบŠเบฐเบ™เบตเบ•เบปเบงเบขเปˆเบฒเบ‡เปเบฅเบฐเบ™เปเบฒเปƒเบŠเป‰เบ„เปˆเบฒเบ‚เบญเบ‡เบกเบฑเบ™.

เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ–เป‰เบฒเบ”เบฑเบ”เบŠเบฐเบ™เบตเบ–เบทเบเบเปเบฒเบ™เบปเบ”เบงเปˆเบฒเป€เบ›เบฑเบ™เบ•เบปเบงเป€เบฅเบ 3 (เบชเบฒเบก), เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเป€เบญเบปเบฒเบ„เปˆเบฒ เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ ะธ เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบ—เบปเบ”เปเบ—เบ™เบ„เปˆเบฒเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบชเบปเบกเบœเบปเบ™เบญเบฐเบ™เบธเบžเบฑเบ™เปเบฅเบฐเบเปเบฒเบ™เบปเบ”เบˆเบธเบ”เบ›เบฐเบชเบฒเบ™เบ‡เบฒเบ™เปƒเบซเบกเปˆ. เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เป‚เบ”เบเป„เบ”เป‰เบเปเบฒเบ™เบปเบ”เบˆเบธเบ”เบ›เบฐเบชเบฒเบ™เบ‡เบฒเบ™, เบžเบงเบเป€เบฎเบปเบฒเบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡ pseudo-random เบเปเบฒเบ™เบปเบ”เบ”เบฑเบ”เบŠเบฐเบ™เบตเบ•เบปเบงเบขเปˆเบฒเบ‡, เบ—เบปเบ”เปเบ—เบ™เบ„เปˆเบฒเบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบ™เบเบฑเบšเบ”เบฑเบ”เบŠเบฐเบ™เบตเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบชเบปเบกเบœเบปเบ™เบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบšเบฒเบ‡เบชเปˆเบงเบ™, เปเบฅเบฐเบเปเบฒเบ™เบปเบ”เบˆเบธเบ”เบ›เบฐเบชเบฒเบ™เบ‡เบฒเบ™เปƒเบ™เบฎเบนเบšเปเบšเบšเปƒเบซเบกเปˆ. เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ ะธ เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ เปเบฅเบฐเบญเบทเปˆเบ™เป† เบˆเบปเบ™เบเปˆเบงเบฒ convergence เบ›เปˆเบฝเบ™เป€เบ›เบฑเบ™เบชเบตเบ‚เบฝเบง. เบขเบนเปˆ glance เบ—เปเบฒเบญเบดเบ”, เบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเบšเปเปˆเป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบ™เบตเป‰เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบงเบฝเบเป„เบ”เป‰เบ—เบฑเบ‡เบซเบกเบปเบ”, เปเบ•เปˆเบกเบฑเบ™เป€เบฎเบฑเบ”เป„เบ”เป‰. เบกเบฑเบ™เป€เบ›เบฑเบ™เบ„เบงเบฒเบกเบˆเบดเบ‡เบ—เบตเปˆเบงเปˆเบฒเบกเบฑเบ™เป€เบ›เบฑเบ™เบกเบนเบ™เบ„เปˆเบฒเบ—เบตเปˆเบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบšเปเปˆเป„เบ”เป‰เบซเบผเบธเบ”เบฅเบปเบ‡เบเบฑเบšเบ—เบธเบเป†เบ‚เบฑเป‰เบ™เบ•เบญเบ™, เปเบ•เปˆเปเบ™เปˆเบ™เบญเบ™เบงเปˆเบฒเบกเบตเปเบ™เบงเป‚เบ™เป‰เบก.

เบ‚เปเป‰เบ”เบตเบ‚เบญเบ‡เบเบฒเบ™เบชเบทเบšเป€เบŠเบทเป‰เบญเบชเบฒเบ gradient stochastic เบซเบผเบฒเบเบเบงเปˆเบฒเปเบšเบšเบ—เปเบฒเบกเบฐเบ”เบฒเปเบกเปˆเบ™เบซเบเบฑเบ‡? เบ–เป‰เบฒเบ‚เบฐเบซเบ™เบฒเบ”เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบซเบผเบฒเบเปเบฅเบฐเบ–เบทเบเบงเบฑเบ”เปเบ—เบเป€เบ›เบฑเบ™เบชเบดเบšเบžเบฑเบ™เบ„เปˆเบฒ, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบกเบฑเบ™เบ‡เปˆเบฒเบเบ•เปเปˆเบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡, เป€เบงเบปเป‰เบฒเบงเปˆเบฒ, เป€เบ›เบฑเบ™เบžเบฑเบ™เบ•เบปเบงเปเบšเบšเบชเบธเปˆเบก, เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”. เบ™เบตเป‰เปเบกเปˆเบ™เบšเปˆเบญเบ™เบ—เบตเปˆเบเบฒเบ™เบชเบทเบšเป€เบŠเบทเป‰เบญเบชเบฒเบ gradient stochastic เป€เบ‚เบปเป‰เบฒเบกเบฒเบซเบผเบดเป‰เบ™. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เปเบ™เปˆเบ™เบญเบ™, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบšเปเปˆเบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบซเบผเบฒเบ.

เปƒเบซเป‰เป€เบšเบดเปˆเบ‡เบฅเบฐเบซเบฑเบ”.

เบฅเบฐเบซเบฑเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเบทเบšเป€เบŠเบทเป‰เบญเบชเบฒเบ gradient stochastic

# ะพะฟั€ะตะดะตะปะธะผ ั„ัƒะฝะบั†ะธัŽ ัั‚ะพั….ะณั€ะฐะด.ัˆะฐะณะฐ
def stoch_grad_step_usual(vector_init, x_us, ind, y_us, l):
#     ะฒั‹ะฑะธั€ะฐะตะผ ะทะฝะฐั‡ะตะฝะธะต ะธะบั, ะบะพั‚ะพั€ะพะต ัะพะพั‚ะฒะตั‚ัั‚ะฒัƒะตั‚ ัะปัƒั‡ะฐะนะฝะพะผัƒ ะทะฝะฐั‡ะตะฝะธัŽ ะฟะฐั€ะฐะผะตั‚ั€ะฐ ind 
# (ัะผ.ั„-ั†ะธัŽ stoch_grad_descent_usual)
    x = x_us[ind]
#     ั€ะฐััั‡ะธั‚ั‹ะฒั‹ะฐะตะผ ะทะฝะฐั‡ะตะฝะธะต y (ะฒั‹ั€ัƒั‡ะบัƒ), ะบะพั‚ะพั€ะฐั ัะพะพั‚ะฒะตั‚ัั‚ะฒัƒะตั‚ ะฒั‹ะฑั€ะฐะฝะฝะพะผัƒ ะทะฝะฐั‡ะตะฝะธัŽ x
    y_pred = vector_init[0] + vector_init[1]*x_us[ind]
#     ะฒั‹ั‡ะธัะปัะตะผ ะพัˆะธะฑะบัƒ ั€ะฐัั‡ะตั‚ะฝะพะน ะฒั‹ั€ัƒั‡ะบะธ ะพั‚ะฝะพัะธั‚ะตะปัŒะฝะพ ะฟั€ะตะดัั‚ะฐะฒะปะตะฝะฝะพะน ะฒ ะฒั‹ะฑะพั€ะบะต
    error = y_pred - y_us[ind]
#     ะพะฟั€ะตะดะตะปัะตะผ ะฟะตั€ะฒัƒัŽ ะบะพะพั€ะดะธะฝะฐั‚ัƒ ะณั€ะฐะดะธะตะฝั‚ะฐ ab
    grad_a = error
#     ะพะฟั€ะตะดะตะปัะตะผ ะฒั‚ะพั€ัƒัŽ ะบะพะพั€ะดะธะฝะฐั‚ัƒ ab
    grad_b = x_us[ind]*error
#     ะฒั‹ั‡ะธัะปัะตะผ ะฝะพะฒั‹ะน ะฒะตะบั‚ะพั€ ะบะพัั„ั„ะธั†ะธะตะฝั‚ะพะฒ
    vector_new = [vector_init[0]-l*grad_a, vector_init[1]-l*grad_b]
    return vector_new


# ะพะฟั€ะตะดะตะปะธะผ ั„ัƒะฝะบั†ะธัŽ ัั‚ะพั….ะณั€ะฐะด.ัะฟัƒัะบะฐ
def stoch_grad_descent_usual(x_us, y_us, l=0.1, steps = 800):
#     ะดะปั ัะฐะผะพะณะพ ะฝะฐั‡ะฐะปะฐ ั€ะฐะฑะพั‚ั‹ ั„ัƒะฝะบั†ะธะธ ะทะฐะดะฐะดะธะผ ะฝะฐั‡ะฐะปัŒะฝั‹ะต ะทะฝะฐั‡ะตะฝะธั ะบะพัั„ั„ะธั†ะธะตะฝั‚ะพะฒ
    vector_init = [float(random.uniform(-0.5, 0.5)), float(random.uniform(-0.5, 0.5))]
    errors = []
#     ะทะฐะฟัƒัั‚ะธะผ ั†ะธะบะป ัะฟัƒัะบะฐ
# ั†ะธะบะป ั€ะฐัั‡ะธั‚ะฐะฝ ะฝะฐ ะพะฟั€ะตะดะตะปะตะฝะฝะพะต ะบะพะปะธั‡ะตัั‚ะฒะพ ัˆะฐะณะพะฒ (steps)
    for i in range(steps):
        ind = random.choice(range(len(x_us)))
        new_vector = stoch_grad_step_usual(vector_init, x_us, ind, y_us, l)
        vector_init = new_vector
        errors.append(errors_sq_Kramer_method(vector_init,x_us,y_us))
    return (vector_init),(errors)


# ะทะฐะฟะธัˆะตะผ ะผะฐััะธะฒ ะทะฝะฐั‡ะตะฝะธะน 
list_parametres_stoch_gradient_descence = stoch_grad_descent_usual(x_us, y_us, l=0.1, steps = 800)

print ' 33[1m' + ' 33[4m' + "ะ—ะฝะฐั‡ะตะฝะธั ะบะพัั„ั„ะธั†ะธะตะฝั‚ะพะฒ a ะธ b:" + ' 33[0m'
print 'a =', round(list_parametres_stoch_gradient_descence[0][0],3)
print 'b =', round(list_parametres_stoch_gradient_descence[0][1],3)
print


print ' 33[1m' + ' 33[4m' + "ะกัƒะผะผะฐ ะบะฒะฐะดั€ะฐั‚ะพะฒ ะพั‚ะบะปะพะฝะตะฝะธะน:" + ' 33[0m'
print round(list_parametres_stoch_gradient_descence[1][-1],3)
print

print ' 33[1m' + ' 33[4m' + "ะšะพะปะธั‡ะตัั‚ะฒะพ ะธั‚ะตั€ะฐั†ะธะน ะฒ ัั‚ะพั…ะฐัั‚ะธั‡ะตัะบะพะผ ะณั€ะฐะดะธะตะฝั‚ะฝะพะผ ัะฟัƒัะบะต:" + ' 33[0m'
print len(list_parametres_stoch_gradient_descence[1])

เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ

เบžเบงเบเป€เบฎเบปเบฒเป€เบšเบดเปˆเบ‡เบ„เปˆเบฒเบชเปเบฒเบ›เบฐเบชเบดเบ”เบขเปˆเบฒเบ‡เบฅเบฐเบกเบฑเบ”เบฅเบฐเบงเบฑเบ‡เปเบฅเบฐเบˆเบฑเบšเบ•เบปเบงเป€เบฎเบปเบฒเป€เบญเบ‡เบ–เบฒเบกเบ„เปเบฒเบ–เบฒเบก "เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เปเบ™เบงเปƒเบ”?" เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบšเบ„เปˆเบฒเบชเปเบฒเบ›เบฐเบชเบดเบ”เบญเบทเปˆเบ™เป† เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ ะธ เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ. เบšเบฒเบ‡เบ—เบตเบเบฒเบ™เบชเบทเบšเป€เบŠเบทเป‰เบญเบชเบฒเบ gradient stochastic เป„เบ”เป‰เบžเบปเบšเป€เบซเบฑเบ™เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”เบชเปเบฒเบฅเบฑเบšเบชเบปเบกเบœเบปเบ™? เปเบ•เปˆเบซเบ™เป‰เบฒเป€เบชเบเบ”เบฒเบเบ—เบตเปˆเบšเปเปˆเบกเบต. เบกเบฑเบ™เบžเบฝเบ‡เบžเปเบ—เบตเปˆเบˆเบฐเป€เบšเบดเปˆเบ‡เบœเบปเบ™เบฅเบงเบกเบ‚เบญเบ‡ deviations squared เปเบฅเบฐเป€เบซเบฑเบ™เบงเปˆเบฒเบ”เป‰เบงเบเบ„เปˆเบฒเปƒเบซเบกเปˆเบ‚เบญเบ‡เบ„เปˆเบฒเบชเปเบฒเบ›เบฐเบชเบดเบ”, เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เปเบกเปˆเบ™เปƒเบซเบเปˆเบเบงเปˆเบฒ. เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบฎเบตเบšเบฎเป‰เบญเบ™เบ—เบตเปˆเบˆเบฐเปเบปเบ”เบซเบงเบฑเบ‡. เปƒเบซเป‰เบชเป‰เบฒเบ‡เป€เบชเบฑเป‰เบ™เบชเบฐเปเบ”เบ‡เบ‚เบญเบ‡เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”.

เบฅเบฐเบซเบฑเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบงเบฒเบ‡เปเบœเบ™เบœเบปเบ™เบฅเบงเบกเบ‚เบญเบ‡ deviations เบฎเบฝเบšเบฎเป‰เบญเบเปƒเบ™ stochastic gradient descent

print 'ะ“ั€ะฐั„ะธะบ โ„–5 "ะกัƒะผะผะฐ ะบะฒะฐะดั€ะฐั‚ะพะฒ ะพั‚ะบะปะพะฝะตะฝะธะน ะฟะพ-ัˆะฐะณะพะฒะพ"'
plt.plot(range(len(list_parametres_stoch_gradient_descence[1])), list_parametres_stoch_gradient_descence[1], color='red', lw=2)
plt.xlabel('Steps (Iteration)', size=16)
plt.ylabel('Sum of squared deviations', size=16)
plt.show()

เป€เบชเบฑเป‰เบ™เบชเบฐเปเบ”เบ‡เบ—เบต 5 โ€œเบœเบปเบ™เบฅเบงเบกเบ‚เบญเบ‡เบเบฒเบ™เบšเปˆเบฝเบ‡เป€เบšเบ™เบชเบตเปˆเบซเบผเปˆเบฝเบกเบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบชเบทเบšเป€เบŠเบทเป‰เบญเบชเบฒเบ gradient stochasticโ€

เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ

เบŠเบญเบเบซเบฒเบขเบนเปˆเปƒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡, เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบ•เบปเบเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเปเบฅเบฐเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเปเบเป‰เป„เบ‚เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡.

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบเบตเบ”เบ‚เบถเป‰เบ™? เบ•เปเปˆเป„เบ›เบ™เบตเป‰เป€เบเบตเบ”เบ‚เบถเป‰เบ™. เป€เบกเบทเปˆเบญเบžเบงเบเป€เบฎเบปเบฒเป€เบฅเบทเบญเบเป€เบ”เบทเบญเบ™เปเบšเบšเบชเบธเปˆเบก, เบกเบฑเบ™เปเบกเปˆเบ™เบชเปเบฒเบฅเบฑเบšเป€เบ”เบทเบญเบ™เบ—เบตเปˆเป€เบฅเบทเบญเบเบ—เบตเปˆ algorithm เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบŠเบญเบเบซเบฒเป€เบžเบทเปˆเบญเบซเบผเบธเบ”เบœเปˆเบญเบ™เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เปƒเบ™เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเบฅเบฒเบเป„เบ”เป‰. เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเป€เบฅเบทเบญเบเป€เบ”เบทเบญเบ™เบญเบทเปˆเบ™เปเบฅเบฐเป€เบฎเบฑเบ”เบŠเป‰เปเบฒเบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆ, เปเบ•เปˆเบžเบงเบเป€เบฎเบปเบฒเบซเบผเบธเบ”เบœเปˆเบญเบ™เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบชเปเบฒเบฅเบฑเบšเป€เบ”เบทเบญเบ™เบ—เบตเปˆเป€เบฅเบทเบญเบเบ—เบตเบชเบญเบ‡. เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบˆเบทเปˆเป„เบงเป‰เบงเปˆเบฒเบชเบญเบ‡เป€เบ”เบทเบญเบ™เบ—เปเบฒเบญเบดเบ” deviate เบขเปˆเบฒเบ‡เบซเบผเบงเบ‡เบซเบผเบฒเบเบˆเบฒเบเป€เบชเบฑเป‰เบ™เบ‚เบญเบ‡เบชเบปเบกเบœเบปเบ™ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ. เบ™เบตเป‰เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเป€เบกเบทเปˆเบญเปƒเบ”เปƒเบ™เบชเบญเบ‡เป€เบ”เบทเบญเบ™เบ™เบตเป‰เบ–เบทเบเป€เบฅเบทเบญเบ, เป‚เบ”เบเบเบฒเบ™เบซเบผเบธเบ”เบœเปˆเบญเบ™เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ‚เบญเบ‡เปเบ•เปˆเบฅเบฐเบ„เบปเบ™, algorithm เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”? เบ„เปเบฒเบ•เบญเบšเปเบกเปˆเบ™เบ‡เปˆเบฒเบเบ”เบฒเบ: เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบซเบผเบธเบ”เบœเปˆเบญเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบเบฒเบ™เบชเบทเบšเป€เบŠเบทเป‰เบญเบชเบฒเบ. เบซเบผเบฑเบ‡เบˆเบฒเบเบ—เบตเปˆเบ—เบฑเบ‡เบซเบกเบปเบ”, เป‚เบ”เบเบเบฒเบ™เบซเบผเบธเบ”เบœเปˆเบญเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ—เบตเปˆเบชเบทเบšเป€เบŠเบทเป‰เบญเบชเบฒเบ, เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบเบฑเบ‡เบˆเบฐเบขเบธเบ” "เป‚เบ”เบ”" เบ‚เบถเป‰เบ™เปเบฅเบฐเบฅเบปเบ‡. เบซเบผเบทเปเบ—เบ™เบ—เบตเปˆเบˆเบฐ, เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ” "เป‚เบ”เบ”" เบˆเบฐเบšเปเปˆเบขเบธเบ”, เปเบ•เปˆเบกเบฑเบ™เบˆเบฐเบšเปเปˆเป€เบฎเบฑเบ”เบขเปˆเบฒเบ‡เป„เบงเบงเบฒ :) เปƒเบซเป‰เบเบงเบ”เป€เบšเบดเปˆเบ‡.

เบฅเบฐเบซเบฑเบ”เป€เบžเบทเปˆเบญเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™ SGD เบ”เป‰เบงเบเบเบฒเบ™เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เบซเบ™เป‰เบญเบเบฅเบปเบ‡

# ะทะฐะฟัƒัั‚ะธะผ ั„ัƒะฝะบั†ะธัŽ, ัƒะผะตะฝัŒัˆะธะฒ ัˆะฐะณ ะฒ 100 ั€ะฐะท ะธ ัƒะฒะตะปะธั‡ะธะฒ ะบะพะปะธั‡ะตัั‚ะฒะพ ัˆะฐะณะพะฒ ัะพะพั‚ะฒะตั‚ัะฒัƒัŽั‰ะต 
list_parametres_stoch_gradient_descence = stoch_grad_descent_usual(x_us, y_us, l=0.001, steps = 80000)

print ' 33[1m' + ' 33[4m' + "ะ—ะฝะฐั‡ะตะฝะธั ะบะพัั„ั„ะธั†ะธะตะฝั‚ะพะฒ a ะธ b:" + ' 33[0m'
print 'a =', round(list_parametres_stoch_gradient_descence[0][0],3)
print 'b =', round(list_parametres_stoch_gradient_descence[0][1],3)
print


print ' 33[1m' + ' 33[4m' + "ะกัƒะผะผะฐ ะบะฒะฐะดั€ะฐั‚ะพะฒ ะพั‚ะบะปะพะฝะตะฝะธะน:" + ' 33[0m'
print round(list_parametres_stoch_gradient_descence[1][-1],3)
print



print ' 33[1m' + ' 33[4m' + "ะšะพะปะธั‡ะตัั‚ะฒะพ ะธั‚ะตั€ะฐั†ะธะน ะฒ ัั‚ะพั…ะฐัั‚ะธั‡ะตัะบะพะผ ะณั€ะฐะดะธะตะฝั‚ะฝะพะผ ัะฟัƒัะบะต:" + ' 33[0m'
print len(list_parametres_stoch_gradient_descence[1])

print 'ะ“ั€ะฐั„ะธะบ โ„–6 "ะกัƒะผะผะฐ ะบะฒะฐะดั€ะฐั‚ะพะฒ ะพั‚ะบะปะพะฝะตะฝะธะน ะฟะพ-ัˆะฐะณะพะฒะพ"'
plt.plot(range(len(list_parametres_stoch_gradient_descence[1])), list_parametres_stoch_gradient_descence[1], color='red', lw=2)
plt.xlabel('Steps (Iteration)', size=16)
plt.ylabel('Sum of squared deviations', size=16)
plt.show()

เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ

เป€เบชเบฑเป‰เบ™เบชเบฐเปเบ”เบ‡เบ—เบต 6 โ€œเบœเบปเบ™เบฅเบงเบกเบ‚เบญเบ‡เบเบฒเบ™เบšเปˆเบฝเบ‡เป€เบšเบ™เบชเบตเปˆเบซเบผเปˆเบฝเบกเบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบชเบทเบšเป€เบŠเบทเป‰เบญเบชเบฒเบ gradient stochastic (80 เบžเบฑเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™)โ€

เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ

เบ„เปˆเบฒเบชเปเบฒเบ›เบฐเบชเบดเบ”เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡, เปเบ•เปˆเบเบฑเบ‡เบšเปเปˆเป€เบซเบกเบฒเบฐเบชเบปเบก. เป‚เบ”เบเบชเบปเบกเบกเบธเบ”เบ•เบดเบ–เบฒเบ™, เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบ–เบทเบเปเบเป‰เป„เบ‚เบ”เป‰เบงเบเบงเบดเบ—เบตเบ™เบตเป‰. เบžเบงเบเป€เบฎเบปเบฒเป€เบฅเบทเบญเบเป€เบญเบปเบฒ, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบปเบเบ•เบปเบงเบขเปˆเบฒเบ‡, เปƒเบ™ 1000 iterations เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ, เบ„เปˆเบฒเบ‚เบญเบ‡เบชเปเบฒเบ›เบฐเบชเบดเบ”เบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ•เปเบฒเปˆเบชเบธเบ”เบ—เบตเปˆเป„เบ”เป‰เป€เบฎเบฑเบ”. เปเบ—เป‰เบˆเบดเบ‡เปเบฅเป‰เบง, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เบˆเบฐเบ•เป‰เบญเบ‡เบ‚เบฝเบ™เบฅเบปเบ‡เบ„เปˆเบฒเบ‚เบญเบ‡เบ•เบปเบงเบ„เบนเบ™เบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡. เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบšเปเปˆเป€เบฎเบฑเบ”เปเบ™เบงเบ™เบตเป‰, เปเบ•เปˆเปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบญเบปเบฒเปƒเบˆเปƒเบชเปˆเบเบฑเบšเบ•เบฒเบ•เบฐเบฅเบฒเบ‡. เบกเบฑเบ™เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบเป‰เบฝเบ‡เปเบฅเบฐเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบˆเบฐเบซเบผเบธเบ”เบฅเบปเบ‡เบขเปˆเบฒเบ‡เป€เบ—เบปเปˆเบฒเบ—เบฝเบกเบเบฑเบ™. เปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡, เบ™เบตเป‰เบšเปเปˆเปเบกเปˆเบ™เบ„เบงเบฒเบกเบˆเบดเบ‡. เบฅเบญเบ‡เป€เบšเบดเปˆเบ‡ 1000 เป€เบ—เบทเปˆเบญเบ—เบณเบญเบดเบ” เปเบฅเบฐเบ›เบฝเบšเบ—เบฝเบšเบเบฑเบšเบญเบฑเบ™เบชเบธเบ”เบ—เป‰เบฒเบ.

เบฅเบฐเบซเบฑเบ”เบชเปเบฒเบฅเบฑเบšเบ•เบฒเบ•เบฐเบฅเบฒเบ‡ SGD (1000 เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ—เปเบฒเบญเบดเบ”)

print 'ะ“ั€ะฐั„ะธะบ โ„–7 "ะกัƒะผะผะฐ ะบะฒะฐะดั€ะฐั‚ะพะฒ ะพั‚ะบะปะพะฝะตะฝะธะน ะฟะพ-ัˆะฐะณะพะฒะพ. ะŸะตั€ะฒั‹ะต 1000 ะธั‚ะตั€ะฐั†ะธะน"'
plt.plot(range(len(list_parametres_stoch_gradient_descence[1][:1000])), 
         list_parametres_stoch_gradient_descence[1][:1000], color='red', lw=2)
plt.xlabel('Steps (Iteration)', size=16)
plt.ylabel('Sum of squared deviations', size=16)
plt.show()

print 'ะ“ั€ะฐั„ะธะบ โ„–7 "ะกัƒะผะผะฐ ะบะฒะฐะดั€ะฐั‚ะพะฒ ะพั‚ะบะปะพะฝะตะฝะธะน ะฟะพ-ัˆะฐะณะพะฒะพ. ะŸะพัะปะตะดะฝะธะต 1000 ะธั‚ะตั€ะฐั†ะธะน"'
plt.plot(range(len(list_parametres_stoch_gradient_descence[1][-1000:])), 
         list_parametres_stoch_gradient_descence[1][-1000:], color='red', lw=2)
plt.xlabel('Steps (Iteration)', size=16)
plt.ylabel('Sum of squared deviations', size=16)
plt.show()

เบเบฃเบฒเบšเบ—เบต 7 โ€œเบœเบปเบ™เบฅเบงเบกเบ‚เบญเบ‡เบเบฒเบ™เบšเปˆเบฝเบ‡เป€เบšเบ™เบชเบตเปˆเบซเบผเปˆเบฝเบก SGD (1000 เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ—เบณเบญเบดเบ”)โ€

เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ

เบเบฃเบฒเบšเป€เบฅเบ 8 โ€œเบœเบปเบ™เบฅเบงเบกเบ‚เบญเบ‡เบเบฒเบ™เบšเปˆเบฝเบ‡เป€เบšเบ™เบชเบตเปˆเบซเบผเปˆเบฝเบก SGD (1000 เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบชเบธเบ”เบ—เป‰เบฒเบ)โ€

เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ

เปƒเบ™เบ•เบญเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡เบเบฒเบ™เบชเบทเบšเป€เบŠเบทเป‰เบญเบชเบฒเบ, เบžเบงเบเป€เบฎเบปเบฒเบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป€เบญเบเบฐเบžเบฒเบšเบ—เบตเปˆเบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เปเบฅเบฐเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ—เบตเปˆเบซเบผเบธเบ”เบฅเบปเบ‡. เปƒเบ™ iterations เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ, เบžเบงเบเป€เบฎเบปเบฒเป€เบซเบฑเบ™เบงเปˆเบฒเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เป„เบ›เบ›เบฐเบกเบฒเบ™เปเบฅเบฐเบ›เบฐเบกเบฒเบ™เบ„เปˆเบฒเบ‚เบญเบ‡ 1,475 เปเบฅเบฐเปƒเบ™เบšเบฒเบ‡เบŠเปˆเบงเบ‡เป€เบงเบฅเบฒเป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเป€เบ—เบปเปˆเบฒเบเบฑเบšเบกเบนเบ™เบ„เปˆเบฒเบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”เบ™เบตเป‰, เปเบ•เปˆเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบกเบฑเบ™เบเบฑเบ‡เบ‚เบถเป‰เบ™ ... เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป€เบฎเบฑเบ”เบŠเป‰เปเบฒ, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ‚เบฝเบ™เบฅเบปเบ‡เบ„เปˆเบฒเบ‚เบญเบ‡. เบ„เปˆเบฒเบชเปเบฒเบ›เบฐเบชเบดเบ” เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ ะธ เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ, เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เป€เบฅเบทเบญเบเป€เบญเบปเบฒเบชเบดเปˆเบ‡เบ—เบตเปˆเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เปเบกเปˆเบ™เบซเบ™เป‰เบญเบเบ—เบตเปˆเบชเบธเบ”. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเปˆเบ•เบฒเบก, เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบšเบฑเบ™เบซเบฒเบ—เบตเปˆเบฎเป‰เบฒเบเปเบฎเบ‡เบเบงเปˆเบฒเป€เบเบปเปˆเบฒ: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เปƒเบŠเป‰เป€เบงเบฅเบฒ 80 เบžเบฑเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™ (เป€เบšเบดเปˆเบ‡เบฅเบฐเบซเบฑเบ”) เป€เบžเบทเปˆเบญเปƒเบซเป‰เป„เบ”เป‰เบฎเบฑเบšเบ„เปˆเบฒเบ—เบตเปˆเปƒเบเป‰เบ„เบฝเบ‡เบเบฑเบšเบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”. เปเบฅเบฐเบ™เบตเป‰เปเบฅเป‰เบงเบเบปเบ‡เบเบฑเบ™เบ‚เป‰เบฒเบกเบเบฑเบšเบ„เบงเบฒเบกเบ„เบดเบ”เบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเบซเบเบฑเบ”เป€เบงเบฅเบฒเบ‚เบญเบ‡เบ„เบญเบกเบžเบดเบงเป€เบ•เบตเป‰เบเบฑเบš stochastic gradient descent เบ—เบฝเบšเบเบฑเบš gradient descent. เบชเบดเปˆเบ‡เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เปเบเป‰เป„เบ‚เปเบฅเบฐเบ›เบฑเบšเบ›เบธเบ‡เป„เบ”เป‰? เบกเบฑเบ™เบšเปเปˆเบเบฒเบเบ—เบตเปˆเบˆเบฐเบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบงเปˆเบฒเปƒเบ™ iterations เบ—เปเบฒเบญเบดเบ”เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบ„เบงเบฒเบกเบซเบกเบฑเป‰เบ™เปƒเบˆเบ—เบตเปˆเบˆเบฐเบซเบผเบธเบ”เบฅเบปเบ‡เปเบฅเบฐเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบ„เบงเบ™เบˆเบฐเบญเบญเบเบˆเบฒเบเบšเบฒเบ”เบเป‰เบฒเบงเบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเปƒเบ™ iterations เบ—เปเบฒเบญเบดเบ”เปเบฅเบฐเบซเบผเบธเบ”เบœเปˆเบญเบ™เบšเบฒเบ”เบเป‰เบฒเบงเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบเป‰เบฒเบงเป„เบ›เบ‚เป‰เบฒเบ‡เบซเบ™เป‰เบฒ. เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบšเปเปˆเป€เบฎเบฑเบ”เปƒเบ™เบšเบปเบ”เบ„เบงเบฒเบกเบ™เบตเป‰ - เบกเบฑเบ™เบเบฒเบงเป€เบเบตเบ™เป„เบ›เปเบฅเป‰เบง. เบœเบนเป‰โ€‹เบ—เบตเปˆโ€‹เบ›เบฒโ€‹เบ–เบฐโ€‹เบซเบ™เบฒโ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เบ„เบดเบ”โ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบ•เบปเบ™โ€‹เป€เบญเบ‡โ€‹เบงเปˆเบฒโ€‹เบˆเบฐโ€‹เป€เบฎเบฑเบ”โ€‹เปเบ™เบงโ€‹เบ™เบตเป‰โ€‹, เบกเบฑเบ™โ€‹เบšเปเปˆโ€‹เปเบกเปˆเบ™โ€‹เบเบฒเบ™โ€‹เบเบฒเบ :)

เบ•เบญเบ™เบ™เบตเป‰เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบชเบทเบšเป€เบŠเบทเป‰เบญเบชเบฒเบ gradient stochastic เป‚เบ”เบเปƒเบŠเป‰เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ” เบ•เบปเบงเป€เบฅเบ (เปเบฅเบฐโ€‹เบขเปˆเบฒโ€‹เบชเบฐโ€‹เบ”เบธเบ”โ€‹เบ•เปเปˆโ€‹เบเป‰เบญเบ™โ€‹เบซเบตเบ™โ€‹เบ—เบตเปˆโ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เป„เบ”เป‰โ€‹เบฅเบฐโ€‹เบšเบธโ€‹เป„เบงเป‰โ€‹เบเปˆเบญเบ™โ€‹เบซเบ™เป‰เบฒโ€‹เบ™เบตเป‰โ€‹)

เบฅเบฐเบซเบฑเบ”เบชเปเบฒเบฅเบฑเบš Stochastic Gradient Descent (NumPy)

# ะดะปั ะฝะฐั‡ะฐะปะฐ ะฝะฐะฟะธัˆะตะผ ั„ัƒะฝะบั†ะธัŽ ะณั€ะฐะดะธะตะฝั‚ะฝะพะณะพ ัˆะฐะณะฐ
def stoch_grad_step_numpy(vector_init, X, ind, y, l):
    x = X[ind]
    y_pred = np.dot(x,vector_init)
    err = y_pred - y[ind]
    grad_a = err
    grad_b = x[1]*err
    return vector_init - l*np.array([grad_a, grad_b])

# ะพะฟั€ะตะดะตะปะธะผ ั„ัƒะฝะบั†ะธัŽ ัั‚ะพั…ะฐัั‚ะธั‡ะตัะบะพะณะพ ะณั€ะฐะดะธะตะฝั‚ะฝะพะณะพ ัะฟัƒัะบะฐ
def stoch_grad_descent_numpy(X, y, l=0.1, steps = 800):
    vector_init = np.array([[np.random.randint(X.shape[0])], [np.random.randint(X.shape[0])]])
    errors = []
    for i in range(steps):
        ind = np.random.randint(X.shape[0])
        new_vector = stoch_grad_step_numpy(vector_init, X, ind, y, l)
        vector_init = new_vector
        errors.append(error_square_numpy(vector_init,X,y))
    return (vector_init), (errors)

# ะทะฐะฟะธัˆะตะผ ะผะฐััะธะฒ ะทะฝะฐั‡ะตะฝะธะน 
list_parametres_stoch_gradient_descence = stoch_grad_descent_numpy(x_np, y_np, l=0.001, steps = 80000)

print ' 33[1m' + ' 33[4m' + "ะ—ะฝะฐั‡ะตะฝะธั ะบะพัั„ั„ะธั†ะธะตะฝั‚ะพะฒ a ะธ b:" + ' 33[0m'
print 'a =', round(list_parametres_stoch_gradient_descence[0][0],3)
print 'b =', round(list_parametres_stoch_gradient_descence[0][1],3)
print


print ' 33[1m' + ' 33[4m' + "ะกัƒะผะผะฐ ะบะฒะฐะดั€ะฐั‚ะพะฒ ะพั‚ะบะปะพะฝะตะฝะธะน:" + ' 33[0m'
print round(list_parametres_stoch_gradient_descence[1][-1],3)
print



print ' 33[1m' + ' 33[4m' + "ะšะพะปะธั‡ะตัั‚ะฒะพ ะธั‚ะตั€ะฐั†ะธะน ะฒ ัั‚ะพั…ะฐัั‚ะธั‡ะตัะบะพะผ ะณั€ะฐะดะธะตะฝั‚ะฝะพะผ ัะฟัƒัะบะต:" + ' 33[0m'
print len(list_parametres_stoch_gradient_descence[1])
print

เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ

เบ„เปˆเบฒเป„เบ”เป‰เบซเบฑเบ™เบญเบญเบเป€เบเบทเบญเบšเบ„เบทเบเบฑเบ™เบเบฑเบšเป€เบงเบฅเบฒเบ—เบตเปˆเบซเบผเบธเบ”เบฅเบปเบ‡เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ เบ•เบปเบงเป€เบฅเบ. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบ™เบตเป‰เปเบกเปˆเบ™เป€เบซเบ”เบœเบปเบ™.

เปƒเบซเป‰เป€เบฎเบปเบฒเบฎเบนเป‰เบงเปˆเบฒเบเบฒเบ™เบชเบทเบšเป€เบŠเบทเป‰เบญเบชเบฒเบ gradient stochastic เปƒเบŠเป‰เป€เบงเบฅเบฒเบ”เบปเบ™เบ›เบฒเบ™เปƒเบ”.

เบฅเบฐเบซเบฑเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเปเบฒเบ™เบปเบ”เป€เบงเบฅเบฒเบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆ SGD (80 เบžเบฑเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™)

print ' 33[1m' + ' 33[4m' +
"ะ’ั€ะตะผั ะฒั‹ะฟะพะปะฝะตะฝะธั ัั‚ะพั…ะฐัั‚ะธั‡ะตัะบะพะณะพ ะณั€ะฐะดะธะตะฝั‚ะฝะพะณะพ ัะฟัƒัะบะฐ ะฑะตะท ะธัะฟะพะปัŒะทะพะฒะฐะฝะธั ะฑะธะฑะปะธะพั‚ะตะบะธ NumPy:"
+ ' 33[0m'
%timeit list_parametres_stoch_gradient_descence = stoch_grad_descent_usual(x_us, y_us, l=0.001, steps = 80000)
print '***************************************'
print

print ' 33[1m' + ' 33[4m' +
"ะ’ั€ะตะผั ะฒั‹ะฟะพะปะฝะตะฝะธั ัั‚ะพั…ะฐัั‚ะธั‡ะตัะบะพะณะพ ะณั€ะฐะดะธะตะฝั‚ะฝะพะณะพ ัะฟัƒัะบะฐ ั ะธัะฟะพะปัŒะทะพะฒะฐะฝะธะตะผ ะฑะธะฑะปะธะพั‚ะตะบะธ NumPy:"
+ ' 33[0m'
%timeit list_parametres_stoch_gradient_descence = stoch_grad_descent_numpy(x_np, y_np, l=0.001, steps = 80000)

เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ

เบเบดเปˆเบ‡เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบ›เปˆเบฒ, เป€เบกเบเบ—เบตเปˆเบกเบทเบ”เบฅเบปเบ‡เบซเบผเบฒเบ: เบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡, เบชเบนเบ” "เบ‚เบฝเบ™เบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡" เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”. เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”โ€‹เบ™เบตเป‰โ€‹เบชเบฐโ€‹เปเบ”เบ‡โ€‹เปƒเบซเป‰โ€‹เป€เบซเบฑเบ™โ€‹เบงเปˆเบฒโ€‹เบˆเบฐโ€‹เบ•เป‰เบญเบ‡โ€‹เบกเบตโ€‹เบงเบดโ€‹เบ—เบตโ€‹เบเบฒเบ™โ€‹เบ—เบตเปˆโ€‹เบญเปˆเบญเบ™โ€‹เป‚เบเบ™โ€‹เบซเบผเบฒเบโ€‹เบเบงเปˆเบฒโ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบซเป‰เบญเบ‡โ€‹เบชเบฐโ€‹เบซเบกเบธเบ”โ€‹เป„เบ”เป‰โ€‹ เบ•เบปเบงเป€เบฅเบ, เป€เบŠเบดเปˆเบ‡เบเปเปˆเป€เบฅเบฑเปˆเบ‡เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆ. เปƒเบ™เบšเบปเบ”เบ„เบงเบฒเบกเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบšเปเปˆเป„เบ”เป‰เบฎเบฝเบ™เบฎเบนเป‰เบเปˆเบฝเบงเบเบฑเบšเบžเบงเบเบกเบฑเบ™. เบˆเบฐเบกเบตเบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบ—เบตเปˆเบˆเบฐเบ„เบดเบ”เบเปˆเบฝเบงเบเบฑเบšเป€เบงเบฅเบฒเบซเบงเปˆเบฒเบ‡เบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒ :)

เบชเบฐเบซเบผเบธเบš

เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบชเบฐเบซเบผเบธเบš, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบขเบฒเบเบ•เบญเบšเบ„เปเบฒเบ–เบฒเบกเบ—เบตเปˆเบญเบฒเบ”เบˆเบฐเป€เบเบตเบ”เบ‚เบทเป‰เบ™เบˆเบฒเบเบœเบนเป‰เบญเปˆเบฒเบ™เบ—เบตเปˆเบฎเบฑเบเปเบžเบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ. เป€เบ›เบฑเบ™เบซเบเบฑเบ‡, เปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡, "เบเบฒเบ™เบ—เปเบฅเบฐเบกเบฒเบ™" เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบเบฑเบšเบœเบนเป‰เบชเบทเบšเป€เบŠเบทเป‰เบญเบชเบฒเบ, เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบเปˆเบฒเบ‡เบ‚เบถเป‰เบ™เปเบฅเบฐเบฅเบปเบ‡เบžเบนเป€เบ‚เบปเบฒ (เบชเปˆเบงเบ™เบซเบผเบฒเบเปเบกเปˆเบ™เบฅเบปเบ‡) เป€เบžเบทเปˆเบญเบŠเบญเบเบซเบฒเป€เบ‚เบ”เบ—เบปเปˆเบ‡เบžเบฝเบ‡เบ—เบตเปˆเบชเบปเบกเบเบฝเบ”, เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบกเบตเบญเบธเบ›เบฐเบเบญเบ™เบ—เบตเปˆเบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปเบฅเบฐเบ‡เปˆเบฒเบเบ”เบฒเบ, เบขเบนเปˆเปƒเบ™เบกเบทเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ. เบฎเบนเบšโ€‹เปเบšเบšโ€‹เบเบฒเบ™โ€‹เปเบเป‰โ€‹เป„เบ‚โ€‹เบเบฒเบ™โ€‹เบงเบดโ€‹เป€เบ„เบฒเบฐโ€‹, เบ—เบตเปˆ instantly teleports เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบเบฑเบšโ€‹เบชเบฐโ€‹เบ–เบฒเบ™โ€‹เบ—เบตเปˆโ€‹เบชเบดเบ”โ€‹?

เบ„เปเบฒเบ•เบญเบšเบ‚เบญเบ‡เบ„เปเบฒเบ–เบฒเบกเบ™เบตเป‰เปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™เบซเบ™เป‰เบฒเบ”เบดเบ™. เบ•เบญเบ™เบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบšเบดเปˆเบ‡เบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเบซเบผเบฒเบ, เป€เบŠเบดเปˆเบ‡เบ„เปเบฒเบ•เบญเบšเบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡เปเบกเปˆเบ™ เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ เบ‚เบถเป‰เบ™เบเบฑเบšเบซเบ™เบถเปˆเบ‡เบญเบฒเบเบฒเบ™ เบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡ regression เป€เบชเบฑเป‰เบ™เบ‡เปˆเบฒเบเบ”เบฒเบ. เป€เบˆเบปเป‰เบฒเบšเปเปˆเป€เบซเบฑเบ™เบชเบดเปˆเบ‡เบ™เบตเป‰เป€เบฅเบทเป‰เบญเบเป†เปƒเบ™เบŠเบตเบงเบดเบ”, เบชเบฐเบ™เบฑเป‰เบ™เปƒเบซเป‰เบˆเบดเบ™เบ•เบฐเบ™เบฒเบเบฒเบ™เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบกเบต 2, 30, 50 เบซเบผเบทเบซเบผเบฒเบเบเบงเปˆเบฒเบ™เบฑเป‰เบ™. เบ‚เปเปƒเบซเป‰เป€เบžเบตเปˆเบกเบกเบนเบ™เบ„เปˆเบฒเบซเบฅเบฒเบเบžเบฑเบ™เบ™เบตเป‰, เบซเบผเบทเปเบกเป‰เบเบฐเบ—เบฑเป‰เบ‡เบซเบฅเบฒเบเบชเบดเบšเบžเบฑเบ™เบ„เปˆเบฒเบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐ. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, เบเบฒเบ™เปเบเป‰เป„เบ‚เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบญเบฒเบ”เบˆเบฐเบšเปเปˆเบ—เบปเบ™เบเบฑเบšเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเปเบฅเบฐเบฅเบปเป‰เบกเป€เบซเบฅเบง. เปƒเบ™เบ—เบฒเบ‡เบเบฑเบšเบเบฑเบ™, เบเบฒเบ™เบชเบทเบšเป€เบŠเบทเป‰เบญเบชเบฒเบ gradient เปเบฅเบฐเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ‚เบญเบ‡เบกเบฑเบ™เบˆเบฐเบŠเป‰เบฒเป†เปเบ•เปˆเปเบ™เปˆเบ™เบญเบ™เป€เบฎเบฑเบ”เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเปƒเบเป‰เบŠเบดเบ”เบเบฑเบšเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบ - เบ•เปเบฒเปˆเบชเบธเบ”เบ—เบตเปˆเบ‚เบญเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆ. เปเบฅเบฐเบšเปเปˆเบ•เป‰เบญเบ‡เบเบฑเบ‡เบงเบปเบ™เบเปˆเบฝเบงเบเบฑเบšเบ„เบงเบฒเบกเป„เบง - เบžเบงเบเป€เบฎเบปเบฒเบญเบฒเบ”เบˆเบฐเป€เบšเบดเปˆเบ‡เบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบˆเบฐเบŠเปˆเบงเบเปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบ™เบปเบ”เปเบฅเบฐเบ„เบงเบšเบ„เบธเบกเบ„เบงเบฒเบกเบเบฒเบงเบ‚เบญเบ‡เบ‚เบฑเป‰เบ™เบ•เบญเบ™ (เบ„เบทเบ„เบงเบฒเบกเป„เบง).

เปเบฅเบฐเบ•เบญเบ™เบ™เบตเป‰เบšเบปเบ”เบชเบฐเบซเบผเบธเบšเบชเบฑเป‰เบ™เป†เบ•เบปเบงเบˆเบดเบ‡.

เบเปˆเบญเบ™เบญเบทเปˆเบ™ เปเบปเบ”, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบซเบงเบฑเบ‡เบงเปˆเบฒเป€เบญเบเบฐเบชเบฒเบ™เบ—เบตเปˆ เบ™เบณ เบชเบฐ เป€เปœเบต เปƒเบ™เบšเบปเบ”เบ‚เบฝเบ™เบˆเบฐเบŠเปˆเบงเบเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™ "เบ™เบฑเบเบงเบดเบ—เบฐเบเบฒเบชเบฒเบ”เบ‚เปเป‰เบกเบนเบ™" เปƒเบ™เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเปƒเบˆเบงเบดเบ—เบตเบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™เบเบฒเบ™เบ–เบปเบ”เบ–เบญเบเปเบšเบšเป€เบชเบฑเป‰เบ™เปเบšเบšเบ‡เปˆเบฒเบเบ”เบฒเบ (เปเบฅเบฐเบšเปเปˆเบžเบฝเบ‡เปเบ•เปˆ).

เบญเบฑเบ™เบ—เบตเบชเบญเบ‡, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบšเบดเปˆเบ‡เบซเบผเบฒเบเบงเบดเบ—เบตเป€เบžเบทเปˆเบญเปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™. เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™, เบญเบตเบ‡เบ•เบฒเบกเบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™, เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เป€เบฅเบทเบญเบเป€เบญเบปเบฒเบซเบ™เบถเปˆเบ‡เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบ—เบตเปˆเบชเบธเบ”เป€เบžเบทเปˆเบญเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒ.

เบญเบฑเบ™เบ—เบตเบชเบฒเบก, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบซเบฑเบ™เบžเบฐเบฅเบฑเบ‡เบ‡เบฒเบ™เบ‚เบญเบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเป€เบžเบตเปˆเบกเป€เบ•เบตเบก, เบ„เบทเบ„เบงเบฒเบกเบเบฒเบงเบ‚เบญเบ‡เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบเบฒเบ™เบชเบทเบšเป€เบŠเบทเป‰เบญเบชเบฒเบ gradient. เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเบ™เบตเป‰เบšเปเปˆเบชเบฒเบกเบฒเบ”เบ–เบทเบเบฅเบฐเป€เบฅเบตเบ. เบ”เบฑเปˆเบ‡เบ—เบตเปˆเป„เบ”เป‰เบเปˆเบฒเบงเป„เบงเป‰เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡, เป€เบžเบทเปˆเบญเบซเบผเบธเบ”เบœเปˆเบญเบ™เบ„เปˆเบฒเปƒเบŠเป‰เบˆเปˆเบฒเบเปƒเบ™เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆ, เบ„เบงเบฒเบกเบเบฒเบงเบ‚เบญเบ‡เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ„เบงเบ™เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบชเบทเบšเป€เบŠเบทเป‰เบญเบชเบฒเบ.

เบญเบฑเบ™เบ—เบตเบชเบตเปˆ, เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบซเบ™เป‰เบฒเบ—เบตเปˆ "เบ‚เบฝเบ™เบขเบนเปˆเป€เบฎเบทเบญเบ™" เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆ. เบญเบฑเบ™เบ™เบตเป‰เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เบเป‰เบญเบ™เบšเปเปˆเปเบกเปˆเบ™เบเบฒเบ™เปƒเบŠเป‰เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เบ‚เบญเบ‡เบซเป‰เบญเบ‡เบชเบฐเปเบธเบ”เบ—เบตเปˆเป€เบ›เบฑเบ™เบกเบทเบญเบฒเบŠเบตเบšเบ—เบตเปˆเบชเบธเบ” เบ•เบปเบงเป€เบฅเบ. เปเบ•เปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰, เบชเบฐเบซเบผเบธเบšเบ•เปเปˆเป„เบ›เบ™เบตเป‰เบŠเบตเป‰เปƒเบซเป‰เป€เบซเบฑเบ™เบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡. เปƒเบ™เบญเบตเบเบ”เป‰เบฒเบ™เบซเบ™เบถเปˆเบ‡, เบšเบฒเบ‡เบ„เบฑเป‰เบ‡เบกเบฑเบ™เบเปเปˆเบ„เบธเป‰เบกเบ„เปˆเบฒเบ—เบตเปˆเบˆเบฐเบ–เบฒเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™เบ—เบตเปˆเบ–เบทเบเบชเป‰เบฒเบ‡เบ•เบฑเป‰เบ‡เบ‚เบทเป‰เบ™, เปเบฅเบฐเบญเบตเบเบ”เป‰เบฒเบ™เบซเบ™เบถเปˆเบ‡, เบกเบฑเบ™เบšเปเปˆเบชเบปเบกเบ„เบงเบ™เบ—เบตเปˆเบˆเบฐเบชเบฑเบšเบชเบปเบ™เบ—เบธเบเบขเปˆเบฒเบ‡ - เปƒเบ™เบ—เบฒเบ‡เบเบปเบ‡เบเบฑเบ™เบ‚เป‰เบฒเบก, เบšเบฒเบ‡เบ„เบฑเป‰เบ‡เบงเบดเบ—เบตเบเบฒเบ™เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเปเบกเปˆเบ™เบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบซเบผเบฒเบเบ‚เบถเป‰เบ™. เปเบฅเบฐเบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปเบกเปˆเบ™เป€เบžเบทเปˆเบญเบงเบดเป€เบ„เบฒเบฐเบชเบฒเบกเบงเบดเบ—เบตเบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบปเบกเบœเบปเบ™ regression linear เปเบšเบšเบ‡เปˆเบฒเบเบ”เบฒเบ, เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบซเบ™เป‰เบฒเบ—เบตเปˆ "เบ‚เบฝเบ™เบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡" เปเบกเปˆเบ™เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบžเบฝเบ‡เบžเปเบชเปเบฒเบฅเบฑเบšเบžเบงเบเป€เบฎเบปเบฒ.

เบงเบฑเบ™เบ™เบฐเบ„เบฐเบ”เบต (เบซเบผเบทเบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เป€เบŠเบฑเปˆเบ™เบ™เบฑเป‰เบ™)

1. Linear regression

http://statistica.ru/theory/osnovy-lineynoy-regressii/

2. เบงเบดเบ—เบตเบเบฒเบ™เบชเบตเปˆเบซเบผเปˆเบฝเบกเบ™เป‰เบญเบเบชเบธเบ”

mathprofi.ru/metod_naimenshih_kvadratov.html

3. เบญเบฐเบ™เบธเบžเบฑเบ™

www.mathprofi.ru/chastnye_proizvodnye_primery.html

4. Gradient

mathprofi.ru/proizvodnaja_po_napravleniju_i_gradient.html

5. Gradient descent

habr.com/ru/post/471458

habr.com/ru/post/307312

artemarakcheev.com//2017-12-31/linear_regression

6. เบซเป‰เบญเบ‡เบชเบฐเปเบธเบ” NumPy

docs.scipy.org/doc/numpy-1.10.1/reference/generated/numpy.linalg.solve.html

docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy.linalg.pinv.html

pythonworld.ru/numpy/2.html

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™