机器学习之逻辑回归

timg.jpg
逻辑回归是监督学习的另一大类。
对于二分类函数来说,其输出y∈0,1y\in {0,1}y0,1,因此必须选取一个函数,其接受连续的输入,输出离散值或类似离散值,并且该函数应该是连续可微的,符合这些特征的函数为sigmoid函数,其表达式为:
y=11+e−z y = \frac{1}{1+e^{-z}}y=1+ez1
其函数图像为

untitled.jpg

则我们可以将开始线性回归时假设的线性模型f(x)=X⋅θf(x)= X\cdot \thetaf(x)=Xθ带入上式中,得
y^=11+e−(X⋅θ) \hat y = \frac{1}{1+e^{-(X\cdot \theta)}}y^=1+e(Xθ)1
则不费吹灰之力复合了一个线性化参数函数,且其输入为连续值,其输出为近似离散值。

有了模型,则必须创造一个costfunction来最优化参数,那么怎么创造呢?

由模型我们进一步变形,有
Iny^1−y^=X⋅θ In\frac{\hat y}{1-\hat y} = X\cdot \thetaIn1y^y^=Xθ
则可以将y^\hat yy^视为类后验概率估计P(y=1∣x)P(y=1|x)P(y=1x),则可以利用极大似然法来估计参数,则似然函数为
L(θ)=∏i=1m(y^yi(1−y^)(1−yi)) L(\theta) = \prod_{i=1}^{m}(\hat y^{y_i} (1-\hat y)^{(1-{y_i})})L(θ)=i=1m(y^yi(1y^)(1yi))
之后就可以用梯度下降法或牛顿法求解参数θ\thetaθ
matlab代码实现为:

%% Load Data
data = load('ex2data1.txt');
X = data(:, [1, 2]); y = data(:, 3);

[m, n] = size(X);
% Add intercept term to x and X_test
X = [ones(m, 1) X];
initial_theta = zeros(n + 1, 1);
% Choose some alpha value
alpha = 0.01;
num_iters = 8500;
theta = zeros(3, 1);
J_history = zeros(num_iters, 1);

for iter = 1:num_iters
    theta = theta - alpha / ( X' * (sigmoid(X*theta) - y ) ); 
    J_history(iter) =  -1 * sum( y .* log( sigmoid(X*theta) ) + (1 - y ) .* log( (1 - sigmoid(X*theta)) ) ) ;
end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值