【机器学习】 吴恩达机器学习作业 ex2逻辑回归 Matlab实现

文章目录

  • 内容回顾
    • 1.1 假说表示
    • 1.2 判定边界
    • 1.3 代价函数
    • 1.4 高级优化
    • 1.5 正则化
  • ex2 逻辑回归作业
    • 2.1 Part 1: Plotting 绘图
    • 2.2 Part 2: Compute Cost and Gradient 计算代价和梯度
    • 2.3 Part 3: Optimizing using fminunc利用fminuc函数优化
    • 2.4 Part 4: Predict and Accuracies 预测和准确度计算
  • ex2 正则化的逻辑回归
    • 3.1 Part 1: Regularized Logistic Regression正则化逻辑回归
    • 3.2 Part 2: Regularization and Accuracies正则化和准确度
    • 3.3 比较不同正则化参数

内容回顾

1.1 假说表示

h ( x ) = g ( θ T X ) h(x)=g(\theta ^TX) h(x)=g(θTX)
g ( z ) = 1 1 + e − z g(z)=\frac{1}{1+e^{-z}} g(z)=1+ez1
h θ ( x ) h_\theta(x) hθ(x)的作用是,对于给定的输入变量,根据选择的参数计算输出变量=1的可能性即 h θ ( x ) = P ( y = 1 ∣ x ; θ ) h_\theta(x)=P(y=1|x;\theta) hθ(x)=P(y=1x;θ)
假说化简得到
h ( x ) = 1 1 + e − θ T x h(x)=\frac{1}{1+e^{-\theta ^Tx}} h(x)=1+eθTx1

1.2 判定边界

【机器学习】 吴恩达机器学习作业 ex2逻辑回归 Matlab实现_第1张图片
将区域分开的函数就是模型的分界线。

1.3 代价函数

J ( θ ) = 1 m ∑ i = 1 m [ − y ( i ) l o g ( h θ ( x ( i ) ) ) − ( 1 − y ( i ) ) l o g ( 1 − x ( i ) ) ) ] J(\theta )=\frac{1}{m}\sum_{i=1}^{m}[-y^{(i)}log(h_\theta (x^{(i)}))-(1-y^{(i)})log(1-x^{(i)}))] J(θ)=m1i=1m[y(i)log(hθ(x(i)))(1y(i))log(1x(i)))]
∂ J ( θ ) ∂ θ j = 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x ( i ) \frac{\partial J(\theta )}{\partial \theta _j}=\frac{1}{m}\sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})x^{(i)} θjJ(θ)=m1i=1m(hθ(x(i))y(i))x(i)

1.4 高级优化

在完成计算代价函数和代价函数的偏导数项的适合可以使用梯度下降。然而还有一些更高级的算法来求解上面二者:局部优化法又称共轭梯度法(BFGS)和有限内存局部优化法(LBFGS)。算法优点:在其中任何一个算法之中都不需要手动选择学习率 α \alpha α,其有一个智能的内部循环,称为线性搜索,可以自动尝试不同的学习速率。

1.5 正则化

添加正则化项解决过拟合问题。
正则化线性回归的代价函数:
J ( θ ) = 1 2 m ∑ i = 1 m [ ( h θ ( x ( i ) ) − y ( i ) ) 2 + λ ∑ j = 1 m θ j 2 ] J(\theta )=\frac{1}{2m}\sum_{i=1}^{m}[(h_\theta (x^{(i)})-y^{(i)})^2+\lambda \sum_{j=1}^{m}\theta_j^{2}] J(θ)=2m1i=1m[(hθ(x(i))y(i))2+λj=1mθj2]
θ j : = θ j ( 1 − a λ m ) − a 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) \theta_j :=\theta_j(1-a\frac{\lambda }{m})-a\frac{1}{m}\sum_{i=1}^{m}(h_\theta (x^{(i)})-y^{(i)})x_j^{(i)} θj:=θj(1amλ)am1i=1m(hθ(x(i))y(i))xj(i)
正则化的逻辑回归模型:
J ( θ ) = 1 m ∑ i = 1 m [ − y ( i ) l o g ( h θ ( x ( i ) ) ) − ( 1 − y ( i ) ) l o g ( 1 − x ( i ) ) ) ] + λ 2 m ∑ i = 1 m θ j ( i ) J(\theta )=\frac{1}{m}\sum_{i=1}^{m}[-y^{(i)}log(h_\theta (x^{(i)}))-(1-y^{(i)})log(1-x^{(i)}))]+\frac{\lambda }{2m} \sum_{i=1}^{m}\theta _j^{(i)} J(θ)=m1i=1m[y(i)log(hθ(x(i)))(1y(i))log(1x(i)))]+2mλi=1mθj(i)

