逻辑斯蒂回归(Logistic)⼀、线性回归
米酒
1、线性回归的概念
如果特征值之间存在线性关系就可以使⽤线性回归建模对其预测结果。
(1)函数模型
(2)最⼩⼆乘法求解
红枝蒲桃 何为最⼩⼆乘法,其实很简单。我们有很多的给定点,这时候我们需要找出⼀条线去拟合它,那么我先假设这个线的⽅程,然后把数据点代⼊假设的⽅程得到观测值,求使得实际值与观测值相减的平⽅和最⼩的参数。对变量求偏导联⽴便可求。
如果矩阵不满秩时,采⽤梯度下降法求局部最优解。
2、线性回归的应⽤
损益平衡点
⼆、逻辑斯蒂回归
逻辑回归假设数据服从伯努利分布,通过极⼤化似然函数的⽅法,运⽤梯度下降来求解参数,来达到将数据⼆分类的⽬的。
1、逻辑斯蒂分布
logistic回归其实不是线性回归求预测值的问题,⽽是⼆分类问题。⾸先我们的线性回归模型输出的
预测值,是⼀个实际的数字,那么星我们想将他部署到⽽分类问题,就需要让输出值转换到0/1就可以了。这⾥引⼊⼀个新的函数sigmoid:,图像是这样的:
此时我们将线性模型产⽣的预测值带⼊sigmoid函数,函数会输出相对应的⼆分类的概率,具体的训练⽅法和上⾯的线性回归是⼀样的,不同的是误差函数的求导
2、⼆项逻辑斯蒂回归模型
梦见煮饺子是什么意思
⾸先我们来看最简单的⼆项logstic regression模型,它是由条件概率分布来表⽰,即:
此处引⼊⼏个简单的数学概念:
可以看到,Y=1的对数⼏率是输⼊x的线性函数,同时我们看到:
即输出Y的取值概率是由输⼊x的线性函数决定的的,回归也就体现在这⾥。
3、逻辑斯蒂模型求解
模型求解也就是模型参数的估计。因为逻辑斯蒂回归是典型的统计机器学习⽅法,所以经常⽤最⼤似然估计的⽅法。
4、逻辑斯蒂算法demo
#include "logistic.h"
//加载数据。
void Logistic::loadDatat(const string &filename)二十一世纪教育
{
ifstream file(filename);
string line;
笑了
while (getline(file, line))
{
istringstream record(line);
至爱梵高观后感vector<double> data;
data.push_back(1.0);//对向量加以扩充。
double temp;
while (record >> temp)
data.push_back(temp);
福保文化城if (filename.find("train") != string::npos)
{
trainLabel.push_back(int(temp));
data.pop_back();
trainMat.push_back(data);
}
el
{