机器学习
大数据和机器学习研究 |
[原]史上最直白的pca教程 之 二 |
pca的博文已经整理成一个完整的pdf文档,在这里下载: http://download.csdn.net/detail/u011539200/9305773
不需要积分,累计人品,^_^ 作者:u011539200 发表于2015/11/27 16:48:26 原文链接
阅读:15 评论:0 查看评论
|
[原]史上最直白的pca教程 之 一 |
PCA理论推导
X=⎛⎝⎜⎜⎜⎜x1,1x2,1...xm,1x1,2x2,2...xm,2............x1,nx2,n...xm,n⎞⎠⎟⎟⎟⎟
X∈Rm×n,式的每列是一个样本,每个样本有m个属性,一共有n个样本。注意,这里的每个样本都经过均值化处理。 数据通常是含糊的,有噪声的,不明确的。这种含糊和不明确,体现在它的协方差阵的多数元素都是非零值。比如,X的协方差阵就是: CX=1n−1XXT
其中,1n−1是一个实数系数,CX∈Rm×m。
需要从数据找到一个不含糊的,低噪声的方向。这个需求,在本质上就是寻找一个矩阵,用它对X做变换,使得变换后的新矩阵的协方差阵大多数元素的值是零,最好的情况是,只有主对角线非零,其他都是零。令P表示这个矩阵,则: Y=PX
其中,P∈Rm×m,Y∈Rm×n。
根据上两式,令 A=XXT
则:
A是一个对称阵,对它进行对角化,可以写成A=EDET,其中,D是对角阵,{A,E,D}∈Rm×m。 如果要将CY转化成对角阵,观察上式可知,如果令P=ET,根据矩阵对角化性质可知,P−1=PT,I表示单位阵,则上式就变成:
均值化PCA理论推导里的X经过均值化处理的。均值化过程如下: Z=⎛⎝⎜⎜⎜⎜z1,1z2,1...zm,1z1,2z2,2...zm,2............z1,nz2,n...zm,n⎞⎠⎟⎟⎟⎟
其中,Z∈Rm×n,是原始数据。 令: zi¯¯¯=1n∑j=1nzi,j
那么,均值化就是:
Z¯¯¯=⎛⎝⎜⎜⎜⎜z1,1−z1¯¯¯z2,1−z2¯¯¯...zm,1−zm¯¯¯¯z1,2−z1¯¯¯z2,2−z2¯¯¯...zm,2−zm¯¯¯¯............z1,n−z1¯¯¯z2,n−z2¯¯¯...zm,n−zm¯¯¯¯⎞⎠⎟⎟⎟⎟
实现用Python2.7,matplotlib和numpy实现pca算法。
该实现创建出一组数据,它近似高斯分布,且主方向在45度角方向的直线上。 经过PCA算法处理后,数据X成为以原点为中心,水平方向是主方向的新数据。究其本质来说,new_X是数据X在以P为基的二维空间的图像。 作者:u011539200 发表于2015/11/27 16:43:48 原文链接
阅读:68 评论:0 查看评论
|
[原]史上最直白的logistic regression教程 之 五 |
史上最直白的logistic regression教程整理稿,将4篇博文整理成一个完整的pdf文档,且修改成学术语境。 链接在这里: http://download.csdn.net/detail/u011539200/9290695 0积分下载,求rp,^_^ 作者:u011539200 发表于2015/11/22 15:57:46 原文链接
阅读:46 评论:0 查看评论
|
[原]史上最直白的logistic regression教程 之 四 |
接上篇,用python实现logisitic regression,代码如下:
跟前面相对,多了一点变化,sigmoid_vec是对sigmoid函数的向量化,以及计算对对V的计算。 我们看看计算结果: Logistic regression教程到此结束,就酱! 作者:u011539200 发表于2015/11/19 16:19:26 原文链接
阅读:71 评论:0 查看评论
|
[原]史上最直白的logistic regression教程 之 三 |
在线性拟合的基础上,我们实现logistic regression。 如前所述,样本集是 {x1,y1},{x2,y2},...,{xn,yn}[1]
其中,xi=[1,xi,1,xi,2,xi,3,...,xi,k]T,且yi∈(0,1)。注意,这里对yi有值上的要求,必须如此,如果值不再这个区间,要以归一化的方式调整到这个区间。对于分类问题,则yi的取值或者是0,或者是1,也就是yi∈{0,1}。
当然,从严格的意义上说,logistic regression拟合后,yi的值只能无限地逼近0和1,而不能真正达到0和1,但在处理实际问题上,可以设定成形如 ifyi>0.5thenyi=1和ifyi<=0.5thenyi=0解决。 Logistic regression的拟合形式如下: yi=f(zi)[2]
zi=Wxi[3]
其中,f(z)=11+e−z[4],也就是Logistic函数。
根据公式[2]和公式[3],则: yi=f(Wxi)[4]
那么,如果用公式[4]拟合xi和yi的关系,需要求解W,使得在公式[1]上误差最小。对应的损失函数就是 Loss=12∑i=1n(yi−f(Wxi))2[5]
跟前面的一样,我们用梯度下降法求解。 ∂Loss∂wj=∑i=1n(yi−f(Wxi))×(−1)×∂f(Wxi)∂wj=∑i=1n(yi−f(Wxi))×(−1)×∂f(zi)∂zi×∂zi∂wj[6]
注意,问题来了,公式[6]的最后一步,实际上是将Wxi视为一个变量zi,分别求导。这一步是在高等数学有详细描述了,不解释。 公式[6]中的∂f(zi)∂zi等价于f′(z),因为只有一个自变量z。根据公式[4],可以求出 f′(z)=ez(ez+1)2[7]
对公式[7]可以做一次变形,以方便求解: 根据公式[4],可以知道 ez=f(z)1−f(z)[8]
将公式[8]代入到公式[7],就可以得到 f′(z)=f(z)×(1−f(z))[9]
也就是说,我们可以根据f(z)得到f′(z),而且计算量很小。
把公式[9]代入公式[6],就得到 ∂Loss∂wj=∑i=1n(yi−f(Wxi))×(−1)×∂f(zi)∂zi×∂zi∂wj=∑i=1n(yi−f(Wxi))×(−1)×f(zi)×(1−f(zi))×∂zi∂wj=∑i=1n(yi−f(Wxi))×(−1)×f(Wxi)×(1−f(Wxi))×∂(Wxi)∂wj=∑i=1n(yi− |