ex2 逻辑回归作业

2.1 Part 1: Plotting 绘图

数据集意义:数据集有100位学生的两次考试成绩(存入X中),拟通过逻辑回归(二分类模型),估计每个学生的录取概率(录取表明输出y为1,反之输出y为0)。
Matlab

主函数
% 提取数据
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;

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');

【机器学习】 吴恩达机器学习作业 ex2逻辑回归 Matlab实现_第2张图片

2.2 Part 2: Compute Cost and Gradient 计算代价和梯度

主函数
% 存入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

J = (1/m)*(-y'*log(sigmoid(X*theta))-(1-y)'*log(1-sigmoid(X*theta)));
grad =(1/m)*X'*(sigmoid(X*theta)-y);

2.3 Part 3: Optimizing using fminunc利用fminuc函数优化

该部分不需要填写代码,根据fminuc函数和plot函数绘制决策边界线。
【机器学习】 吴恩达机器学习作业 ex2逻辑回归 Matlab实现_第3张图片

2.4 Part 4: Predict and Accuracies 预测和准确度计算

主函数
prob = sigmoid([1 45 85] * theta);
p = predict(theta, X);
fprintf(‘Train Accuracy: %f\n’, mean(double(p == y)) * 100);

predict.m

G =sigmoid(X*theta);
for i= 1 :m
    if G(i)<0.5
        G(i)=0;
    else
        G(i)=1;
    end
end

ex2 正则化的逻辑回归

实际意义:手里有一批芯片两次测试及合格与否的数据,希望建立一个逻辑回归模型,根据新芯片的测试数据来预测合格与否。

3.1 Part 1: Regularized Logistic Regression正则化逻辑回归

首先数据假造,其次加载了正则化系数 λ \lambda λ的代价函数,得到下图:
【机器学习】 吴恩达机器学习作业 ex2逻辑回归 Matlab实现_第4张图片
决策边界不再是直线的时候,则需要一个复杂的多项式来表示,而随着多项式越复杂,拟合程度越高,则会达到过拟合现象,此时可以加入正则项利用 λ \lambda λ来减小 θ \theta θ参数的影响。
J ( θ ) = 1 m ∑ i = 1 m [ − y ( i ) l o g ( h θ ( x ( i ) ) ) − ( 1 − y ( i ) ) l o g ( 1 − x ( i ) ) ) ] + λ 2 m ∑ i = 1 m θ j ( i ) J(\theta )=\frac{1}{m}\sum_{i=1}^{m}[-y^{(i)}log(h_\theta (x^{(i)}))-(1-y^{(i)})log(1-x^{(i)}))]+\frac{\lambda }{2m} \sum_{i=1}^{m}\theta _j^{(i)} J(θ)=m1i=1m[y(i)log(hθ(x(i)))(1y(i))log(1x(i)))]+2mλi=1mθj(i)
在这里插入图片描述

在这里插入图片描述
costFunctionReg.m

theta_1 =[0;theta(2:end)];
reg=lambda/(2*m)*theta_1'*theta_1;
J=1/m*(-y'*log(sigmoid(X*theta))-(1-y)'*log(1-sigmoid(X*theta)))+reg;
grad=1/m*X'*(sigmoid(X*theta)-y)+lambda/m*theta_1;

【机器学习】 吴恩达机器学习作业 ex2逻辑回归 Matlab实现_第5张图片

3.2 Part 2: Regularization and Accuracies正则化和准确度

与上面逻辑回归类似,通过fminunc得到最小代价函数的theta值,将决策边界绘制到图上。
在这里插入图片描述

3.3 比较不同正则化参数

l a m b d a = 0 lambda=0 lambda=0
【机器学习】 吴恩达机器学习作业 ex2逻辑回归 Matlab实现_第6张图片
l a m b d a = 100 lambda=100 lambda=100
【机器学习】 吴恩达机器学习作业 ex2逻辑回归 Matlab实现_第7张图片
由此可以得出合适的 l a m b d a lambda lambda可以有效避免过拟合问题同时又可以保证测试集数据的拟合程度。


参考文章:
机器学习编程作业ex2(matlab/octave实现)-吴恩达coursera
Matlab吴恩达机器学习编程练习ex2:逻辑回归Logistic Regression

你可能感兴趣的:(机器学习,逻辑回归,机器学习,matlab)