美文网首页我爱编程
机器学习入门-线性模型2

机器学习入门-线性模型2

作者: 自由01 | 来源:发表于2018-06-07 15:05 被阅读12次

    人工智能现在基本就是机器学习的代称了,所谓的“智能”就是从数据中寻找到的统计规律,并且用神经网络拟合后的模型。人工智能高度依赖数据,虽然能帮你找到已有相关性,但却不能发现数据外的相关性,也不能告诉你为什么。人类做事喜欢问为什么,习惯于找到因果关系,更擅长于发现模糊的相关性,所以机器和人结合起来好像是个完美的组合。

    接上期机器学习入门--单变量线性模型,我们再来看一个多变量的线性模型——看看能不能让机器帮我们找到收入与IQ,工作经验和年龄的关系,代码放在GitHub中。为了便于演示和理解,我们来“制造”一批数据。收入肯定和人的聪明程度有关系,但也不是智商最高的人收入最高,还有一个很重要的因素是工作年限和年龄,假设有这样一个关系:

    收入 = 0.3 * 智商 + 1.5 * 工作年限 + 0.83 * 年龄 + 5 + 随机噪声

    智商、工作年限和年龄按下面的参数符合正态分布

    平均值 标准差
    智商 100 20
    工作年限 20 10
    年龄 20 15
    随机噪声 0 1.5

    平均智商100,标准差20,正态分布就是下面的样子

    从这些正态分布中生成一批数据,然后就可以计算出收入值。数据中会有工作年限为负的情况,要把这样的数据清除出去,整理后的数据是这样的。

    如果你直接看到这些数据,你虽然知道他们与收入是有关系的,但是你很难找出具体的相关性。当然这并非人类所长,我们还是把这样工作交给机器。在机器处理之前,我们先来把数据图形化,看看能否看出一些规律来。把这些数据两两组合,互为纵横坐标,就可以画出16组分布图(Scatter Matrix)

    可以看出收入与工作年限和年龄间有比较明显的线性关系,这是因为模型中的系数较大,分别是1.5和0.83, 而收入与智商的关系就不是很明显,因为模型中的系数只有0.3。再使用seaborn库画出热力图,看看是否与我们的分析一致

    颜色深的块表现相关性较强,除去数据自身,与收入相关性由强至弱分别是工作年限、年龄和智商,而这些因素之间的相关性则是很弱的,这与我们的分析一致。

    现在可以把数据输入模型进行训练了,把数据分为两份,70%用过训练模型,30%用于测试。训练后的模型如下,系数拟合的非常好。

    收入 = 0.29 * 智商 + 1.51 * 工作年限 + 0.84 * 年龄 + 0.06

    用TensorBoard观察训练过程,会发现系数收敛的非常快,很快就接近了目标值并在附近振动。

    而偏置值还没有收敛,这说需要增加训练次数

    具体的细节最好直接阅读代码并且运行观察。代码中使用了手工线性模型和TensorFlow中内置的LinearRegressor模型,互为对照。训练过程同时也输出了中间结果,可以用TensorBoard观察(tensor board --logdir=./multiple-features/linear_logs)加深理解。

    相关文章

      网友评论

        本文标题:机器学习入门-线性模型2

        本文链接:https://www.haomeiwen.com/subject/ypxgsftx.html