机器学习十大算法系列(一)——逻辑回归
来源:互联网 发布:淘宝上卖面膜 许可证 编辑:程序博客网 时间:2024/06/05 21:55
本系列博文整理了常见的机器学习算法,大部分数据问题都可以通过它们解决:
1.线性回归 (Linear Regression)
2.逻辑回归 (Logistic Regression)
3.决策树 (Decision Tree)
4.支持向量机(SVM)
5.朴素贝叶斯 (Naive Bayes)
6.K邻近算法(KNN)
7.K-均值算法(K-means)
8.随机森林 (Random Forest)
9.降低维度算法(Dimensionality Reduction Algorithms)
10.Gradient Boost和Adaboost算法
线性回归
先来解释一下什么是回归。假设现在有一些数据点,我们用一条直线对这些点进行拟合,这个拟合过程就叫做回归。
线性回归是利用连续性变量来估计实际数值(例如房价,呼叫次数和总销售额等)。我们通过线性回归算法找出自变量和因变量间的最佳线性关系,图形上可以确定一条最佳直线。这条最佳直线就是回归线。这个回归关系可以用Y=aX+b 表示。
该部分在另一篇博文中详细介绍了:Linear Regression/线性回归与正则化(Andrew Ng 机器学习 一 )
逻辑回归
逻辑回归其实是一个分类算法而不是回归算法。通常是利用已知的自变量来预测一个离散型因变量的值(像二进制值0/1,是/否,真/假)。简单来说,它就是通过拟合一个逻辑函数(logit fuction)来预测一个事件发生的概率。所以它预测的是一个概率值,自然,它的输出值应该在0到1之间。
假设你的一个朋友让你回答一道题。可能的结果只有两种:你答对了或没有答对。为了研究你最擅长的题目领域,你做了各种领域的题目。那么这个研究的结果可能是这样的:如果是一道十年级的三角函数题,你有70%的可能性能解出它。但如果是一道五年级的历史题,你会的概率可能只有30%。逻辑回归就是给你这样的概率结果。
Logistic回归简单分析
优点:计算代价不高,易于理解和实现
缺点:容易欠拟合,分类精度可能不高
适用数据类型:数值型和标称型数据
我们都知道逻辑回归是和Sigmod函数一起的,为了实现逻辑回归分类器,我们可以在每一个特征上都乘以一个回归系数,然后将所有的结果值相加,将总和代入S函数,进而得到一个范围在0~1之间的数值。任何大于0.5的数据被分人1类,小于0.5被归为0类。
而现在有了分类器的函数了,那么上面提到的最佳回归系数怎么求呢?这里就出现了基于最优化方法的最佳回归系数的确定。
梯度上升法:要找到某函数的最大值,最好的方法就是沿着该函数的梯度方向探寻。梯度上升法用来求函数的最大值,梯度下降法用来求函数的最小值。
梯度上升法伪代码:
//每个回归系数初始化为1//重复R次: //计算整个数据集的梯度 //使用alpha*gradient更新回归系数的向量 //返回回归系数
逻辑回归算法代码:
def loadDataSet(): dataMat = []; labelMat = [] fr = open('testSet.txt') for line in fr.readlines(): lineArr = line.strip().split() dataMat.append([1.0, float(lineArr[0]), float(lineArr[1])]) labelMat.append(int(lineArr[2])) return dataMat,labelMat # loadDataset主要功能是打开文件testSet.txt并逐行读取。每行前两个值分别是X1和X2,第三个值是数据对应的类别标签。def sigmoid(inX): return 1.0/(1+exp(-inX))def gradAscent(dataMatIn, classLabels): dataMatrix = mat(dataMatIn) #convert to NumPy matrix labelMat = mat(classLabels).transpose() #convert to NumPy matrix m,n = shape(dataMatrix) alpha = 0.001 maxCycles = 500 weights = ones((n,1)) for k in range(maxCycles): #heavy on matrix operations h = sigmoid(dataMatrix*weights) #matrix mult error = (labelMat - h) #vector subtraction weights = weights + alpha * dataMatrix.transpose()* error #matrix mult return weights
Result[[ 4.12414349][ 0.48007329][-0.6168482 ]]
其中涉及到的最优化理论详见另外一篇博文:机器学习中常见问题_几种梯度下降法
推荐参考文献
机器学习中的逻辑回归模型简介
http://blog.jobbole.com/88521/
机器学习算法与Python实践之(七)逻辑回归(Logistic Regression) http://blog.csdn.net/zouxy09/article/details/20319673
机器学习系列(1)_逻辑回归初步
http://blog.csdn.net/han_xiaoyang/article/details/49123419
- 机器学习十大算法系列(一)——逻辑回归
- 机器学习十大算法之逻辑回归
- 数据挖掘学习笔记——十大算法之决策树算法、逻辑回归概述
- 机器学习(一)——线性回归、分类与逻辑回归
- 机器学习基本算法(逻辑回归)
- 机器学习算法-逻辑回归(LR)
- 机器学习一(逻辑回归)
- 机器学习算法——LR(逻辑回归)
- 机器学习算法——逻辑回归(LR)
- 机器学习算法解析—逻辑回归分类
- 机器学习算法:逻辑回归
- 机器学习逻辑回归算法
- 回归算法(理论)----------机器学习系列(一)
- 回归算法(python code)----------机器学习系列(一)
- 《机器学习》学习笔记(一):线性回归、逻辑回归
- 机器学习(一)线性回归、逻辑回归
- 机器学习笔记(一)——线性回归算法
- 机器学习十大算法之线性回归
- Android -- 获取汉字的首字母
- App启动时候使用BroadcastReceiver监听网络情况,不能保证所有设备能监听到
- 使用Set移除List中相同元素方法
- php面向对象全攻略 (十) final static const关键字的使用
- PullToRefresh上拉刷新下拉加载
- 机器学习十大算法系列(一)——逻辑回归
- hibernate加载持久化实例load和get方法区别
- git for windows还是github for windows?
- 用动态规划算法的变形方法——备忘录方法,解决0-1背包问题
- SVN笔记
- android onSaveInstance
- 字符编码的故事,uft8,Unicode。
- [EverString收录]Dr.Elephant简介
- nrf51822 --- 外部中断 (按键)