Fork me on GitHub

logistic回归

二分分类

假如有一张图片需要识别是否是猫作为输入,如果是猫,输出1,否则,输出0
图片在计算机中保存,要分为三个矩阵,分别对应红绿蓝三个颜色通道,
为了方便,这里用5X4的演示

把这些亮度值,放入一个特征向量(feature vector)x中
x=[255,251,.......,255,134.....]
如果图片是64X64的,向量x的总维度
64X 64X3 = 12288
nx=12288
来表示向量x的总维度
在二分分类问题中,目的是训练出一个分类器,以图片的特征向量作为输入量,预测输出的y是0,还是1

用(x,y)来表示一个样本,训练集有m个集合组成
{(x^(1),y^(1)},(x^(2),y^(2)),.....(x^(m),y^(m))}
表示整个训练集
m_train
表示训练集
m_test
表示测试集
为了更好的表示,定义一个大矩阵X,
X=[...... x^(1)...... , .......x^(2)........ , ..... , ......x^(m)......]
这个矩阵有m列,有nx行
定义一个矩阵Y
Y=[y^(1),y^(2),.....y^(m)]
=enter description here
=enter description here

logisitic回归(logistic Regression)

已知输入向量x,例如是一张图片,判断是否是猫图,需要一个算法,得出预测值ŷ,ŷ是一个概率(当x满足条件是,y就是1)
x是一个nx维向量,参数w也是一个nx维向量,b是一个实数
ŷ = sigmoid(w^T * x + b)
sigmoid是为了将概率限制在[0,1]

logisitic回归损失函数(logistic Regression cost function)

Loss(error)function:
L(ŷ,y)=-(ylogŷ+(1-y)log(1-ŷ))
Cost function:
J(w,b) = 1/m * L(ŷ^(i),y^(i)) = -1/m * ( y^(i)logŷ^(i) + (1-y^(i)log(1-ŷ^(i)))
i = [1,m]
要让J越小越好

logistic回归中的梯度下降法

对于单个样本
假设有两个样本特征向量x1,x2,
参数w1,w2,b
z = w1x1 + w2x2 + b
ŷ = a = sigmoid(z)
L(a,y)
然后向前求导数
da = dL(a,y)/da = -(y/a)+(1-y)/(1-a)
dz = dL/dz = a-y
dw1 = x1 * dz
dw2 = x2 * dz
db = dz
然后更新w1,w2,b
w1 = w1 - αdw1
w2 = w2 - αdw2
b = b - αdb

对于m各训练样本
下面实现的是伪代码
J=0; dw1=0; dw2=0;db=0;
for i=1 to m
z^(i) = w^T*x^(i) + b
a^(i) = sigmoid(z^i)
J += -( y^(i)loga^(i) + (1-y^(i)log(1-a^(i)))
dz^(i) = a^(i) - y^(i)
dw1 += x1^(i)dz^(i)
dw2 += x2^(i)dz^(i)
db += dz^(i)
J /= m
dw1 /= m 注释 dw1 = dJ/dw1
dw2 /= m
db /= m
w1 = w1 - αdw1
w2 = w2 - αdw2
b = b - αdb

Donate comment here