全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
2373 5
2017-08-09

example 如图所示,有两种颜色的点,想求一条最优的直线,使得尽可能多的蓝色点在直线上方,尽可能多的橙色点在直线下方。
(which means 找一条线尽可能把这两种点分开)
我想的是可以用正确率来评价直线的优劣:
蓝色点数量为n1, 橙色点数量为n2. 一共有N=n1+n2个点。
在某条直线a1上方的蓝色点数量(被直线正确区分的蓝色点的数量)为m1,在a1下方的橙色点(被直线正确区分的橙色点的数量)为m2。
那么直线a1的正确率就是:(m1+m2)/N
我们目标就是找到正确率最大的那条直线。
但是这个要怎么code啊 。。写循环吗?。。
欢迎讨论!!!谢谢!!
上面那幅图是这样画出来的:
lm_male_h=ggplot(data=data1111, aes(x=slope, y=intercept, color=whether_hcc))+
  geom_point(aes(color=factor(whether_hcc)),size=0.5)+
  xlim(c(-1,5))+
  ylim(c(-3,250))+
  ggtitle("k and b scatter of male hepc \n with AFP_value as response")


数据见附件
data1111.csv.zip
大小:(5.74 KB)

 马上下载

本附件包括:

  • data1111.csv


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2017-8-9 05:18:18
哪位大神要是能帮我解决这个问题,奖励炉石传说新版本60卡包
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-8-9 14:56:57
你所提出的问题“找到正确率最大的那条直线”在绝大多数情况下有无穷多的解,比如:
classifier.png
上图中有无限多条直线都能够将两类点分开,且,每条直线的你所定义的“正确率(m1+m2)/N”都是相同的。
所以,你需要重新提出你的问题,要保证在大部分条件下有唯一最优解。

其实,你的这个问题属于一个“Binary Classification”的问题,在数学上已经研究得比较成熟了,比如用
Support Vector Classifier来解决,就是一个比较完善的最优化解法,简要概述如下:
svc.png
总之,你所提出的问题是一个“数学问题”多过“编程问题”。



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-8-9 17:30:05
cheetahfly 发表于 2017-8-9 14:56
你所提出的问题“找到正确率最大的那条直线”在绝大多数情况下有无穷多的解,比如:

上图中有无限多条直 ...
谢谢!那请问要是我需要任意一条满足条件的,需要怎么code啊
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-8-9 23:47:34
andystata 发表于 2017-8-9 17:30
谢谢!那请问要是我需要任意一条满足条件的,需要怎么code啊
正如我之前阐述的个人浅见,这首先是一个数学问题,其次才是编程问题,具体来说,
就是先要推导出寻找“正确率最大”的任意一条直线的数学方法,然后再用编程去实现它。
如果蓝色点和橙色点能够被完美地分成两部分,即,能够找到直线获得100%的正确率,当然,这肯定是最优解之一,无需证明。
但是,假如100个两种颜色的点交错在一起,一条直线分出了83个点,17个点在错误的一边,如何能够知道这已经是最好的结果了?“穷举法”在这个场合就不适用了,需要数学上的证明和推导才行。
你可以试下再数学论坛也咨询一下。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-8-9 23:53:41
cheetahfly 发表于 2017-8-9 23:47
正如我之前阐述的个人浅见,这首先是一个数学问题,其次才是编程问题,具体来说,
就是先要推导出寻找“ ...
好的,感谢!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群