• Bias Variance Tradeoff is a design consideration when training the machine learning model. Certain algorithms inherently have a high bias and low variance and vice-versa. In this one, the concept of ...
https://www.machinelearningplus.com/machine-learning/bias-variance-tradeoff/
Bias Variance Tradeoff is a design consideration when training the machine learning model. Certain algorithms inherently have a high bias and low variance and vice-versa. In this one, the concept of bias-variance tradeoff is clearly explained so you make an informed decision when training your ML models
Introduction
What exactly is Bias?
What is Variance Error?
Example of High Bias and Low Variance
Example of Low Bias and High Variance
How to fix bias and variance problems?
Introduction
A machine learning model’s performance is evaluated based on how accurate is its prediction and how well it generalizes on another independent dataset it has not seen.
The errors in a machine learning model can be broken down into 2 parts:

Reducible Error
Irreducible Error

Irreducible errors are errors that cannot be reduced even if you use any other machine learning model.
Reducible errors, on the other hand, is further broken down into square of bias and variance. Due to this bias-variance, it causes the machine learning model to either overfit or underfit the given data. I will be discussing these in detail in this article.
What exactly is Bias?
Bias is the inability of a machine learning model to capture the true relationship between the data variables. It is caused by the erroneous assumptions that are inherent to the learning algorithm. For example, in linear regression, the relationship between the X and the Y variable is assumed to be linear, when in reality the relationship may not be perfectly linear.
Let’s look at an example of artificial dataset with variables study hours and marks.
This graph shows the original relationship between the variables. Notice, there is a limit to the marks you can get on the test. That is even if you study an extraordinary amount of time, there is always a certain ‘maximum mark’ you can score. You can see the line flattening beyond a certain value of the X-axis. So the relationship is only piecewise linear. This sort of error will not be captured by the vanilla linear regression model.
You can expect an algorithm like linear regression to have high bias error, whereas an algorithm like decision tree has lower bias. Why? because decision trees don’t make such hard assumptions. So is the case with algorithms like k-Nearest Neighbours, Support Vector Machines, etc.

In general,
High Bias indicates more assumptions in the learning algorithm about the relationships between the variables.
Less Bias indicates fewer assumptions in the learning algorithm.
What is the Variance Error?
This is nothing but the concept of the model overfitting on a particular dataset. If the model learns to fit very closely to the points on a particular dataset, when it used to predict on another dataset it may not predict as accurately as it did in the first.
Variance is the difference in the fits between different datasets.
Generally, nonlinear machine learning algorithms like decision trees have a high variance. It is even higher if the branches are not pruned during training.
Low-variance ML algorithms: Linear Regression, Logistic Regression, Linear Discriminant Analysis.
High-variance ML algorithms: Decision Trees, k-NN, and Support Vector Machines.
Let’s look at the same dataset and try to fit the training data better. Fitting the training data with more complex functions to reduce the error.

See that we have got nearly zero error in the training data. Now let’s try this curve to the test data.

The errors in the test data are more in this case. If there is more difference in the errors in different datasets, then it means that the model has a high variance. At the same time, this type of curvy model will have a low bias because it is able to capture the relationships in the training data unlike straight line.
Example of High Bias and Low Variance: Linear Regression Underfitting the Data
If a model has high bias, then it implies that the model is too simple and does not capture the relationship between the variables. This is called the underfitting of data. You can think of using a straight line to fit the data as in the case of linear regression as underfitting the data.

Let’s summarize:
If a model uses a simple machine learning algorithm like in the case of a linear model in the above code, the model will have high bias and low variance(underfitting the data).
If a model follows a complex machine learning model, then it will have high variance and low bias( overfitting the data).
You need to find a good balance between the bias and variance of the model we have used. This tradeoff in complexity is what is referred to as bias and variance tradeoff. An optimal balance of bias and variance should never overfit or underfit the model.
This tradeoff applies to all forms of supervised learning: classification, regression, and structured output learning.
How to fix bias and variance problems?Fixing High Bias
Adding more input features will help improve the data to fit better.
Add more polynomial features to improve the complexity of the model.
Decrease the regularization term to have a balance between bias and variance.
Fixing High Variance
Reduce the input features, use only features with more feature importance to reduce overfitting the data.
Getting more training data will help in this case, because the high variance model will not be working for an independent dataset if you have very data.


