《机器学习》——logistic regression分类问题

最近在学习《机器学习》课程(cs229)的logistic regression,在做其中一道变成作业时遇到了几个问题,现在弄懂了在此总结及回顾一下这些知识点:


逻辑斯谛回归模型的假设函数为:

hankcs.com 2016-11-04 下午12.57.08.png

其中g为sigmoid函数:

hankcs.com 2016-11-04 下午12.57.43.png

sigmoid函数可以表示为下图的形式:

《机器学习》——logistic regression分类问题_第1张图片

                                          图1:sigmoid函数的图像

通过函数S的作用,我们可以将输出的值限制在区间[0, 1]上,p(x)则可以用来表示概率p(y=1|x),即当一个x发生时,y被分到1那一组的概率。我们可以选择一个阈值,通常是0.5,当y>0.5时,就将这个x归到1这一类,如果y<0.5就将x归到0这一类。但是阈值是可以调整的,比如说一个比较保守的人,可能将阈值设为0.9,也就是说有超过90%的把握,才相信这个x属于1这一类。


function weight = gradAscent
%%
 
clc
close all
clear
%%
 
data = load('testSet.txt');
[row , col] = size(data);
dataMat = data(:,1:col-1);
dataMat = [ones(row,1) dataMat] ;
labelMat = data(:,col);
alpha = 0.001;
maxCycle = 500;
weight = ones(col,1);
for i = 1:maxCycle
 h = sigmoid((dataMat * weight)');
 error = (labelMat - h');
 weight = weight + alpha * dataMat' * error;
end
figure
scatter(dataMat(find(labelMat(:) == 0),2),dataMat(find(labelMat(:) == 0),3),3);
hold on
scatter(dataMat(find(labelMat(:) == 1),2),dataMat(find(labelMat(:) == 1),3),5);
hold on
x = -3:0.1:3;
y = (-weight(1)-weight(2)*x)/weight(3);%此公式的解释见(1)
plot(x,y)
hold off
end
function returnVals = sigmoid(inX)
 % 注意这里的sigmoid函数要用点除
 returnVals = 1.0./(1.0+exp(-inX));
end


(1)解释:由sigmoid函数及其图像可知,当横坐标(Z)为0时,纵坐标为0.5,即为两个类别(类别1和类别0)的分界处。我们设定(此处weight通常为theta参数):

weight(1)*x0+weight(2)*x1+weight(3)*x2=0
(此处,x0初始值设为1,x1=x,x2=y)
因此:y = (-weight(1)-weight(2)*x)/weight(3)







你可能感兴趣的:(机器学习,机器学习,函数,class)