1、原理:使用sigmod函数将回归映射到分类。二分类,
2、代价函数:使用概率分布、伯努利方程设计最大 似然性为代价函数
目标函数:最小化 -似然最大
3、参数求解:梯度下降(上升?)
数学推导:sig’=h*(1-h)
4、模型训练代码:
(1)批梯度下降和随机梯度下降
(2)关于代价函数和收敛
# -*- coding: utf-8 -*-
import numpy as np
from sklearn import datasets
def sigmoid(z):
return 1 / (1 + np.exp(-z))
def data_initial():
dataset =datasets.load_iris()
X = dataset.data[0:100]
Y = dataset.target[0:100]
return X, Y
# 批梯度下降每次使用全部样本对参数更新
def BGD_grad_descent(dataMatIn, classLabels):
dataMatrix = np.mat(dataMatIn) #(m,n)
labelMat = np.mat(classLabels).transpose()
m, n = np.shape(dataMatrix)
print m
weights = np.ones((n, 1)) #初始化回归系数(n, 1)
alpha = 0.001 #步长
maxCycle = 500 #最大循环次数
J= []
Accuracy= 0.001
for i in range(maxCycle):
h = sigmoid(dataMatrix * weights) #sigmoid 函数
error= labelMat - h
labelhat= np.ones(m)
#代价函数;可以设置最大迭代次数,或者设置代价函数的值收敛到一个范围
cost= np.dot(classLabels, np.l