展开全文

千次阅读 2013-06-10 09:34:16


发表于 2013-03-29

统计学习中有一个重要概念叫做residual sum-of-squares

squared error），而MSE又可以拆分成bias和variance两部分：

式子的推导很显然，只要填一项减一项，展开式子，多余的那一项等于0

从上面的式子可以看出，低bias的model在训练集合上更加准确，低variance的model在不同的训练集合上性能更加稳定。

Bias 度量了某种学习算法的平均估计结果所能逼近学习目标的程度；独立于训练样本的误差，刻画了匹配的准确性和质量：一个高的bias意味着一个坏的匹。

Variance 则度量了在面对同样规模的不同训练集时，学习算法的估计结果发生变动的程度。相关于观测样本的误差，刻画了一个学习算法的精确性和特定性：一个高的variance意味着一个弱的匹配。

举两个极端的例子：

记住训练集合上所有的点的label，这样的系统低bias，高variance
无论输入是什么，总是预测一个相同的，这样的系统高bias，低variance。
因此在一个model的选择上需要进行偏倚和方差的权衡。

显然复杂的模型能更好的拟合训练集合能更好的拟合训练集合上的点，但是同时高复杂度的模型泛化能力差，造成了高方差。横坐标的右侧是overfitting的情况，而左侧是underfitting的情况。

参考链接：

http://goo.gl/mZwum

此条目由 lixiang 发表在 Research 分类目录，并贴了 bias、mse、variance 标签。将固定链接加入收藏夹。

展开全文


