1.模型误差产生的原因

(1)模型无法表示基本数据的复杂度,而造成偏差。

(2)因模型对训练它所用到的数据过度敏感造成的方差。

2.由偏差造成的误差——准确率和欠拟合

有足够数据表示模型,但是由于模型不够复杂,不能捕捉基本关系,因而造成误差。

这样一来模型会系统的错误表示数据,从而导致准确率降低,这种现象叫做欠拟合。

简单说来就是模型不合适就会造成偏差。

3.方差造成的误差——精度和过拟合

在训练模型时,通常使用较大量数据的有限数据集,如果选择随机选择的数据子集不断对模型进行训练,可以预料它的预测结果会因提供给它的不同训练子集而不同。方差是用来衡量预测结果和所给的测试样本之间的差距。出现方差是正常的,但是方差过高说明该模型无法将预测结果泛化到更多数据。对训练集过渡敏感,称之为过拟合。高方差会导致训练集上效果很好,测试集上效果很差。

通常可以用更多数据来训练降低模型预测的方差,提高模型预测的准确率。如果没有很多数据,可以降低模型的复杂度来减小方差。

  1. # In this exercise we'll examine a learner which has high variance, and tries to learn
  2. # nonexistant patterns in the data.
  3. # Use the learning curve function from sklearn.learning_curve to plot learning curves
  4. # of both training and testing error.
  5. # CODE YOU HAVE TO TYPE IN IS IN LINE 35
  6.  
  7. from sklearn.tree import DecisionTreeRegressor
  8. import matplotlib.pyplot as plt
  9. # PLEASE NOTE:
  10. # In sklearn 0.18, the import would be from sklearn.model_selection import learning_curve
  11. from sklearn.learning_curve import learning_curve # sklearn version 0.17
  12. from sklearn.cross_validation import KFold
  13. from sklearn.metrics import explained_variance_score, make_scorer
  14. import numpy as np
  15.  
  16. # Set the learning curve parameters; you'll need this for learning_curves
  17. size = 1000
  18. cv = KFold(size,shuffle=True)
  19. score = make_scorer(explained_variance_score)
  20.  
  21. # Create a series of data that forces a learner to have high variance
  22. X = np.round(np.reshape(np.random.normal(scale=5,size=2*size),(-1,2)),2)
  23. y = np.array([[np.sin(x[0]+np.sin(x[1]))] for x in X])
  24.  
  25. def plot_curve():
  26. # Defining our regression algorithm
  27. reg = DecisionTreeRegressor()
  28. # Fit our model using X and y
  29. reg.fit(X,y)
  30. print "Regressor score: {:.4f}".format(reg.score(X,y))
  31.  
  32. # TODO: Use learning_curve imported above to create learning curves for both the
  33. # training data and testing data. You'll need reg, X, y, cv and score from above.
  34.  
  35. train_sizes, train_scores, test_scores = learning_curve(reg,X,y,cv=cv,scoring=score)
  36.  
  37. # Taking the mean of the test and training scores
  38. train_scores_mean = np.mean(train_scores,axis=1)
  39. test_scores_mean = np.mean(test_scores,axis=1)
  40.  
  41. # Plotting the training curves and the testing curves using train_scores_mean and test_scores_mean
  42. plt.plot(train_sizes ,train_scores_mean,'-o',color='b',label="train_scores_mean")
  43. plt.plot(train_sizes,test_scores_mean ,'-o',color='r',label="test_scores_mean")
  44.  
  45. # Plot aesthetics
  46. plt.ylim(-0.1, 1.1)
  47. plt.ylabel("Curve Score")
  48. plt.xlabel("Training Points")
  49. plt.legend(bbox_to_anchor=(1.1, 1.1))
  50. plt.show()

  

