资源描述:
《机器学习大作业3中文》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Linerregression简介:给一个随机样本,一个线性回归模型假设回归子和回归量之间的关系是除了X的影响以外,还有其他的变量存在。我们加入一个误差项(也是一个随机变量)来捕获除了之外任何对的影响。所以一个多变量线性回归模型表示为以下的形式:其他的模型可能被认定成非线性模型。一个线性回归模型不需要是自变量的线性函数。线性在这里表示的条件均值在参数里是线性的。例如:模型在和里是线性的,但在里是非线性的,它是的非线性函数。程序代码:load('shuju');X=shuju(:,1);Y=shuj
2、u(:,2);a=1;a0=0;minJ=0.5*(X*a-Y)'*(X*a-Y);dfa=0;while(a-a0>0.000001)a0=a;dfa=(X*a-Y)'*X;a=a-0.001*dfa;endminJ=0.5*(X*a-Y)'*(X*a-Y);aminJt=1holdonwhile(t<22)plot(X(t),Y(t),'*');t=t+1;endplot(X,a*X)程序结果:一、BackPropagationRegression简介:又称逆推学习算法,简称BP算法,1986
3、年由D.E.Rumelhard和W.S.McClelland提出。人工神经网络是一种模仿人脑处理信息的系统,先用样本数据训练神经网络时,它自动地将输出值与期望值进行比较,得到误差信号,再根据误差信号,从后向前调节各神经网络层神经元之间的连接强度,然后再进行运算,使误差减小,再将新的输出值与期望值进行比较,得到新的比先前小的误差信号,再根据较小的误差信号,从后向前重新调节各神经网络层神经元之间的连接强度,依此不断地多次进行,直到误差满足要求为止。程序代码:load('shuju');alpha=0.
4、1;[X_row,X_col]=size(X);[Y_row,Y_col]=size(Y);W1=rand(2,1);b1=rand(2,1);W2=rand(1,2);b2=rand(1);fori=1:X_rowF(i)=purelin(W2*logsig(W1*X(i)+b1)+b2);endminJ=norm(Y-F');minJ_0=minJ+10;while(norm(minJ_0-minJ)>0.001)minJ_0=minJ;fori=1:X_rowa0=X(i);a1=logsi
5、g(W1*a0+b1);a2=purelin(W2*a1+b2);t=Y(i);a=a2;e=t-a;fY1_1=(1-a1(1))*a1(1);fY1_2=(1-a1(2))*a1(2);fY2=1;FY1=[fY1_1,0;0,fY1_2];FY2=1;s2=-2*FY2*(t-a);s1=FY1*W2'*s2;W2=W2-alpha*s2*a1';b2=b2-alpha*s2;W1=W1-alpha*s1*a0';b1=b1-alpha*s1;endfori=1:X_rowF(i)=pure
6、lin(W2*logsig(W1*X(i)+b1)+b2);endminJ=norm(Y-F');endholdon;fori=1:21plot(X(i),Y(i),'*');endplot(X,F);title('BackPropagationRegression');xlabel('Input:x');ylabel('Output:y');程序结果:一、LogisticRegression简介:logistic回归与多重线性回归实际上有很多相同之处,最大的区别就在于他们的因变量不同,其他的基本
7、都差不多,正是因为如此,这两种回归可以归于同一个家族,即广义线性模型(generalizedlinearmodel)。这一家族中的模型形式基本上都差不多,不同的就是因变量不同,如果是连续的,就是多重线性回归,如果是二项分布,就是logistic回归,如果是poisson分布,就是poisson回归,如果是负二项分布,就是负二项回归,等等。只要注意区分它们的因变量就可以了。logistic回归的因变量可以是二分类的,也可以是多分类的,但是二分类的更为常用,也更加容易解释。所以实际中最为常用的就是二分
8、类的logistic回归。程序代码:clearall;load('Yale_32x32');number1=4;number2=8;number=11;people1pointstart=(number1-1)*11+1;people1pointend=(number1-1)*11+number;people1data=fea(people1pointstart:people1pointend,:);people1targ=zeros(number,1);people2points