作者:量化小白一枚，上财研究生在读，偏向数据分析与量化投资个人公众号:量化小白上分记 接上一篇《R语言模拟：Bias-Variance trade-off》，本文通过模拟分析算法的泛化误差、偏差、方差和噪声之间的关系，是《element statistical learning》第七章的一个案例。上一篇通过模拟给出了在均方误差度量下，测试集上存在的偏差方差Trade-Off的现象，随着模型复杂度（变量个数）增加，训练集上的误差不断减小，最终最终导致过拟合，而测试集的误差则先减小后增大。模拟方法说明本文通过对泛化误差的分解来说明训练集误差变化的原因，我们做如下模拟实验：样本1：:训练集和测试集均为20个自变量，80个样本，自变量服从[0,1]均匀分布，因变量定义为：Y = ifelse(X1>1/2,1,0)样本2 ： 训练集和测试集均为20个自变量，80个样本，自变量服从[0,1]均匀分布，因变量定义为：Y = ifelse(X1+X2+...+X10>5,1,0)通过两类模型、两种误差度量方式共四种方法进行建模，分析误差，模型为knn和best subset linear model。 knn根据距离样本最近的k个样本的Y值预测样本的Y值，knn模型用于样本1,R语言中可通过函数knnreg实现。best subset linear model 对于输入的样本，获取最优的自变量组合建立线性模型进行预测，best subset model用于样本2，R语言中可通过函数regsubsets实现。误差度量分为均方误差（squared error）和0-1误差（0-1 Loss）两种，均方误差可以视为回归模型（regression），0-1误差可以视为分类模型（classification）。结果说明每种方法模拟100次，在每个模型中计算偏差、方差和预测误差并作图分析结果，最终得到结果如下：其中，红色线表示预测误差，蓝色线表示方差，绿色线表示偏差平方，对比书上的结果结果分析：从数值上看，0-1 Loss 和Squared  error度量的模型具有不同特征，0-1 Loss满足预测误差 = 方差 +偏差平方的关系式，Squared error不满足这一关系；方差都是随着模型中包含变量个数增加而减小，偏差的变化非线性。代码语言：rknn model  1# bais variance trade-off  regression  2  3# knn   4  5library(caret)  6  7# get bais variance  8# k:knn中的k值或best subset中的k值  9# num：模拟次数 10# sigma:随机误差的标准差 11# test_id 用于计算偏差误差的训练集样本编号，1-80中任一整数 12# regtype:knn或best sub 13# seeds:随机数种子 14# 返回方差偏差误差等值 15 16getError <- function(k,num,modeltype,seeds,n_test){ 17  set.seed(seeds) 18 19 20  testset <- as.data.frame(matrix(runif(n_test*21,0,1),n_test)) 21 22  Allfx_hat <- matrix(0,n_test,num) 23  Ally <- matrix(0,n_test,num) 24  Allfx <- matrix(0,n_test,num) 25 26  # 模拟 num次  27 28 29 30  for (i in 1:num){ 31    trainset <- as.data.frame(matrix(runif(80*21,0,1),80)) 32 33 34    fx_train <- ifelse(trainset[,1]>0.5,1,0) 35    trainset[,21] <- fx_train 36 37    fx_test <- ifelse(testset[,1]>0.5,1,0) 38    testset[,21] <- fx_test  39 40 41    # knn model 42    knnmodel <- knnreg(trainset[,1:20],trainset[,21],k = k) 43    probs <- predict(knnmodel, newdata = testset[,1:20]) 44 45 46    Allfx_hat[,i] <- probs 47    Ally[,i] <- testset[,21] 48    Allfx[,i] <- fx_test 49 50 51 52  }  53  # 计算方差、偏差等 54 55  # irreducible <- sigma^2 56 57  irreducible  <- mean(apply( Allfx - Ally  ,1,var)) 58  SquareBais  <- mean(apply((Allfx_hat - Allfx)^2,1,mean)) 59  Variance <- mean(apply(Allfx_hat,1,var)) 60 61  # 回归或分类两种情况 62  if (modeltype == 'reg'){ 63 64    PredictError  <- irreducible + SquareBais + Variance  65 66  }else{ 67 68    PredictError  <- mean(ifelse(Allfx_hat>=0.5,1,0)!=Allfx) 69  } 70 71 72 73  result <- data.frame(k,irreducible,SquareBais,Variance,PredictError) 74 75  return(result) 76} 77 78# ----------------   plot square error  knn ---------------------------- 79 80 81 82 83# k:knn中的k值或best subset中的k值 84# num：模拟次数 85# test_id 用于计算偏差误差的训练集样本编号，1-80中任一整数 86# regtype:knn或best sub 87# seeds:随机数种子 88 89n_test <- 100 90modeltype <- 'reg' 91num <- 100 92 93seeds <- 1 94 95result <- getError(2,num,modeltype,seeds,n_test) 96result <- rbind(result,getError(5,num,modeltype,seeds,n_test)) 97result <- rbind(result,getError(7,num,modeltype,seeds,n_test)) 98for (i in seq(10,50,10)){ 99  result <- rbind(result,getError(i,num,modeltype,seeds,n_test))100101}102103104png(file = "k-NN - Regression_large_testset.png")105106plot(-result$k,result$PredictError,type = 'o',col = 'red',107     xlim = c(-50,0),ylim = c(0,0.4),xlab = '', ylab ='', lwd = 2)108par(new = T)109plot(-result$k,result$SquareBais,type = 'o',col = 'green',110     xlim = c(-50,0),ylim = c(0,0.4),xlab = '', ylab ='', lwd = 2)111par(new = T) 112plot(-result$k,result$Variance,type = 'o',col = 'blue',113     xlim = c(-50,0),ylim = c(0,0.4),xlab = 'Number of Neighbors k', ylab ='', lwd = 2,114     main = 'k-NN - Regression')115dev.off()116117# ----------------------  plot 0-1 loss knn -------------------------118modeltype <- 'classification'119num <- 100120n_test <- 100121seeds <- 1122123result <- getError(2,num,modeltype,seeds,n_test)124result <- rbind(result,getError(5,num,modeltype,seeds,n_test))125result <- rbind(result,getError(7,num,modeltype,seeds,n_test))126for (i in seq(10,50,10)){127  result <- rbind(result,getError(i,num,modeltype,seeds,n_test))128129}130131132png(file = "k-NN - Classification_large_testset.png")133134plot(-result$k,result$PredictError,type = 'o',col = 'red',135     xlim = c(-50,0),ylim = c(0,0.4),xlab = '', ylab ='', lwd = 2)136par(new = T)137plot(-result$k,result$SquareBais,type = 'o',col = 'green',138     xlim = c(-50,0),ylim = c(0,0.4),xlab = '', ylab ='', lwd = 2)139par(new = T) 140plot(-result$k,result$Variance,type = 'o',col = 'blue',141     xlim = c(-50,0),ylim = c(0,0.4),xlab = 'Number of Neighbors k', ylab ='', lwd = 2,142     main = 'k-NN - Classification')143dev.off()best subset model   1library(leaps)   2lm.BestSubSet<- function(trainset,k){  3  lm.sub <- regsubsets(V21~.,trainset,nbest =1,nvmax = 20)  4  summary(lm.sub)  5  coef_lm <- coef(lm.sub,k)  6  strings_coef_lm <- coef_lm  7  x <- paste(names(coef_lm)[2:length(coef_lm)], collapse ='+')  8  formulas <- as.formula(paste('V21~',x,collapse=''))  9  return(formulas) 10} 11 12getError <- function(k,num,modeltype,seeds,n_test){ 13  set.seed(seeds) 14  testset <- as.data.frame(matrix(runif(n_test*21,0,1),n_test)) 15 16  Allfx_hat <- matrix(0,n_test,num) 17  Ally <- matrix(0,n_test,num) 18  Allfx <- matrix(0,n_test,num) 19 20 21  # 模拟 num次 22 23 24 25  for (i in 1:num){ 26    trainset <- as.data.frame(matrix(runif(80*21,0,1),80)) 27    fx_train <- ifelse(trainset[,1] +trainset[,2] +trainset[,3] +trainset[,4] +trainset[,5]+ 28                         trainset[,6] +trainset[,7] +trainset[,8] +trainset[,9] +trainset[,10]>5,1,0) 29 30    trainset[,21] <- fx_train 31 32    fx_test <- ifelse(testset[,1] +testset[,2] +testset[,3] +testset[,4] +testset[,5]+ 33                        testset[,6] +testset[,7] +testset[,8] +testset[,9] +testset[,10]>5,1,0) 34 35    testset[,21] <- fx_test  36 37 38    # best subset 39    lm.sub <- lm(formula = lm.BestSubSet(trainset,k),trainset) 40    probs <- predict(lm.sub,testset[,1:20], type = 'response') 41 42 43    Allfx_hat[,i] <- probs 44    Ally[,i] <- testset[,21] 45    Allfx[,i] <- fx_test 46 47  }  48  # 计算方差、偏差等 49 50  # irreducible <- sigma^2 51 52  irreducible  <- mean(apply( Allfx - Ally  ,1,var)) 53  SquareBais  <- mean(apply((Allfx_hat - Allfx)^2,1,mean)) 54  Variance <- mean(apply(Allfx_hat,1,var)) 55 56  # 回归或分类两种情况 57  if (modeltype == 'reg'){ 58    PredictError <- irreducible + SquareBais + Variance  59  }else{ 60    PredictError <- mean(ifelse(Allfx_hat>=0.5,1,0)!=Allfx) 61  } 62  result <- data.frame(k,irreducible,SquareBais,Variance,PredictError) 63  return(result) 64} 65 66 67 68# ----------------   plot square error Best Subset Regression ---------------------------- 69 70 71modeltype <- 'reg' 72num <- 100 73n_test <- 1000 74 75seeds <- 4 76all_p <- seq(2,20,3) 77result <- getError(1,num,modeltype,seeds,n_test) 78for (i in all_p){ 79  result <- rbind(result,getError(i,num,modeltype,seeds,n_test)) 80 81} 82 83png(file = "Linear Model - Regression_large_testset.png") 84 85plot(result$k,result$PredictError,type = 'o',col = 'red', 86     xlim = c(0,20),ylim = c(0,0.4),xlab = '', ylab ='', lwd = 2) 87par(new = T) 88plot(result$k,result$SquareBais,type = 'o',col = 'green', 89     xlim = c(0,20),ylim = c(0,0.4),xlab = '', ylab ='', lwd = 2) 90par(new = T)  91plot(result$k,result$Variance,type = 'o',col = 'blue', 92     xlim = c(0,20),ylim = c(0,0.4),xlab = 'Subset Size p', ylab ='', lwd = 2, 93     main = 'Linear Model - Regression') 94dev.off() 95 96# ----------------------  plot 0-1 loss Best Subset Classification ------------------------- 97 98modeltype <- 'classification' 99num <- 100100n_test <- 1000101seeds <- 4102103104all_p <- seq(2,20,3)105result <- getError(1,num,modeltype,seeds,n_test)106for (i in all_p){107  result <- rbind(result,getError(i,num,modeltype,seeds,n_test))108109}110111png(file = "Linear Model - Classification_large_testset.png")112113114plot(result$k,result$PredictError,type = 'o',col = 'red',115     xlim = c(0,20),ylim = c(0,0.4),xlab = '', ylab ='', lwd = 2)116par(new = T)117plot(result$k,result$SquareBais,type = 'o',col = 'green',118     xlim = c(0,20),ylim = c(0,0.4),xlab = '', ylab ='', lwd = 2)119par(new = T) 120plot(result$k,result$Variance,type = 'o',col = 'blue',121     xlim = c(0,20),ylim = c(0,0.4),xlab = 'Subset Size p', ylab ='', lwd = 2,122     main = 'Linear Model - Classification')123# 124dev.off()参考文献1. Ruppert D. The Elements of Statistical Learning: Data Mining, Inference, and Prediction[J]. Journal of the Royal Statistical Society, 2010, 99(466):567-567.公众号后台回复关键字即可学习回复 爬虫            爬虫三大案例实战  回复 Python       1小时破冰入门回复 数据挖掘     R语言入门及数据挖掘回复 人工智能     三个月入门人工智能回复 数据分析师  数据分析师成长之路 回复 机器学习      机器学习的商业应用回复 数据科学      数据科学实战回复 常用算法      常用数据挖掘算法