UDA机器学习基础—误差原因的更多相关文章

  1. UDA机器学习基础—评估指标

    这里举例说明 混淆矩阵  精确率 召回率  F1

  2. UDA机器学习基础—交叉验证

    交叉验证的目的是为了有在训练集中有更多的数据点,以获得最佳的学习效果,同时也希望有跟多的测试集数据来获得最佳验证.交叉验证的要点是将训练数据平分到k个容器中,在k折交叉验证中,将运行k次单独的试验,每 ...

  3. UDA机器学习基础—异常值-安然数据处理

    #!/usr/bin/python import pickle import sys import matplotlib.pyplot sys.path.append("../tools/& ...

  4. Coursera 机器学习课程 机器学习基础:案例研究 证书

    完成了课程1  机器学习基础:案例研究 贴个证书,继续努力完成后续的课程:

  5. Coursera台大机器学习基础课程1

    Coursera台大机器学习基础课程学习笔记 -- 1 最近在跟台大的这个课程,觉得不错,想把学习笔记发出来跟大家分享下,有错误希望大家指正. 一 机器学习是什么? 感觉和 Tom M. Mitche ...

  6. 机器学习 —— 基础整理(六)线性判别函数:感知器、松弛算法、Ho-Kashyap算法

    这篇总结继续复习分类问题.本文简单整理了以下内容: (一)线性判别函数与广义线性判别函数 (二)感知器 (三)松弛算法 (四)Ho-Kashyap算法 闲话:本篇是本系列[机器学习基础整理]在time ...

  7. 算法工程师<机器学习基础>

    <机器学习基础> 逻辑回归,SVM,决策树 1.逻辑回归和SVM的区别是什么?各适用于解决什么问题? https://www.zhihu.com/question/24904422 2.L ...

  8. 数据分析之Matplotlib和机器学习基础

    一.Matplotlib基础知识 Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形. 通过 Matplotlib,开发者可以仅需 ...

  9. 【dlbook】机器学习基础

    [机器学习基础] 模型的 vc dimension 如何衡量? 如何根据网络结构衡量模型容量?有效容量和模型容量之间的关系? 统计学习理论中边界不用于深度学习之中,原因? 1.边界通常比较松, 2.深 ...

随机推荐

  1. DES加密实现的思想及代码

    感谢: http://blog.csdn.net/yxstars/article/details/38424021 上面的日志非常清晰的写出了这个DES加密的过程,主要存在初始IP置换,然后中间存在8 ...

  2. LeetCode & Q189-Rotate Array-Easy

    Array Description: Rotate an array of n elements to the right by k steps. For example, with n = 7 an ...

  3. 小tip: 使用CSS将图片转换成黑白(灰色、置灰)

    可能早就知道,像汶川这种糟糕的日子网站全灰在IE下是可以轻松实现的(filter: gray;),不过,当时,其他浏览器是无解的.不过,时代发展,如今,CSS3的逐步推进,我们也开始看到“黑白效果”大 ...

  4. iot前台开发环境:前后台访问映射

    一.前端映射- java代码 二.路由设置 -前台代码 三.访问应用

  5. Python3安装Requests

    安装Requests费了1天的时间,囧.终于还是在官网找到解决方法,可以参考这个http://docs.python-requests.org/en/latest/user/install/#inst ...

  6. Linux网络配置(setup)

    新装的Linux系统,想要快捷的网络配置,首选setup命令. 1.设置setup为中文. echo LANG="zh_CN.UTF-8" > /etc/sysconfig/ ...

  7. JavaScript的基础学习

    由js和python想到的: 弱类型语言 js 中的数据在进行算数运算时,会自动转换类型强类型语言 变量的值的数据类型一旦确定,使用时不能改变 动态语言:编译时不知道数据类型,只有在执行时才知道数据类 ...

  8. MySQL 如何使用 PV 和 PVC?- 每天5分钟玩转 Docker 容器技术(154)

    本节演示如何为 MySQL 数据库提供持久化存储,步骤为: 创建 PV 和 PVC. 部署 MySQL. 向 MySQL 添加数据. 模拟节点宕机故障,Kubernetes 将 MySQL 自动迁移到 ...

  9. TensorFlow-Slim使用方法说明

    翻译自:https://github.com/tensorflow/tensorflow/tree/master/tensorflow/contrib/slim TensorFlow-Slim TF- ...

  10. javascript获取表单的各项值

    何谓表单? 表单是html页面中负责数据采集功能的部件,它往往由三个部分组成: 表单标签:<form></form> 用于声明表单的范围,位于表单标签中的元素将被提交.属性有m ...