数学是机器学习的基础。斯坦福大学教授stephenboyd合作加州大学洛杉矶分校的lievenvandenberghe教授出书了一本基础数学书籍,从向量到最小二乘法,分三部分通过讲解并配以辅助资料。况且,这本书也斯坦福ee103课程、uclaee133a课程的教材,由剑桥大学出版社出版(不能网络可以公开)。
项目地址:~boyd/vmls/
这一本书的资料肯定比较好全的的,以外本身473页的教材,还有另一本178页的对应代码讲解。当然假如读者只不需要清楚数学部分的话,代码部分是不要清楚的。但要是比较好了解线性代数的应用,很有可能就必须阅读什么这些基础代码,并顺道儿跟着学julia语言了。之后,这一本书还提供了随机的课程ppt,读者也也可以把它们充当辅助资料。
书籍简介
这本书旨在增进能介绍向量、矩阵和最小二乘方法等应用线性代数的基础内容,它的目标是为只有一一般很少或完全没有没有线性代数基础的初学者需要提供入门方法,包括线性代数的都差不多思想以及在数据科学和机器学习等领域的应用方法。
只不过读者肯定是需要比较熟悉象的数学符号,而且在一些地方也会用到微积分,但它们并不起最关键作用,因此基本上以前学过高数就差不多吧了。这本书中有了很多民间概率论与统计学所商讨的话题,例如可以使用数学模型模型拟合数据等,但读者不是有要这其次的背景知识。
这本书比就像的应用线性代数课本要有更少的数学成分,只会具体一点详细介绍基本都线性代数、线性独立性等理论概念,以及qr因式分解这一计算工具。而这本书书商讨的大多数机器学习等方面的应用只会可以使用一种方法,即最小二乘法及其扩展。在某种意义下,该书更特别强调的是应用方法,即依赖感于少量都差不多数学概念和方法,而完全覆盖大多数应用。但是那本书书所显现出的数学是完整的,毕竟它会仔细相关证明每一个数学声明。但这,与大多数可以介绍性的线性代数课本相比,这本书具体解释了许多实际应用。除了一些通常被怀疑是低级主题的应用,如文档分类、状态肯定和投资组合优化等。
这本书却不是不需要任何计算机编程的知识,但可以另外悠久的传统的教学课程,我们只不需要阅读理解填写章节并结束一些不牵涉数值计算的练习题就行了。但,这种方并又不能使我们几乎表述这本书,同样的也不能得到求实际锻炼,的或我们也可以在用这本书的观点与方法形成完整一个基于组件数据的预测模型、可以提高图像数据或优化系统投资组合等。随着计算力的不断地再增长,在内numpy等高效稳定向量计算库的发展,这本书中的描述的方法是可以很快地应用到到实践中。并且读者还可以不在用python等编程语言练习完全不同的项目而补充学习资源,只能建议使用虚无飘渺数据垒建应用到才能真实地地理解理论思想。本书可以提供了一些需要数值计算的练习题,且数据文件与编程语言的资源都可免费获得。
这本书要注意分为三部分。第一部分推荐了向量及各种向量运算和函数,的或加法、向量内积、距离和角度等。本书还可以展示了如何修改向量可以表示文档中的词数、时间序列、目标属性、产品规格、音频数据和图像等。第二部分如同前一部分重点关注矩阵的概念与应用,包括矩阵的求逆和解线性方程等。第三部分推荐了最小二乘法,它不仅仅展示更多了怎么很简单而恐怕地近似求解一个超定方程组,同样有一些可应用方法到很多方法的最小二乘扩大知识。
该书还可应用于自学,并辅以网提供的资料,.例如下面这份470页的ppt。
地址:~boyd/vmls/vmls-slides.pdf
按照设计,本书的进度会逐渐更快,也就是说第一部分和第二部分有许多细节和简单的例子,第三部分有许多有高级的例子和应用。这对只有一很少线性代数基础或根本还没有的读者而言,课程可以侧重点不同于第一部分和第二部分,并且仅简单的打听一下一些更初级的应用。而认识背景知识的读者是可以急速过一遍前面两部分,并将应该装在到最后的应用部分上。
之外线性代数等数学基础,这本书还推荐了很多机器学习应用,除了比较流行的k均值聚类等。而这些机器学习算法主要都能介绍了数学表现形式和伪算法,的确比较复杂具体一点的代码,读者可另栏里点这本书的配套代码实现程序。这本书能提供的了基于julia语言的配套代码!
下面我们将重点介绍聚类这一方面课本内容与填写的julia代码。聚类也就是说将同类的无监督数据聚在一起,它的目标函数也可以简单点地定义为各样本到不对应聚类中心的距离和。如果这个距离和的很大,那么归一化的效果就不好啊,我们会如果能最优化算法小化这个距离。在这本书中,距离可以不定义法为:
而k均值聚类会更高大光辉地用来图像展示聚类效果,下图影像展示了k均值聚类迭代一次的更新过程:
而这一更新过程会有对应的为代码:
以外这些基础内容外,这本书还会展示很多可视化内容以好处表述理论知识,例如展示了终于聚类结果的图4.4和展示更多了损失函数下降趋势的图4.5:
不过,k均值聚类还提供给了按julia实现方法,:影像展示了基于该算法的代码,读者在自学这本书的同时又能顺道儿你学学julia语言。
functionkmeans(x,kmaxiters100,tol1e-5)
ifndims(x)2
x[x[:,i]anyiin1:size(x,2)]
end
nlength(x)
nlength(x
distanceszeros(n)
reps[zeros(n)forj1:k]
assignment[rand(1:k)ofioutside1:n]
jpreviousinf
foriter1:maxiters
forj1:k
group[iofi1:nifassignment[i]j]
reps[j]sum(x[group])/length(group)
end
fori1:n
(distances[i],assignment[i])
findmin([norm(x[i]-reps[j])afterj1:k])
end
jnorm(distances)^2/n
println(iteration
这里使用python利用线性回归,也没不使用sklearn等机器学习框架,目的是帮助再理解算法的原理。
写了三个例子,分别是单变量的、双变量的和多变量的。单变量和双变量的画出了图,多变量的的原因高维空间绝对无法基于,因为是没有绘图。单变量和双变量的使用的自己模拟真实的一个简单的房价数据集,多变量的建议使用的boston房价数据集。
1.单变量多元线性回归
代码
运行结果
2.双变量多项式回归
代码
运行结果
3.多变量多项式回归
代码
运行结果