logistic 回归(二)
来源:互联网 发布:360游戏优化器系统卡死 编辑:程序博客网 时间:2024/06/16 13:25
学会了简单的logistic的回归后,一定会发现这个函数无法适用于大规模数据,因为数据量太大的时候,计算量的规模是几何式增长的。接下来我们讨论下如何优化logistic回归,现在我们来写个简单的优化函数:
def stocGradAscent0(dataMatrix, classLabels): m,n = shape(dataMatrix) alpha = 0.01 weights = ones(n) #initialize to all ones for i in range(m): h = sigmoid(sum(dataMatrix[i]*weights)) error = classLabels[i] - h weights = weights + alpha * error * dataMatrix[i] return weights
当然这个函数依然非常简单,感觉是否没有什么变化,相对于前面的梯度优化,但是仔细观察发现这个随机梯度优化使用的是简单的单个值,而非矩阵,这样计算量就减少为原来的1/n,嘿嘿。当然天下没有免费的午餐,这种优化的后果当然是精度损失了。不过这种损失在数据量比较大的时候还是可以原谅的。
下面来一种精度和效率兼顾的方式,这种方法比前面的一种稍显复杂了一点。我们来看代码吧。
def stocGradAscent1(dataMatrix, classLabels, numIter=150): m,n = shape(dataMatrix) weights = ones(n) #initialize to all ones for j in range(numIter): dataIndex = range(m) for i in range(m): alpha = 4/(1.0+j+i)+0.0001 #apha decreases with iteration, does not randIndex = int(random.uniform(0,len(dataIndex)))#go to 0 because of the constant h = sigmoid(sum(dataMatrix[randIndex]*weights)) error = classLabels[randIndex] - h weights = weights + alpha * error * dataMatrix[randIndex] del(dataIndex[randIndex]) return weights
呵呵,这样我们的logistic回归的大多数方法就都实现了。当然还少了测试部分的代码:
def classifyVector(inX, weights): prob = sigmoid(sum(inX*weights)) if prob > 0.5: return 1.0 else: return 0.0
这样所有的代码就都有了,然后我们就可以使用这些东西来做点事情了。好了logistic回归我也刚刚理解了,至于高深的优化目标函数,这里就先不拿出来了,因为我也没看懂,O(∩_∩)O哈哈~
- logistic 回归(二)
- 理解线性回归(二)——Logistic Regression 回归
- Machine Learning第三讲[Logistic回归] --(二)Logistic回归模型
- 线性回归(logistic回归)
- logistic回归(一)
- Logistic 回归浅析()
- 逻辑(logistic)回归
- Logistic 回归(目标、)
- 逻辑回归(Logistic)
- 白话机器学习算法(二十一)logistic回归
- Logistic Regression(逻辑回归)(二)—深入理解
- 白话机器学习算法(二十一)logistic回归
- (二)Logistic Regression[逻辑回归]&正则项
- (二)Logistic Regression[逻辑回归]&正则项
- 第三讲.Classification and logistic regression (分类及logistic回归 / 二分类和多分类)
- logistic分类(logistic回归 LR)
- 罗斯基的机器学习(二)线性回归与Logistic回归
- logistic回归详解二:损失函数
- Linux ioctl command
- viewdidload、loadview等比较常见的面试问题,比较详细
- 好网站
- 基于Spring框架的Shiro配置
- C# 根据路线点集合动态分段
- logistic 回归(二)
- 产品经理心得总结
- enode框架step by step之框架的物理部署思路
- python语言解析xml文件的常用的有两种方式
- 剪切板
- Apache Shiro 使用手册(一)Shiro架构介绍
- 111
- Apache Shiro 使用手册(二)Shiro 认证
- 五桶球,一桶不正常,不知道球的重量和轻重关系,用天平称一次找出那桶不正常的球