拟合线性回归y=w*x+b,这个没啥说的,直接上代码,后面谈到逻辑回归和FM更详细一些。
#Ref: https://www.beibq.cn/book/cw0v22-1583import tensorflow as tfimport numpy as npx_data = np.float32(np.random.rand(2,100)) #2行100列y_data = np.dot([0.100,0.200], x_data) + 0.300 #1行2列 × 2行100列b = tf.Variable(tf.zeros([1]))W = tf.Variable(tf.random_uniform([1,2],-1.0,1.0)) #y = w*x + b,x.shape = (2,100),b.shape=(1,1),so w.shape=(1,2)#y = tf.multiply(W, x_data) + by = tf.matmul(W, x_data) + b# min lossloss = tf.reduce_mean(tf.square(y - y_data))optimizer = tf.train.GradientDescentOptimizer(0.5)train = optimizer.minimize(loss)#variable init,定义了variable这一步必须要初始化init = tf.initialize_all_variables()#start graphsess = tf.Session()sess.run(init)#fitfor step in range(0,201): sess.run(train) if step%20 == 0: print(step, sess.run(loss), sess.run(W), sess.run(b))这个只是为了尽可能拟合现有数据,一般情况下会出现泛化能力差,过拟合等现象。过拟合现象及其产生原因、解决方法见另一篇博客周志华老师机器学习西瓜书(第二章)——模型评估与选择,同时解释为什么L1可以做特征选择,其系数为0(L2正则类似)
接下来,由该线性回归说到逻辑回归和FM。
———————————————–20180821———————————————–
逻辑回归分三个部分说,逻辑回归推导、代码实现、优化改进。
逻辑回归有其假设条件[1],分别假设:
1)逻辑回归实际上是解决分类问题的,因此,逻辑回归要求因变量为二进制(是/否)。
2)特征应该是有物理含义的。
3)独立特征变量彼此独立。 也就是说,模型应该具有很少或没有多重共线性。
4)自变量(特征)与对数几率线性相关。
5)Logistic回归需要非常大的样本量才能达到一个较好的结果,因此,特征工程的工作量很大。
——————–20180906——————————-
抱歉,博主拖了好久,现在回归。。。。
逻辑回归推导主要是由两部分组成,一是目标函数的推导(损失函数+正则项,推导只考虑目标函数,正则项之后加上去就好),二是梯度下降法的推导。
对于逻辑回归来说,分两种情况来看公式推导:样本标记为0/1或者-1/1的。
对标记为0/1的推导如下:
Ref:
1、https://towardsdatascience.com/building-a-logistic-regression-in-python-step-by-step-becd4d56c9c8
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |