为什么要了解点数学基础
学习大数据分布式计算时多少会涉及到机器学习的算法,所以理解一些机器学习基础,有助于理解大数据分布式计算系统(比如spark)的设计。机器学习中一个常见的就是gradient descent算法,是线性回归问题的一个基础算法。gradient是数学概念。
Gradient
如果一个函数有n个自变量:f(x1,x2......xn)<script type="math/tex" id="MathJax-Element-169">f(x_1,x_2......x_n)</script>。且每一个x都是标量值。那么该函数的gradient就是一个n维的向量函数,每一个component是f函数针对xi<script type="math/tex" id="MathJax-Element-170">x_i</script>的partial derivative。f<script type="math/tex" id="MathJax-Element-171">f</script>的gradient反映的是f<script type="math/tex" id="MathJax-Element-172">f</script>针对全部变量在各自维度的变化的敏感程度(以及正负相关性。即当自变量添加时,f<script type="math/tex" id="MathJax-Element-173">f</script>值是添加还是减小,下同。
gradient所反映的正负相关性非常重要,是理解gradient descent算法的一个关键)的合集。f<script type="math/tex" id="MathJax-Element-174">f</script>的gradient记为?f<script type="math/tex" id="MathJax-Element-175">\nabla f</script>
Partial Derivative
partial derivative是derivative的一个延伸概念,是一个有n维变量的函数f(x1,x2......xn)<script type="math/tex" id="MathJax-Element-98">f(x_1,x_2......x_n)</script>。在如果其它变量值不变、仅有一个变量(如果为xi<script type="math/tex" id="MathJax-Element-99">x_i</script>)变化的情况下,f函数针对该变量的derivative,写为f′(xi)<script type="math/tex" id="MathJax-Element-100">f‘(x_i)</script>,或者?f?xi<script type="math/tex" id="MathJax-Element-101">\frac{\partial f}{\partial x_i}</script>,f(x1,x2......xn)<script type="math/tex" id="MathJax-Element-102">f(x_1,x_2......x_n)</script>对xi<script type="math/tex" id="MathJax-Element-103">x_i</script>的partial derivative也是xi<script type="math/tex" id="MathJax-Element-104">x_i</script>的函数,它反映的是f<script type="math/tex" id="MathJax-Element-105">f</script>相对于xi<script type="math/tex" id="MathJax-Element-106">x_i</script>的变化的敏感程度(以及正负相关性)。
Derivative
一个一维变量的函数f(x)<script type="math/tex" id="MathJax-Element-107">f(x)</script>的derivative,反映的是f(x)<script type="math/tex" id="MathJax-Element-108">f(x)</script>在x<script type="math/tex" id="MathJax-Element-109">x</script>的不同值的情况下,当x<script type="math/tex" id="MathJax-Element-110">x</script>仅作无限小的变化时。f<script type="math/tex" id="MathJax-Element-111">f</script>值的变化与x<script type="math/tex" id="MathJax-Element-112">x</script>的变化的比值,因此derivative反映的是f(x)<script type="math/tex" id="MathJax-Element-113">f(x)</script>在x<script type="math/tex" id="MathJax-Element-114">x</script>的不同值的情况下,f(x)<script type="math/tex" id="MathJax-Element-115">f(x)</script>对x<script type="math/tex" id="MathJax-Element-116">x</script>的变化的敏感程度(以及正负相关性)。
f(x)<script type="math/tex" id="MathJax-Element-117">f(x)</script>的derivative也是x<script type="math/tex" id="MathJax-Element-118">x</script>的函数,写为f′(x)<script type="math/tex" id="MathJax-Element-119">f‘(x)</script>.
Gradient Descent算法
线性回归问题能够归结为求一个函数f(x1,x2......xn)<script type="math/tex" id="MathJax-Element-30">f(x_1,x_2......x_n)</script>的(x1,x2......xn)<script type="math/tex" id="MathJax-Element-31">(x_1,x_2......x_n)</script>的某一个详细的值,使得f<script type="math/tex" id="MathJax-Element-32">f</script>有最小值。
如果把这个求解问题交给你,你能求出来吗?非常难把,
而gradient descent算法则能解决问题。
……待续
<script type="text/javascript"> $(function () { $(‘pre.prettyprint code‘).each(function () { var lines = $(this).text().split(‘\n‘).length; var $numbering = $(‘
‘).addClass(‘pre-numbering‘).hide(); $(this).addClass(‘has-numbering‘).parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($(‘
‘).text(i)); }; $numbering.fadeIn(1700); }); }); </script>