分成两部分,一是本节课程内容的简要回顾,二是作业步骤的推导
程序打包网盘地址提取码1111
(后续部分,需要填入的代码为深色框,已经提供的代码为浅色框。)
一、内容回顾
逻辑回归Logistic Regression(LR)常用于二分类模型,代价函数和梯度函数如下:
在求解代价函数最小值的theta解时,可以利用自定义函数fminuc求解。
正则化系数lambda是为了解决复杂参数过拟合的情况。
二、作业1-Logistic Regression逻辑回归
按照课程的要求,安装octave或者matlab软件。(这里part是根据主文件ex2中的分法来分的。)
实际意义:数据集有100位学生的两次考试成绩(存入X中),拟通过逻辑回归(二分类模型),估计每个学生的录取概率(录取表明输出y为1,反之输出y为0)。
2.1 Part 1: Plotting 绘图
ex2主函数只提供子函数入口及轴、图例设置的代码,如下:
% 提取数据
data = load(‘ex2data1.txt’);
X = data(:, [1, 2]); y = data(:, 3);
% 加载子函数plotData
plotData(X, y);
% 设置x、y轴
hold on;
% Labels and Legend
xlabel(‘Exam 1 score’)
ylabel(‘Exam 2 score’)
% 添加图例
legend(‘Admitted’, ‘Not admitted’)
hold off;
加载的结果 | 大小 |
---|---|
向量X | 100*2 |
向量y | 100*1 |
本部分需要在plotData.m文件中填入的代码:
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');
利用plotData函数,第一行先存入y=1、y=0的两类点位置。第二、三行进行绘图,k+代表黑色"+"号,默认填充黑色;ko代表黑色圆圈,只涉及边缘;MarkerFaceColor,y 表明用黄色对o进行填充。输出:
2.2 Part 2: Compute Cost and Gradient 计算代价和梯度
主函数ex2提供了代价函数接口,如下:
% 存入X的行/列数
[m, n] = size(X);
% 初始化X、theta
X = [ones(m, 1) X];
initial_theta = zeros(n + 1, 1);
% Compute and display initial cost and gradient
[cost, grad] = costFunction(initial_theta, X, y);
% Compute and display cost and gradient with non-zero theta
test_theta = [-24; 0.2; 0.2];
[cost, grad] = costFunction(test_theta, X, y);
本部分需要在computeCost.m填入代码
- 代价函数
与线性回归不同,逻辑回归的输出值为0和1,线性回归和逻辑回归的代价函数如下图所示:
将逻辑回归的分段函数整合成一个函数,即可得到以下结果:
这里假设函数为:
引入了sigmoid函数: - 梯度函数
对上式的J进行求导,由于sigmoid函数有σ‘=σ*(1-σ)的特点,过程如下: ∂ J ( θ ) ∂ θ j = 1 m ∑ i = 1 m ∂ ∂ θ j [ − y ( i ) log ( h θ ( x ( i ) ) ) − 1 − y ( i ) log ( 1 − h θ ( x ( i ) ) ) ] = 1 m ∑ i = 1 m [ y ( i ) 1 h θ ( x ( i ) ) ∗ h θ ( x ( i ) ) ∗ ( 1 − h θ ( x ( i ) ) ) ∗ ∂ θ T