算法和数据,作为机器学习或者深度学习中最重要的两把利剑,合力帮助人们解决许多无法靠人力或者简单堆叠去解答的问题。然而,现如今的算法发展突飞猛进,即使是再优秀的人也不可能了解所有的算法(大神可能懂的多或者学的快,不在本推文的读者之列)。只是,对于许多像笔者这种半路出家的生信分析人员而言,虽然在广度上对众多算法有一定了解,然而,在深度上却远远落后于那些专注于做算法的大神们。但是,无论何时进入生信或者数据分析领域,学习和了解一些算法的常规基础,可以帮助我们在算法应用上变得稍微游刃有余一点(笔者自以为)。因此,笔者尝试在后续的推文中将尝试将算法以一种简单直接的方式进行展示,方便读者进行了解。不过,读者需要明白,虽然推文中介绍的算法可能不难理解,但是现如今真正使用的这些算法更多的是这些基础上添加了包括统计学在内的各种精妙设计,想要精通绝非意识。本推文的目的仅仅是让读者初步了解某个算法,而非精通。
那么下面,我们开始第一个算法的介绍KNN。
一 算法介绍
算法原理其实非常简单,就是以下几点:
首先,确定其余已知类别的点。
其次,计算该点到每个已知类别点的距离。
第三,对这些点进行排序。
第四,选取前K个最近的点,并计算所分属每个类别的频率,并将频率出现最高的类别作为该点的预测分类。
最后,通过设定K值我们就能够确定当前黑点具体属于哪一类。
二 惯例小结
其实这一算法非常简单,即不需要训练,也无需消耗大量的内存和计算资源。然而,先通过KNN这种简单的算法,我们可以初步了解到算法的本质其实就是抽象的事物具象化,并以一定的规则或者函数表示方式来展示(自定义,非官方,错了不认)。当然,今天的推文只是抛砖引玉,后面将依次介绍包括随机森林、决策树、线性回归等等算法,欢迎持续关注‘算法浅谈’系列最后,进一步推广一下我开发的相关软件,Multi-omics Hammer软件和Multi-omics Visual软件。最后的最后,欢迎大家多用这两款软件,多提宝贵建议。也欢迎大家多关注公众号(见个人介绍)。
软件下载地址:
Multi-omics Hammer:https://github.com/wangjun258/Multi-omics-Hammer
Multi-omics Visual: https://github.com/wangjun258/Multi_omics_Visual/tags