数据科学家成长之路入门机器学习的第一个

数据科学家需要同时使用数据(data)和科学(science)去创造一些新的东西。需要具有深度专业知识(deepexpertise)、好奇心(curiosity)、能讲故事(storytelling)和能创造性地解决问题的能力(problem-solvingability)。

掌握机器学习就是成为数据科学家的敲门砖。那么应该怎样敲开机器学习这扇大门呢?本文从一个普通线性回归问题来引导大家理解“究竟机器是怎样预测的?”这个看似深奥却简单的问题。阅读本文你无须深厚的数学基础,小D会介绍必备的相关知识。本文代码用Python实现,因为Python是最好最热门的编程语言之一,是实现机器学习算法的首选语言。

不仅小学教材、高考和计算机二级都已开始纳入Python,在国外就连婴幼儿也有专门的编程童书

线性回归

当我们翻开机器学习书籍,发现往往第一章就是线性模型(LinearModel),因为线性模型非常简单,易于建模,应用广泛。本文通过对普通线性回归模型基本思想的介绍,来引导大家跨进机器学习之大门。

相信大家早已将线性知识还给老师了,但大概还知道有这么个公式吧。你还记得这句话吗“其中是斜率,不能为0;表示自变量,表示Y轴的截距。且和均为常数。”如果还记得,恭喜你,这就是最基本的线性知识。线性模型中的“线性”其实就是一系列一次特征的线性组合,在二维空间中是一条直线,在三维空间中是一个平面,然后推广到n维空间。

特征(feature):即属性(字段/列),表示某种特性的抽象结果,如性别、年龄等。

一次:还记得什么叫“一元一次方程”吗?即只含有一个未知数、未知数的最高次数(幂)为1且两边都为整式的等式。对的,幂为1即是。

在统计学中,线性回归(LinearRegression)是利用称为线性回归方程的最小平方函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。回归分析中,只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析。如果回归分析中包括两个或两个以上的自变量,且因变量和自变量之间是线性关系,则称为多元线性回归分析。

线性模型(LinearModel)的形式为:

其中:

表示给定样本,我们用列向量表示该样本,即特征向量。表示样本的第个特征。表示权重向量,为每个特征对应的权重,表达了各个特征在预测中的重要性。

说白了,“建模”就是根据已知数据集,来计算参数和。对于最简单的一元线性回归(单特征),即是根据已知二维平面上的一些点,求得符合这些点分布的一条直线。

针对平面上的这些点,我们可以画出很多条直线,但究竟哪一条是最优的呢?对于给定的样本,其预测值为。我们采用平方损失函数,则在训练集上,模型的损失函数为:

损失函数(LossFunction)是用来估量你模型的预测值与真实值的不一致程度,它是一个非负实值函数,通常使用来表示,损失函数越小,模型的鲁棒性就越好。鲁棒是Robust的音译,也就是健壮和强壮的意思。所谓“鲁棒性(robustness)”,是指控制系统在一定(结构,大小)的参数摄动下,维持其它某些性能的特性,即系统的健壮性。

我们的目标是损失函数最小化,即:

这个公式就是均方误差,它具有非常好的几何意义,对应欧式几何的欧几里德距离。基于均方误差最小化的方法被称为“最小二乘法(又称最小平方法)”,在线性回归中最小二乘法试图找到一条直线,使得所有样本到这条直线上的欧式距离之和最小。

二维平面中点1到直线上的映射点2的直线距离即为欧氏距离,可以用两点的横坐标之差和纵坐标之差根据勾股定理求得。

为了实现均方误差最小化,可以用梯度下降法来求解上述最优化问题的数值解。

梯度下降

首先来看看三维空间中梯度下降的一个直观的解释。

比如我们在一座大山上的某处位置,想以最快的速度下山(最快的收敛速度),由于我们不知道怎么下山,于是决定走一步算一步,也就是在每走到一个位置的时候,求解当前位置的梯度(即曲面上点的切线),沿着梯度的负方向,也就是当前最陡峭的位置向下走一步,然后继续求解当前位置梯度,向这一步所在位置沿着最陡峭最易下山的位置走一步。这样一步步的走下去,一直走到觉得我们已经到了山脚。当然这样走下去,有可能我们不能走到山脚,而是到了某一个局部的山峰低处。

梯度下降

从上面的解释可以看出,梯度下降不一定能够找到全局的最优解,有可能是一个局部最优解。当然,如果损失函数是凸函数,梯度下降法得到的解就一定是全局最优解。对于本文所提到的线性回归,他的损失函数就是凸函数,所以梯度下降法可以算得全局最优解。

凸函数

二维平面的梯度下降求解最优,就是找到凸函数的梯度为零的点,即切线斜率为0的点。得到全局最优解,我们就求得了最优的参数和b,即求得最符合数据分布的预测直线。如果将该模型应用到新的数据集,我们就可以根据给定的预测出了。线性回归,你懂了吗?

Python代码实现

此外,线性模型还包括L1normlasso回归、L2norm岭回归、二者结合的ElasticNet、逻辑回归、线性判别分析等。小D相信有心成为数据科学家的你一定会举一反三迅速掌握的。

机器学习是一门理论与实践结合非常紧密的学科,理论提供了各种算法处理问题的边界,即有的算法适合处理问题A,不适合问题B;而另外一些算法适合处理问题B不适合处理问题A。如果不懂得理论,那么对于某个具体问题,你就完全不知道应该采用哪种算法,以及当你采用了某个算法时各类参数/超参数的物理意义。

优秀的数据科学家应该掌握必要的数据基础知识:

概率论、线性代数、数理统计、信息论、最优化理论、形式逻辑、计算机科学…

在机器学习的路上,我们一起同行。

往期文章

聊聊逻辑回归

中文情感分析

数字化之道——高维数据可视化

R语言实现LDA主题模型分析知乎话题

可视化技术三板斧,让你做出最炫酷的数据分析报告

从“三生三世十里桃花”浅谈客户画像及其应用

新年快乐

扫描我们

不渴望能够一跃千里,只希望每天能够前进一步。

赞赏

长按向我转账

受苹果公司新规定影响,iOS版的赞赏功能被关闭,可通过转账支持。









































北京中科白癜风出席健康中国公益盛典
北京看白癜风效果好的医院



转载请注明:http://www.92nongye.com/txjg/txjg/204620328.html