机器学习十大算法系列(一)——逻辑回归

  本系列博文整理了常见的机器学习算法,大部分数据问题都可以通过它们解决:

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大数据文摘

Cell研究揭示生物神经元强大新特性,是时候设计更复杂的神经网络了!

1587
来自专栏AI研习社

Github 推荐项目 | 微软发布 1.25 亿美国建筑足迹开放数据

该数据集包括美国 50 个州 124,885,597 个计算机生成的建筑物覆盖区,并且该数据可以免费下载和使用。

973
来自专栏CreateAMind

究竟深度学习在干什么?

概要: 深度学习取得了巨大的成功,这是无容置疑的。对此,我们不必再多说什么。但是,其理论基础仍然有很大的空白。

703
来自专栏企鹅号快讯

胶囊 网络

引言 斯蒂文认为机器学习有时候像婴儿学习,特别是在物体识别上。比如婴儿首先学会识别边界和颜色,然后将这些信息用于识别形状和图形等更复杂的实体。比如在人脸识别上,...

2155
来自专栏ATYUN订阅号

机器学习预测分子结构和电子特性,准确性高且成本低

化学家想要模拟原子或分子的结构和电子特性时,他们常常转向叫做密度泛函理论(DFT)的计算技术。对于大多数用途,DFT可以在不需要太多计算能力的情况下产生准确的结...

592
来自专栏机器之心

教程 | 从零开始:如何使用LSTM预测汇率变化趋势

选自Stats and Bots 作者:Neelabh Pant 机器之心编译 参与:刘晓坤、蒋思源 在这篇文章中,我们将通过 LSTM 讨论时序预测模型,数据...

3879
来自专栏AI研习社

针对计算机视觉一些问题的分析

至少在过去十年间,解决计算机视觉领域内各种问题的技术已经有了很大的进步,其中一些值得注意的问题有图像分类、对象检测、图像分割、图像生成、图像字幕生成等。在这篇博...

853
来自专栏算法channel

机器学习期望最大算法:实例解析

交流思想,注重分析,更注重通过实例让您通俗易懂。包含但不限于:经典算法,机器学习,深度学习,LeetCode 题解,Kaggle 实战。期待您的到来! 01 —...

3417
来自专栏智能算法

鸟群的启发--粒子群算法

看文章之前先看一个相关小视频(55s, 2.86M): ? 1. PSO的基本思想: “自然界的蚁群、鸟群、鱼群、羊群、牛群、蜂群等,其实时时刻刻都在给予我们...

3388
来自专栏AI研习社

生成式对抗网络GAN有哪些最新的发展? | 2分钟读论文

来源 / Two Minute Papers 翻译 / 姜波 校对 / 凡江 整理 / 雷锋字幕组 本期论文:Optimizing the Latent Spa...

3345

扫码关注云+社区