1. 逻辑回归
根据exam1和exam2的考试成绩,来预测学生能否被大学录取。
1.1 可视化数据
画出训练样本exam1和exam2的分布散点图。
1.2 步骤
1.2.1 sigmoid函数
1.2.2 代价函数和梯度
代价函数为:
梯度为:
for i = 1:m
J = J + (-y(i) * log(sigmoid(theta.'* X(i,:).')) - (1-y(i)) * log(1 - sigmoid(theta.'* X(i,:).')));
end
J = J/m;
for j = 1:length(theta)
for i = 1:m
grad(j) = grad(j) + (sigmoid(theta.'* X(i,:).') - y(i))*X(i,j);
end
grad(j) = grad(j)/m;
end
1.2.3 用fminunc求解参数最优解
1.2.4 评价逻辑回归估计效果
p = sigmoid([X(:,1) X(:,2) X(:,3)] * theta);
p(find(p >= 0.5)) = 1;
p(find(p < 0.5)) = 0;
估计准确度为89%。
2. 正则化逻辑回归
2.1 可视化数据
2.2 增加特征数量
2.3 代价函数和梯度
正则化逻辑回归的代价函数和梯度为:
for i = 1:m
J = J + (y(i) * log(sigmoid(X(i,:) * theta)) + (1-y(i)) * log(1 - sigmoid(X(i,:) * theta)));
end
J = -J/m;
for i = 1:length(theta)
J = J + lambda/2/m * theta(i)^2;
end
for j = 1:length(theta)
if j == 1
for i = 1:m
grad(j) = grad(j) + 1/m * (sigmoid(X(i,:) * theta) - y(i)) * X(i,j);
end
else
for i = 1:m
grad(j) = grad(j) + 1/m * (sigmoid(X(i,:) * theta) - y(i)) * X(i,j);
end
grad(j) = grad(j) + lambda/m * theta(j);
end
end
2.3.1 用fminunc函数求参数最优解
2.4 画出决策边界线
最终模型的准确度为:83.05%