今日实时汇率
1 美元(USD)=
7.2476 人民币(CNY)
反向汇率:1 CNY = 0.1380 USD
更新时间:2024-11-21 08:02:31
1 建模方法的介绍
数据建模是指针对某一问题或场景,基于
数据挖掘、
数据分析等技术手段,建立合适的统计
模型或机器学习
模型,以实现对
数据的精细化分析、预测等目的。
数据建模的常用方法包括回归分析、分类分析、聚类分析等,其中回归分析用于寻找自变量和因变量之间的关系,分类分析用于对数据进行分类,聚类分析用于将数据自动分成若干组。这些方法均能够广泛应用于各类数据建模问题中。2 基于回归分析的建模方法回归分析通常用于基于数值自变量和数值因变量的建模。具体而言,通过建立回归方程,解析出各自变量对因变量的影响,以此来预测未来的数值结果。常用的回归分析方法包括线性回归分析、多元回归分析、岭回归分析等。线性回归分析建立了一个线性方程用来描述自变量和因变量之间的关系,多元回归分析则针对多个自变量,建立多元方程,寻找同时对因变量产生影响的多个自变量。而岭回归分析则适用于自变量之间存在多重共线性的情况。3 基于分类分析的建模方法分类分析用于将数据分成若干组,以此来预测新的数据属于哪一组。常用的分类分析方法包括逻辑回归分析、判别分析、神经网络分析等。逻辑回归分析适用于两组数据的分类问题,判别分析则适用于多组数据的分类问题,神经网络分析则适用于数据维度较高、非线性问题的分类。4 基于聚类分析的建模方法聚类分析用于将数据自动分成若干组,以此来分析数据的特点和规律。常用的聚类分析方法包括层次聚类分析、K-means聚类分析等。在层次聚类分析中,通过计算各数据点之间的相似性,不断合并最相似的两个数据点形成一组,最终形成若干组数据;在K-means聚类分析中,则是先选择K个中心点,然后按照距离最近的原则将每个数据点分入离其最近的中心点对应的组中。5 数据建模的
模型评估为确保
模型的有效性,需要对
模型进行评估。模型评估的方法包括交叉验证、留出法、自助法等。交叉验证将数据分为若干份,依次选取其中一份为测试集,其余为训练集,多次重复此过程,并统计各次测试结果的平均值;留出法则在数据集中随机选择一部分作为测试集,其余为训练集,并评估模型的准确率;自助法则是随机从数据集中选择一部分样本进行多次重复采样,然后将这些采样得到的样本组成训练集,依此评估模型的准确率。6 数据建模在实际中的应用数据建模在金融、医疗、电商等领域均有广泛应用。比如在金融领域,通过对历史交易数据的回归分析和分类分析,预测未来的股票价格、汇率波动等;在医疗领域,通过将病人按照各因素分成若干组,为医生制定更为精准的个性化治疗方案;在电商领域,通过将用户按照各项属性分成若干组,精准地推送符合用户喜好的商品。7 小结数据建模的常用方法包括回归分析、分类分析、聚类分析等。在建模过程中,需要对模型进行评估以确保其有效性。数据建模在各领域的应用也越来越广泛,为我们提供了更加精细和有效的数据分析手段。人工智能项目有哪些 股票如何计算价格的股票价格计算公式 股票平均价格即从某个时点算起,到现在买卖双方成交的平均价格。我们通常所说的,实时均价是现在这个时刻买卖股票的平均价格,等于E分时成交的量乘以成交价,然后除余总成交股数。 股票平均价格反映了个股在一段时间以来的真实交易成本。 计算公式 股票平均价格 = 总成交金额 ÷ 总成交股数 × 100% 总成交金额 = 成交量×成交价 股票平均价格与成交价进行对比,可以断定期间多数交易的盈亏状况。作为盈亏的平衡点,均价对价格具有一定的支撑和阻挡作用。 沪深A股分类 按流通量聚类分层 沪深股市至2001年底共有1100多家A股,利用它们的流通量数据,可将这些公司分层。把流通量在30000万股以下的公司(流通量在30000万股以上的只有十几家公司,不在研究范围内)从小到大排列,采用间隔为13的等距抽样,抽得83个样本,根据流通量从小到大分别编为1~83号。样本点之间采用欧氏距离,用系统聚类分析中的最长距离法将样本聚类分层,其结果见流通量分层聚类图。 按每股收益聚类分层 沪深A股2001年有盈利的上市公司近1000家,其中每股收益在010~080元之间的有847家(每股收益在080元以上的几家公司、010元以下的微利公司以及亏损公司,不在讨论范围内),按每股收益从少到多排列,采用间隔为13的等距抽样,抽得65个样本,雷同按流通量聚类分层方式,最后将847家公司按每股收益分成了八个组,它们分别为0100~0145元、0146-0209元、0210~0254元、0255~0295元、0296~0356元、0357~0430元、043 1~0560元和0561~0800元。如何进行
行业分类人工智能项目有很多种类,主要包括但不限于以下几个方面:1 机器学习项目机器学习是人工智能领域的一个重要分支,涉及使用
算法和模型来让计算机系统从数据中“学习”知识。这类项目包括分类问题(如垃圾邮件过滤)、回归问题(如预测股票价格)、聚类问题(如客户群细分)等。常见的机器学习项目还包括图像识别、语音识别和自然语言处理等。2 自动化项目自动化是人工智能的另一大应用领域,主要涉及自动化完成一些重复性的工作或任务。例如,自动化生产线、智能物流、自动驾驶汽车等。这些项目通过机器学习技术不断优化自身性能,提高效率和准确性。3 智能机器人项目智能机器人是人工智能的一个重要应用领域,涉及机器人的设计、开发和部署。这些机器人可以执行各种任务,如制造业中的装配工作、服务
行业中的客户服务等。此外,还有一些智能机器人被用于医疗领域,如辅助手术或照顾老年人。4 数据挖掘与分析项目数据挖掘与分析是人工智能在大数据分析领域的重要应用。通过人工智能
算法处理和分析大规模数据,可以帮助企业发现数据中的模式、趋势和关联,从而做出更明智的决策。这类项目涉及金融、医疗、电商等多个
行业。人工智能项目的种类繁多,涵盖了从机器学习、自动化到智能机器人等多个领域。每个项目都有其特定的应用场景和技术要求,共同推动着人工智能技术的不断发展和进步。量化投资中使用的
算法主要是
行业投资作为一种重要的资产配置手段,是获取超额收益的重要来源。在国民经济发展和宏观经济周期的不同阶段,各个
行业面临不同的发展机遇,呈现出不同的发展态势,表现出不同的基本面状况,同时资本市场会产生不同的预期,最终行业间的这些差异必然在股票价格中反映出来。 进行行业投资,首先需要解决行业分类问题。MSCI和标准普尔共同构建的GICS、富时集团和道琼斯指数公司共同构建的ICB是国际上常用的行业分类标准。国内机构推出的行业分类标准由于更多地考虑了国内在经济发展阶段、产业结构现状、行业发展机会等方面的
特征,在A股的投资实践中得到了更多的应用。其中考虑到行业的投资价值的同一性的一些行业分类被称为投资型行业分类。 从行业投资角度来讲,行业内部的高相似性和行业之间的高差异性是行业分类的基本原则:高相似性旨在降低来自行业内部的噪音,提高投资收益的稳定性;而行业间的高差异性将决定获得超额收益的空间。这种相似性和差异性不仅体现在行业基本面上,同时也应体现在行业的市场表现上。 在研究行业市场表现的关联度方面,聚类分析方法更为客观和准确。聚类分析是一种数据统计方法,通过量化指标衡量多个样品之间的相似性,并将一些相似程度较高的样本聚合为一类,把另外一些彼此之间相似程度较大的样品聚合为另一类,直到将所有样品分配到若干个类中,使得同一类中的样品有很大的相似性,而不同类之间的样品有很大的差异性。为了兼顾行业基本面上的异同特性,可以直接使用现有行业分类中的细分子行业的收益率进行聚类分析的基本单元,并在聚类范围自下而上逐步推进。 首先,从同一个小行业的细分子行业进行聚类开始,提取基本面和市场表现最为类似的细分子行业作为一类。以中信二级行业中的石油石化行业为例,其下有炼油、油品销售及仓储、其他石化3个细分子行业,经过聚类分析,炼油和其他石化的市场走势相似性更大,可以合并为一个行业,而油品销售及仓储单独为一个行业。 其次,将小行业内的聚类结果在大行业内部再进行聚类。将上述炼油+其他石化、油品销售及仓储,与所属大行业中同级别的石油开采和油田服务再次进行聚类,结果为石油开采+炼油+其他石化组成一类,油品销售及仓储为一类,油田服务为一类。这与中信行业分类的区别在于取消石油石化行业,将其中油品销售及仓储单独剥离出来,其他的与石油开采合并。 再次,将大行业的聚类的结果在行业群内进行聚类。由于部分行业与相关产业链存在紧密的依赖关系,在基本面上属于相同的产业集群,在二级市场表现上也呈现出高度的相关性。例如,对基建投资相关的行业进行聚类时,得到了与普遍认识吻合的结果:机械行业中的工程机械、建材中的水泥、建筑中的建筑工程在二级市场具有非常高的同步性,因此可将以上3个行业组成一个行业。 沿着现有行业分类层级关系自下而上地进行行业收益率聚类分析,形成的行业分类体系较好地结合了基本面影响因素和市场表现,进一步提高了行业内部的相似性和行业间的差异性。如何用Python和机器学习炒股赚钱量化投资中使用的
算法主要是通过数学和统计学的方法,对大量的数据进行分析和建模,以寻找潜在的交易机会和风险控制策略。相关内容如下:1、统计套利
算法:统计套利是量化投资中较为常见的一种策略,其基本思想是利用历史数据和统计方法来发现市场上存在的价格差异,并通过买入低估的资产、卖出高估的资产来获利。这种算法通常需要对历史数据进行大量的分析和建模,以寻找套利机会。2、趋势跟踪算法:趋势跟踪算法是一种基于市场趋势的策略,其核心思想是跟随市场的趋势进行交易,即在市场上涨时买入、在市场下跌时卖出。这种算法通常使用技术分析的方法来识别市场的趋势,并根据市场的波动性来确定交易的规模和止损点。3、机器学习算法:机器学习算法是一种基于人工智能的方法,通过训练大量的数据来自动发现交易机会和风险控制策略。这种算法通常需要使用各种机器学习算法,如支持向量机、神经网络等,来对数据进行分类、聚类或回归分析,以发现潜在的交易信号。4、基于规则的算法:基于规则的算法是一种相对简单的方法,通常是基于投资者的经验和直觉来制定交易规则。这种算法通常包括一些简单的条件语句,如“如果市场价格上涨超过某个阈值,则买入”,或“如果市场价格下跌超过某个阈值,则卖出”。量化中常见的策略1、均线策略:根据不同周期的移动平均线来制定交易信号,通常使用短期和长期均线的交叉作为买入或卖出的依据。突破策略:当股价突破某个关键价位时,触发交易信号。这种策略适用于市场行情突破时,投资者可以设置止损点来控制风险。2、价值投资策略:基于对公司基本面、财务状况和行业前景的分析,寻找被低估的股票进行投资。成长投资策略:关注具有高速成长潜力的公司,通常选择高风险、高回报的股票进行投资。3、趋势跟踪策略:跟随市场的趋势进行交易,当市场趋势明确时,投资者可以获得较高的收益。套利策略:利用不同市场、不同资产之间的价格差异,通过买入低估的资产、卖出高估的资产来获利。4、网格交易策略:在预定的价格区间内设置多个网格点,当股价跌落到某个网格点时买入,当股价涨到某个网格点时卖出。技术分析策略:根据历史价格、成交量等数据,通过分析图表和技术指标来预测未来的走势。5、这些策略各有优缺点,投资者可以根据自己的风险偏好、投资目标和市场情况选择适合自己的策略。同时,量化投资也需要考虑交易成本、风险管理等因素,以保证长期稳定的收益。数据挖掘与生活:算法分类和应用相信很多人都想过让人工智能来帮你赚钱,但到底该如何做呢?瑞士日内瓦的一位金融数据顾问 Gaëtan Rickter 近日发表文章介绍了他利用 Python 和机器学习来帮助炒股的经验,其最终成果的收益率跑赢了长期处于牛市的标准普尔 500 指数。虽然这篇文章并没有将他的方法完全彻底公开,但已公开的内容或许能给我们带来如何用人工智能炒股的启迪。我终于跑赢了标准普尔 500 指数 10 个百分点!听起来可能不是很多,但是当我们处理的是大量流动性很高的资本时,对冲基金的利润就相当可观。更激进的做法还能得到更高的回报。这一切都始于我阅读了 Gur Huberman 的一篇题为《Contagious Speculation and a Cure for Cancer: A Non-Event that Made Stock Prices Soar》的论文。该研究描述了一件发生在 1998 年的涉及到一家上市公司 EntreMed(当时股票代码是 ENMD)的事件:「星期天《纽约时报》上发表的一篇关于癌症治疗新药开发潜力的文章导致 EntreMed 的股价从周五收盘时的 12063 飙升至 85,在周一收盘时接近 52。在接下来的三周,它的收盘价都在 30 以上。这股投资热情也让其它生物科技股得到了溢价。但是,这个癌症研究方面的可能突破在至少五个月前就已经被 Nature 期刊和各种流行的报纸报道过了,其中甚至包括《泰晤士报》!因此,仅仅是热情的公众关注就能引发股价的持续上涨,即便实际上并没有出现真正的新信息。」在研究者给出的许多有见地的观察中,其中有一个总结很突出:「(股价)运动可能会集中于有一些共同之处的股票上,但这些共同之处不一定要是经济基础。」我就想,能不能基于通常所用的指标之外的其它指标来划分股票。我开始在数据库里面挖掘,几周之后我发现了一个,其包含了一个分数,描述了股票和元素周期表中的元素之间的「已知和隐藏关系」的强度。我有计算基因组学的背景,这让我想起了基因和它们的细胞信号网络之间的关系是如何地不为人所知。但是,当我们分析数据时,我们又会开始看到我们之前可能无法预测的新关系和相关性。选择出的涉及细胞可塑性、生长和分化的信号通路的基因的表达模式和基因一样,股票也会受到一个巨型网络的影响,其中各个因素之间都有或强或弱的隐藏关系。其中一些影响和关系是可以预测的。我的一个目标是创建长的和短的股票聚类,我称之为「篮子聚类(basket clusters)」,我可以将其用于对冲或单纯地从中获利。这需要使用一个无监督机器学习方法来创建股票的聚类,从而使这些聚类之间有或强或弱的关系。这些聚类将会翻倍作为我的公司可以交易的股票的「篮子(basket)」。首先我下载了一个数据集:Public Company Hidden Relationship Discovery,这个数据集基于元素周期表中的元素和上市公司之间的关系。然后我使用了 Python 和一些常用的机器学习工具——scikit-learn、numpy、pandas、matplotlib 和 seaborn,我开始了解我正在处理的数据集的分布形状。为此我参考了一个题为《Principal Component Analysis with KMeans visuals》的 Kaggle Kernel:Principal Component Analysis with KMeans visualsimport numpy as npimport pandas as pdfrom sklearndecomposition import PCAfrom sklearncluster import KMeansimport matplotlibpyplot as pltimport seaborn as sbnpseterr(divide='ignore', invalid='ignore')# Quick way to test just a few column features# stocks = pdread_csv('supercolumns-elements-nasdaq-nyse-otcbb-general-UPDATE-2017-03-01csv', usecols=range(1,16))stocks = pdread_csv('supercolumns-elements-nasdaq-nyse-otcbb-general-UPDATE-2017-03-01csv')print(stockshead())str_list = []for colname, colvalue in stocksiteritems(): if type(colvalue[1]) == str:str_listappend(colname)# Get to the numeric columns by inversionnum_list = stockscolumnsdifference(str_list)stocks_num = stocks[num_list]print(stocks_numhead())输出:简单看看前面 5 行:zack@twosigma-Dell-Precision-M3800:/home/zack/hedge_pool/baskets/hcluster$ /hidden_relationshipspySymbol_update-2017-04-01 Hydrogen Helium Lithium Beryllium Boron \0 A 00 000000 00 00 00 1 AA 00 000000 00 00 00 2 AAAP 00 000461 00 00 00 3 AAC 00 000081 00 00 00 4 AACAY 00 000000 00 00 00 Carbon Nitrogen Oxygen Fluorine Fermium Mendelevium \0 0006632 00 0007576 00 0000000 0079188 1 0000000 00 0000000 00 0000000 0000000 2 0000000 00 0000000 00 0135962 0098090 3 0000000 00 0018409 00 0000000 0000000 4 0000000 00 0000000 00 0000000 0000000 Nobelium Lawrencium Rutherfordium Dubnium Seaborgium Bohrium Hassium \0 0197030 01990 01990 00 00 00 00 1 0000000 00000 00000 00 00 00 00 2 0244059 02465 02465 00 00 00 00 3 0000000 00000 00000 00 00 00 00 4 0000000 00000 00000 00 00 00 00 Meitnerium 0 00 1 00 2 00 3 00 4 00 [5 rows x 110 columns]Actinium Aluminum Americium Antimony Argon Arsenic Astatine \0 0000000 00 00 0002379 0047402 0018913 00 1 0000000 00 00 0000000 0000000 0000000 00 2 0004242 00 00 0001299 0000000 0000000 00 3 0000986 00 00 0003378 0000000 0000000 00 4 0000000 00 00 0000000 0000000 0000000 00 Barium Berkelium Beryllium Tin Titanium Tungsten Uranium \0 00 0000000 00 00 0002676 00 0000000 1 00 0000000 00 00 0000000 00 0000000 2 00 0141018 00 00 0000000 00 0004226 3 00 0000000 00 00 0000000 00 0004086 4 00 0000000 00 00 0000000 00 0000000 Vanadium Xenon Ytterbium Yttrium Zinc Zirconium 0 0000000 00 00 0000000 0000000 00 1 0000000 00 00 0000000 0000000 00 2 0002448 00 00 0018806 0008758 00 3 0001019 00 00 0000000 0007933 00 4 0000000 00 00 0000000 0000000 00 [5 rows x 109 columns]zack@twosigma-Dell-Precision-M3800:/home/zack/hedge_pool/baskets/hcluster$概念
特征的皮尔逊相关性(Pearson Correlation)。在这里案例中,是指来自元素周期表的矿物和元素:stocks_num = stocks_numfillna(value=0, axis=1)X = stocks_numvaluesfrom sklearnpreprocessing import StandardScalerX_std = StandardScaler()fit_transform(X)f, ax = pltsubplots(figsize=(12, 10))plttitle('Pearson Correlation of Concept Features (Elements & Minerals)')# Draw the heatmap using seabornsbheatmap(stocks_numastype(float)corr(),linewidths=025,vmax=10, square=True, cmap="YlGnBu", linecolor='black', annot=True)sbpltshow()输出:(这个可视化例子是在前 16 个样本上运行得到的)。看到元素周期表中的元素和上市公司关联起来真的很有意思。在某种程度时,我想使用这些数据基于公司与相关元素或材料的相关性来预测其可能做出的突破。测量「已解释方差(Explained Variance)」和主成分分析(PCA)已解释方差=总方差-残差方差(explained variance = total variance - residual variance)。应该值得关注的 PCA 投射组件的数量可以通过已解释方差度量(Explained Variance Measure)来引导。Sebastian Raschka 的关于 PCA 的文章对此进行了很好的描述,参阅:Principal Component Analysis# Calculating Eigenvectors and eigenvalues of Cov matirxmean_vec = npmean(X_std, axis=0)cov_mat = npcov(X_stdT)eig_vals, eig_vecs = nplinalgeig(cov_mat)# Create a list of (eigenvalue, eigenvector) tupleseig_pairs = [ (npabs(eig_vals[i]),eig_vecs[:,i]) for i in range(len(eig_vals))]# Sort from high to loweig_pairssort(key = lambda x: x[0], reverse= True)# Calculation of Explained Variance from the eigenvaluestot = sum(eig_vals)var_exp = [(i/tot)100 for i in sorted(eig_vals, reverse=True)] cum_var_exp = npcumsum(var_exp) # Cumulative explained variance# Variances plotmax_cols = len(stockscolumns) - 1pltfigure(figsize=(10, 5))pltbar(range(max_cols), var_exp, alpha=03333, align='center', label='individual explained variance', color = 'g')pltstep(range(max_cols), cum_var_exp, where='mid',label='cumulative explained variance')pltylabel('Explained variance ratio')pltxlabel('Principal components')pltlegend(loc='best')pltshow()输出:从这个图表中我们可以看到大量方差都来自于预测主成分的前 85%。这是个很高的数字,所以让我们从低端的开始,先只建模少数几个主成分。更多有关分析主成分合理数量的信息可参阅:Principal Component Analysis explained visually使用 scikit-learn 的 PCA 模块,让我们设 n_components = 9。代码的第二行调用了 fit_transform 方法,其可以使用标准化的**数据 X_std 来拟合 PCA 模型并在该数据集上应用降维(dimensionality reduction)。pca = PCA(n_components=9)x_9d = pcafit_transform(X_std)pltfigure(figsize = (9,7))pltscatter(x_9d[:,0],x_9d[:,1], c='goldenrod',alpha=05)pltylim(-10,30)pltshow()输出:这里我们甚至没有真正观察到聚类的些微轮廓,所以我们很可能应该继续调节 n_component 的值直到我们得到我们想要的结果。这就是数据科学与艺术(data science and art)中的「艺术」部分。现在,我们来试试 K-均值,看看我们能不能在下一章节可视化任何明显的聚类。K-均值聚类(K-Means Clustering)我们将使用 PCA 投射数据来实现一个简单的 K-均值。使用 scikit-learn 的 KMeans() 调用和 fit_predict 方法,我们可以计算聚类中心并为第一和第三个 PCA 投射预测聚类索引(以便了解我们是否可以观察到任何合适的聚类)。然后我们可以定义我们自己的配色方案并绘制散点图,代码如下所示:# Set a 3 KMeans clusteringkmeans = KMeans(n_clusters=3)# Compute cluster centers and predict cluster indicesX_clustered = kmeansfit_predict(x_9d)# Define our own color mapLABEL_COLOR_MAP = {0 : 'r',1 : 'g',2 : 'b'}label_color = [LABEL_COLOR_MAP[l] for l in X_clustered]# Plot the scatter digrampltfigure(figsize = (7,7))pltscatter(x_9d[:,0],x_9d[:,2], c= label_color, alpha=05)pltshow()输出:这个 K-均值散点图看起来更有希望,好像我们简单的聚类模型假设就是正确的一样。我们可以通过这种颜色可视化方案观察到 3 个可区分开的聚类。使用 seaborn 方便的 pairplot 函数,我可以以成对的方式在数据框中自动绘制所有的
特征。我们可以一个对一个地 pairplot 前面 3 个投射并可视化:# Create a temp dataframe from our PCA projection data "x_9d"df = pdDataFrame(x_9d)df = df[[0,1,2]]df['X_cluster'] = X_clustered# Call Seaborn's pairplot to visualize our KMeans clustering on the PCA projected datasbpairplot(df, hue='X_cluster', palette='Dark2', diag_kind='kde', size=185)sbpltshow()输出:构建篮子聚类(Basket Clusters)你应该自己决定如何微调你的聚类。这方面没有什么万灵药,具体的方法取决于你操作的环境。在这个案例中是由隐藏关系所定义的股票和金融市场。一旦你的聚类使你满意了,你就可以设置分数阈值来控制特定的股票是否有资格进入一个聚类,然后你可以为一个给定的聚类提取股票,将它们作为篮子进行交易或使用这些篮子作为信号。你可以使用这种方法做的事情很大程度就看你自己的创造力以及你在使用深度学习变体来进行优化的水平,从而基于聚类或数据点的概念优化每个聚类的回报,比如 short interest 或 short float(公开市场中的可用股份)。你可以注意到了这些聚类被用作篮子交易的方式一些有趣
特征。有时候标准普尔和一般市场会存在差异。这可以提供本质上基于「信息套利(information arbitrage)」的套利机会。一些聚类则和谷歌搜索趋势相关。看到聚类和材料及它们的供应链相关确实很有意思,正如这篇文章说的一样:Zooming in on 10 materials and their supply chains - Fairphone我仅仅使用该数据集操作了 Cobalt(钴)、Copper(铜)、Gallium(镓)和 Graphene(石墨烯)这几个列标签,只是为了看我是否可能发现从事这一领域或受到这一领域的风险的上市公司之间是否有任何隐藏的联系。这些篮子和标准普尔的回报进行了比较。通过使用历史价格数据(可直接在 Quantopian、Numerai、Quandl 或 Yahoo Finance 使用),然后你可以汇总价格数据来生成预计收益,其可使用 HighCharts 进行可视化:我从该聚类中获得的回报超过了标准普尔相当一部分,这意味着你每年的收益可以比标准普尔还多 10%(标准普尔近一年来的涨幅为 16%)。我还见过更加激进的方法可以净挣超过 70%。现在我必须承认我还做了一些其它的事情,但因为我工作的本质,我必须将那些事情保持黑箱。但从我目前观察到的情况来看,至少围绕这种方法探索和包装新的量化模型可以证明是非常值得的,而其唯一的缺点是它是一种不同类型的信号,你可以将其输入其它系统的流程中。生成卖空篮子聚类(short basket clusters)可能比生成买空篮子聚类(long basket clusters)更有利可图。这种方法值得再写一篇文章,最好是在下一个黑天鹅事件之前。如果你使用机器学习,就可能在具有已知和隐藏关系的上市公司的寄生、共生和共情关系之上抢占先机,这是很有趣而且可以盈利的。最后,一个人的盈利能力似乎完全关乎他在生成这些类别的数据时想出
特征标签(即概念(concept))的强大组合的能力。我在这类模型上的下一次迭代应该会包含一个用于自动生成特征组合或独特列表的单独算法。也许会基于近乎实时的事件,这可能会影响那些具有只有配备了无监督学习算法的人类才能预测的隐藏关系的股票组。数据挖掘与生活:算法分类和应用 相对于武汉,北京的秋来的真是早,九月初的傍晚,就能够感觉到丝丝丝丝丝丝的凉意。最近两件事挺有感觉的。看某发布会,设计师李剑叶的话挺让人感动的。“的设计是内敛和克制的。希望设计成为一种,可以被忽略的存在感”。其次,有感于不断跳Tone的妇科圣手,冯唐,“有追求、敢放弃”是他的标签。“如何分辨出垃圾邮件”、“如何判断一笔交易是否属于欺诈”、“如何判断红酒的品质和档次”、“扫描王是如何做到文字识别的”、“如何判断佚名的著作是否出自某位名家之手”、“如何判断一个细胞是否属于肿瘤细胞”等等,这些问题似乎都很专业,都不太好回答。但是,如果了解一点点数据挖掘(Data Mining)的知识,你,或许会有柳暗花明的感觉。的确,数据挖掘无处不在。它和生活密不可分,就像空气一样,弥漫在你的周围。但是,很多时候,你并不能意识到它。因此,它是陌生的,也是熟悉的。本文,主要想简单介绍下数据挖掘中的算法,以及它包含的类型。然后,通过现实中触手可及的、活生生的案例,去诠释它的真实存在。一、数据挖掘的算法类型一般来说,数据挖掘的算法包含四种类型,即分类、预测、聚类、关联。前两种属于有监督学习,后两种属于无监督学习,属于描述性的模式识别和发现。(一)有监督学习有监督的学习,即存在目标变量,需要探索特征变量和目标变量之间的关系,在目标变量的监督下学习和优化算法。例如,信用评分模型就是典型的有监督学习,目标变量为“是否违约”。算法的目的在于研究特征变量(人口统计、资产属性等)和目标变量之间的关系。(1)分类算法分类算法和预测算法的最大区别在于,前者的目标变量是分类离散型(例如,是否逾期、是否肿瘤细胞、是否垃圾邮件等),后者的目标变量是连续型。一般而言,具体的分类算法包括,逻辑回归、决策树、KNN、贝叶斯判别、SVM、随机森林、神经网络等。(2)预测算法预测类算法,其目标变量一般是连续型变量。常见的算法,包括线性回归、回归树、神经网络、SVM等。(二)无监督学习无监督学习,即不存在目标变量,基于数据本身,去识别变量之间内在的模式和特征。例如关联分析,通过数据发现项目A和项目B之间的关联性。例如聚类分析,通过距离,将所有样本划分为几个稳定可区分的群体。这些都是在没有目标变量监督下的模式识别和分析。(1)聚类分析聚类的目的就是实现对样本的细分,使得同组内的样本特征较为相似,不同组的样本特征差异较大。常见的聚类算法包括kmeans、系谱聚类、密度聚类等。(2)关联分析关联分析的目的在于,找出项目(item)之间内在的联系。常常是指购物篮分析,即消费者常常会同时购买哪些产品(例如游泳裤、防晒霜),从而有助于商家的捆绑销售。二、基于数据挖掘的案例和应用上文所提到的四种算法类型(分类、预测、聚类、关联),是比较传统和常见的。还有其他一些比较有趣的算法分类和应用场景,例如协同过滤、异常值分析、社会网络、文本分析等。下面,想针对不同的算法类型,具体的介绍下数据挖掘在日常生活中真实的存在。下面是能想到的、几个比较有趣的、和生活紧密关联的例子。(一)基于分类模型的案例这里面主要想介绍两个案例,一个是垃圾邮件的分类和判断,另外一个是在生物医药领域的应用,即肿瘤细胞的判断和分辨。(1)垃圾邮件的判别邮箱系统如何分辨一封Email是否属于垃圾邮件?这应该属于文本挖掘的范畴,通常会采用朴素贝叶斯的方法进行判别。它的主要原理是,根据邮件正文中的单词,是否经常出现在垃圾邮件中,进行判断。例如,如果一份邮件的正文中包含“报销”、“发票”、“促销”等词汇时,该邮件被判定为垃圾邮件的概率将会比较大。一般来说,判断邮件是否属于垃圾邮件,应该包含以下几个步骤。第一,把邮件正文拆解成单词组合,假设某篇邮件包含100个单词。第二,根据贝叶斯条件概率,计算一封已经出现了这100个单词的邮件,属于垃圾邮件的概率和正常邮件的概率。如果结果表明,属于垃圾邮件的概率大于正常邮件的概率。那么该邮件就会被划为垃圾邮件。(2)医学上的肿瘤判断如何判断细胞是否属于肿瘤细胞呢?肿瘤细胞和普通细胞,有差别。但是,需要非常有经验的医生,通过病理切片才能判断。如果通过机器学习的方式,使得系统自动识别出肿瘤细胞。此时的效率,将会得到飞速的提升。并且,通过主观(医生)+客观(模型)的方式识别肿瘤细胞,结果交叉验证,结论可能更加靠谱。如何操作?通过分类模型识别。简言之,包含两个步骤。首先,通过一系列指标刻画细胞特征,例如细胞的半径、质地、周长、面积、光滑度、对称性、凹凸性等等,构成细胞特征的数据。其次,在细胞特征宽表的基础上,通过搭建分类模型进行肿瘤细胞的判断。(二)基于预测模型的案例这里面主要想介绍两个案例。即通过化学特性判断和预测红酒的品质。另外一个是,通过搜索引擎来预测和判断股价的波动和趋势。(1)红酒品质的判断如何评鉴红酒?有经验的人会说,红酒最重要的是口感。而口感的好坏,受很多因素的影响,例如年份、产地、气候、酿造的工艺等等。但是,统计学家并没有时间去品尝各种各样的红酒,他们觉得通过一些化学属性特征就能够很好地判断红酒的品质了。并且,现在很多酿酒企业其实也都这么干了,通过监测红酒中化学成分的含量,从而控制红酒的品质和口感。那么,如何判断鉴红酒的品质呢?第一步,收集很多红酒样本,整理检测他们的化学特性,例如酸性、含糖量、氯化物含量、硫含量、酒精度、PH值、密度等等。第二步,通过分类回归树模型进行预测和判断红酒的品质和等级。(2)搜索引擎的搜索量和股价波动一只南美洲热带雨林中的蝴蝶,偶尔扇动了几下翅膀,可以在两周以后,引起美国德克萨斯州的一场龙卷风。你在互联网上的搜索是否会影响公司股价的波动?很早之前,就已经有文献证明,互联网关键词的搜索量(例如流感)会比疾控中心提前1到2周预测出某地区流感的爆发。同样,现在也有些学者发现了这样一种现象,即公司在互联网中搜索量的变化,会显著影响公司股价的波动和趋势,即所谓的投资者注意力理论。该理论认为,公司在搜索引擎中的搜索量,代表了该股票被投资者关注的程度。因此,当一只股票的搜索频数增加时,说明投资者对该股票的关注度提升,从而使得该股票更容易被个人投资者购买,进一步地导致股票价格上升,带来正向的股票收益。这是已经得到无数论文验证了的。(三)基于关联分析的案例:沃尔玛的啤酒尿布啤酒尿布是一个非常非常古老陈旧的故事。故事是这样的,沃尔玛发现一个非常有趣的现象,即把尿布与啤酒这两种风马牛不相及的商品摆在一起,能够大幅增加两者的销量。原因在于,美国的妇女通常在家照顾孩子,所以,她们常常会嘱咐丈夫在下班回家的路上为孩子买尿布,而丈夫在买尿布的同时又会顺手购买自己爱喝的啤酒。沃尔玛从数据中发现了这种关联性,因此,将这两种商品并置,从而大大提高了关联销售。啤酒尿布主要讲的是产品之间的关联性,如果大量的数据表明,消费者购买A商品的同时,也会顺带着购买B产品。那么A和B之间存在关联性。在超市中,常常会看到两个商品的捆绑销售,很有可能就是关联分析的结果。(四)基于聚类分析的案例:零售客户细分对客户的细分,还是比较常见的。细分的功能,在于能够有效的划分出客户群体,使得群体内部成员具有相似性,但是群体之间存在差异性。其目的在于识别不同的客户群体,然后针对不同的客户群体,精准地进行产品设计和推送,从而节约营销成本,提高营销效率。例如,针对商业银行中的零售客户进行细分,基于零售客户的特征变量(人口特征、资产特征、负债特征、结算特征),计算客户之间的距离。然后,按照距离的远近,把相似的客户聚集为一类,从而有效的细分客户。将全体客户划分为诸如,理财偏好者、基金偏好者、活期偏好者、国债偏好者、风险均衡者、渠道偏好者等。(五)基于异常值分析的案例:支付中的交易欺诈侦测采用支付宝支付时,或者刷信用卡支付时,系统会实时判断这笔刷卡行为是否属于盗刷。通过判断刷卡的时间、地点、商户名称、金额、频率等要素进行判断。这里面基本的原理就是寻找异常值。如果您的刷卡被判定为异常,这笔交易可能会被终止。异常值的判断,应该是基于一个欺诈规则库的。可能包含两类规则,即事件类规则和模型类规则。第一,事件类规则,例如刷卡的时间是否异常(凌晨刷卡)、刷卡的地点是否异常(非经常所在地刷卡)、刷卡的商户是否异常(被列入黑名单的套现商户)、刷卡金额是否异常(是否偏离正常均值的三倍标准差)、刷卡频次是否异常(高频密集刷卡)。第二,模型类规则,则是通过算法判定交易是否属于欺诈。一般通过支付数据、卖家数据、结算数据,构建模型进行分类问题的判断。(六)基于协同过滤的案例:电商猜你喜欢和推荐引擎电商中的猜你喜欢,应该是大家最为熟悉的。在京东商城或者亚马逊购物,总会有“猜你喜欢”、“根据您的浏览历史记录精心为您推荐”、“购买此商品的顾客同时也购买了商品”、“浏览了该商品的顾客最终购买了商品”,这些都是推荐引擎运算的结果。这里面,确实很喜欢亚马逊的推荐,通过“购买该商品的人同时购买了商品”,常常会发现一些质量比较高、较为受认可的书。一般来说,电商的“猜你喜欢”(即推荐引擎)都是在协同过滤算法(Collaborative Filter)的基础上,搭建一套符合自身特点的规则库。即该算法会同时考虑其他顾客的选择和行为,在此基础上搭建产品相似性矩阵和用户相似性矩阵。基于此,找出最相似的顾客或最关联的产品,从而完成产品的推荐。(七)基于社会网络分析的案例:电信中的种子客户种子客户和社会网络,最早出现在电信领域的研究。即,通过人们的通话记录,就可以勾勒出人们的关系网络。电信领域的网络,一般会分析客户的影响力和客户流失、产品扩散的关系。基于通话记录,可以构建客户影响力指标体系。采用的指标,大概包括如下,一度人脉、二度人脉、三度人脉、平均通话频次、平均通话量等。基于社会影响力,分析的结果表明,高影响力客户的流失会导致关联客户的流失。其次,在产品的扩散上,选择高影响力客户作为传播的起点,很容易推动新套餐的扩散和渗透。此外,社会网络在银行(担保网络)、保险(团伙欺诈)、互联网(社交互动)中也都有很多的应用和案例。(八)基于文本分析的案例这里面主要想介绍两个案例。一个是类似“扫描王”的APP,直接把纸质文档扫描成电子文档。相信很多人都用过,这里准备简单介绍下原理。另外一个是,江湖上总是传言红楼梦的前八十回和后四十回,好像并非都是出自曹雪芹之手,这里面准备从统计的角度聊聊。(1)字符识别:扫描王APP手机拍照时会自动识别人脸,还有一些APP,例如扫描王,可以扫描书本,然后把扫描的内容自动转化为word。这些属于图像识别和字符识别(Optical Character Recognition)。图像识别比较复杂,字符识别理解起来比较容易些。查找了一些资料,字符识别的大概原理如下,以字符S为例。第一,把字符图像缩小到标准像素尺寸,例如1216。注意,图像是由像素构成,字符图像主要包括黑、白两种像素。第二,提取字符的特征向量。如何提取字符的特征,采用二维直方图投影。就是把字符(1216的像素图)往水平方向和垂直方向上投影。水平方向有12个维度,垂直方向有16个维度。这样分别计算水平方向上各个像素行中黑色像素的累计数量、垂直方向各个像素列上的黑色像素的累计数量。从而得到水平方向12个维度的特征向量取值,垂直方向上16个维度的特征向量取值。这样就构成了包含28个维度的字符特征向量。第三,基于前面的字符特征向量,通过神经网络学习,从而识别字符和有效分类。(2)文学著作与统计:红楼梦归属这是非常著名的一个争论,悬而未决。对于红楼梦的作者,通常认为前80回合是曹雪芹所著,后四十回合为高鹗所写。其实主要问题,就是想确定,前80回合和后40回合是否在遣词造句方面存在显著差异。这事让一群统计学家比较兴奋了。有些学者通过统计名词、动词、形容词、副词、虚词出现的频次,以及不同词性之间的相关系做判断。有些学者通过虚词(例如之、其、或、亦、了、的、不、把、别、好),判断前后文风的差异。有些学者通过场景(花卉、树木、饮食、医药与诗词)频次的差异,来做统计判断。总而言之,主要通过一些指标量化,然后比较指标之间是否存在显著差异,藉此进行写作风格的判断。