Em seu livro O livro do porquê, Judea Pearl defende o ensino dos princípios de causa e efeito às máquinas, a fim de aprimorar sua inteligência. As realizações do aprendizado profundo são essencialmente apenas um tipo de ajuste de curva, enquanto a causalidade pode ser usada para descobrir interações entre os sistemas do mundo sob várias restrições sem testar hipóteses diretamente. Isso pode fornecer respostas que nos levem à AGI (inteligência artificial generalizada).
Esta solução propõe uma estrutura de inferência causal usando redes bayesianas para representar dependências causais e tirar conclusões causais com base em imagens de satélite observadas e dados experimentais na forma de condições simuladas de clima e solo. O estudo de caso é a relação causal entre a aplicação de fertilizante à base de nitrogênio e a produtividade do milho.
As imagens de satélite são processadas usando Recursos geoespaciais do Amazon SageMaker e enriquecido com custom-built Processamento do Amazon SageMaker operações. O mecanismo de inferência causal é implantado com Inferência assíncrona do Amazon SageMaker.
Neste post, demonstramos como criar essa análise contrafactual usando JumpStart do Amazon SageMaker soluções.
Visão geral da solução
O diagrama a seguir mostra a arquitetura do fluxo de trabalho de ponta a ponta.
Pré-requisitos
Você precisa de um Conta da AWS para usar esta solução.
Para executar esta solução JumpStart 1P e ter a infraestrutura implantada em sua conta da AWS, você precisa criar um ativo Estúdio Amazon SageMaker instância (consulte Integrado ao domínio do Amazon SageMaker). Quando sua instância do Studio estiver pronta, siga as instruções em SageMaker JumpStart para lançar a solução Crop Yield Counterfactuals.
Observe que esta solução está atualmente disponível apenas na região Oeste dos EUA (Oregon).
Inferência causal
A causalidade tem tudo a ver com a compreensão da mudança, mas como formalizar isso em estatística e aprendizado de máquina (ML) não é um exercício trivial.
Neste estudo de rendimento da cultura, o nitrogênio adicionado como fertilizante e os resultados do rendimento podem ser confundidos. Da mesma forma, o nitrogênio adicionado como fertilizante e os resultados da lixiviação de nitrogênio também podem ser confundidos, no sentido de que uma causa comum pode explicar sua associação. No entanto, associação não é causalidade. Se soubermos quais fatores observados confundem a associação, os explicamos, mas e se houver outras variáveis ocultas responsáveis pela confusão? Reduzir a quantidade de fertilizante não reduz necessariamente o nitrogênio residual; da mesma forma, pode não diminuir drasticamente o rendimento, enquanto as condições de solo e clima podem ser os fatores observados que confundem a associação. Como lidar com a confusão é o problema central da inferência causal. Uma técnica introduzida por RA Fisher chamada teste controlado e aleatório visa quebrar possíveis confusões.
No entanto, na ausência de ensaios clínicos randomizados, há necessidade de inferência causal puramente a partir de dados observacionais. Existem maneiras de conectar as questões causais aos dados em estudos observacionais, escrevendo o modelo gráfico causal sobre o que postulamos como as coisas acontecem. Isso envolve afirmar que os cruzamentos correspondentes capturarão as dependências correspondentes, enquanto satisfazem o critério gráfico de ignorabilidade condicional (até que ponto podemos tratar a causação como associação com base nas suposições causais). Depois de postularmos a estrutura, podemos usar as invariâncias implícitas para aprender com os dados observacionais e inserir questões causais, inferindo afirmações causais sem testes de controle randomizados.
Essa solução usa dados de ensaios de controle aleatório simulados (RCTs), bem como dados observacionais de imagens de satélite. Uma série de simulações conduzidas em milhares de campos e vários anos em Illinois (Estados Unidos) são usadas para estudar a resposta do milho ao aumento das taxas de nitrogênio para uma ampla combinação de variação de clima e solo observada na região. Ele aborda a limitação de usar dados de teste limitados no número de solos e anos que pode explorar usando simulações de cultivo de vários cenários agrícolas e geografias. O banco de dados foi calibrado e validado usando dados de mais de 400 ensaios na região. A concentração inicial de nitrogênio no solo foi definida aleatoriamente dentro de uma faixa razoável.
Além disso, o banco de dados é aprimorado com observações de imagens de satélite, enquanto as estatísticas zonais são derivadas de índices espectrais para representar mudanças espaço-temporais na vegetação, observadas em geografias e fases fenológicas.
Inferência causal com redes bayesianas
Modelos causais estruturais (SCMs) usam modelos gráficos para representar dependências causais, incorporando entradas humanas e orientadas por dados. Um tipo particular de modelo causal de estrutura denominado redes bayesianas é proposto para modelar a dinâmica da fenologia da cultura usando expressões probabilísticas, representando variáveis como nós e relacionamentos entre variáveis como arestas. Os nós são indicadores do crescimento da cultura, condições do solo e do clima, e as bordas entre eles representam relações causais espaço-temporais. Os nós pais são parâmetros relacionados ao campo (incluindo o dia da semeadura e a área plantada) e os nós filhos são rendimento, absorção de nitrogênio e métricas de lixiviação de nitrogênio.
Para mais informações, consulte o caracterização do banco de dados e os votos de guia para identificar os estádios de crescimento do milho.
Algumas etapas são necessárias para construir um modelo de redes bayesianas (com CausalNex) antes de podermos usá-lo para análise contrafactual e interventiva. A estrutura do modelo causal é inicialmente aprendida a partir dos dados, enquanto a expertise no assunto (literatura confiável ou crenças empíricas) é usada para postular dependências e independências adicionais entre variáveis aleatórias e variáveis de intervenção, bem como afirmar que a estrutura é causal.
utilização SEM LÁGRIMAS, um algoritmo de otimização contínua para aprendizado de estrutura, a estrutura do grafo que descreve dependências condicionais entre variáveis é aprendida a partir de dados, com um conjunto de restrições impostas a arestas, nós pais e nós filhos que não são permitidos no modelo causal. Isso preserva as dependências temporais entre as variáveis. Veja o seguinte código:
"""
tabu_edges: Imposing edges that are not allowed in the causal model
tabu_parents: Imposing parent nodes that are not allowed in the causal model
tabu_child: Imposing child nodes that are not allowed in the causal model """
from causalnex.structure.notears import from_pandas g_learned = from_pandas( X, tabu_edges=tabu_edges, tabu_parent_nodes=tabu_parents, tabu_child_nodes=tabu_child, max_iter=100,
)
A próxima etapa codifica o conhecimento do domínio em modelos e captura a dinâmica da fenologia, evitando relações espúrias. Análise de multicolinearidade, análise de fator de inflação de variação e importância de recurso global usando FORMAR análises são conduzidas para extrair informações e restrições sobre variáveis de estresse hídrico (expansão, fenologia e fotossíntese em torno da floração), variáveis de clima e solo, índices espectrais e indicadores baseados em nitrogênio:
"""
edges: Modifying the structure by imposing constraints on edges """
from causalnex.structure import StructureModel g = StructureModel()
g.add_edges_from( edges, origin="expert" )
As redes bayesianas no CausalNex suportam apenas distribuições discretas. Quaisquer feições contínuas, ou feições com um grande número de categorias, são discretizadas antes de serem ajustadas à rede bayesiana:
from causalnex.discretiser.discretiser_strategy import ( DecisionTreeSupervisedDiscretiserMethod, MDLPSupervisedDiscretiserMethod
) discretiser = DecisionTreeSupervisedDiscretiserMethod( mode="single", tree_params={"max_depth": 2, "random_state": 2022},
)
discretiser.fit( feat_names=features, dataframe=df, target_continuous=True, target=target,
)
Depois que a estrutura é revisada, a distribuição de probabilidade condicional de cada variável, dados seus pais, pode ser aprendida a partir dos dados, em uma etapa chamada estimativa de probabilidade:
from causalnex.network import BayesianNetwork bn = BayesianNetwork(g)
bn = bn.fit_node_states(discretised_data)
bn = bn.fit_cpds( train, method="BayesianEstimator", bayes_prior="K2",
)
Finalmente, a estrutura e as verossimilhanças são usadas para realizar inferências observacionais em tempo real, seguindo um método determinístico. Algoritmo da árvore de junção (JTA), e fazer intervenções usando fazer cálculos. Inferência assíncrona do SageMaker permite enfileirar solicitações recebidas e processá-las de forma assíncrona. Essa opção é ideal para cenários de inferência observacional e contrafactual, onde o processo não pode ser paralelizado, levando assim um tempo significativo para atualizar as probabilidades em toda a rede, embora várias consultas possam ser executadas em paralelo. Veja o seguinte código:
"""
Query the marginal likelihood of states in the graph given some observations. These observations can be made anywhere in the network, and their impact will be propagated through to the node of interest. """
from causalnex.inference import InferenceEngine ie = InferenceEngine(bn) pseudo_observation = [{"day_sow":0}, {"day_sow":1}, {"day_sow":2}]
marginals_multi = ie.query( pseudo_observation, parallel=True, num_cores=multiprocessing.cpu_count(),
)
# distribution before intervention
marginals_before = ie.query()["Y_corn"] # updating a node distribution
ie.do_intervention("N_fert", 0) # effect of do on marginals
marginals_after = ie.query()["Y_corn"] # Resetting the node distribution
ie.reset_do("N_fert")
Para mais detalhes, consulte o roteiro de inferência.
O modelo causal caderno é um guia passo a passo sobre como executar as etapas anteriores.
Processamento de dados geoespaciais
Trabalhos de Observação da Terra (EOJs) são encadeados para adquirir e transformar imagens de satélite, enquanto operações específicas e modelos pré-treinados são usados para remoção de nuvens, mosaicos, operações matemáticas de banda e reamostragem. Nesta seção, discutimos com mais detalhes as etapas do processamento geoespacial.
Área de interesse
Na figura a seguir, os polígonos verdes são os municípios selecionados, a grade laranja é o mapa do banco de dados (uma grade de células de 10 x 10 km onde são realizadas provas na região) e a grade de quadrados em tons de cinza é o mapa de 100 km x 100 km Grade de ladrilhos Sentinel-2 UTM.
Arquivos espaciais são usados para mapear o banco de dados simulado com imagens de satélite correspondentes, sobrepondo polígonos de células de 10 km x 10 km que dividem o estado de Illinois (onde os testes são conduzidos na região), polígonos de condados e 100 km x 100 km Sentinel- 2 blocos UTM. Para otimizar o pipeline de processamento de dados geoespaciais, alguns blocos Sentinel-2 próximos são selecionados primeiro. Em seguida, as geometrias agregadas de telhas e células são sobrepostas para obter a região de interesse (RoI). Os condados e os IDs das células que são totalmente observados dentro do RoI são selecionados para formar a geometria do polígono passada para os EOJs.
Intervalo de tempo
Para este exercício, o ciclo da fenologia do milho é dividido em três estágios: os estágios vegetativos v5 a R1 (emergência, colares foliares e pendão), os estágios reprodutivos R1 a R4 (espalhamento, bolha, leite e massa) e os estágios reprodutivos R5 (amassado) e R6 (maturidade fisiológica). Visitas consecutivas de satélite são adquiridas para cada estágio da fenologia dentro de um intervalo de tempo de 2 semanas e uma área de interesse predefinida (municípios selecionados), permitindo a análise espacial e temporal das imagens de satélite. A figura a seguir ilustra essas métricas.
remoção de nuvem
A remoção de nuvens para dados do Sentinel-2 usa um modelo de segmentação semântica baseado em ML para identificar nuvens na imagem, onde os pixels nublados são substituídos pelo valor -9999 (valor nodata):
request_polygon_coordinates = [[(-90.571754, 39.839326), (-90.893651, 39.84092), (-90.916609, 39.845075), (-90.916071, 39.757168), (-91.147678, 39.75707), (-91.265848, 39.757258), (-91.365125, 39.758723), (-91.367962, 39.759124), (-91.365396, 39.777266), (-91.432919, 39.840554), (-91.446385, 39.870394), (-91.455887, 39.945538), (-91.460287, 39.980333), (-91.494865, 40.037421), (-91.510322, 40.127994), (-91.512974, 40.181062), (-91.510332, 40.201142), (-91.258828, 40.197299), (-90.911969, 40.193088), (-90.909756, 40.284394), (-90.450227, 40.276335), (-90.451502, 40.188892), (-90.199556, 40.183945), (-90.118966, 40.235263), (-90.033026, 40.377806), (-89.92468, 40.435921), (-89.717104, 40.435655), (-89.714927, 40.319218), (-89.602979, 40.320129), (-89.601604, 40.122432), (-89.578289, 39.976127), (-89.698259, 39.975309), (-89.701864, 39.916787), (-89.994506, 39.901925), (-89.994405, 39.87286), (-90.583534, 39.87675), (-90.582435, 39.854574), (-90.571754, 39.839326)]]
start_time = '2018-08-15T00:00:00Z'
end_time = '2018-09-15T00:00:00Z' eoj_input_config = { "RasterDataCollectionQuery": { "RasterDataCollectionArn": 'arn:aws:sagemaker-geospatial:us-west-2:378778860802:raster-data-collection/public/nmqj48dcu3g7ayw8', "AreaOfInterest": { "AreaOfInterestGeometry": { "PolygonGeometry": {"Coordinates": request_polygon_coordinates} } }, "TimeRangeFilter": {"StartTime": start_time, "EndTime": end_time}, "PropertyFilters": { "Properties": [{"Property": {"EoCloudCover": {"LowerBound": 0, "UpperBound": 10}}}], "LogicalOperator": "AND", }, }
} eoj_config = { "JobConfig": { "CloudRemovalConfig": { "AlgorithmName": "INTERPOLATION", "InterpolationValue": "-9999", "TargetBands": ["red", "green", "blue", "nir", "swir16"], }, }
} eojParams = { "Name": "cloudremoval", "InputConfig": eoj_input_config, **eoj_config, "ExecutionRoleArn": role_arn,
} eoj_response = sg_client.start_earth_observation_job(**eojParams)
Depois que o EOJ é criado, o ARN é retornado e usado para executar a operação de geomosaico subsequente.
Para obter o status de um trabalho, você pode executar sg_client.get_earth_observation_job(Arn = response['Arn']).
geomosaico
O geomosaico EOJ é usado para mesclar imagens de várias visitas de satélite em um grande mosaico, sobrescrevendo nodata ou pixels transparentes (incluindo os pixels nublados) com pixels de outros timestamps:
eoj_config = {"JobConfig": {"GeoMosaicConfig": {"AlgorithmName": "NEAR"}}} eojParams = { "Name": "geomosaic", "InputConfig": {"PreviousEarthObservationJobArn": eoj_arn}, **eoj_config, "ExecutionRoleArn": role_arn,
} eoj_response = sg_client.start_earth_observation_job(**eojParams)
Depois que o EOJ é criado, o ARN é retornado e usado para executar a operação de reamostragem subsequente.
Reamostragem
A reamostragem é usada para diminuir a resolução da imagem geoespacial para corresponder à resolução das máscaras de corte (redimensionamento da resolução de 10 a 30 m):
eoj_config = { "JobConfig": { "ResamplingConfig": { "OutputResolution": {"UserDefined": {"Value": 30, "Unit": "METERS"}}, "AlgorithmName": "NEAR", }, }
} eojParams = { "Name": "resample", "InputConfig": {"PreviousEarthObservationJobArn": eoj_arn}, **eoj_config, "ExecutionRoleArn": role_arn,
} eoj_response = sg_client.start_earth_observation_job(**eojParams)
Depois que o EOJ é criado, o ARN é retornado e usado para executar a operação matemática de banda subsequente.
matemática de banda
As operações matemáticas de banda são usadas para transformar as observações de várias bandas espectrais em uma única banda. Inclui os seguintes índices espectrais:
- EVI2 – Índice de Vegetação Aprimorado de Duas Bandas
- DGVI – Índice de Vegetação por Diferença Generalizada
- NDMI - Índice de Umidade por Diferença Normalizada
- NDVI – Índice de Vegetação por Diferença Normalizada
- NDWI - Índice de água de diferença normalizada
Veja o seguinte código:
spectral_indices = [['EVI2', ' 2.5 * ( nir - red ) / ( nir + 2.4 * red + 1.0 ) '], ['GDVI', ' ( ( nir * * 2.0 ) - ( red * * 2.0 ) ) / ( ( nir * * 2.0 ) + ( red * * 2.0 ) ) '], ['NDMI', ' ( nir - swir16 ) / ( nir + swir16 ) '], ['NDVI', ' ( nir - red ) / ( nir + red ) '], ['NDWI', ' ( green - nir ) / ( green + nir ) ']] eoj_config = { "JobConfig": { "BandMathConfig": {"CustomIndices": {"Operations": []}}, }
} for indices in spectral_indices: eoj_config["JobConfig"]["BandMathConfig"]["CustomIndices"]["Operations"].append( {"Name": indices[0], "Equation": indices[1][1:-1]} ) eojParams = { "Name": "bandmath", "InputConfig": {"PreviousEarthObservationJobArn": eoj_arn}, **eoj_config, "ExecutionRoleArn": role_arn,
} eoj_response = sg_client.start_earth_observation_job(**eojParams)
estatísticas zonais
Os índices espectrais são ainda mais enriquecidos usando Processamento do Amazon SageMaker, onde a lógica personalizada baseada em GDAL é usada para fazer o seguinte:
- Mesclar o índices espectrais em um único mosaico multicanal
- Reprojetar o mosaico para o máscara de corteprojeção de
- Aplicar a máscara de corte e reprojetar o mosaico no CRC dos polígonos das células
- Calcular estatísticas zonais para polígonos selecionados (células de 10 km x 10 km)
Com distribuição de dados paralelizada, arquivos de manifesto (para cada estágio fenológico da cultura) são distribuídos em várias instâncias usando o ShardedByS3Key
Tipo de distribuição de dados S3. Para mais detalhes, consulte o script de extração de recursos.
O processamento geoespacial caderno é um guia passo a passo sobre como executar as etapas anteriores.
A figura a seguir mostra canais RGB de visitas de satélite consecutivas representando os estágios vegetativo e reprodutivo do ciclo fenológico do milho, com (direita) e sem (esquerda) máscaras de cultura (CW 20, 26 e 33, 2018 Central Illinois).
Na figura a seguir, os índices espectrais (NDVI, EVI2, NDMI) de visitas de satélite consecutivas representam os estágios vegetativo e reprodutivo do ciclo fenológico do milho (CW 20, 26 e 33, 2018 Central Illinois).
limpar
Se você não quiser mais usar esta solução, poderá excluir os recursos que ela criou. Depois que a solução for implantada no Studio, escolha Excluir todos os recursos para excluir automaticamente todos os recursos padrão que foram criados ao iniciar a solução, incluindo o bucket S3.
Conclusão
Esta solução fornece um modelo para casos de uso em que a inferência causal com redes bayesianas é a metodologia preferida para responder a questões causais a partir de uma combinação de dados e entradas humanas. O fluxo de trabalho inclui uma implementação eficiente do mecanismo de inferência, que enfileira consultas e intervenções recebidas e as processa de forma assíncrona. O aspecto modular permite a reutilização de vários componentes, incluindo processamento geoespacial com operações específicas e modelos pré-treinados, enriquecimento de imagens de satélite com operações GDAL personalizadas e engenharia de recursos multimodais (índices espectrais e dados tabulares).
Além disso, você pode usar esta solução como um modelo para a construção de modelos de cultivo em grade onde são conduzidos o gerenciamento de fertilizantes nitrogenados e a análise de políticas ambientais.
Para mais informações, consulte Modelos de solução e siga o guia para lançar a solução Crop Yield Counterfactuals na região Oeste dos EUA (Oregon). O código está disponível no GitHub repo.
Citações
Alemão Mandrini, Sotirios V. Archontoulis, Cameron M. Pittelkow, Taro Mieno, Nicolas F. Martin,
Conjunto de dados simulados da resposta do milho ao nitrogênio em milhares de campos e vários anos em Illinois,
Dados resumidos, Volume 40, 2022, 107753, ISSN 2352-3409
Recursos úteis
Sobre os autores
Paulo Barna é Cientista de Dados Sênior nos Laboratórios de Prototipagem de Machine Learning da AWS.
- Conteúdo com tecnologia de SEO e distribuição de relações públicas. Seja amplificado hoje.
- Platoblockchain. Inteligência Metaverso Web3. Conhecimento Ampliado. Acesse aqui.
- Fonte: https://aws.amazon.com/blogs/machine-learning/generate-a-counterfactual-analysis-of-corn-response-to-nitrogen-with-amazon-sagemaker-jumpstart-solutions/
- :é
- 1
- 10
- 100
- 2018
- 2021
- 2022
- 39
- 7
- a
- Sobre
- realizações
- Conta
- adquirir
- adquirido
- em
- ativo
- adicionado
- Adição
- Adicional
- endereços
- defensores
- Depois de
- AGI
- visa
- algoritmo
- Todos os Produtos
- permite
- Apesar
- Amazon
- Amazon Sage Maker
- JumpStart do Amazon SageMaker
- entre
- quantidade
- análise
- e
- respostas
- qualquer lugar
- Aplicação
- arquitetura
- SOMOS
- ÁREA
- por aí
- AS
- aspecto
- Afirmando
- Associação
- At
- automaticamente
- disponível
- evitando
- AWS
- BANDA
- baseado
- Bayesiano
- BE
- antes
- entre
- Azul
- livro
- Break
- amplo
- construir
- Prédio
- by
- chamado
- CAN
- capacidades
- capturar
- capturas
- casos
- Categorias
- Causar
- Células
- central
- acorrentado
- alterar
- Alterações
- canais
- criança
- Escolha
- reivindicando
- reivindicações
- Na nuvem
- código
- Colares
- combinação
- comum
- componentes
- concentração
- condições
- conduzido
- Contato
- consecutivo
- restrições
- contínuo
- ao controle
- controlado
- Correspondente
- poderia
- crio
- criado
- colheita
- Atualmente
- curva
- personalizadas
- Feito sob encomenda
- ciclo
- dados,
- informática
- cientista de dados
- orientado por dados
- banco de dados
- dia
- profundo
- deep learning
- demonstrar
- implantado
- Derivado
- detalhe
- detalhes
- diferença
- diretamente
- discutir
- distribuído
- distribuição
- distribuições
- dividido
- domínio
- drasticamente
- desenhar
- dinâmica
- cada
- efeito
- emergência
- permite
- permitindo
- end-to-end
- Motor
- Engenharia
- aprimorada
- enriquecido
- ambiental
- Politica ambiental
- essencialmente
- Exercício
- expansão
- especialista
- experiência
- Explicação
- explorar
- expressões
- extensão
- extrato
- fatores
- agricultura
- Característica
- Funcionalidades
- poucos
- Campos
- Figura
- seguir
- seguinte
- Escolha
- formulário
- Quadro
- da
- totalmente
- mais distante
- gerar
- geografias
- ter
- GitHub
- dado
- Global
- gráfico
- Tons de cinza
- Verde
- Grade
- Growth
- guia
- manipular
- acontecer
- Ter
- oculto
- Como funciona o dobrador de carta de canal
- Como Negociar
- Contudo
- HTML
- http
- HTTPS
- humano
- ideal
- identificar
- identificar
- Illinois
- imagem
- imagens
- Impacto
- implementação
- implícita
- importar
- importância
- Imposta
- imponente
- in
- inclui
- Incluindo
- Entrada
- incorporando
- aumentando
- indicadores
- Índices
- INFORMAÇÕES
- Infraestrutura
- do estado inicial,
- inicialmente
- insights
- instância
- instruções
- Inteligência
- interações
- interesse
- da intervenção
- introduzido
- IT
- ESTÁ
- Trabalho
- Saber
- Conhecimento
- Laboratório
- grande
- lançamento
- de lançamento
- conduzir
- APRENDER
- aprendido
- aprendizagem
- limitação
- Limitado
- literatura
- mais
- máquina
- aprendizado de máquina
- máquinas
- moldadas
- Fazendo
- de grupos
- mapa,
- Martin
- máscara
- Máscaras
- Match
- matemática
- Importância
- maturidade
- ir
- Metodologia
- Métrica
- poder
- leite
- ML
- modelo
- modelos
- modulares
- mais
- múltiplo
- nome
- NASA
- Perto
- necessariamente
- você merece...
- rede
- redes
- Próximo
- Nicolas
- nó
- Distribuição de nós
- nós
- número
- obter
- of
- on
- operação
- Operações
- otimização
- Otimize
- Opção
- Laranja
- ordem
- Oregon
- Outros
- Paralelo
- parâmetros
- pais
- particular
- passou
- Realizar
- Fotossíntese
- oleoduto
- platão
- Inteligência de Dados Platão
- PlatãoData
- plugue
- Privacidade
- Polygon
- possível
- Publique
- preferido
- princípios
- Prévio
- Problema
- processo
- Processado
- processos
- em processamento
- Propriedades
- propriedade
- proposto
- propõe
- prototipagem
- fornecer
- fornece
- puramente
- Frequentes
- acaso
- Randomizado
- alcance
- Preços
- pronto
- razoável
- Vermelho
- reduzir
- redução
- região
- relacionamento
- Relacionamentos
- remoção
- substituído
- representar
- representando
- pedidos
- requeridos
- Resolução
- Recursos
- resposta
- responsável
- Comentários
- RGB
- ROI
- Execute
- corrida
- sábio
- satélite
- cenários
- Cientista
- Seção
- segmentação
- selecionado
- senior
- sentido
- Série
- conjunto
- vários
- Shows
- Similarmente
- solteiro
- solução
- Soluções
- alguns
- Espacial
- Espectral
- quadrados
- Etapa
- Estágio
- padrão
- Estado
- Unidos
- estatística
- Status
- Passo
- Passos
- estresse
- estrutura
- caso
- estudo
- Estudo
- sujeito
- subseqüente
- ajuda
- sistemas
- tomar
- taro
- Ensino
- modelo
- ensaio
- que
- A
- The Graph
- O Estado
- o mundo
- deles
- Eles
- assim
- Este
- coisas
- milhares
- três
- Através da
- todo
- tempo
- para
- juntos
- Trem
- Transformar
- transformando
- transparente
- tratar
- julgamento
- ensaios
- confiável
- UCLA
- descobrir
- para
- compreensão
- unidade
- Unido
- Estados Unidos
- Atualizar
- atualização
- us
- usar
- validado
- valor
- vário
- Visitas
- volume
- Água
- maneiras
- Clima
- semanas
- BEM
- Ocidente
- O Quê
- qual
- enquanto
- precisarão
- de
- dentro
- sem
- mundo
- escrita
- X
- anos
- Produção
- rendimentos
- Vocês
- investimentos
- zefirnet