分类模型暂时先不梳理了,应该还有几种分类算法,以后在附加上来。现在开始的回归模型算法的梳理。回归模型其实在我看来就是神经网络中单点神经元之间的前向和后向的传播更新。毕竟线性回归,说白了就是方程之间互等嘛。所有说句不科学的话,感觉深度神经网络其实就是N多个回归模型相叠加,这里的回归模型,肯定是非线性回归模型。
一、原理详解
谈到回归,首先必须知道几个基本的数学科学概念。
集中趋势(central tendency)在统计学中是指一组数据向某一中心值靠拢的程度,它反映了一组数据中心点的位置所在。
在统计学中,集中趋势(central tendency)或中央趋势,在口语上也经常被称为平均,表示一个机率分布的中间值。[1]
最常见的几种集中趋势包括算数平均数、中位数及众数。集中趋势可以由有限的数组(如一群样本)中或理论上的机率分配(如正态分布)中求得。有些人使用集中趋势(或集中性)这个词汇以表示“数量化的资料之中央值的趋势”。在这种意义下,我们可以利用资料的离散程度(例如标准偏差或四分差等相似的统计量)判别其集中趋势的程度。
具体的趋势算法公式和原理查看百度百科:https://baike.baidu.com/item/%E9%9B%86%E4%B8%AD%E8%B6%8B%E5%8A%BF/7179614?fr=aladdin
12 . 简单线性回归模型举例:
汽车卖家做电视广告数量与卖出的汽车数量:
如何练处适合简单线性回归模型的最佳回归线?
使sum of squares最小计算
分子 = (1-2)(14-20)+(3-2)(24-20)+(2-2)(18-20)+(1-2)(17-20)+(3-2)(27-20)
= 6 + 4 + 0 + 3 + 7
= 20
分母 = (1-2)^2 + (3-2)^2 + (2-2)^2 + (1-2)^2 + (3-2)^2
= 1 + 1 + 0 + 1 + 1
=4
b1 = 20/4 =5
b0 = 20 - 5*2 = 20 - 10 = 10预测:
假设有一周广告数量为6,预测的汽车销售量是多少?
x_given = 6
Y_hat = 5*6 + 10 = 40
二、代码实现
任务是完成上面的例子。
import numpy as np
def fitSLR(x, y):
n = len(x)
dinominator = 0
numerator = 0
for i in range(0, n):
numerator += (x[i] - np.mean(x)) * (y[i] - np.mean(y))
dinominator += (x[i] - np.mean(x)) ** 2
b1 = numerator / float(dinominator)
b0 = np.mean(y) / float(np.mean(x))
return b0, b1
def predict(x, b0, b1):
return b0 + x * b1
x = [1, 3, 2, 1, 3]
y = [14, 24, 18, 17, 27]
b0, b1 = fitSLR(x, y)
print("intercept:", b0, " slope:", b1)
x_test = 6
y_test = predict(6, b0, b1)
print("y_test:", y_test)