Logistic回归与牛顿法(附Matlab实现)

本文介绍了Logistic回归在二分类问题中的应用,详细讲解了sigmoid函数,并通过最大似然估计推导了模型参数的求解过程。接着,文章对比了梯度下降法,重点探讨了牛顿法的原理和更新公式,指出牛顿法在迭代次数少、收敛速度快的优势。此外,还提供了使用Matlab实现Logistic回归牛顿法的代码示例,并展示了数据处理前后的效果。
摘要由CSDN通过智能技术生成

回归,是一种连续模型,受噪声的影响较大,一般都是用来做预测的,但也有除外,比如本文要讲的Logistic回归就是用来做分类的。


Logistic Regress


Logistic一般用于二分类问题,不同于之前讲的线性回归,它是用一条直线来分割两种不同类别的样本。其函数形式为

若令,则可以等价为

这个函数也叫sigmoid函数。其函数图像如下

得到了Logistic回归模型后,接着就要找到合适的θ去拟合它了。

首先假设

可得概率公式

再假设训练集独立同分布,类似于线性回归,这里也用最大似然估计得

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
以下是使用MATLAB实现逻辑回归分类器的示例代码: 首先,我们需要加载数据集。这里使用的是UCI Machine Learning Repository中的Pima Indians Diabetes Dataset。 ```matlab data = load('pima-indians-diabetes.data.txt'); X = data(:, 1:8); % 输入特征 y = data(:, 9); % 目标变量 m = length(y); % 样本数 ``` 接下来,我们需要将数据集分成训练集和测试集。这里我们将数据集的80%用于训练,20%用于测试。 ```matlab train_ratio = 0.8; train_size = floor(train_ratio * m); train_idx = randperm(m, train_size); test_idx = setdiff(1:m, train_idx); X_train = X(train_idx, :); y_train = y(train_idx, :); X_test = X(test_idx, :); y_test = y(test_idx, :); ``` 然后,我们需要对输入特征进行特征缩放。这里使用的是z-score标准化。 ```matlab mu = mean(X_train); sigma = std(X_train); X_train = (X_train - mu) ./ sigma; X_test = (X_test - mu) ./ sigma; ``` 接下来,我们需要实现逻辑回归算法。这里使用的是批量梯度下降法。 ```matlab alpha = 0.1; % 学习率 num_iters = 1000; % 迭代次数 % 初始化参数 theta = zeros(size(X_train, 2) + 1, 1); X_train = [ones(size(X_train, 1), 1) X_train]; % 添加偏置项 for i = 1:num_iters % 计算预测值 z = X_train * theta; h = sigmoid(z); % 计算损失函数 J = -(y_train' * log(h) + (1 - y_train)' * log(1 - h)) / m; % 计算梯度 grad = X_train' * (h - y_train) / m; % 更新参数 theta = theta - alpha * grad; end ``` 其中,sigmoid函数的实现如下: ```matlab function g = sigmoid(z) g = 1 ./ (1 + exp(-z)); end ``` 最后,我们可以使用训练好的模型对测试集进行预测,并计算准确率。 ```matlab X_test = [ones(size(X_test, 1), 1) X_test]; % 添加偏置项 z = X_test * theta; h = sigmoid(z); predictions = h >= 0.5; accuracy = sum(predictions == y_test) / length(y_test); fprintf('Accuracy = %f%%\n', accuracy * 100); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值