视频列表
Lecture 1.1
1.在进行数据分析之前,你应该对你获取的数据集进行仔细观察和思考。(数据清洗)
2.一些有趣的应用:
1)医疗数据分析(疾病产生原因)
2)垃圾邮件预测(自动过滤垃圾邮件,关键词过滤等,文本挖掘)
3)手写体特征提取(识别手写体)
4)基因及其表达之间的关联分析(深入了解基因的意义)
Lecture 1.2
1.监督学习:提供已经被贴上label的若干瓶子,按照label将data装入瓶子中。
(你的操作一定是正确的,with gold standard)
2.非监督学习:提供未贴上label的若干瓶子,按照数据的特点将data装入瓶子中。
(你不知道你的操作是否正确,no gold standard)
3.Unlabeled data更容易收集。
4.一个有趣的例子:The Netflix prize,通过筛选出人们喜欢的电影来分析大众对于具有哪些特点的电影更加偏好。
5.Machine learning更偏应用,scale较大。Statistic learning更偏科研,学术性较强。
Lecture 2.1
1.Regression Function(回归方程法)可以看作是对每一个样本点x对应的y值取平均,进而得到的一条曲线。
2.对于回归方程关于原数据的误差,
E[(Y-\hat{f}(X))^{2}|X=x]=[f(x)-\hat{f}(x)]^{2} + Var(\epsilon)
可分为两个方面:
1):Reducible(可消除误差):[f(x)-\hat{f}(x)]^{2} 通过修正拟合曲线\hat{f}(x)来减小误差。
2):Irreducible(不可消除误差):Var(\epsilon)是模型本身的误差,是源于一些未考虑的变量而引起的。
3.Nearest Neighbor:
考虑如下情况,样本中在x于某一个值处并不存在对应的y值(样本离散性),但估计出来的\hat{f}往往是连续的,
即\hat{f}(x)存在,但对应的样本y值不存在。这时可以采用x的neighborhood的样本值来估测\hat{f}的准确性。
即对该x值划定一个范围(x-a,x+a),取在这个范围内的y值进行平均,来估算x点可能的标准y值,并将其作为标
准来计算\hat{f}的估计是否准确。
(值得注意的是,这一方法并不具有通用性)
Lecture 2.2
1.Nearest Neighbor Note:
1):对于x值划定一个范围(x-a,x+a)的过程中,a的取值。
a取的太小,则样本点个数不够,计算得到的y不够smooth;a取的太大,又失去了x在该位点的局部特征。
2):当实际的f(x)维数较高时,这样的拟合误差很大。(随着f(x)维数的增加,为了获取相同数量的样本点,
a值也需要随着增加)
2.Parametric models(参数估计法):将回归问题转化成参数估计问题,利用函数模板,仅仅去估计参数即可。
虽然估计出的函数几乎不可能是对的,但对于真实函数的一些未知的特征可以较好的反映。
Lecture 2.3
1.模型评估两个参数:
1):Training Mean Squared Error(MSE_{Tr})
2):Test Mean Squared Error(MSE_{Te})
2.Bias[\hat{f}(x_{0})]=E[\hat{f}(x_{0})]-f(x_{0})
3.Variance往往随着flexible的增加而增大,Bias往往随着flexible的增加而减小。
Lecture 2.4
1.我的一个想法:取KNN算法中不同的K值得到的曲线作为基函数f_{1},f_{2},...,f_{n},
利用傅里叶的思想,构建bayes分类器函数B(x)=u_{1}f_{1}+u_{2}f_{2}+...+u_{n}f_{n}
不知道这是不是传说中的boosting方法~
2.实践数据表面:对于Training Errors,其随着K值的增大而减小;对于Test Errors,
其随着K值的增大呈现U型。
Lecture 2.5
1.写好R脚本之后在Console中输入Source("test.R")即可运行指定脚本。
2.runif函数可以用来生成均匀分布的随机数,rnorm函数可以用来生成正态分布的随机数(可查找R随机数生成)
3.plot函数高度自定义化:例如xlab,ylab,pch(用于指定)图中点的样式,col用于指定点的颜色等。
4.可用par()指定相关绘图参数。
Lecture 3.1
1.Simple is actually very good.
2.通过使用最小二乘估计可以得到唯一的线性回归函数,使得RSS最小。
3.对于最小二乘法得到的斜率的置信区间的理解:
对整体实验数据随机取dataset并进行回归分析,最后得到的斜率落在置信区间的概率。
Lecture 3.2
1.R-squared 参数用于描述模型对当前数据的解释度,TSS是数据本身的波动,
也可以理解为用最简单的均值模型去估计数据,从而得到的估计值相对于样本值的波动,
也称no model error;RSS是线性模型的估计值相对于样本值的波动,
TSS-RSS表示用均值模型估计数据产生的波动与用线性模型估计数据产生的波动的差异。
如果二者差异不大,则表明使用该模型来估计此数据效果较差,回归性差。
如果二者差异较大,则表明使用该模型来估计数据效果较好,回归性好。
Lecture 3.3
1.当predictors的相关性强时,我们很难将它们的系数区分开,也很难对这种情况下的模型进行解释。
2.Essentially, all models are wrong, but some are useful.
3.The only way to find out what will happen when a complex system is disturbed is to disturb the system,
not merely to observe it passively.(这句话现在还不是很懂,等之后再来回顾)
Lecture 3.4 (对于point3,具体参见Book P84)
1.当选择适合的线性模型时,我们需要考虑应该将哪些variables加入到模型中。对于这个问题最简单的解决方法是:
All subset or best subsets regression.
我们先构建所有的包含不同variables的全体可能的模型,并计算这些模型的training error,取error最小的模型。
但事实上我们不可能检验这样的所有的可能的模型,因为如果变量有p个,那么模型有2^p个,
当p较大时,模型的个数可能非常庞大。
2.一般的解决方法:
1)Forward selection:Begin with null model,计算RSS;依次添加variables,
若RSS减小,则将该variable添加进模型,否则,不添加任何variable。
2)Backward selection(当参数个数较小时):主要思想:Remove the variable that is less significance.
Begin with all variables in the model,计算p-value(各variable服从的t-statictic),
移除p-value值最大的variable,直到达到停止条件。
3.对于定性量的研究,我们可以采用引入dummy variable的方式进行分析。如果定性量有k种情况,
则我们需要引入k-1个dummy variables来进行分析。设置baseline,对于baseline的情况,
我们不加入任何dummy variables。`值得注意的是,当baseline改变时,contrast也会改变,
进而影响到p-value值的改变。`
Lecture 3.5
1.继承性原则:如果在模型中我们引入了interaction的变量,
那么我们必须将其单独主变量也添加进模型中进行分析,即使它们对于response的作用不明显。
2.关于定性变量和定量变量存在interaction的情况,我们可以通过引入dummy variable的概念,
然后建立存在interaction variables变量的线性模型来分析。
3.线性模型的扩展:选取基函数为非线性函数,如高阶多项式等。
Lecture 3.6
1.在使用fit=lm(medv~. ,Boston)之后,我们可以得到所有variables和medv之间的线性模型关系以及模型评估结果。
在结果栏中,我们看到age变量和indus变量和medv的关系不大,
我们可以使用fit1=update(fit, ~.-age-indus),~表示我们使用相同的变量作为输出,
.表示fit模型中的variables,-表示移除的variables。
2.在使用命令plot(medv~lstat)之后,我们可以使用命令points(lstat,fitted(fit))在原图上标注出符合回归曲线的点的集合。
如下图所示:
3.在定义函数时,我们可以添加...是的函数中可以携带更多参数。例如:
regplot=function(x,y,...){
fit=lm(y~x)
plot(((x,y,...)
abline(fit,col="red")
}
regplot(Price,Sales,xlab="Price",ylab="Sales",col="blue",pch=20)
Lecture 4.1
1.对于在定性量(factor)类型的数据上我们使用线性回归的方法进行分析时,如果factor只有两类,
那么我们可以简单的对一种情况赋值为1,另一种情况赋值为0,从而判断factor对responseY的影响。
这种情况下,这种分析方法is not so bad。
但是当factor有多种类型时,通过简单的赋值就不能够很好的解决这个问题了,原因是赋值会对factor的权重有影响。
Lecture 4.2
1.逻辑回归的好处是不论对因变量如何取值,模型的响应结果输出都在0~1之间。
2.对于参数的估计,我们采用maximun likelihood来对其进行估计,其通常用来计算在数据集中观测到不同
factor的概率。我们假设每个样本的观测是独立的,我们选用一组参数使得观测到所有样本的概率乘积最大,
从而确定参数。
Lecture 4.3
1.在多个变量存在的情况下,有时会出现这样的情况:
事实1:我们发现用户是否欠款与用户账户余额有关:用户的账户余额越多,用户欠款的概率就越大。
事实2:我们发现用户是否是学生身份与用户账户余额有关:如果某个用户是学生,那么在平均水平上,
该用户余额较非学生用户的余额多。即我们可以认为学生更加倾向于拥有更多的账户余额。
推论:学生更容易欠款。
但当我们做出账户余额和欠款概率曲线时,我们发现在同样的账户余额情况下,学生的欠款概率更低
(相对于非学生而言),这样就出现了矛盾。
出现这种现象的原因是我们不能够由事实1和事实2推出推论,原因是这里没有使用控制变量法。
这也是分析多变量情况时需要重点注意的地方!
2.有时,我们建立模型后会发现,我们直觉认为的一些应该对Y有影响的variable A,反而它们的Pr值很大,
即在summary的时候我们会发现A对Y并没有太大影响。出现这种现象的原因是这些variables
可能与一些其他的关键的variableB关联性强,以至于B可以代替A对于Y的影响。
Lecture 4.4
1.对控制变量法对数据进行采样可以减少数据的Coefficient of Variation。
Lecture 4.5
1.我们可以通过上图联系Bayes theorem和discriminant analysis之间的联系。
2.discriminant analysis的适用范围:
在第二条情况下,由Bayes rule可知,此时的discriminant analysis模型是最好的。
Lecture 4.7
1.当variables的数量非常大时,直接使用LDA是不可取的。
2.在对LDA进行模型分析时,一定要避免过拟合的问题,因为建模时使用的数据是training data,
training data带来的是training error,我们希望的是test error尽可能的小。
3.在对模型分析时我们要考虑数据本身的分类属性。例如如果一个训练数据集,本身有9900个属于A类,
100个属于B类,那么该数据集的Null rate为100/(9900+100)=1%,即我们简单的将数据全部划分为A类,
这个naive模型的错误率也只有1%。如果我们建立的LDA模型的misclassification rate比1%还要高,
那就说明建立的LDA模型是很差的模型。
4.在对模型分析时我们不仅要看模型整体的misclassification rate,有时也需要考虑模型对
单独某一个class的misclassification rate,有时可能我们需要这个class的misclassification rate较低,
在这种情况下,我们可以牺牲数据总体的misclassification rate来换取
某个特定的class的低misclassification rate。
Lecture 4.8
1.QDA与LDA的区别在于QDA对每个class的fk(k)的估计函数取不同参数的高斯分布函数。
2.LR(Logistic Regression)和LDA的一些区别(概念上):
Lecture 4.9
1.有时我们发现我们建立的模型的预测正确概率比Null rate还要低,这种情况下一个可能的原因是
我们的模型过拟合了。
Lecture 5.1
1.上图说明了training error,test error和模型复杂度的关系。一般来说,随模型复杂度的提高,
即拟合程度的提高,training error会逐渐减小,但test error会先下降再上升。我们的最终目标是取得最小的
test error,所以这也是为什么我们需要避免过拟合的情况。
2.The validation set error may tend to overestimate the test error for the model fit on the entire data set.
造成这种现象的原因是我们将一半数据用于training,另一半数据用于test,这样相当于本来应该用来
training的数据变少了,故造成了整体数据的欠拟合。
Lecture 5.2
1.在k-fold validation中,k取值越大,bias越小,但variance越大,k的选择(5或10)是一种bias和variance的
trade-off。
2.一般来说,由于在k-fold中训练集的数目比原始训练集要小,所以模型的估计误差往往会偏大。
Lecture 5.3
1. 这一节介绍了Cross-validation的错误使用方法,考虑以下情况:
我们不能只对step2做Cross-validation,这样会得出错误的结果。
It is easy to see that the true error rate of any model should be close to 50%, since the class labels
have no association with the predictor variables. Using cross-validation the wrong way, the estimated
error rate is less than 50%.
参考资料——Cross-Validation: The Right and Wrong Way
错误的原因是在第一步参数筛选的过程中我们已经用到了所有的原始数据作为训练集,这些筛选出来的参数
已经和所有的原始数据有关了,这时我们去做Cross-Validation已经不科学了。
原因是在Cross-Validation过程中,我们需要将数据分为两个部分,一部分为training data,一部分为
test data,在对模型进行训练时,我们本应该只选用training data。但在step1的过程中,我们已经将
training data和test data都用于参数筛选了,我们再用test data对齐进行模型评估时,test data已经失去了
可信性。
正确的方法是在step1的过程中,我们也只选用training data去做参数筛选。待模型评估时,我们选用从未
使用过的test data对其进行预测评估,这样得出来的结论才具有可信性。
Lecture 5.4
1.sampling with replacement表示有放回的抽取。即set中的元素可能被sample多次。
2.bootstrap的思想是利用抽样的data去估总体的population,主要是降低了样本data的variance。
Lecture 5.5
1.在bootstrap中,我们同样可以利用k-fold的思想,这样实现的bootstrap被称为block bootstrap。其实这个
本质上只是一个集合划分的问题,即你如何看待一个元素,一个元素的集合也可以是一个“元素”。
2.对于bootstrap,我们可以给出置信区间,即在我们有多少%的把握,认定我们的真实系数落在
置信区间内。
3.简单的bootstrap不能用于估计预测误差。Estiminate prediction error需要训练集和和测试集之间
存在no overlap。而each bootstrap sample has significant overlap with the original data.
About two-thirds of the original data points appear in each bootstrap sample.
Lecture 5.6
1.在plot function之后使用line可以直接将新的结果图直接 绘制在原图上。
2.cv.glm返回的两个delta值,较大值为LOOCV的结果,较小值为调整后的LOOCV的结果,后者由于拟合时
用到了数据集中的所有数据,所以后者的误差值会小一些。
Delta:A vector of length two.
The first component is the raw cross-validation estimate of prediction error.
The second component is the adjusted cross-validation estimate. The adjustment is
designed to compensate for the bias introduced by not using leave-one-out
cross-validation.
Lecture 6.3
1.后向选取可用于样本数>变量数的情况,而前向选取不行;前向选取可用于变量数>样本数的情况,而后向选取不行。
Lecture 6.4
1.如果使用Mallow's Cp参数对模型进行评估,样本数n需要远大于变量数p。
Lecture 6.6
1.在使用Ridge Regression之前应该对Predictor进行标准化。
2.Validation和Cross-Validation的区别:Validation的过程是把数据分成两个部分,一部分用于train,
一部分用于test。Cross-Validation(CV)是把数据分成n份,每次取n-1份用作train,剩下的1份用作test,
直到所有的数据都被用作一次作为test.
Lecture 6.9
1.Dimension Reduction实际上是对于高维数据,我们找到一个低维空间,将高维数据投影到低维空间的
过程。我们需要做的就是使投影后的低维空间的数据与原高维空间的数据相比,其bias和variance都较小。
Lecture 6.10
1.PCR一定程度上可以理解为离散形式的Ridge Regression。
Lecture 7.1
1.关于step function的离散化,我的一种想法是根据数据集的数量分布进行均等cut。
Lecture 7.2
1.Linear Splines的连续化方法让我想到是否可以建立一组基底,该基底采用小波分析的思想,
先做全局拟合函数,再逐步做局部拟合函数,从而形成一组基底。可以利用这组基底进行函数拟合。
Lecture 7.3
1.The effective degrees of freedom formula 不保证得到的自由度为整数。所以在使用LOOCV进行
最佳自由度的选取时,我们可能会得到最佳自由度为小数的情况。
Lecture 7.5
1.在我们使用:
###############################
fit1=lm(wage~poly(age,4),data=Wage)
summary(fit1)
##############################
fit2=lm(wage~age+I(age^2)+I(age^3)+I(age^4),data=Wage)
summary(fit2)
##############################
我们会发现两次得到的fit模型的系数的p value是不同的。这是因为我们用了不同的basis来表示polynomial。
但是实际上,二者的拟合模型是相同的,可以使用
plot(fitted(fit1),fitted(fit2))
来验证二者拟合模型是否等价。
Lecture 8.1
1.关于决策树的生成方法——Top-down greedy:
· (1)We start at the top with the full set of data and all predictors.
` (2)We look for the predictor we split that produces the smallest criterion.
` 重复(1)(2)直到停止条件
Lecture 8.2
1.上述过程实际上是在生成的tree中找到一个sub-tree,这个sub-tree的bias和variance都较低。
(利用CV,实现bias和variance的trade-off)
Lecture 8.3
1.当分类的边界是与x,y轴不平行的线性边界时,我们使用决策树模型可能会得到很差的效果,
如右上角的图所示。当分类的边界是是与x,y轴平行的矩形边界时,我们使用决策树模型得到的效果较好。
Lecture 8.5
Lecture 9.1
1.如上图所示,图中蓝色线表示2位的超平面,也就是一条直线。红色的直线是与超平面正交的平面。
超平面可以看作是分类的边界,其分类的原理是计算样本点到与超平面正交的平面的“距离”,
如果大于0则说明点在超平面的上方,如果小于0则说明点在超平面的下方,等于0则说明点在超平面上。
Lecture 9.3
1.超平面的扩展,一个超平面我们可以看作是由特征形成的向量张成的平面。
之前介绍的超平面中的特征向量都是线性的。这里介绍Feature Expansion的概念。
其实质是将线性的特征向量转化成非线性的特征向量,然后线性组合张成的超平面。
Lecture 10.2
1.PCA和Linear Regression的区别。PCA是非监督学习方法,通过衡量样本点
到超平面的距离对样本点进行区分,即引入超平面的法向量作为判断基准。
Linear Regreesion是监督学习方法,其通过样本点在Y方向上与拟合的直线的距离来对样本点进行区分。
引入的Y轴即为label。
Lecture 10.3
1.对于K-means算法,确定K的取值是很重要的。K值的微小变化可能会带来完全不同的聚类结果。
而Hierarchical Cluster算法适用于当K值未知时的聚类。