机器学习实验报告(共11页).docx
《机器学习实验报告(共11页).docx》由会员分享,可在线阅读,更多相关《机器学习实验报告(共11页).docx(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上 1一 月二 月三 月产品名称数量金额利润产品名称数量金额利润产品名称数量金额利润合 计合 计合 计四 月五 月六 月产品名称数量金额利润产品名称数量金额利润产品名称数量金额利润合 计合 计合 计1. 问题描述: 用逻辑回归根据学生的考试成绩来判断学生是否可以入学,因此,需要根据trainging set 训练出一个classification model。然后,拿着这个classificationmodel来评估新学生能否入学。训练数据的成绩样例如下:第一列表示第一次考试成绩,第二列表示第二次考试成绩,第三列表示入学结果(0-不能入学,1-可以入学)。2. 内容:逻
2、辑回归根据学生的考试成绩来判断学生是否可以入学,训练数据图形表示 如下:橫坐标是第一次考试的成绩,纵坐标是第二次考试的成绩,右上角的 + 表示允许入学,圆圈表示不允许入学。该训练数据的图形 可以通过Matlab plotData函数画出来,它调用Matlab中的plot函数和find函数,图形画出来之后,对训练数据就有了一个大体的可视化的认识了。接下来就要实现 模型了,这里需要训练一个逻辑回归模型。对于 logistic regression而言,它针对的是 classification problem。这里只讨论二分类问题,比如上面的“根据成绩入学”,结果只有两种:y=0时,成绩未合格,不予
3、入学;y=1时,可入学。即,y的输出要么是0,要么是1,而如果引入了sigmoid function,就可以把假设函数的值域“约束”在0, 1之间。总之,引入sigmoid function,就能够更好的拟合分类问题中的数据,即从这个角度看:regression model 比 linear model 更合适 classification problem.3. 知识:(1)逻辑回归 Logistic regression (逻辑回归)是当前业界比较常用的机器学习方法,用于估计某种事物的可能性。之前在经典之作数学之美中也看到了它用于广告预测,也就是根据某广告被用户点击的可能性,把最可能被用户点
4、击的广告摆在用户能看到的地方,然后叫他“你点我啊!”用户点了,你就有钱收了。这就是为什么我们的电脑现在广告泛滥的原因了。还有类似的某用户购买某商品的可能性,某病人患有某种疾病的可能性啊等等。这个世界是随机的(当然了,人为的确定性系统除外,但也有可能有噪声或产生错误的结果,只是这个错误发生的可能性太小了,小到千万年不遇,小到忽略不计而已),所以万物的发生都可以用可能性或者几率(Odds)来表达。“几率”指的是某事物发生的可能性与不发生的可能性的比值。Logistic regression可以用来回归,也可以用来分类,主要是二分类。还记得上几节讲的支持向量机SVM吗?它就是个二分类的例如,它可以将
5、两个不同类别的样本给分开,思想是找到最能区分它们的那个分类超平面。但当你给一个新的样本给它,它能够给你的只有一个答案,你这个样本是正类还是负类。例如你问SVM,某个女生是否喜欢你,它只会回答你喜欢或者不喜欢。这对我们来说,显得太粗鲁了,要不希望,要不绝望,这都不利于身心健康。那如果它可以告诉我,她很喜欢、有一点喜欢、不怎么喜欢或者一点都不喜欢,你想都不用想了等等,告诉你她有49%的几率喜欢你,总比直接说她不喜欢你,来得温柔。而且还提供了额外的信息,她来到你的身边你有多少希望,你得再努力多少倍,知己知彼百战百胜,哈哈。Logistic regression就是这么温柔的,它给我们提供的就是你的这
6、个样本属于正类的可能性是多少。还得来点数学。(假设我们的样本是x, y,y是0或者1,表示正类或者负类,x是我们的m维的样本特征向量。那么这个样本x属于正类,也就是y=1的“概率”可以通过下面的逻辑函数来表示:这里是模型参数,也就是回归系数,是sigmoid函数。实际上这个函数是由下面的对数几率(也就是x属于正类的可能性和负类的可能性的比值的对数)变换得到的:所以说上面的logistic回归就是一个线性分类模型,它与线性回归的不同点在于:为了将线性回归输出的很大范围的数,例如从负无穷到正无穷,压缩到0和1之间,这样的输出值表达为“可能性”才能说服广大民众。当然了,把大值压缩到这个范围还有个很好
7、的好处,就是可以消除特别冒尖的变量的影响(不知道理解的是否正确)。而实现这个伟大的功能其实就只需要平凡一举,也就是在输出加一个logistic函数。另外,对于二分类来说,可以简单的认为:如果样本x属于正类的概率大于0.5,那么就判定它是正类,否则就是负类。实际上,SVM的类概率就是样本到边界的距离,这个活实际上就让logistic regression给干了。(2)模型的代价函数(cost function)把训练好的模型对新数据进行预测,那预测结果有好有坏。因此,就用cost function 来衡量预测的准确性。cost function越小,表示测的越准。这里的代价函数的本质是”最小二乘
8、法“-ordinary least squares代价函数的最原始的定义是下面的这个公式:可见,它是关于 theta 的函数。(X,y 是已知的,由training set 中的数据确定了)那如何求解 cost function的参数 theta,从而确定J(theta)呢?有两种方法:一种是梯度下降算法(Gradient descent),另一种是正规方程(Normal Equation),本文只讨论Gradient descent。而梯度下降算法,本质上是求导数(偏导数),或者说是:方向导数。方向导数所代表的方向-梯度方向,下降得最快。而我们知道,对于某些图形所代表的函数,它可能有很多个导
9、数为0的点,这类函数称为非凸函数(non-convex function);而某些函数,它只有一个全局唯一的导数为0的点,称为 convex function可以看出,引入log 函数(对数函数),让non-convex function 变成了 convex function再精简一下cost function,其实它可以表示成:4. 环境:win10,matlab5. 步骤:(1)加载数据 (2)引入sigmoid (3)调用costfunction.m文件中定义的coustFunction函数,从而运行梯度下降算法找到使代价函数J(theta)最小化的 逻辑回归模型参数theta。 (4
10、)逻辑回归的正则化6. 结果:7. 程序:costFunctionReg.m function plotData(X, y)pos = find(y=1);neg = find(y=0);plot(X(pos, 1), X(pos, 2), k+, LineWidth, 2, MarkerSize, 7);plot(X(neg, 1), X(neg, 2), ko, MarkerFaceColor, y, MarkerSize, 7);% hold off;Enddata = load(ex2data1.txt); X = data(:, 1, 2); y = data(:, 3);plotD
11、ata(X, y);% Put some labels hold on;% Labels and Legendxlabel(Exam 1 score) %标记图形的 X 轴ylabel(Exam 2 score) %标记图形的 Y 轴% Specified in plot orderlegend(Admitted, Not admitted) %图形的右上角标签hold off;function g = sigmoid(z)%SIGMOID Compute sigmoid functoonEndplotData.mfunction plotData(X, y) figure; hold on;
12、 pos = find(y=1);neg = find(y=0);plot(X(pos, 1), X(pos, 2), k+, LineWidth, 2, MarkerSize, 7);plot(X(neg, 1), X(neg, 2), ko, MarkerFaceColor, y, MarkerSize, 7); hold off;enddata = load(ex2data1.txt); X = data(:, 1, 2); y = data(:, 3);plotData(X, y);function g = sigmoid(z)g = zeros(size(z);g = 1./(one
13、s(size(z) + exp(-z); % 点除 表示 endhold on;xlabel(Exam 1 score) %标记图形的 X 轴ylabel(Exam 2 score) %标记图形的 Y 轴legend(Admitted, Not admitted) hold off;function J, grad = costFunction(theta, X, y)m = length(y); % number of training examplesJ = 0;grad = zeros(size(theta);J = ( log( sigmoid(theta*X) ) * y + log
14、( 1-sigmoid(theta*X) ) * (1 - y) )/(-m);% theta = theta - (alpha/m)*X*(X*theta-y);grad = ( X * ( sigmoid(X*theta)-y ) )/m;endoptions = optimset(GradObj, on, MaxIter, 400); theta, cost = . fminunc(t)(costFunction(t, X, y), initial_theta, options);prob = sigmoid(1 45 85 * theta); %这是一组测试数据,第一次考试成绩为45,
15、第二次成绩为85fprintf(For a student with scores 45 and 85, we predict an admission . probability of %fnn, prob);% Compute accuracy on our training setp = predict(theta, X);% 调用predict函数测试模型fprintf(Train Accuracy: %fn, mean(double(p = y) * 100);fprintf(nProgram paused. Press enter to continue.n);pause;For
16、a student with scores 45 and 85, we predict an admission probability of 0.Train Accuracy: 89.Costfunction.mfunction J, grad = costFunction(theta, X, y)%COSTFUNCTION Compute cost and gradient for logistic regression% J = COSTFUNCTION(theta, X, y) computes the cost of using theta as the% parameter for
17、 logistic regression and the gradient of the cost% w.r.t. to the parameters.% Initialize some useful valuesm = length(y); % number of training examples% You need to return the following variables correctly J = 0;grad = zeros(size(theta);% Instructions: Compute the cost of a particular choice of thet
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 机器 学习 实验 报告 11
限制150内