不写R包的分析师不是好全栈

统计学习基础笔记【1】

    技术学习

这系列博文是对Element of Statistical Learning一书讨论课的总结~ 感谢毛宁,李腾龙,陶文勇,李鹏翔,王哲峰对于这次学习的支持

安装参考书所需包

  • 主要是各个数据
    1
    2
    install.packages("ElemStatLearn")
    library(ElemStatLearn)

有监督和无监督学习

  • 有监督学习
    • 分类: 有一定描述,或者可以对结果的判断
  • 无监督学习
    • 聚类: 没有对结果的描述,对于模型的估计结果无法给出一个合理的判断(DNA序列分析)
    • 比如一场考试中如果老师给划了重点可以看做一个有监督学习,通过老师给的信息做出合理的判断,如果老师没有划重点,考试的结果必然会比较差,也是无监督学习的一些不靠谱的地方。

Knn

K最近邻(kNN,k-NearestNeighbor)分类算法可以说是整个数据挖掘分类技术中最简单的方法了。所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用她最接近的k个邻居来代表。

kNN算法的核心思想是如果一个样本在特征空间中的k个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性。该方法在确定分类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。 kNN方法在类别决策时,只与极少量的相邻样本有关。由于kNN方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,kNN方法较其他方法更为适合。

$[\hat{Y}(x)=\frac{1}{k}\Sigma_{x_i \in N(x)}y_i]$

和线性回归相比,KNN方法不需要太多假定(不需要类似高斯-马尔科夫假定就可以完成估计).线性回归具有低方差,高偏差的情况,而k近邻是高方差,低偏差(对于y也是就response变量来说的)

蓝色为线性回归,黑色为k=1时的KNN结果

低偏差说的是在knn中,k=1 对于每个观测点的偏差均为0,(当然这里取1不是一个理想的情况),但是总体的方差比较大,也可以做为一个过拟合的情况

1
2
3
4
5
x = 1:10
y = x + sample(c(-1,1),10,replace = T)
library(ggplot2)
hline.data <- data.frame(z = c(y,y), x = c(x-0.5, x+0.5),a=c(1:10,1:10))
qplot(x,y)+geom_smooth(method="lm") + geom_line(aes(x=x,y=z,group=hline.data$a), data=hline.data)

plot of chunk unnamed-chunk-2

page PV:  ・  site PV:  ・  site UV: