机器学习2
来源:互联网 发布:qihoo360 apk脱壳软件 编辑:程序博客网 时间:2024/06/03 15:58
以下为学习记录,以备忘记
=============================================
学习要做什么,怎么做呢?
天地之间,一气而己。惟有动静,遂分阴阳。
有老少,遂分四象。老者极动静之时,是为太阳太阴;少者初动初静之际,是为少阴少阳。
有是四象,而五行具于其中矣。
水者,太阴也;火者,太阳也;木者,少阳也;金者,少阴也;土者,阴阳老少、木火金水冲气所结也。
----摘自子平真诠评注,一本八卦算命的书,听说还是比较中级的。
这就是老祖宗的机器学习。
管你生在什么环境什么人家,只要出生的时间确定,你的命就定了。对于理性的人,那当然呵呵了。
不过作为一种学术来了解一下,并没有什么过错。
就像中医,理论的形成早在二千年前,也许有不科学的地方,但有这样的传承,
说明了其存在的价值不是几个小丑能否定的。
上面的话,大概意思是:什么阴气阳气都是扯蛋,天地间只有一种气,太极。
太极动则为阳气,静则为阴气,很明显就是物质形态变化,两种状态的命名,就更不用说四象了,不过是动静状态中变化的进一步变化命名而已。
这里不是要让人去学八卦算命。是要说明一个问题。任何概念理论的出现都是有原因,不是凭空出现,所以要追本溯源。
那么阴阳五行,八卦九宫的极源都来自于太极,那太极来自那里呢?
我也不知道古人的想法,但日有所思,夜有所想,一种装逼扯蛋的概念提出,必须有受影响的环境。
那么,学习很明显了:首先感受环境的刺激,然后内部进行抽象,形成概念(不管形成神马都行),然后进一步的推理,比对等。不管什么算法,最终都要对环境进行应答,比如,编瞎话,装逼。
扯了这么长的栗子,现在正式开始。
============================
感知环境
如果我们心中的智能算法是一头太极狗,,那第一步就是分阴阳。
要想让这条太极狗叫两声,既然惟有动静分阴阳,那就得让刺激下这个太极狗吧。
那么第一步做什么呢?
这东西专业点说就是一个二分类器。
男的走左边,女的走右边。易碎的放上面,常用的放下面,好看的摆前面,不好看的放后面。
不管如何,都可以抽象出01来。
那就规定:1表示尖的东西,0表软的东西。那么拿1居它,他就汪汪汪,拿0居他就哼哼哼。
那如何把这个规定让太极狗理解呢?
谁有那功夫教它啊,直接植入基因,让他自己慢慢去感受吧。
第一步,设计基因,
来四盘脱氧核糖核苷酸,七分熟就好,再来一瓶82年的阿胶口服液。。。
-----------------------------------------------------------------------------
定义:
若cell(x)是太极狗的一个感受细胞,行为Action=( 哼哼哼 , 汪汪汪);
那么,当cell(x)=1 , action= 汪汪汪,当cell(x)=0 , action=哼哼哼
第二步,cell(x)里面是个什么鬼呢?
最简单的,x>1?1:0 (如果x大于1那结果就是1,反之则返回0)
为什么要用x和1比较呢?
可不可以用2?
......
可不可以用250?
......
可不可以用6666666666?
......
好吧,你可以用:
sb=(2,250,6666,任何一个你喜欢顺眼的数,小数,分数。。。)
x>sb?1:0
变换一下,y = x-sb,y>0?1:0
再变换下,cell(x) = y,cell(x)=x-sb,F(x)>0?1:0
-----------------------------------------------------
能不能给x加点东西,82年的xo喝过没?
cell(x) = xo-sb
我只能说,说:wo ,好有钱哦,要不你把这个也放上去
cell(x) = wox-sb
.......
(有本事,去掉x-后大声念念,呵呵)
-----------------------------------------------------
以上是一种类型的感受细胞实现
cell(x) = x - b ---> y = x + b (a=1)
cell(x) = ax - b ---> y = ax + b
这不就是一元一次方程,a为斜率,b为截距吗?初中就学了。
那么本质上来说,这东西就是在直角坐标系中是一条直线,所谓的规定,就是点,要么落在线上方,要么落在线上或是线下方。
如果是小学党水平也没关系。
找个窗户,在上面画根线,把窗户玻璃分两半,规定一边叫富,一边叫喜。闭上眼,原地转十圈,然后指头去摸窗户玻璃,什么摸到喜了?恭喜恭喜,单身狗终于有春天了。
-----------------------------------------------------------------
如果明白以上,那么就可以来实现太极狗了:
class TaiChiDog{
private float a;
private float b;
private String[] action = {"哼哼哼","汪汪汪"};
public int cell(x){
return a*x-b>0?1:0;
}
public String response(int input){
return this.cell(x)>0?action[1]:action[0];
}
}
任何一个类中main调用方法:
public static void main(String[] args){
TaiChiDog dog = new TaiChiDog();
int[] inputs = {2,250,666,-2,-250,0,-666};
for(int input:inputs){
String action = dog.response(input);
System.out.println(action);
}
}
---------------------------------------------------------------
如果你真的按上面的代码去执行了,恭喜,你是一个有追求的人。
很明显上面的代码可执行,但是不管你如何执行,都返回哼哼哼。
因为a,b的取值都是0,这是java编程语言本身的特性。
那么问题本身就转化为:如何为a,b取合适的值。
如果给定两组数据(input1,action1),(input2,action2)
是不是就可以知道 :
若action1=哼哼哼,action2="汪汪汪'
a*input1-b<=0
a*input2-b>=0
很明显就可以解出a和b.
本质上来说,就是将输入的点用一条线划分开。
能分开两个点的线应该有无限多条。
如果输入是三个点呢?再美好的多角恋,也必然有两个在一起,另一个注定是孤独?也可能成为一家人,谁叫点少
情感的纠结程度是无限,所以分割线有无数条
如果输入是四个点呢?双双配对?也许又是一个大一环的多角恋,最终都成为孤独?也可能成为一家人,谁叫点少
情感的纠结程度是无限,所以分割线有无数条
如果输入是6个点,10个点,100个点呢?分割线还是无线?是的。不过可能是弯的。
可能有人会问,为什么只分为两堆,不可以分成三堆,四推吗?
当然可以。不过请告诉我,如何用一条直线把一个平面中的点分成三堆,四堆?
二分类器,就是这么一个如何让直线变弯的问题。让直面变弯面的问题,让超直平面变超弯平面的问题。
至于平面,超平面的超出本记录,下回再说。
正因为线无限,所以要确定一条线,一条最适合的线,不能单限的用两个方程组就能解出a和b。
那如何办呢?
第三步,解a和b
要找到一条最适合的分割线,一半天堂,一半凡尘。不多一分,不少一厘。
凭什么你的分割线就好,他的就差,别跟我扯什么最小二乘法,极值估算,听不懂,我要找根源。
根源就是,从图形上,想体现点与点之间的疏密程度。从实际中,想找到复用规律。
有这种感受,所以想将点与点做成的相对密区与另一个相对密区分离,尽可能分的开些。
唯有线离两个区域都尽可能的远,才能体现这种相对疏密关系。
因此,最好的一条线应该是酱紫的:
分在线两边的点到这条线的距离之和的差最好相等。
这样大家都不能占便宜。
写太多了,下篇再接到写。
- 机器学习 2
- 机器学习-笔记2
- 机器学习2决策树
- 机器学习简史2
- Spark机器学习2
- 机器学习2
- 机器学习入门2
- 机器学习2
- 机器学习基本概念-2
- 机器学习2
- 机器学习笔记2
- 机器学习面试2
- 机器学习感悟2
- 机器学习感悟2
- 《机器学习》读书笔记2
- 机器学习(2)
- 机器学习2
- 机器学习(2)
- 初识OpenGL4.0 (转)
- 牛腩新闻发布系统——“/”应用程序中的服务器错误。 WebForms UnobtrusiveValidationMode 需要“jquery”ScriptResourceMapping。
- cglib与java反射的比较
- Android 开发有哪些新技术出现?
- python导入自定义模块
- 机器学习2
- 为什么我用tabhost,显示不了图标
- [计算机网络] 作业(1)
- 从一个简单的Java单例示例谈谈并发
- thinkphp3.2+phpexcel1.8.0导出表格
- 软件产品研发与软件项目开发的过程有何区别
- 五种常见的 PHP 设计模式
- TRACE用于debug模式下
- 设计模式汇总:结构型模型(上)