เบเบปเบเบเบงเบฒเบกเบชเบปเบเบเบฐเบเบฒเบซเบผเบฒเบเบงเบดเบเบตเปเบเบเบฒเบเบเปเบฒเบเบปเบเบชเบปเบกเบเบปเบเบเบฒเบเบเบฐเบเบดเบเบชเบฒเบเบเบญเบเปเบชเบฑเปเบ regression เปเบเบเบเปเบฒเบเบเบฒเบ (เบเบนเป).
เบงเบดเบเบตเบเบฒเบเบเบฑเบเปเบปเบเบเบญเบเบเบฒเบเปเบเปเปเบเบชเบปเบกเบเบปเบเบเบตเปเปเบเปเบเปเบฒเบงเบกเบฒเบเบตเปเปเบกเปเบเบญเบตเบเปเบชเปเบงเบดเบเบตเบเบฒเบเบชเบตเปเบซเบผเปเบฝเบกเบเปเบญเบเบเบตเปเบชเบธเบ. เบเปโเปเบซเปโเบชเบฑเบโเปเบเบโเบงเบดโเบเบตโเบเบฒเบโเบเบฑเปเบโเบเปเปโเปเบโเบเบตเปโ:
- เบเบฒเบเปเบเปเปเบเบเบฒเบเบงเบดเปเบเบฒเบฐ
- Gradient Descent
- Stochastic gradient descent
เบชเปเบฒเบฅเบฑเบเปเบเปเบฅเบฐเบงเบดเบเบตเบเบญเบเบเบฒเบเปเบเปเปเบเบชเบปเบกเบเบปเบเบเบญเบเปเบชเบฑเปเบเบเบทเป, เบเบปเบเบเบงเบฒเบกเบชเบฐเบซเบเบญเบเบซเบเปเบฒเบเบตเปเบเปเบฒเบเป, เปเบเบดเปเบเบชเปเบงเบเปเบซเบเปเปเบกเปเบเปเบเปเบเบญเบญเบเปเบเบฑเบเบฅเบฒเบเบฅเบฑเบเบญเบฑเบเบชเบญเบเปเบเบเบเปเปเบกเบตเบเบฒเบเบเปเบฒเปเบเปเบซเปเบญเบเบชเบฐเบซเบกเบธเบ. เบเบปเบงเปเบฅเบ เปเบฅเบฐเบเบนเปเบเบตเปเปเบเปเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบดเบเปเบฅเป เบเบปเบงเปเบฅเบ. เบกเบฑเบเปเบเปเบเบทเบเปเบเบทเปเบญเบงเปเบฒเบเบฒเบเบเปเบฒเปเบเปเบเบฑเบเบชเบฐ เบเบปเบงเปเบฅเบ เบเบฐเบซเบผเบธเบเบเปเบญเบเบเปเบฒเปเบเปเบเปเบฒเบเปเบเบเบญเบกเบเบดเบงเปเบเบตเป.
เบฅเบฐเบซเบฑเบเบเบฑเบเบซเบกเบปเบเบเบตเปเปเบซเปเบขเบนเปเปเบเบเบปเบเบเบงเบฒเบกเปเบกเปเบเบเบฝเบเปเบเบฑเบเบเบฒเบชเบฒ python 2.7 เบเบฒเบเบเปเบฒเปเบเป เบเบทเปเบกเบเบฑเบเบเบถเบ Jupyter. เบฅเบฐเบซเบฑเบเปเบซเบผเปเบเปเบฅเบฐเปเบเบฅเปเบเบตเปเบกเบตเบเปเปเบกเบนเบเบเบปเบงเบขเปเบฒเบเบเบทเบเบเบฑเบเบเบตเบกเบกเบฒเบขเบนเป
เบเบปเบเบเบงเบฒเบกเปเบกเปเบเปเบเปเบชเปเบเบฑเบเบเบนเปเปเบฅเบตเปเบกเบเบปเปเบ เปเบฅเบฐเบเบนเปเบเบตเปเปเบเปเปเบฅเบตเปเบกเบเปเบญเบเปเบเบตเปเบเบฐเปเบเบฑเบเปเบกเปเบเบปเบเบเบญเบเบเบฒเบเบชเบถเบเบชเบฒเบเบฒเบเบเบตเปเบเบงเปเบฒเบเบเบงเบฒเบเปเบเบเบฑเบเบเบฒเบเบฐเบเบดเบ - เบเบฒเบเบฎเบฝเบเบฎเบนเปเปเบเบทเปเบญเบเบเบฑเบ.
เปเบเบทเปเบญเบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเปเบเบดเบเปเบญเบเบฐเบชเบฒเบ, เบเบงเบเปเบฎเบปเบฒเปเบเปเบเบปเบงเบขเปเบฒเบเบเบตเปเบเปเบฒเบเบเบฒเบเบซเบผเบฒเบ.
เปเบเบทเปเบญเบเปเบเบเบปเบงเบขเปเบฒเบ
เบเบงเบเปเบฎเบปเบฒเบกเบตเบซเปเบฒเบเบธเบเบเปเบฒเบเบตเปเบกเบตเบฅเบฑเบเบชเบฐเบเบฐเบเบฒเบเปเบเบดเปเบเบเบฒเบญเบฒเปเบช Y เบเบฒเบ X (เบเบฒเบเบฐเบฅเบฒเบ 1):
เบเบฒเบเบฐเบฅเบฒเบ 1 โเปเบเบทเปเบญเบเปเบเบเบปเบงเบขเปเบฒเบโ
เบเบงเบเปเบฎเบปเบฒเบเบฐเบชเบปเบกเบกเบธเบเบงเปเบฒเบเบธเบเบเปเบฒ เปเบกเปเบเปเบเบทเบญเบเบเบญเบเบเบต, เปเบฅเบฐ โ เบฅเบฒเบโเบฎเบฑเบโเปเบโเปเบเบทเบญเบโเบเบตเปโ. เปเบเบเปเบฒเบชเบฑเบเบเปเบฒเบเปเบญเบทเปเบเป, เบฅเบฒเบเบฎเบฑเบเปเบกเปเบเบเบถเปเบเบเบฑเบเปเบเบทเบญเบเบเบญเบเบเบต, เปเบฅเบฐ - เปเบเบทเปเบญเบเบซเบกเบฒเบเบเบฝเบงเบเบตเปเบฅเบฒเบเบฎเบฑเบเบเบถเปเบเบเบฑเบ.
เบเบปเบงเบขเปเบฒเบเปเบกเปเบเบเบฑเปเบเบเบฑเปเบ, เบเบฑเบเบเบฒเบเบเบฑเบเบชเบฐเบเบฐเบเบญเบเบเบฒเบเปเบเบดเปเบเบเบฒเบญเบฒเปเบชเปเบเบทเปเบญเบเปเบเบเบญเบเบฅเบฒเบเปเบเปเปเบเปเบเบทเบญเบเบเบญเบเบเบต, เปเบฅเบฐเบเบฒเบเบเบธเบเบเบญเบเบเปเบฒเบเบงเบเบกเบนเบเบเปเบฒ - เบกเบตเบเปเบฒเบเบงเบเบซเบเปเบญเบเบซเบผเบฒเบเบเบญเบเบเบงเบเปเบเบปเบฒ. เปเบเบงเปเบเบเปเปเบเบฒเบก, เบเบงเบฒเบกเบเปเบฒเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบงเบเบฐเปเบฎเบฑเบเปเบซเปเบกเบฑเบเปเบเบฑเบเปเบเปเบเป, เบเปเบญเบเบงเปเบฒเปเบเบปเบฒเปเบเบปเปเบฒเปเบงเบปเปเบฒเบงเปเบฒ, เปเบเบทเปเบญเบญเบฐเบเบดเบเบฒเบ, เบเปเปเบชเบฐเปเบซเบกเบตเปเบเบเปเบงเบเบเบงเบฒเบกเบเปเบฒเบ, เบงเบฑเบเบชเบฐเบเบธเบเบตเปเบเบนเปเปเบฅเบตเปเบก assimilate. เปเบฅเบฐเบเบฑเบเบเบงเบฒเบกเบเปเบฒเบเบเบฒเบเบเบญเบเบเบปเบงเปเบฅเบเบเบฐเบเปเบงเบเปเบซเปเบเบนเปเบเบตเปเบเปเบญเบเบเบฒเบเปเบเปเปเบเบเบปเบงเบขเปเบฒเบเปเบเปเบเปเบเปเบเบเบเปเปเบกเบตเบเปเบฒเปเบเปเบเปเบฒเบเปเบฎเบเบเบฒเบเบเบตเปเบชเปเบฒเบเบฑเบ.
เปเบซเปเบเบงเบเปเบฎเบปเบฒเบชเบปเบกเบกเบธเบเบงเปเบฒเบเบฒเบเปเบเบดเปเบเบเบฒเบญเบฒเปเบชเปเบเบเบปเบงเบขเปเบฒเบเบชเบฒเบกเบฒเบเบเบทเบเบเบฐเบกเบฒเบเบเปเบญเบเบเปเบฒเบเบเบตเปเบเบเบชเบปเบกเบเบปเบเบเบฒเบเบเบฐเบเบดเบเบชเบฒเบเบเบญเบเปเบชเบฑเปเบ regression เปเบเบเบเปเบฒเบเบเบฒเบ (เบเบนเป) เบเบญเบเปเบเบเบเบญเบก:
เบเปเบญเบเบเบตเป เปเบกเปเบเปเบเบทเบญเบเบเบตเปเปเบเปเบฎเบฑเบเบฅเบฒเบเบฎเบฑเบ, - เบฅเบฒเบโเบฎเบฑเบโเบเบตเปโเบชเบญเบโเบเปเบญเบโเบเบฑเบโเบเบฑเบโเปเบเบทเบญเบโ, ะธ เปเบกเปเบเบเปเบฒเบชเปเบฒเบเบฐเบชเบดเบเบเบฒเบเบเบปเบเบเบญเบเบเบญเบเปเบชเบฑเปเบเบเบตเปเบเบฒเบเบเบฐเปเบ.
เปเบซเปเบชเบฑเบเปเบเบเบงเปเบฒเบเปเบฒเบชเปเบฒเบเบฐเบชเบดเบ เบกเบฑเบเบเบฐเปเบญเบตเปเบเบงเปเบฒ slope เบซเบผเบท gradient เบเบญเบเปเบชเบฑเปเบเบเบฒเบเบเบฐเปเบ; เปเบเบฑเบเบเบปเบงเปเบเบเบเบญเบเบเปเบฒเบเบงเบเบเบตเป เปเบกเบทเปเบญเบกเบฑเบเบเปเบฝเบเปเบเบ .
เปเบเปเบเบญเบ, เบงเบฝเบเบเบฒเบเบเบญเบเบเบงเบเปเบฎเบปเบฒเปเบเบเบปเบงเบขเปเบฒเบเปเบกเปเบเบเบฒเบเปเบฅเบทเบญเบเบเบปเบงเบเบนเบเบเบฑเปเบเบเปเบฒเบงเปเบเบชเบปเบกเบเบปเบ ะธ , เบเบตเป deviations เบเบญเบเบกเบนเบเบเปเบฒเบฅเบฒเบเบฎเบฑเบเบเบญเบเบเบงเบเปเบฎเบปเบฒเบเบดเบเปเบฅเปเปเบเบเปเบเบทเบญเบเบเบฒเบเบเปเบฒเบเบญเบเบเบตเปเปเบเปเบเบดเบ, i.e. เบเปเบฒเบเบตเปเบเปเบฒเบชเบฐเปเบซเบเบตเปเบเบเบปเบงเบขเปเบฒเบเบเบฐเบกเบตเบซเบเปเบญเบ.
เบงเบดเบเบตเบเบฒเบเบชเบตเปเบซเบผเปเบฝเบกเบเปเบญเบเบเบตเปเบชเบธเบ
เบญเบตเบเบเบฒเบกเบงเบดเบเบตเบเบฒเบเบชเบตเปเบซเบผเปเบฝเบกเบเปเบญเบเบเบตเปเบชเบธเบ, เบเบฒเบเบเปเบฝเบเปเบเบเบเบงเบเบเบฐเบเบทเบเบเบดเบเปเบฅเปเปเบเบเบเบฒเบเบชเบตเปเบซเบฅเปเบฝเบก. เปเบเบฑเบเบเบดเบเบเบตเปเบญเบฐเบเบธเบเบฒเบเปเบซเปเบเปเบฒเบเปเบเบทเปเบญเบซเบผเบตเบเปเบงเบฑเปเบเบเบฒเบเบเบปเบเปเบฅเบตเบเปเบเบดเปเบเบเบฑเบเปเบฅเบฐเบเบฑเบเบเบญเบ deviations เบเปเบฒเบเบงเบเปเบเบปเบฒเบกเบตเบญเบฒเบเบฒเบเบเบปเบเบเบฑเบเบเปเบฒเบก. เบเบปเบงเบขเปเบฒเบ, เบเปเบฒเบขเบนเปเปเบเบเปเบฅเบฐเบเบตเบซเบเบถเปเบ, เบเบฒเบเบเปเบฝเบเปเบเบเปเบกเปเบ +5 (เบเบงเบโเบซเปเบฒโ)โ, เปเบฅเบฐโเบญเบทเปเบเปโ -5 (เบฅเบปเบเบซเปเบฒ), เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบปเบเบฅเบงเบกเบเบญเบ deviations เบเบฐเบเบปเบเปเบฅเบตเบเปเบเบดเปเบเบเบฑเบเปเบฅเบฐเบเบฑเบเบญเบญเบเปเบฅเบฐเบเปเบฒเบเบงเบ 0 (เบชเบนเบ). เบกเบฑเบเปเบเบฑเบเปเบเปเบเปเบเบตเปเบเบฐเบเปเปเบชเบตเปเบซเบฅเปเบฝเบก deviation, เปเบเปเปเบเปเบเบธเบเบชเบปเบกเบเบฑเบเบเบญเบเปเบกเบเบนเบฅเปเบฅเบฐเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ deviation เบเบฑเบเบซเบกเบปเบเบเบฐเปเบเบฑเบเบเบงเบเปเบฅเบฐเบเบฐเบชเบฐเบชเบปเบก. เบเบงเบเปเบฎเบปเบฒเบเบฐเบเปเปเบขเบนเปเปเบเบเบธเบเบเบตเปเปเบเบเบฅเบฐเบญเบฝเบ, เปเบเปเบเบฝเบเปเบเปเบเบตเปเปเบซเปเปเบซเบฑเบเบงเปเบฒเปเบเบทเปเบญเบเบงเบฒเบกเบชเบฐเบเบงเบเบเบญเบเบเบฒเบเบเบดเบเปเบฅเป, เบกเบฑเบเปเบเบฑเบเบเบฐเปเบเบเบตเบเบตเปเบเบฐเบชเบตเปเบซเบฅเปเบฝเบก deviation.
เบเบตเปเปเบกเปเบเบชเบดเปเบเบเบตเปเบชเบนเบเปเบเบดเปเบเบเบทเบงเปเบฒเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเบฐเบเปเบฒเบเบปเบเบเบปเบเบฅเบงเบกเบขเปเบฒเบเบซเบเปเบญเบเบเบญเบ deviations เบฎเบฝเบเบฎเปเบญเบ (เบเบงเบฒเบกเบเบดเบเบเบฒเบ):
เบเปเบญเบเบเบตเป เปเบกเปเบเบซเบเปเบฒเบเบตเปเบเบญเบเบเบฒเบเบเบฐเบกเบฒเบเบเปเบฒเบเบญเบเบเบตเปเปเบเปเบเบดเบ (เบเบฑเปเบเปเบกเปเบ, เบฅเบฒเบเบฎเบฑเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเบดเบเปเบฅเป),
เปเบกเปเบเบเปเบฒเบเบญเบเบเบตเปเปเบเปเบเบดเบ (เบฅเบฒเบเบฎเบฑเบเบเบตเปเบชเบฐเบซเบเบญเบเปเบซเปเบขเบนเปเปเบเบเบปเบงเบขเปเบฒเบ),
เปเบกเปเบเบเบฑเบเบเบฐเบเบตเบเบปเบงเบขเปเบฒเบ (เบเปเบฒเบเบงเบเบเบญเบเปเบเบทเบญเบเบเบตเป deviation เบเบทเบเบเปเบฒเบเบปเบ)
เปเบซเปเบเบงเบฒเบกเปเบเบเบเปเบฒเบเบเบญเบเบซเบเปเบฒเบเบตเป, เบเปเบฒเบเบปเบเบชเบปเบกเบเบปเบเบเบงเบฒเบกเปเบเบเบเปเบฒเบเบเบฒเบเบชเปเบงเบ, เปเบฅเบฐเบเปเบญเบกเบเบตเปเบเบฐเบเปเบฒเบงเปเบเบชเบนเปเบเบฒเบเปเบเปเปเบเบเบฒเบเบงเบดเปเบเบฒเบฐ. เปเบเปเบเปเบญเบเบญเบทเปเบเปเบปเบ, เปเบซเปเบเบดเบเบฒเบฅเบฐเบเบฒเบชเบฑเปเบเปเบเปเบฝเบงเบเบฑเบเบเบงเบฒเบกเปเบเบเบเปเบฒเบ เปเบฅเบฐเบเบทเปเบเบณเบเบงเบฒเบกเปเบฒเบเบเบฒเบเปเบฅเบเบฒเบเบฐเบเบดเบเบเบญเบเบญเบฐเบเบธเบเบฑเบ.
เบเบงเบฒเบกเปเบเบเบเปเบฒเบ
เบเบงเบฒเบกเปเบเบเบเปเบฒเบเปเบกเปเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบฒเบเบเบญเบเบเบฒเบเบเบปเปเบเบซเบฒเบเบปเบเบกเบฒเบเบฒเบเบเบฒเบเบเปเบฒเบเบฒเบ.
เบญเบฐเบเบธเบเบฑเบเบเบตเปเปเบเปเปเบเบทเปเบญเบซเบเบฑเบ? เบญเบฐเบเบธเบเบฑเบเบเบญเบเบเบฑเบเบเบฑเบเบฅเบฑเบเบชเบฐเบเบฐเบญเบฑเบเบเบฒเบเบฒเบเบเปเบฝเบเปเบเบเบเบญเบเบซเบเปเบฒเบเบตเปเปเบฅเบฐเบเบญเบเบเบงเบเปเบฎเบปเบฒเบเบดเบเบเบฒเบเบเบญเบเบกเบฑเบ. เบเปเบฒเบญเบฐเบเบธเบเบฑเบเปเบเบเบธเบเปเบเบเบถเปเบเปเบเบฑเบเบเบงเบ, เบเบฑเบเบเบฑเบเบเบฐเปเบเบตเปเบกเบเบถเปเบ, เบเปเบฒเบเปเปเบเบฑเปเบเบเบฑเปเบ, เบซเบเปเบฒเบเบตเปเบซเบผเบธเบเบฅเบปเบ. เปเบฅเบฐเบซเบผเบฒเบเบกเบนเบเบเปเบฒเบเบญเบเบญเบฐเบเบธเบเบฑเบเบขเปเบฒเบเปเบเปเบเบดเบ, เบญเบฑเบเบเบฒเบเบฒเบเบเปเบฝเบเปเบเบเบเบญเบเบเปเบฒเบเบฑเบเบเบฑเบเบเบตเปเบชเบนเบเบเบถเปเบ, เปเบเบฑเปเบเบเบฝเบงเบเบฑเบเบเบฑเบเบเบงเบฒเบกเบเบฑเบเบเบญเบเบเบฒเบเบเบฑเบเบเบฑเบ.
เบเบปเบงเบขเปเบฒเบ, เบเบฒเบเปเบเปเปเบเบทเปเบญเบเปเบเบเบญเบเบฅเบฐเบเบปเบเบเบฐเบชเบฒเบเบเบฒเบ Cartesian, เบเปเบฒเบเบญเบเบญเบฐเบเบธเบเบฑเบเบเบตเปเบเบธเบ M(0,0) เปเบเบปเปเบฒเบเบฑเบ. + 25 เปเบฒเบ เบเบงเบฒเบกเบงเปเบฒเปเบเบเบธเบเปเบ เปเบถเปเบ, เปเบกเบทเปเบญเบเปเบฒเบเบทเบเบเปเบฝเบ เปเบเบเบฒเบเบเบงเบฒเปเบเบเบซเบปเบงเปเปเบงเบเบเบณเบกเบฐเบเบฒ, เบเปเบฒ โเปเบเบตเปเบกโเบเบถเปเบ 25 เปเปเบงเบโเบเบณโเบกเบฐโเบเบฒ. เปเบเบเบฒเบเบกเบฑเบเปเบเบดเปเบเบเบทเบงเปเบฒเบกเบตเบเปเบฒเปเบเบตเปเบกเบเบถเปเบเบชเบนเบเบซเบผเบฒเบ เบเบฒเบเบเบธเบเปเบเบซเบเบถเปเบ.
เบเบปเบงเบขเปเบฒเบเบญเบทเปเบ. เบเปเบฒเบญเบฐเบเบธเบเบฑเบเปเบกเปเบเปเบเบปเปเบฒเบเบฑเบ -0,1 เบซเบกเบฒเบเบเบงเบฒเบกเบงเปเบฒเปเบกเบทเปเบญเบเบทเบเบเบปเบเบเปเบฒเบ เบเปเปเปเบถเปเบเบซเบปเบงเปเปเบงเบเบเบณเบกเบฐเบเบฒ, เบเปเบฒ เบซเบผเบธเบเบฅเบปเบเบเบฝเบเปเบเป 0,1 เบซเบเปเบงเบเบเปเบฒเบกเบฐเบเบฒ. เปเบเบเบฐเบเบฐเบเบฝเบงเบเบฑเบ, เปเบเบเบฒเบเบเบญเบเบซเบเปเบฒเบเบตเป, เบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเบชเบฑเบเปเบเบเปเบซเบฑเบเบเบงเบฒเบกเบเบฑเบเบฅเบปเบเบฅเบธเปเบกเบเบตเปเบเปเปเบเปเบญเบเบชเบฑเบเปเบเบเปเบซเบฑเบ. เปเบเปเบกเบเบฒเบเบเบฝเบเบเบฝเบเบเบฑเบเบเบนเปเบเบปเบฒ, เบกเบฑเบเบเบทเบเบฑเบเบงเปเบฒเบเบงเบเปเบฎเบปเบฒเบฅเบปเบเบเปเบฒเปเบฅเบปเบเบเบฒเบเบเบนเบเบตเปเบญเปเบญเบเปเบเบ, เบเปเปเบเบทเบเบฑเบเบเบปเบงเบขเปเบฒเบเบเบตเปเบเปเบฒเบเบกเบฒ, เบเปเบญเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบเบตเบเบเบนเบเบตเปเบชเบนเบเบเบฑเบเบซเบผเบฒเบ :)
เบเบฑเปเบเบเบฑเปเบ, เบซเบผเบฑเบเบเบฒเบเบเบงเบฒเบกเปเบเบเบเปเบฒเบเบเบญเบเบซเบเปเบฒเบเบตเป เปเบเบเบเปเปเบฅเบปเบเบฎเบญเบเบเบฑเบ ะธ , เบเบงเบเปเบฎเบปเบฒเบเปเบฒเบเบปเบ 1st order partial equations . เบซเบผเบฑเบเบเบฒเบเบเปเบฒเบเบปเบเบชเบปเบกเบเบปเบ, เบเบงเบเปเบฎเบปเบฒเบเบฐเปเบเปเบฎเบฑเบเบฅเบฐเบเบปเบเบเบญเบเบชเบญเบเบชเบปเบกเบเบปเบ, เปเบเบเบเบฒเบเปเบเปเปเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเบฐเบชเบฒเบกเบฒเบเปเบฅเบทเบญเบเปเบญเบปเบฒเบเปเบฒเบเบฑเปเบเบเปเบฒเบงเบเบญเบเบชเปเบฒเบเบฐเบชเบดเบ. ะธ , เปเบเบดเปเบเบเปเบฒเบเบญเบเบญเบฐเบเบธเบเบฑเบเบเบตเปเบชเบญเบเบเปเบญเบเบเบฑเบเบขเบนเปเปเบเบเบธเบเบเบตเปเปเบซเปเบกเบตเบเบฒเบเบเปเบฝเบเปเบเบเปเบเบเบเบฐเบฅเบดเบกเบฒเบเบซเบเปเบญเบเบซเบผเบฒเบ, เปเบฅเบฐเปเบเบเปเบฅเบฐเบเบตเบเบญเบเบเบฒเบเปเบเปเปเบเบเบฒเบเบงเบดเปเบเบฒเบฐเบเปเปเบเปเบฝเบเปเบเบเบเบฑเบเบซเบกเบปเบ. เปเบเบเปเบฒเบชเบฑเบเบเปเบฒเบเปเบญเบทเปเบเป, เบซเบเปเบฒเบเบตเปเบเบดเบเบเบฒเบเบขเบนเปเบเบตเปเบเบปเบงเบเบนเบเบเบตเปเบเบปเบเปเบซเบฑเบเบเบฐเบเบฑเบเบฅเบธเบเปเบฒเปเบชเบธเบเบเบตเป, เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒเบเปเบฒเบเบญเบเบญเบฐเบเบธเบเบฑเบเบเบฒเบเบชเปเบงเบเบขเบนเปเปเบเบเบธเบเปเบซเบผเบปเปเบฒเบเบตเปเบเบฐเปเบเบปเปเบฒเบเบฑเบเบชเบนเบ.
เบเบฑเปเบเบเบฑเปเบ, เบเบฒเบกเบเบปเบเบฅเบฐเบเบฝเบเบเบญเบเบเบงเบฒเบกเปเบเบเบเปเบฒเบ, เบชเบปเบกเบเบปเบเบญเบฐเบเบธเบเบฑเบเบเบฒเบเบชเปเบงเบเบเบญเบเบเปเบฒเบชเบฑเปเบเบเบต 1 เบเปเบฝเบงเบเบฑเบเบเปเบฒเบชเปเบฒเบเบฐเบชเบดเบ. เบเบฐโเปเบเปโเบฎเบนเบโเปเบเบโ:
เบฅเบณเบเบฑเบเบเบต 1 เบชเบปเบกเบเบปเบเบญเบฐเบเบธเบเบฑเบเบเบฒเบเบชเปเบงเบเบเปเบฝเบงเบเบฑเบ เบเบฐโเปเบเปโเบฎเบนเบโเปเบเบโ:
เบเบฑเปเบเบเบฑเปเบ, เบเบงเบเปเบฎเบปเบฒเปเบเปเบฎเบฑเบเบฅเบฐเบเบปเบเบชเบปเบกเบเบปเบเบเบตเปเบกเบตเบเบฒเบเปเบเปเปเบเบเบฒเบเบงเบดเปเบเบฒเบฐเบเบตเปเบเปเบฒเบเบเบฒเบเบเปเบชเบปเบกเบเบงเบ:
เปเบฅเบตเปเบก{เบชเบปเบกเบเบปเบ*}
เปเบฅเบตเปเบก{เบเปเบฅเบฐเบเบต}
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 โเบเบฒเบเบเบถเปเบเบเบฑเบเบฅเบฒเบเบฎเบฑเบเบเบญเบเปเบเบทเบญเบเบเบญเบเบเบตโ
เบเบฒเบเปเบเปเปเบเบเบฒเบเบงเบดเปเบเบฒเบฐ
เปเบซเปเปเบเปเปเบเบทเปเบญเบเบกเบทเบเบปเปเบงเปเบเบเบตเปเบชเบธเบเปเบ 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 เบเบงเบเปเบฎเบปเบฒเบเบฐเบเบญเบเบซเบฒเบเบปเบงเบเปเบฒเบเบปเบเบเบปเปเบงเปเบ, เปเบเบฑเปเบเบเบฝเบงเบเบฑเบเบเบฑเบเบเบปเบงเบเปเบฒเบเบปเบเปเบเบ เปเบฅเบฐเปเบเบ , เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบเบฒเบเปเบเปเบเบเบปเบงเบเปเบฒเบเบปเบเปเบเบ เปเบเบซเบฒเบเบปเบงเบเปเบฒเบเบปเบเบเบปเปเบงเปเบ - เบเบญเบเบซเบฒเบเปเบฒเบชเปเบฒเบเบฐเบชเบดเบ , เปเบเบฑเปเบเบเบฝเบงเบเบฑเบเบเบงเบเปเบฎเบปเบฒเบเบญเบเบซเบฒเบเปเบฒเบชเปเบฒเบเบฐเบชเบดเบ .
เบฅเบฐเบซเบฑเบเบเบฒเบเปเบเปเปเบเบเบฒเบเบงเบดเปเบเบฒเบฐ
# ะพะฟัะตะดะตะปะธะผ ััะฝะบัะธั ะดะปั ัะฐััะตัะฐ ะบะพัััะธัะธะตะฝัะพะฒ 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)
เบเบตเปเปเบกเปเบเบชเบดเปเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเปเบเปเบฎเบฑเบ:
เบเบฑเปเบเบเบฑเปเบ, เบเปเบฒเบเบญเบเบเปเบฒเบชเปเบฒเบเบฐเบชเบดเบเปเบเปเบเบทเบเบเบปเบเปเบซเบฑเบ, เบเบปเบเบฅเบงเบกเบเบญเบ 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 "เบเปเบฒเบเบญเบเบเบตเปเบเบทเบเบเปเบญเบเปเบฅเบฐเบเปเบฒเบเบงเบ"
เบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเบดเปเบเบเบฒเบเบฐเบฅเบฒเบ 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 โเบเบฒเบเบเปเบฝเบเปเบเบ, %โ
เบเปเปเบชเบปเบกเบเบนเบเปเบเบ, เปเบเปเบเบงเบเปเบฎเบปเบฒเปเบฎเบฑเบเบชเปเบฒเปเบฅเบฑเบเบงเบฝเบเบเบฒเบเบเบญเบเบเบงเบเปเบฎเบปเบฒ.
เปเบซเปเบเบฝเบเบซเบเปเบฒเบเบตเป, เปเบเบทเปเบญเบเปเบฒเบเบปเบเบเปเบฒเบชเปเบฒเบเบฐเบชเบดเบ ะธ เปเบเปเบซเปเบญเบเบชเบฐเบซเบกเบธเบ เบเบปเบงเปเบฅเบ, เบเบฑเบเปเบเบเบเบงเปเบฒเบเบฑเปเบ, เบเบงเบเปเบฎเบปเบฒเบเบฐเบเบฝเบเบชเบญเบเบซเบเปเบฒเบเบตเป: เบซเบเบถเปเบเปเบเป 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
เปเบซเปเบชเบปเบกเบเบฝเบเปเบงเบฅเบฒเบเบตเปเปเบเปเปเบเบเบฒเบเบเปเบฒเบเบปเบเบเปเบฒเบชเปเบฒเบเบฐเบชเบดเบ ะธ , เบญเบตเบเบเบฒเบก 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)
เบเปเบงเบเบเปเปเบกเบนเบเบเปเบฒเบเบงเบเบเปเบญเบเป, เบเบฑเบเบเบฑเบ "เบเบฝเบเบเปเบงเบเบเบปเบเปเบญเบ" เบญเบญเบเบกเบฒเบเปเบญเบ, เปเบเบดเปเบเบเบญเบเบซเบฒเบเปเบฒเบชเปเบฒเบเบฐเบชเบดเบเปเบเบเปเบเปเบงเบดเบเบตเบเบฒเบเบเบญเบ Cramer.
เบเบญเบเบเบตเปเบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเบงเปเบเบชเบนเปเบงเบดเบเบตเบญเบทเปเบเปเบเบทเปเบญเบเบญเบเบซเบฒเบเปเบฒเบชเปเบฒเบเบฐเบชเบดเบเปเบเป ะธ .
Gradient Descent
เบเปเบฒเบญเบดเบ, เปเบซเปเบเปเบฒเบเบปเบเบชเบดเปเบเบเบตเป gradient เปเบกเปเบเบซเบเบฑเบ. เปเบงเบปเปเบฒเบเปเบฒเบเป, gradient เปเบกเปเบเบชเปเบงเบเบเบตเปเบเบตเปเบเบญเบเบเบดเบเบเบฒเบเบเบฒเบเบเบฐเบซเบเบฒเบเบเบปเบงเบชเบนเบเบชเบธเบเบเบญเบเบเบฑเบเบเบฑเบ. เปเบเบเบเบฒเบเบเบฝเบเบเบฝเบเบเบฑเบเบเบฒเบเบเบตเบเบเบน, เบเปเบญเบเบเบตเป gradient เบเบฐเปเบเบตเบเบซเบเปเบฒเปเบกเปเบเบเปเบญเบเบเบตเป steepest เบเบตเบเบเบถเปเบเปเบเบดเบเบเบญเบเบเบนเปเบเบปเบฒ. เบเบฒเบเบเบฑเบเบเบฐเบเบฒเบเบปเบงเบขเปเบฒเบเบเบตเปเบกเบตเบเบนเปเบเบปเบฒ, เบเบงเบเปเบฎเบปเบฒเบเบทเปเปเบงเปเบงเปเบฒเปเบเบเบงเบฒเบกเปเบเบฑเบเบเบดเบเบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบเบฒเบเบเบฒเบเบชเบทเบเปเบเบทเปเบญเบชเบฒเบ steepest เปเบเบเปเบฒเบชเบฑเปเบเบเบตเปเบเบฐเบชเบฒเบกเบฒเบเบเบฑเบเบฅเบธเปเบเบเบเบปเปเบเบเบฝเบเปเบงเปเบเบปเปเบฒเบเบตเปเปเบเบฑเบเปเบเปเบเป, เบเบฑเปเบเปเบกเปเบ, เบเปเบฒเปเบชเบธเบเบเบตเป - เบชเบฐเบเบฒเบเบเบตเปเบเบตเปเบเปเปเบกเบตเบซเบเปเบฒเบเบตเปเปเบเบตเปเบกเบเบถเปเบเบซเบผเบทเบซเบผเบธเบเบฅเบปเบ. เปเบเบเบธเบเบเบตเป, เบญเบฐเบเบธเบเบฑเบเบเบฐเปเบเบปเปเบฒเบเบฑเบเบชเบนเบ. เบเบฑเปเบเบเบฑเปเบ, เบเบงเบเปเบฎเบปเบฒเบเปเปเบเปเบญเบเบเบฒเบ gradient, เปเบเป antigradient. เปเบเบทเปเบญเบเบญเบเบซเบฒ antigradient เบเปเบฒเบเบเบฝเบเปเบเปเบเปเบญเบเบเบฒเบเบเบนเบ gradient เปเบเบ -1 (เบฅเบปเบเบซเบเบถเปเบ).
เปเบซเปเบเบงเบเปเบฎเบปเบฒเปเบญเบปเบฒเปเบเปเบชเปเบเบฑเบเบเบงเบฒเบกเบเบดเบเบเบตเปเบงเปเบฒเบเบฑเบเบเบฑเบเบซเบเบถเปเบเบชเบฒเบกเบฒเบเบกเบตเบซเบผเบฒเบ minima, เปเบฅเบฐเปเบเปเบฅเบปเบเปเบเบซเบฒเบซเบเบถเปเบเปเบเบเบฑเปเบเปเบเบเปเบเป algorithm เบเบตเปเบชเบฐเปเบซเบเบตเบเปเบฒเบเบฅเบธเปเบกเบเบตเป, เบเบงเบเปเบฎเบปเบฒเบเบฐเบเปเปเบชเบฒเบกเบฒเบเบเบญเบเบซเบฒเบเปเบฒเปเบชเบธเบเบเบตเปเบญเบทเปเบ, เปเบเบดเปเบเบญเบฒเบเบเบฐเบเปเปเบฒเบเบงเปเบฒเบเบตเปเบเบปเบ. เปเบซเปเบเปเบญเบเบเบฒเบ, เบเบตเปเบเปเปเปเบกเปเบเปเบเบเบปเปเบกเบเบนเปเบเปเปเบเบงเบเปเบฎเบปเบฒ! เปเบเบเปเบฅเบฐเบเบตเบเบญเบเบเบงเบเปเบฎเบปเบฒเบเบงเบเปเบฎเบปเบฒเบเปเบฒเบฅเบฑเบเบเบฑเบเบเบฒเบเบเบฑเบเบเปเบฒเปเบชเบธเบเบเบตเปเบซเบเบถเปเบ, เบเบฑเบเบเบฑเปเบเปเบเปเบซเบเปเบฒเบเบตเปเบเบญเบเบเบงเบเปเบฎเบปเบฒ เปเบเปเบชเบฑเปเบเบชเบฐเปเบเบเปเบกเปเบ parabola เบเบปเบเบเบฐเบเบด. เปเบฅเบฐเบเบฑเปเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเบธเบเบเบปเบเบเบงเบเบฎเบนเปเบเบตเบเบฒเบเบซเบผเบฑเบเบชเบนเบเบเบฐเบเบดเบเบชเบฒเบเบเบญเบเปเบฎเบเบฎเบฝเบเบเบญเบเบเบงเบเปเบฎเบปเบฒ, parabola เบกเบตเบเบฝเบเปเบเปเบซเบเบถเปเบเบเปเบฒเปเบชเบธเบเบเบตเป.
เบซเบผเบฑเบเบเบฒเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเบปเปเบเบเบปเบเบงเปเบฒเปเบเบฑเบเบซเบเบฑเบเบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบเบฒเบ gradient, เปเบฅเบฐเบญเบตเบเบงเปเบฒ gradient เปเบกเปเบเบชเปเบงเบเบซเบเบถเปเบ, เบเบฑเปเบเปเบกเปเบ, vector เบเบตเปเบกเบตเบเบธเบเบเบฐเบชเบฒเบเบเบฒเบเบเบตเปเปเบซเป, เบเบถเปเบเปเบเบฑเบเบเปเบฒเบชเปเบฒเบเบฐเบชเบดเบเบเบฝเบงเบเบฑเบเบเบตเปเบเบฑเบเปเบเบ. ะธ เบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเบเบฐเบเบดเบเบฑเบเบเบฒเบเบชเบทเบเปเบเบทเปเบญเบชเบฒเบ gradient.
เบเปเบญเบเบเบตเปเบเบฐเปเบฅเบตเปเบกเบเบปเปเบ, เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเบฐเบเปเบฒเปเบซเปเบญเปเบฒเบเบเบฝเบเปเบเปเบชเบญเบเบชเบฒเบกเบเบฐเปเบซเบเบเบเปเบฝเบงเบเบฑเบเบชเบนเบเบเบฒเบเบชเบทเบเปเบเบทเปเบญเบชเบฒเบ:
- เบเบงเบโเปเบฎเบปเบฒโเบเปเบฒโเบเบปเบโเปเบโเบฅเบฑเบโเบชเบฐโเบเบฐ pseudoโ-random เบเบฒเบโเบเบฐโเบชเบฒเบโเบเบฒเบโเบเบญเบโเบชเปเบฒโเบเบฐโเบชเบดเบโ ะธ . เปเบเบเบปเบงเบขเปเบฒเบเบเบญเบเบเบงเบเปเบฎเบปเบฒ, เบเบงเบเปเบฎเบปเบฒเบเบฐเบเปเบฒเบเบปเบเบเปเบฒเบชเปเบฒเบเบฐเบชเบดเบเบขเบนเปเปเบเปเบเบฑเบเบชเบนเบ. เบเบตเปเปเบกเปเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบปเปเบงเปเบ, เปเบเปเปเบเปเบฅเบฐเบเปเบฅเบฐเบเบตเบญเบฒเบเบเบฐเบกเบตเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบญเบเบเบปเบเปเบญเบ.
- เบเบฒเบเบเบฒเบเบเบฐเบชเบฒเบเบเบฒเบ เบซเบฑเบเบเปเบฒเบเบญเบเบญเบฐเบเบธเบเบฑเบเบชเปเบงเบเปเบถเปเบเบเบญเบเบฅเบณเบเบฑเบเบเบต 1 เบขเบนเปเบเบธเบ . เบเบฑเปเบเบเบฑเปเบ, เบเปเบฒเบญเบฐเบเบธเบเบฑเบเปเบกเปเบเบเบงเบ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบซเบเปเบฒเบเบตเปเปเบเบตเปเบกเบเบถเปเบ. เบเบฑเปเบเบเบฑเปเบ, เปเบเบเบเบฒเบเบซเบฑเบเบเปเบฒเบเบญเบเบญเบฐเบเบธเบเบฑเบ, เบเบงเบเปเบฎเบปเบฒเบเบฐเบเปเบฒเบงเปเบเปเบเบเบดเบเบเบฒเบเบเบปเบเบเบฑเบเบเปเบฒเบกเบเบญเบเบเบฒเบเปเบเบตเบเปเบ, เบเบฑเปเบเปเบกเปเบ, เปเบเบเบดเบเบเบฒเบเบเบญเบเบเบฒเบเบชเบทเบเปเบเบทเปเบญเบชเบฒเบ. เบเปเบฒเบญเบฐเบเบธเบเบฑเบเปเบเบฑเบเบฅเบปเบ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบซเบเปเบฒเบเบตเปเบขเบนเปเปเบเบเบธเบเบเบตเปเบซเบผเบธเบเบฅเบปเบเปเบฅเบฐเปเบเบเบเบฒเบเบซเบฑเบเบเปเบฒเบเบญเบเบญเบฐเบเบธเบเบฑเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเปเบฒเบเบญเบญเบเปเบเปเบเบเบดเบเบเบฒเบเบเบญเบเบเบฒเบเบชเบทเบเปเบเบทเปเบญเบชเบฒเบ.
- เบเบงเบเปเบฎเบปเบฒเบเบฐเบเบดเบเบฑเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบฒเบเบเบตเปเบเปเบฒเบเบเบทเบเบฑเบเบเบฑเบเบเบฒเบเบเบฐเบชเบฒเบเบเบฒเบ : เบฅเบปเบเบเปเบฒเบเบญเบเบญเบฐเบเบธเบเบฑเบเบเบฒเบเบชเปเบงเบเบขเบนเปเบเบตเปเบเบธเบ .
- เปเบเบเปเบฒเบชเบฑเปเบเบเบตเปเบเบฐเบเปเปเปเบเบฑเปเบเปเบเบซเบฒเบเปเบฒเปเบชเบธเบเบเบตเปเปเบฅเบฐเบเบดเบเปเบเบปเปเบฒเปเบเปเบเบเปเบญเบเปเบฅเบดเบ, เบกเบฑเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเปเบเปเบฒเบเบปเบเบเบฐเบซเบเบฒเบเบเบฑเปเบเบเบญเบเปเบเบเบดเบเบเบฒเบเบเบญเบเบเบฒเบเบชเบทเบเปเบเบทเปเบญเบชเบฒเบ. เปเบเบเบเบปเปเบงเปเบ, เบเปเบฒเบเบชเบฒเบกเบฒเบเบเบฝเบเบเบปเบเบเบงเบฒเบกเบเบฑเบเบซเบกเบปเบเบเปเบฝเบงเบเบฑเบเบงเบดเบเบตเบเบฒเบเบเปเบฒเบเบปเบเบเบฑเปเบเบเบญเบเบขเปเบฒเบเบเบทเบเบเปเบญเบเปเบฅเบฐเบงเบดเบเบตเบเบฒเบเบเปเบฝเบเบกเบฑเบเปเบเบฅเบฐเบซเบงเปเบฒเบเบเบฒเบเบเบฐเบเบงเบเบเบฒเบเบชเบทเบเปเบเบทเปเบญเบชเบฒเบเปเบเบทเปเบญเบซเบผเบธเบเบเปเบญเบเบเปเบฒเปเบเปเบเปเบฒเบเปเบเบเบญเบกเบเบดเบงเปเบเบตเป. เปเบเปเปเบเบเบฑเบเบเบธเบเบฑเบเบเบงเบเปเบฎเบปเบฒเบกเบตเบงเบฝเบเบเบฒเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบเปเบฅเบฑเบเบเปเบญเบเบขเบนเปเบเปเบฒเบเบซเบเปเบฒเบเบญเบเบเบงเบเปเบฎเบปเบฒ, เปเบฅเบฐเบเบงเบเปเบฎเบปเบฒเบเบฐเบชเปเบฒเบเบเบฐเบซเบเบฒเบเบเบฑเปเบเบเบญเบเปเบเบเปเบเปเบงเบดเบเบตเบเบฒเบเบงเบดเบเบฐเบเบฒเบชเบฒเบเบเบญเบ "poke" เบซเบผเบท, เบเปเบญเบเบงเปเบฒเบเบงเบเปเบเบปเบฒเปเบงเบปเปเบฒเปเบเบเปเบฒเบชเบฑเบเบเบปเปเบงเปเบ, เปเบเบเบฒเบเบเบดเบเบชเบฐเบเบต.
- เปเบกเบทเปเบญเบเบงเบเปเบฎเบปเบฒเบกเบฒเบเบฒเบเบเบธเบเบเบฐเบชเบฒเบเบเบฒเบ ะธ เบฅเบปเบเบเปเบฒเบเบญเบเบญเบฐเบเบธเบเบฑเบ, เบเบงเบเปเบฎเบปเบฒเปเบเปเบฎเบฑเบเบเบฒเบเบเบฐเบชเบฒเบเบเบฒเบเปเบซเบกเป ะธ . เบเบงเบเปเบฎเบปเบฒเปเบญเบปเบฒเบเบฑเปเบเบเบญเบเบเปเปเปเบ (เบเบฒเบเบฅเบปเบ), เปเบฅเปเบงเบเบฒเบเบเบธเบเบเบฐเบชเบฒเบเบเบฒเบเบเบตเปเบเบดเบเปเบฅเป. เปเบฅเบฐเบเบฑเปเบเบเบฑเปเบเบงเบปเบเบเบญเบเปเบฅเบตเปเบกเบเบปเปเบเบญเบตเบเปเบเบทเปเบญเบซเบเบถเปเบเปเบฅเบฐเบญเบตเบเปเบเบทเปเบญเบซเบเบถเปเบ, เบเบปเบเบเปเบงเบฒ 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
เบเบงเบโเปเบฎเบปเบฒโเปเบเปโเบเบณโเบฅเบปเบโเปเบโเบชเบนเปโเบฅเบธเปเบกโเบชเบธเบโเบเบญเบ Mariana Trench เปเบฅเบฐโเบขเบนเปโเบเบตเปโเบเบฑเปเบ เบเบงเบโเปเบฎเบปเบฒโเปเบเปโเบเบปเบโเปเบซเบฑเบโเบเปเบฒโเบชเบณโเบเบฐโเบชเบดเบโเบเบฝเบงโเบเบฑเบโเบเบฑเบโเปเบปเบ ะธ , เบเบถเปเบเปเบเบฑเบเบชเบดเปเบเบเบตเปเบเบฒเบเบซเบงเบฑเบ.
เบเบฒเบเบฑเบเปเบเบเบณเบเปเบณเบญเบตเบ, เบชเบฐเปเบเบฒเบฐเบเปเบงเบเบเบตเปเบฅเบปเบเบเปเบณเปเบฅเบดเบเบเบญเบเบเบงเบเปเบฎเบปเบฒเบเบฐเปเบเบฑเบกเปเบเบเปเบงเบเปเบเบฑเบเปเบเปเบฅเบเบตเบญเบทเปเบเปเบเบทเบซเปเบชเบฐเปเบธเบ. เบเบปเบงเปเบฅเบ.
เบฅเบฐเบซเบฑเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบชเบทเบเปเบเบทเปเบญเบชเบฒเบ (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
เบเปเบฒเบชเบณเบเบฐเบชเบดเบ ะธ เบเปเบฝเบเปเบเบเบเปเปเปเบเป.
เบเปเปเบซเปเปเบเบดเปเบเบงเบดเบเบตเบเบฒเบเบเบตเปเบเบงเบฒเบกเบเบดเบเบเบฒเบเปเบเปเบเปเบฝเบเปเบเบเปเบเบฅเบฐเบซเบงเปเบฒเบเบเบฒเบเบชเบทเบเปเบเบทเปเบญเบชเบฒเบ 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โ
เปเบเบเบฒเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเปเบซเบฑเบเบงเปเบฒเปเบเปเบเปเบฅเบฐเบเบฑเปเบเบเบญเบเบเบงเบฒเบกเบเบดเบเบเบฒเบเบซเบผเบธเบเบฅเบปเบ, เปเบฅเบฐเบซเบผเบฑเบเบเบฒเบเบเปเบฒเบเบงเบเบเบตเปเปเบเปเบเบญเบเบเบญเบ 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 linear เบเปเบฒเบเบเบฒเบ. เบเบปเบเบเบฑเบ!
Stochastic gradient descent
เปเบเบทเปเบญเปเบซเปเปเบเบปเปเบฒเปเบเปเบเบดเบเบซเบผเบฑเบเบเบฒเบเบเบญเบเบเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเบเบญเบเบเบฒเบเบชเบทเบเปเบเบทเปเบญเบชเบฒเบ gradient stochastic, เบกเบฑเบเบเบตเบเบงเปเบฒเบเบตเปเบเบฐเบเปเบฒเบเบปเบเบเบงเบฒเบกเปเบเบเบเปเบฒเบเบเบญเบเบกเบฑเบเบเบฒเบเบเบฒเบเบชเบทเบเปเบเบทเปเบญเบชเบฒเบ gradient เบเบปเปเบงเปเบ. เบเบงเบเปเบฎเบปเบฒ, เปเบเบเปเบฅเบฐเบเบตเบเบญเบเบเบฒเบเบชเบทเบเปเบเบทเปเบญเบชเบฒเบ gradient, เปเบเบชเบปเบกเบเบปเบเบเบญเบเบญเบฐเบเบธเบเบฑเบเบเบญเบ ะธ เปเบเปเบเปเบฒเปเบเปเบเบปเบเบฅเบงเบกเบเบญเบเบเปเบฒเบเบญเบเบฅเบฑเบเบชเบฐเบเบฐเบเบฑเบเบซเบกเบปเบเปเบฅเบฐเบเปเบฒเบเบญเบเบเบตเปเปเบเปเบเบดเบเบเบตเปเบกเบตเบขเบนเปเปเบเบเบปเบงเบขเปเบฒเบ (เบเบฑเปเบเปเบกเปเบ, เบเบปเบเบฅเบงเบกเบเบญเบเบเบฑเบเบซเบกเบปเบ. ะธ ). เปเบ stochastic gradient descent, เบเบงเบเปเบฎเบปเบฒเบเบฐเบเปเปเบเปเบฒเปเบเปเบเปเบฒเบเบฑเบเบซเบกเบปเบเบเบตเปเบกเบตเบขเบนเปเปเบเบเบปเบงเบขเปเบฒเบ, เปเบเปเปเบเบเบเบตเปเบเบฐ, pseudo-random เปเบฅเบทเบญเบเบญเบฑเบเบเบตเปเปเบญเบตเปเบเบงเปเบฒเบเบฑเบเบเบฐเบเบตเบเบปเบงเบขเปเบฒเบเปเบฅเบฐเบเปเบฒเปเบเปเบเปเบฒเบเบญเบเบกเบฑเบ.
เบเบปเบงเบขเปเบฒเบ, เบเปเบฒเบเบฑเบเบเบฐเบเบตเบเบทเบเบเปเบฒเบเบปเบเบงเปเบฒเปเบเบฑเบเบเบปเบงเปเบฅเบ 3 (เบชเบฒเบก), เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบงเบเปเบฎเบปเบฒเปเบญเบปเบฒเบเปเบฒ ะธ , เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบงเบเปเบฎเบปเบฒเบเบปเบเปเบเบเบเปเบฒเปเบเบปเปเบฒเปเบเปเบเบชเบปเบกเบเบปเบเบญเบฐเบเบธเบเบฑเบเปเบฅเบฐเบเปเบฒเบเบปเบเบเบธเบเบเบฐเบชเบฒเบเบเบฒเบเปเบซเบกเป. เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เปเบเบเปเบเปเบเปเบฒเบเบปเบเบเบธเบเบเบฐเบชเบฒเบเบเบฒเบ, เบเบงเบเปเบฎเบปเบฒเบญเบตเบเปเบเบทเปเบญเบซเบเบถเปเบ pseudo-random เบเปเบฒเบเบปเบเบเบฑเบเบเบฐเบเบตเบเบปเบงเบขเปเบฒเบ, เบเบปเบเปเบเบเบเปเบฒเบเบตเปเบชเบญเบเบเปเบญเบเบเบฑเบเบเบฑเบเบเบฑเบเบเบฐเบเบตเปเบเบปเปเบฒเปเบเปเบเบชเบปเบกเบเบปเบเบเบงเบฒเบกเปเบเบเบเปเบฒเบเบเบฒเบเบชเปเบงเบ, เปเบฅเบฐเบเปเบฒเบเบปเบเบเบธเบเบเบฐเบชเบฒเบเบเบฒเบเปเบเบฎเบนเบเปเบเบเปเบซเบกเป. ะธ เปเบฅเบฐเบญเบทเปเบเป เบเบปเบเบเปเบงเบฒ 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])
เบเบงเบเปเบฎเบปเบฒเปเบเบดเปเบเบเปเบฒเบชเปเบฒเบเบฐเบชเบดเบเบขเปเบฒเบเบฅเบฐเบกเบฑเบเบฅเบฐเบงเบฑเบเปเบฅเบฐเบเบฑเบเบเบปเบงเปเบฎเบปเบฒเปเบญเบเบเบฒเบกเบเปเบฒเบเบฒเบก "เบกเบฑเบเปเบเบฑเบเปเบเปเบเปเปเบเบงเปเบ?" เบเบงเบเปเบฎเบปเบฒเปเบเปเบฎเบฑเบเบเปเบฒเบชเปเบฒเบเบฐเบชเบดเบเบญเบทเปเบเป ะธ . เบเบฒเบเบเบตเบเบฒเบเบชเบทเบเปเบเบทเปเบญเบชเบฒเบ 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โ
เบเบญเบเบซเบฒเบขเบนเปเปเบเบเบฒเบเบฐเบฅเบฒเบ, เบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเบเบปเบเปเบเบปเปเบฒเปเบเปเบเบชเบฐเบเบฒเบเบเบตเปเปเบฅเบฐเปเบเบเบฑเบเบเบธเบเบฑเบเบเบงเบเปเบฎเบปเบฒเบเบฐเปเบเปเปเบเบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบ.
เบเบฑเปเบเบเบฑเปเบเบชเบดเปเบเบเบตเปเปเบเบตเบเบเบถเปเบ? เบเปเปเปเบเบเบตเปเปเบเบตเบเบเบถเปเบ. เปเบกเบทเปเบญเบเบงเบเปเบฎเบปเบฒเปเบฅเบทเบญเบเปเบเบทเบญเบเปเบเบเบชเบธเปเบก, เบกเบฑเบเปเบกเปเบเบชเปเบฒเบฅเบฑเบเปเบเบทเบญเบเบเบตเปเปเบฅเบทเบญเบเบเบตเป 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()
เปเบชเบฑเปเบเบชเบฐเปเบเบเบเบต 6 โเบเบปเบเบฅเบงเบกเบเบญเบเบเบฒเบเบเปเบฝเบเปเบเบเบชเบตเปเบซเบผเปเบฝเบกเบฅเบฐเบซเบงเปเบฒเบเบเบฒเบเบชเบทเบเปเบเบทเปเบญเบชเบฒเบ gradient stochastic (80 เบเบฑเบเบเบฑเปเบเบเบญเบ)โ
เบเปเบฒเบชเปเบฒเบเบฐเบชเบดเบเปเบเปเบฎเบฑเบเบเบฒเบเบเบฑเบเบเบธเบ, เปเบเปเบเบฑเบเบเปเปเปเบซเบกเบฒเบฐเบชเบปเบก. เปเบเบเบชเบปเบกเบกเบธเบเบเบดเบเบฒเบ, เบเบตเปเบชเบฒเบกเบฒเบเบเบทเบเปเบเปเปเบเบเปเบงเบเบงเบดเบเบตเบเบตเป. เบเบงเบเปเบฎเบปเบฒเปเบฅเบทเบญเบเปเบญเบปเบฒ, เบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบปเบเบเบปเบงเบขเปเบฒเบ, เปเบ 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 เบเบฑเปเบเบเบญเบเบเบณเบญเบดเบ)โ
เบเบฃเบฒเบเปเบฅเบ 8 โเบเบปเบเบฅเบงเบกเบเบญเบเบเบฒเบเบเปเบฝเบเปเบเบเบชเบตเปเบซเบผเปเบฝเบก SGD (1000 เบเบฑเปเบเบเบญเบเบชเบธเบเบเปเบฒเบ)โ
เปเบเบเบญเบเปเบฅเบตเปเบกเบเบปเปเบเบเบญเบเบเบฒเบเบชเบทเบเปเบเบทเปเบญเบชเบฒเบ, เบเบงเบเปเบฎเบปเบฒเบชเบฑเบเปเบเบเปเบซเบฑเบเบเบงเบฒเบกเปเบเบฑเบเปเบญเบเบฐเบเบฒเบเบเบตเปเบเปเบญเบเบเปเบฒเบเปเบฅเบฐเบเบงเบฒเบกเบเบดเบเบเบฒเบเบเบตเปเบซเบผเบธเบเบฅเบปเบ. เปเบ iterations เบเบตเปเบเปเบฒเบเบกเบฒ, เบเบงเบเปเบฎเบปเบฒเปเบซเบฑเบเบงเปเบฒเบเบงเบฒเบกเบเบดเบเบเบฒเบเปเบเบเบฐเบกเบฒเบเปเบฅเบฐเบเบฐเบกเบฒเบเบเปเบฒเบเบญเบ 1,475 เปเบฅเบฐเปเบเบเบฒเบเบเปเบงเบเปเบงเบฅเบฒเปเบเบดเบเปเบกเปเบเบงเปเบฒเปเบเบปเปเบฒเบเบฑเบเบกเบนเบเบเปเบฒเบเบตเปเบเบตเบเบตเปเบชเบธเบเบเบตเป, เปเบเปเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบกเบฑเบเบเบฑเบเบเบถเปเบ ... เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบฎเบฑเบเบเปเปเบฒ, เบเปเบฒเบเบชเบฒเบกเบฒเบเบเบฝเบเบฅเบปเบเบเปเบฒเบเบญเบ. เบเปเบฒเบชเปเบฒเบเบฐเบชเบดเบ ะธ , เปเบฅเบฐเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเปเบฅเบทเบญเบเปเบญเบปเบฒเบชเบดเปเบเบเบตเปเบเบงเบฒเบกเบเบดเบเบเบฒเบเปเบกเปเบเบซเบเปเบญเบเบเบตเปเบชเบธเบ. เบขเปเบฒเบเปเบเบเปเปเบเบฒเบก, เบเบงเบเปเบฎเบปเบฒเบกเบตเบเบฑเบเบซเบฒเบเบตเปเบฎเปเบฒเบเปเบฎเบเบเบงเปเบฒเปเบเบปเปเบฒ: เบเบงเบเปเบฎเบปเบฒเบเปเบญเบเปเบเปเปเบงเบฅเบฒ 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
เบเปเบฒเปเบเปเบซเบฑเบเบญเบญเบเปเบเบทเบญเบเบเบทเบเบฑเบเบเบฑเบเปเบงเบฅเบฒเบเบตเปเบซเบผเบธเบเบฅเบปเบเปเบเบเบเปเปเบกเบตเบเบฒเบเบเปเบฒเปเบเป เบเบปเบงเปเบฅเบ. เบขเปเบฒเบเปเบเบเปเบเบฒเบก, เบเบตเปเปเบกเปเบเปเบซเบเบเบปเบ.
เปเบซเปเปเบฎเบปเบฒเบฎเบนเปเบงเปเบฒเบเบฒเบเบชเบทเบเปเบเบทเปเบญเบชเบฒเบ 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)
เบเบดเปเบเปเบเบปเปเบฒเปเบเปเบเบเปเบฒ, เปเบกเบเบเบตเปเบกเบทเบเบฅเบปเบเบซเบผเบฒเบ: เบญเบตเบเปเบเบทเปเบญเบซเบเบถเปเบ, เบชเบนเบ "เบเบฝเบเบเปเบงเบเบเบปเบเปเบญเบ" เบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเบเบปเบเปเบเปเบฎเบฑเบเบเบตเปเบเบตเบเบตเปเบชเบธเบ. เบเบฑเบโเบซเบกเบปเบโเบเบตเปโเบชเบฐโเปเบเบโเปเบซเปโเปเบซเบฑเบโเบงเปเบฒโเบเบฐโเบเปเบญเบโเบกเบตโเบงเบดโเบเบตโเบเบฒเบโเบเบตเปโเบญเปเบญเบโเปเบเบโเบซเบผเบฒเบโเบเบงเปเบฒโเบเบตเปโเบเบฐโเบเปเบฒโเปเบเปโเบซเปเบญเบโเบชเบฐโเบซเบกเบธเบโเปเบเปโ เบเบปเบงเปเบฅเบ, เปเบเบดเปเบเบเปเปเปเบฅเบฑเปเบเบเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเบเบฒเบเบเบดเบเปเบฅเป. เปเบเบเบปเบเบเบงเบฒเบกเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเบฐเบเปเปเปเบเปเบฎเบฝเบเบฎเบนเปเบเปเบฝเบงเบเบฑเบเบเบงเบเบกเบฑเบ. เบเบฐเบกเบตเบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบเบเบตเปเบเบฐเบเบดเบเบเปเบฝเบงเบเบฑเบเปเบงเบฅเบฒเบซเบงเปเบฒเบเบเบญเบเปเบเบปเปเบฒ :)
เบชเบฐเบซเบผเบธเบ
เบเปเบญเบเบเบตเปเบเบฐเบชเบฐเบซเบผเบธเบ, เบเปเบฒเบเบฐเปเบเบปเปเบฒเบขเบฒเบเบเบญเบเบเปเบฒเบเบฒเบกเบเบตเปเบญเบฒเบเบเบฐเปเบเบตเบเบเบทเปเบเบเบฒเบเบเบนเปเบญเปเบฒเบเบเบตเปเบฎเบฑเบเปเบเบเบเบญเบเบเบงเบเปเบฎเบปเบฒ. เปเบเบฑเบเบซเบเบฑเบ, เปเบเบเบงเบฒเบกเปเบเบฑเบเบเบดเบ, "เบเบฒเบเบเปเบฅเบฐเบกเบฒเบ" เบเบฑเปเบเบเปเบฒเบงเบเบฑเบเบเบนเปเบชเบทเบเปเบเบทเปเบญเบชเบฒเบ, เปเบเบฑเบเบซเบเบฑเบเบเบงเบเปเบฎเบปเบฒเบเปเบฒเปเบเบฑเบเบเปเบญเบเบเปเบฒเบเบเบถเปเบเปเบฅเบฐเบฅเบปเบเบเบนเปเบเบปเบฒ (เบชเปเบงเบเบซเบผเบฒเบเปเบกเปเบเบฅเบปเบ) เปเบเบทเปเบญเบเบญเบเบซเบฒเปเบเบเบเบปเปเบเบเบฝเบเบเบตเปเบชเบปเบกเบเบฝเบ, เบเปเบฒเบเบงเบเปเบฎเบปเบฒเบกเบตเบญเบธเบเบฐเบเบญเบเบเบตเปเบกเบตเบเบฐเบชเบดเบเบเบดเบเบฒเบเปเบฅเบฐเบเปเบฒเบเบเบฒเบ, เบขเบนเปเปเบเบกเบทเบเบญเบเบเบงเบเปเบฎเบปเบฒ. เบฎเบนเบโเปเบเบโเบเบฒเบโเปเบเปโเปเบโเบเบฒเบโเบงเบดโเปเบเบฒเบฐโ, เบเบตเป instantly teleports เบเบงเบโเปเบฎเบปเบฒโเบเบฑเบโเบชเบฐโเบเบฒเบโเบเบตเปโเบชเบดเบโ?
เบเปเบฒเบเบญเบเบเบญเบเบเปเบฒเบเบฒเบกเบเบตเปเปเบกเปเบเบขเบนเปเปเบเบซเบเปเบฒเบเบดเบ. เบเบญเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเปเบเปเปเบเบดเปเบเบเบปเบงเบขเปเบฒเบเบเบตเปเบเปเบฒเบเบเบฒเบเบซเบผเบฒเบ, เปเบเบดเปเบเบเปเบฒเบเบญเบเบเบตเปเปเบเปเบเบดเบเปเบกเปเบ เบเบถเปเบเบเบฑเบเบซเบเบถเปเบเบญเบฒเบเบฒเบ . เปเบเบปเปเบฒเบเปเปเปเบซเบฑเบเบชเบดเปเบเบเบตเปเปเบฅเบทเปเบญเบเปเปเบเบเบตเบงเบดเบ, เบชเบฐเบเบฑเปเบเปเบซเปเบเบดเบเบเบฐเบเบฒเบเบฒเบเบงเปเบฒเบเบงเบเปเบฎเบปเบฒเบกเบต 2, 30, 50 เบซเบผเบทเบซเบผเบฒเบเบเบงเปเบฒเบเบฑเปเบ. เบเปเปเบซเปเปเบเบตเปเบกเบกเบนเบเบเปเบฒเบซเบฅเบฒเบเบเบฑเบเบเบตเป, เบซเบผเบทเปเบกเปเบเบฐเบเบฑเปเบเบซเบฅเบฒเบเบชเบดเบเบเบฑเบเบเปเบฒเบชเปเบฒเบฅเบฑเบเปเบเปเบฅเบฐเบเบธเบเบฅเบฑเบเบชเบฐเบเบฐ. เปเบเบเปเบฅเบฐเบเบตเบเบตเป, เบเบฒเบเปเบเปเปเบเบเบฒเบเบงเบดเปเบเบฒเบฐเบญเบฒเบเบเบฐเบเปเปเบเบปเบเบเบฑเบเบเบฒเบเบเบปเบเบชเบญเบเปเบฅเบฐเบฅเบปเปเบกเปเบซเบฅเบง. เปเบเบเบฒเบเบเบฑเบเบเบฑเบ, เบเบฒเบเบชเบทเบเปเบเบทเปเบญเบชเบฒเบ gradient เปเบฅเบฐเบเบฒเบเบเปเบฝเบเปเบเบเบเบญเบเบกเบฑเบเบเบฐเบเปเบฒเปเปเบเปเปเบเปเบเบญเบเปเบฎเบฑเบเปเบซเปเบเบงเบเปเบฎเบปเบฒเปเบเปเบเบดเบเบเบฑเบเปเบเบปเปเบฒเบซเบกเบฒเบ - เบเปเบฒเปเบชเบธเบเบเบตเปเบเบญเบเบซเบเปเบฒเบเบตเป. เปเบฅเบฐเบเปเปเบเปเบญเบเบเบฑเบเบงเบปเบเบเปเบฝเบงเบเบฑเบเบเบงเบฒเบกเปเบง - เบเบงเบเปเบฎเบปเบฒเบญเบฒเบเบเบฐเปเบเบดเปเบเบงเบดเบเบตเบเบฒเบเบเบตเปเบเบฐเบเปเบงเบเปเบซเปเบเบงเบเปเบฎเบปเบฒเบเปเบฒเบเบปเบเปเบฅเบฐเบเบงเบเบเบธเบกเบเบงเบฒเบกเบเบฒเบงเบเบญเบเบเบฑเปเบเบเบญเบ (เบเบทเบเบงเบฒเบกเปเบง).
เปเบฅเบฐเบเบญเบเบเบตเปเบเบปเบเบชเบฐเบซเบผเบธเบเบชเบฑเปเบเปเบเบปเบงเบเบดเบ.
เบเปเบญเบเบญเบทเปเบ เปเบปเบ, เบเปเบฒเบเบฐเปเบเบปเปเบฒเบซเบงเบฑเบเบงเปเบฒเปเบญเบเบฐเบชเบฒเบเบเบตเป เบเบณ เบชเบฐ เปเปเบต เปเบเบเบปเบเบเบฝเบเบเบฐเบเปเบงเบเปเบฅเบตเปเบกเบเบปเปเบ "เบเบฑเบเบงเบดเบเบฐเบเบฒเบชเบฒเบเบเปเปเบกเบนเบ" เปเบเบเบฒเบเปเบเบปเปเบฒเปเบเบงเบดเบเบตเบเบฒเบเปเบเปเปเบเบชเบปเบกเบเบปเบเบเบฒเบเบเบปเบเบเบญเบเปเบเบเปเบชเบฑเปเบเปเบเบเบเปเบฒเบเบเบฒเบ (เปเบฅเบฐเบเปเปเบเบฝเบเปเบเป).
เบญเบฑเบเบเบตเบชเบญเบ, เบเบงเบเปเบฎเบปเบฒเปเบเปเปเบเบดเปเบเบซเบผเบฒเบเบงเบดเบเบตเปเบเบทเปเบญเปเบเปเปเบเบชเบปเบกเบเบปเบ. เปเบเบเบฑเบเบเบธเบเบฑเบ, เบญเบตเบเบเบฒเบกเบชเบฐเบเบฒเบเบฐเบเบฒเบ, เบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเปเบฅเบทเบญเบเปเบญเบปเบฒเบซเบเบถเปเบเบเบตเปเปเบซเบกเบฒเบฐเบชเบปเบกเบเบตเปเบชเบธเบเปเบเบทเปเบญเปเบเปเปเบเบเบฑเบเบซเบฒ.
เบญเบฑเบเบเบตเบชเบฒเบก, เบเบงเบเปเบฎเบปเบฒเปเบเปเปเบซเบฑเบเบเบฐเบฅเบฑเบเบเบฒเบเบเบญเบเบเบฒเบเบเบฑเปเบเบเปเบฒเปเบเบตเปเบกเปเบเบตเบก, เบเบทเบเบงเบฒเบกเบเบฒเบงเบเบญเบเบเบฑเปเบเบเบญเบเบเบฒเบเบชเบทเบเปเบเบทเปเบญเบชเบฒเบ gradient. เบเบฒเบฅเบฒเบกเบดเปเบเบตเบเบตเปเบเปเปเบชเบฒเบกเบฒเบเบเบทเบเบฅเบฐเปเบฅเบตเบ. เบเบฑเปเบเบเบตเปเปเบเปเบเปเบฒเบงเปเบงเปเบเปเบฒเบเปเบเบดเบ, เปเบเบทเปเบญเบซเบผเบธเบเบเปเบญเบเบเปเบฒเปเบเปเบเปเบฒเบเปเบเบเบฒเบเบเบดเบเปเบฅเป, เบเบงเบฒเบกเบเบฒเบงเบเบญเบเบเบฑเปเบเบเบญเบเบเบงเบเปเบเปเบฎเบฑเบเบเบฒเบเบเปเบฝเบเปเบเบเปเบเบฅเบฐเบซเบงเปเบฒเบเบเบฒเบเบชเบทเบเปเบเบทเปเบญเบชเบฒเบ.
เบญเบฑเบเบเบตเบชเบตเป, เปเบเบเปเบฅเบฐเบเบตเบเบญเบเบเบงเบเปเบฎเบปเบฒ, เบซเบเปเบฒเบเบตเป "เบเบฝเบเบขเบนเปเปเบฎเบทเบญเบ" เบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเบเบปเบเปเบเปเบฎเบฑเบเบเบตเปเบเบตเบเบตเปเบชเบธเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบดเบเปเบฅเป. เบญเบฑเบเบเบตเปเบญเบฒเบเบเบฐเปเบเบฑเบเบเปเบญเบเบเปเปเปเบกเปเบเบเบฒเบเปเบเปเบเบงเบฒเบกเบชเบฒเบกเบฒเบเบเบญเบเบซเปเบญเบเบชเบฐเปเบธเบเบเบตเปเปเบเบฑเบเบกเบทเบญเบฒเบเบตเบเบเบตเปเบชเบธเบ เบเบปเบงเปเบฅเบ. เปเบเปเปเบเบฑเบเปเบเปเบเป, เบชเบฐเบซเบผเบธเบเบเปเปเปเบเบเบตเปเบเบตเปเปเบซเปเปเบซเบฑเบเบเบปเบงเบกเบฑเบเปเบญเบ. เปเบเบญเบตเบเบเปเบฒเบเบซเบเบถเปเบ, เบเบฒเบเบเบฑเปเบเบกเบฑเบเบเปเปเบเบธเปเบกเบเปเบฒเบเบตเปเบเบฐเบเบฒเบกเบเบงเบฒเบกเบเบดเบเปเบซเบฑเบเบเบตเปเบเบทเบเบชเปเบฒเบเบเบฑเปเบเบเบทเปเบ, เปเบฅเบฐเบญเบตเบเบเปเบฒเบเบซเบเบถเปเบ, เบกเบฑเบเบเปเปเบชเบปเบกเบเบงเบเบเบตเปเบเบฐเบชเบฑเบเบชเบปเบเบเบธเบเบขเปเบฒเบ - เปเบเบเบฒเบเบเบปเบเบเบฑเบเบเปเบฒเบก, เบเบฒเบเบเบฑเปเบเบงเบดเบเบตเบเบฒเบเปเบเปเปเบเบเบฑเบเบซเบฒเบเบตเปเบเปเบฒเบเบเบฒเบเปเบกเปเบเบกเบตเบเบฐเบชเบดเบเบเบดเบเบฒเบเบซเบผเบฒเบเบเบถเปเบ. เปเบฅเบฐเบเบฑเบเบเบฑเปเบเปเบเปเปเบเบปเปเบฒเบซเบกเบฒเบเบเบญเบเบเบงเบเปเบฎเบปเบฒเปเบกเปเบเปเบเบทเปเบญเบงเบดเปเบเบฒเบฐเบชเบฒเบกเบงเบดเบเบตเบเบฒเบเปเบเปเปเบเบชเบปเบกเบเบปเบ regression linear เปเบเบเบเปเบฒเบเบเบฒเบ, เบเบฒเบเบเปเบฒเปเบเปเบซเบเปเบฒเบเบตเป "เบเบฝเบเบเปเบงเบเบเบปเบเปเบญเบ" เปเบกเปเบเบเปเบญเบเบเปเบฒเบเบเบฝเบเบเปเบชเปเบฒเบฅเบฑเบเบเบงเบเปเบฎเบปเบฒ.
เบงเบฑเบเบเบฐเบเบฐเบเบต (เบซเบผเบทเบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบเปเบเบฑเปเบเบเบฑเปเบ)
1. Linear regression
2. เบงเบดเบเบตเบเบฒเบเบชเบตเปเบซเบผเปเบฝเบกเบเปเบญเบเบชเบธเบ
3. เบญเบฐเบเบธเบเบฑเบ
4. Gradient
5. Gradient descent
6. เบซเปเบญเบเบชเบฐเปเบธเบ NumPy
เปเบซเบผเปเบเบเปเปเบกเบนเบ: www.habr.com