展开全文
• 偏差和方差（bias variance）很好理解，左图是high bias（高偏差），即欠拟合，右图是high variance（高方差），即过拟合。我们追求的是中间图，low bias AND low variance。注意的是并不是 高方差就一定低偏差，有...


很好理解，左图是high bias（高偏差），即欠拟合，右图是high variance（高方差），即过拟合。我们追求的是中间图，low bias AND low variance。

注意的是并不是 高方差就一定低偏差，有可能既高方差又高偏差。

怎么理解呢？看下面一个栗子：

判断图片是不是猫的一个分类问题，人的判断错误率为0%

那么如果train error 和valid error 分别为 1%，11%，明显就是high variance 过拟合

图中第二种情况，train error =15% >> 0%, 而valid error 和 train error 差不多大，因此是high bias 欠拟合

第三种情况，train error =15% >> 0%, 因此是high bias， 而valid error =30% >>train error ，因此是high variance 过拟合，即欠拟合又过拟合。

第四种情况是理想情况，train error =0.5%~0%， 因此是low bias，而valid error =1% 和train error 差不多大，因此low variance。

其他很好理解，但是即欠拟合又过拟合 是怎么样的呢？ 看下面的栗子：

High bias and high variance

如图，蓝色的直线是欠拟合，紫色的边界线是欠拟合的情况下，又过拟合。
展开全文
• <div><h3>Description 该提问来源于开源项目：rasbt/mlxtend</p></div>
• 在 ESL和 ISLR中，都给出了对于 biasvariance的讨论，并给出这样的结论： Err(X)=Var(f^(X))+Bias(f^(X))2+Var(ϵ)Err(X) = Var(\hat{f}(X)) + Bias(\hat{f}(X))^2 + Var(\epsilon)Err(X)=Var(f^​(X))+Bias(f^​...
• 来源：https://www.cnblogs.com/ooon/p/5711516.html 2.Bias variance tradeoff 转载于:https://www.cnblogs.com/chihaoyuIsnotHere/p/9882507.html
• 一个越复杂的model并不意味着在测试数据上可以得到越好的结果。 那么导致这种error的原因是：bias(偏差)和variance(方差) 我们将正确完美的函数定义成
• 方差（Variance）：数据的分布状态，数据分布越集中方差越低，越分散方差越高； 在机器学习中，实际要训练模型用来解决一个问题，问题本身可以理解为靶心，而模型就是子弹，则子弹呈现在靶子上弹孔位置就可能...
• 可以看出，（测试集）红色线存在明显的Bias Variance Trade-Off,训练集（蓝色线）随着自变量个数增加，误差不断减小，最后实际上出现过了拟合，也就是之前说到的乐观结果。 再说下数据的生成 训练集 ：100个训练集，...
• 我们首先来看一下,什么叫偏差(Bias),什么叫方差(Variance): 这是一张常见的靶心图 可以看左下角的这一张图,如果我们的目标是打靶子的话,我们所有的点全都完全的偏离了这个中心的位置,那么这种情况就叫做偏差 再...
• 他可能变化不大，所以方差小variance，大家都错的一样，错到了一个模型上限的最优值（不同于局部最优）。其均值点到那，全世界错到哪。所以模型简单的话，其错误来源于模型本身带来的bias不准。 相反，模型复杂，...
• squared error），而MSE又可以拆分成biasvariance两部分： 　式子的推导很显然，只要填一项减一项，展开式子，多余的那一项等于0 　从上面的式子可以看出，低bias的model在训练集合上更加准确，低...
• 1. 一般来说，模型的误差 = 方差（Bias） + 偏差（Variance） + 不可避免的误差（例如测量带来的精度损失、噪声等） 2. 导致偏差和方差的因素： 导致偏差的原因，可能是对模型的假设是错误的，例如用线性的假设去...
• 统计视角下的Bias Variance Tradeoff 和它在KNN模型中的体现 前言 一、Bias Variance Tradeoff 1. 真实数据分布和取样的假设 2. 统计理论中的BiasVariance 3. 机器学习任务中的BiasVariance 二、Bias Variance ...
• Bias and Variance of Estimator. Variance depends on the number of samples.
• 在测试集上error的来源BiasVarianceBias：偏离率，是指预测目标中心（多次的平均值，期望）与实际目标中心的偏离程度。 Variance：方差，是每个样本值与全体样本值的平均数之差的平方值的平均数，用来评价各...
• 首先我们通过三种途径来认识bias and variance ，三种途径是：直观上的、图形上的、数学定义上的。直观上的定义：Error due to Bias：真实值与预测值之间的差异。Error due to Variance ： 在给定模型数据上预测的...
• biasvariance 在A Few Useful Thingsto Know about Machine Learning中提到，可以将泛化误差（gener-alization error）分解成biasvariance理解。   Bias: a learner’s tendency to consistently ...
• Loss=bias+variance 模型越复杂，方差越大，偏差越小 模型越简单，方差越小，偏差越大 怎么判断是过拟合还是欠拟合？是方差大还是偏差大？ 假如在训练集上拟合的不好就是欠拟合（偏差大） 假如在训练集上...
• Bias & Variance Informally,wedenethebiasofamodeltobetheexpected generalizationerrorevenifweweretofitittoa...

...