Pull to refresh
31
0
skipjack @skipjack

User

Send message
По поводу МГУ и общения, в Москве постоянно митапы проходят, где прошедшие задачки разбирают.

А что это за встречи, в каком формате они проходят (можно ли прийти со стороны)?
0.88308 — это Private LB. Или вы имеете в виду Public LB?
См. здесь
Кстати, там в форуме некоторые участники, занявшие высокие места (в т.ч. и первое) описывают свой подход к решению задачи. Есть и скрипты.
Дополнение: я бы еще написал «Top 5% in several competitions» перед или после ссылки, чтобы было заметно при беглом просмотре.
Извините, а в чем проблема вставить просто ссылку, именно так, как вы ее вставили в ваше сообщение выше? По-моему, достаточно информативно и при этом максимально лаконично. Кому надо — тот перейдет.
Я тоже проходил этот курс, и тоже участвовал в этом соревновании Kaggle.
Мой результат — 0.863 на Private Board.
Если позволите, процитирую свой же текст, который я выкладывал на форуме Kaggle. Прошу прощения, что не перевожу обратно на русский (честно — лень).

On the last day of the competition I tried to build new variable based on startprice, because as I read in forum, there are reasons to modify it somehow. My idea was to compare startprice with an average price for a given item. The main problem is how to calculate this average price.

My ideas and steps:

1. For calculating average market prices for items we take into account ONLY non-biddable and sold items because biddable startprice could be much lower than actual sold price of that item. This is very important. If we knew actual sold prices for biddable items (and not only startprice), we could have included them also. And we cannot take unsold prices because they can be higher and don't represent actual market prices. Though we get only 220 (~12%) such items out of 1861 and this is rather small amount. Because of this fact it doesn't contain data for certain triplets (productline, condition, startprice).

2. Based on the previous table, we calculate 4 tables with average prices, using different aggregating criteria. I would use these tables on the stage 4 (see below).

3. Merge all tables in one table.

4. Main logic:

  • 4.1. If we have avg price for certain (condition, productline, storage) triplet for a given item, use this value as average price. This case accounts for 81% of all items in eBayTest dataset.
  • 4.2. Else if we have avg price for certain (condition, productline) pair for a given item, use this value as average price. This case accounts for additional 13% of all items in eBayTest dataset.
  • 4.3. Else use special calculated price based on item productline and condition separately. The trick here is to calculate avg prices for productlines only for condition==«Used» items, because it is the only condition which is present for all 10 productlines in the table with prices (remember that I got only 220 items out of 1861 for this table). And then we can adjust this average price with a coefficient for the item based on its actual condition. It is less precise scenario than two previous ones, but it is more preferable than just avg productline price without condition adjustment. This case accounts for 5% of all items in eBayTest dataset.
  • 4.4. Then calculate norm_price as ratio between start_price and this average price (obtained in previous 4.1-4.3 steps). So norm_price=start_price/average_price.


5. Use randomForest(sold ~ norm_price + biddable + productline+condition+storage, data=...)

This algorithm increases AUC on my train data by 0.02-0.03 points in average (i.e. for example, from 0.87 to 0.89) in comparison with RF with startprice instead of norm_price. It is interesting that in private LB it got 0.863 and in public LB it got only 0.833. But I suppose it's not just a fluke, because it proves better quality both on train data and private LB in my case.

This norm_price is very well interpretable:

  • norm_price>1 means that an item price is higher than average for items of this group (productline, condition, storage)
  • norm_price=1 means that the price is just as average
  • norm_price<1 means that the price is below average (for example, 0.5 means that item if 2 times cheaper that average price for this item)

As I suppose I could had tried to use some additional function with norm_price to even more increase AUC, but I had no more submission attempts and spare time. Also I suppose that even raw norm_price works quite well at least for random forests.

I've tried to work with text corpus, but I was confused because importance of terms from description was not very high in comparison to other variables. In addition there were certain technical problems with stemming of the text corpus.

I noticed that it can be promising to mix log regression and RF in one ensemble. You just check AUC and accuracy of mix model with different weights for LogReg and RF models. I tried (0.0;1.0), (0.1;0.9),....(0.9;0.1), (1.0;0.0). And then you choose weights with the highest AUC/accuracy, for example, 0.9*RF+0.1*LogReg. This is simple idea, though I haven't used it for the final submission and used only pure RF just to make my model simple.


Script
eBayTrain = read.csv(«eBayiPadTrain.csv», stringsAsFactors=FALSE)
eBayTest = read.csv(«eBayiPadTest.csv», stringsAsFactors=FALSE)

# correct several items productline — it seems that certain productlines corresponds to the same product
# see Wikipedia for details of Apple products
eBayTrain[which(eBayTrain$productline==«iPad 5»),«productline»]=«iPad Air»
eBayTrain[which(eBayTrain$productline==«iPad mini Retina»),«productline»]=«iPad mini 2»

# For calculating average market prices for items we take into account ONLY non-biddable
# and sold items because biddable startprice could be much lower than actual sold price
# of that item. This is very important. And we cannot take unsold prices because they
# can be higher and doesn't represent actual market prices.
eBayTrain_new=eBayTrain[eBayTrain$biddable==0 & eBayTrain$sold==1,]

# Based on the previous table, we calculate 4 tables with averages.
# Note that ak_productline_used contains average price for productlines only for condition==«Used»
# — this is because it is the only condition which is present in eBayTrain for every productline
ak_cps=aggregate(startprice~storage+condition+productline, data=eBayTrain_new, mean, na.rm=TRUE)
ak_cp=aggregate(startprice~productline+condition, data=eBayTrain_new, mean, na.rm=TRUE)
ak_condition=aggregate(startprice~condition, data=eBayTrain_new, mean, na.rm=TRUE)
ak_productline_used=aggregate(startprice~productline, data=eBayTrain_new[eBayTrain_new$condition==«Used»,], mean, na.rm=TRUE)
colnames(ak_cps)[4]=«avg_price_cps»
colnames(ak_cp)[3]=«avg_price_cp»
colnames(ak_productline_used)[2]=«avg_price_p_used»

# per_used_price is the avg prices ratio between given condition and «Used» condition
ak_condition$per_used_price=ak_condition$startprice/ak_condition[ak_condition$condition==«Used»,«startprice»]
ak_condition$startprice=NULL

eBayTest$sold=0
eBayAll=rbind(eBayTrain,eBayTest)
df3 < — merge(eBayAll, ak_cps, by=c(«productline»,«condition»,«storage»), all.x = TRUE)

df3 < — merge(df3, ak_cp, by=c(«productline»,«condition»), all.x = TRUE)
df3 < — merge(df3, ak_productline_used, by=c(«productline»), all.x = TRUE)
df3 < — merge(df3, ak_condition, by=c(«condition»), all.x = TRUE)

# calc_price = avg price for a given productline (only condition==«Used» included)
# from table ak_productline_used multiplied by the ratio from ak_condition table between
# given condition and «Used» condition

df3$calc_price=df3$avg_price_p*df3$per_used_price

#nrow(test[is.na(test$avg_price_cps)==FALSE,])/nrow(test)
#[1] 0.8132832
#(nrow(test[is.na(test$avg_price_cp)==FALSE,])-nrow(test[is.na(test$avg_price_cps)==FALSE,]))/nrow(test)
#[1] 0.1340852
#nrow(test[is.na(test$avg_price_cp)==TRUE,])/nrow(test)
#[1] 0.05263158

#main logic:
# 1. If ak_cps contains data for certain (condition, productline, storage) triplet
# for a given item, use this value as average price.
# 2. Else if ak_cp contains data for certain (condition, productline) pair
# for a given item, use this value as average price.
# 3. Else use special calculated price baced on item productline and condition separately.
# It is the less precise scenario than two previous ones, but it is more preferable than
# just avg productline price without condition adjustment.
# 4. Then calculate norm_price as ratio between start_price and this average price
# (obtained from previous 1-3 steps)

df3$avg_price_cp1=ifelse(is.na(df3$avg_price_cps)==TRUE,df3$avg_price_cp,df3$avg_price_cps)
df3$avg_price_cp2=ifelse(is.na(df3$avg_price_cp1)==TRUE,df3$calc_price,df3$avg_price_cp1)
df3$norm_price=(df3$startprice/df3$avg_price_cp2)

df3$sold=as.factor(df3$sold)
df3$biddable=as.factor(df3$biddable)
df3$productline=as.factor(df3$productline)
df3$storage=as.factor(df3$storage)
df3$condition=as.factor(df3$condition)
df3$carrier=as.factor(df3$carrier)
df3$cellular=as.factor(df3$cellular)
df3$color=as.factor(df3$color)

df3=df3[order(df3$UniqueID),]

train=head(df3, nrow(eBayTrain))
test=tail(df3, nrow(eBayTest))
test$sold=NULL

library(caTools)
set.seed(3000)
spl = sample.split(train$sold, SplitRatio = 0.7)
train0 = subset(train, spl==TRUE)
test0 = subset(train, spl==FALSE)

# we can use norm_price directly or try to calculate some formula, for example
# log(norm_price+1). But at least for random forest just norm_price is enough as I suppose

#LogMod2=glm(sold ~ norm_price + biddable + productline+condition,data=train0,family=binomial)
#PredLog2=predict(LogMod2,newdata = test0,type=«response»)

library(randomForest)
RFMod2=randomForest(sold ~ norm_price + biddable + productline+condition+storage,data=train0)
PredRF2=predict(RFMod2,newdata = test0,type=«prob»)
#table(test0$sold,PredRF2[,2]>=0.5)
#library(ROCR)
#pred=prediction(PredRF2[,2],test0$sold)
#performance(pred,«auc»)@y.values

#MySubmission = data.frame(UniqueID = eBayTest$UniqueID, Probability1 = PredRF2[,2])
#write.csv(MySubmission, «SubmissionRF_norm_price4.csv», row.names=FALSE)

А почему делается упор на термине data scientist?
Что, data analyst (аналитик по данным) не актуально?
Согласен, называть себя ученым, не имея соответствующего опыта (научно-исследовательской деятельности, публикации в журналах и т.п.) неправильно, но можно спуститься и на ступеньку ниже. В чем проблема? Или такой ниши на рынке труда нет?

И здесь есть некоторая путаница, как мне кажется: человек может указать в своих навыках и интересах data science, но при этом не позиционировать себя как ученого, а только как аналитика. Разница в том, что он не разрабатывает качественно новые алгоритмы, а лишь применяет существующие (или их комбинации).

Теория «век живи — век учись» и жажда постоянного самосовершенствования — это просто самообман.
— по-моему, не очень удачная мысль автора. Если он хотел сказать, что курсы Coursera достаточно поверхностные — это одно. А то, что самообразование ведет к самообману — это несколько странное утверждение!
Спасибо за разъяснения, обязательно попробую эту систему. Сначала хотел попробовать Ustream, теперь начну с этой.
Понял спасибо!
А ведущие могут переключаться?
Скажем, есть 9 маленьких окошек и 1 большое, в котором тот ведущий, который вещает в данный момент. Потом текущий ведущий меняется на другого. Примерно так? Или же в главном окне всегда находится модератор? Или иначе, т.е. все 10 окон абсолютно равнозначны, одинакового размера?
Скажите, правильно ли я понимаю, что могут до 10 человек находиться в видеочате, и дополнительно гораздо больше их видеть и слышать их через трансляцию на Youtube? У меня вопрос: указанная выше задержка (10-30 сек) есть только для слушателей? Присутствует ли эта задержка для участников видеочата?
Может ли вообще быть одновременно и видеочат между этими 10 людьми и трансляция этого чата на более широкую аудиторию? Или либо чат, либо трансляция, но трансляция только одного участника? В последнем случае, возможно ли быстрое переключение между ведущими? Будет ли задержка (10-30 сек) в этом случае?
Мне кажется «Хабрахабр» вполне подходит для этой роли, как крупнейшее в Рунете сообщество IT-специалистов и представителей смежных специальностей (программисты, дизайнеры, аналитики, журналисты, копирайтеры, представители операторов связи, регистраторов, хостинг-компаний и других специальностей интернет-сферы).
«Хабрахабр» является также одним из крупнейших сообществ всего Рунета при средней ежедневной посещаемости порядка 1 млн человек.


С чего вы взяли, что на Хабре, как и в Роскомсвободе и в H&P и ComputerBild выборка будет репрезентативной?
Не будет.
Роскомсвобода — по-моему, очевидно, что выборка сильно смещенная, это примерно как среди сидящих или отсидевших устраивать опрос, как они относятся к ужесточению уголовного наказания.
ComputerBild и Хабра — ресурсы для интеллектуалов, причем у них возможно сильное смещение в сторону либеральных ценностей по отношению ко всему обществу (даже если взять только тех, кто имеет доступ в интернет), особенно в части, связанной со свободой доступа к информации.
Еще, возможно, выборка в опросе Роскомсвободы слишком смещена в сторону более молодых людей.

Резюме:
IT специалисты и представители смежных специальностей — не репрезентативная выборка для определения мнения всего общества по каким-то вопросам, связанным, например, с ограничением свободы (в т.ч. доступа к информации).
Как вариант — можно такой же опрос прогнать на каких-либо других крупных ресурсах, но не IT направленности (ну я не знаю, форум рыбаков, автолюбителей, что-нибудь в таком духе), чтобы увидеть (или не увидеть), что данные, полученные в разных группах, могут существенно отличаться.
Очень понравилась лекция!
Говорит на доступном языке, многие концепции понял, про которые раньше даже не пытался узнать, т.к. думал, что это очень сложно.
А то, как человек передвигается — не так важно, когда слушаешь такую лекцию, обычно на такие вещи не обращаешь внимания (по крайней мере, на сознательном уровне), заинтересованный слушатель полностью поглощен темой.

Хорошо, тогда дополнительный вопрос.
Пусть тело получает от Солнца энергию мощностью 1 Вт и одновременно излучает энергию в каком-то виде тоже 1 Вт.
Что, если частота и другие характеристики излучения, которое тело излучает вовне, совпадает с теми зарактеристиками, которое тело получает?
Как мы тогда снаружи узнаем, отражает ли оно это излучение или же не отражает, а поглощает, внутри как-то перерабатывает и испускает в том же спектре, что и получило? Или для нас такой вариант эксивалентен отражению?
То есть, мой вопрос нужен для того, чтобы уточнить термин «отражать», понимаете?
У меня такой вопрос (в т.ч. к автору поста):
Температура в космосе, на орбите Земли равна +4°С
Если быть точным, то не на орбите Земли, а на расстоянии от Солнца равному удаленности орбиты Земли. И для абсолютно черного тела, т.е. такого, которое полностью поглотит солнечные лучи, ничего не отразив обратно.

Это цитата из поста автора.

Пояните пожалуйста, как может температура стабилизироваться на уровне +4 градуса, при этом тело будет продолжать поглощать солнечные лучи и не будет отдавать вовне энергию ни в каком виде?
Куда будет преобразовываться полученная в виде излучения от Солнца энергия после достижения температуры +4 градуса?
И вообще, как можно иметь какую-то температуру, отличную от абсолютного нуля, и при этом не излучать ничего («ничего не отразив обратно»)?

P.S. Я не физик, иначе бы такого вопроса, возможно не задал, поэтому, если можно, поясните на доступном языке. Просто стало любопытно.
Товарищи!
Я сегодня общался с юристом, который мне подтвердил, что в указанном пользователем mindego решении суда по этому сайту содержится формальное нарушение, на основании которого его можно было (бы) отменить.
Нарушение состоит в том, что прокурор, видимо, по ошибке включил в свое заявление абзац про взрывчатые вещества, т.к. это основание одно из самых частых. А судья, видимо, случайно пропустил этот абзац и включил его в свое решение, хотя решение должно было содержать ссылку только на нарушение авторских прав, контрафакт и т.п.

— да… да это просто прокурор, когда писал заявление ошибся, а судья неудачно скопировал это в решение. формально это повод для отмены

— То есть они вставили как будто кусок (абзац) из какого-то шаблонного заявления, а суд тоже не обратил на это внимания?

— естественно… прокуроры по пять раз на дню подают заявления… и самое распространенное это как раз экстремизм и изготовление взрывчатых веществ


См. также мой комментарий выше.

Также не совсем понятно из решения, была ли другая сторона (представитель сайта dou.ua) должным образом уведомлена о проведении данного судебного заседания. Если нет — то это тоже, возможно, повод для отмены данного решения.
Решение со стороны выглядит каким-то странным. Поясню ниже, что я имею в виду:
из прочтения текста этого решения создается впечатление, что на том сайте якобы найдены два разных нарушения:
1. Содержится информация о порядке и способах изготовления взрывчатых веществ.
2. Содержится информация о том как избежать ответственности за использование контрафактных программ для ЭВМ в том числе в целях извлечения дохода.

Странно то, что по первому пункту (взрывчатые вещества) в тексте решения есть только два упоминания: первый раз — что прокурор попросил признать эту информацию запрещенной, а второй раз — что судья удовлетворил его решение. Все! Больше нигде в тексте этого документа нет ни слова об этом, ни данные экспертиз, ни ссылки на законы и другие НПА, которые нарушены и т.п.
Это вдвойне странно, т.к. по второму пункту (нарушение авторских прав) написано очень много текста, включая разные ссылки на законы и НПА (нормативно-правовые акты).

То есть, со стороны данное решение выглядит примерно так:
1. В описательной части прокурор обратился в суд с заявлением о признании информации о порядке и способах изготовления взрывчатых веществ, содержащуюся в сети Интернет на сайте <данные изъяты>, запрещенной к распространению на территории Российской Федерации.
2. Суд в мотивировочной части подробно говорит про нарушения в сфере защиты интеллектуальной собственности. И ни единого (!) слова про взрывчатые вещества. Вообще никакого упоминания.
3. В резолютивной же части суд удовлетворяет заявление прокурора (см. п.1) и признает информацию о порядке и способах изготовления взрывчатых веществ, содержащуюся в сети Интернет на сайте <данные изъяты>, запрещенной к распространению на территории Российской Федерации. Про интеллектуальную собственность конкретно здесь не сказано.

То есть, то, о чем говорится в мотивировочной части не соответствует тому (как мне кажется), о чем говорится в резолютивной части.

Кто разбирается в праве, не прокомментируете это?
Спасибо, очень познавательная статья!
У меня есть предположение, зачем нужно было определить код ТН ВЭД (кроме банальной статистики).
Каждый товар, в зависимости от его типа, должен иметь определенный набор сертификатов и удовлетворять каким-то стандартам.
Например, гигиенический сертификат для игрушек или для сотовых телефонов.
И, чтобы понять, какие сертификаты должны быть предоставлены в комплекте документов (может их вообще не нужно), нужно определить тип этого товара.

Кстати, что делать, если бы потребовалось проходить сертификацию при растомаживании товара, сколько бы это могло стоить?
Или здесь есть какие-то более простые пути, вроде признания каких-то международных сертификатов?
Наверное (говорю так, потому что не проследил всю цепочку рассуждений).
Кстати, если бы программа работала бы не с символьными вычислениями, а и приближенными численными расчетами, то разницу между первыми 7-ю интегралами и восьмым можно было бы вообще списать на ошибку округления. Она (разница) составляет менее 10^(-10) в относительном выражении.
Это все, конечно, невероятно круто и интересно, но ведь для данной конкретной цепочки, если стоит цель придумать формулу, чтобы восьмой член отличался от всех семи предыдущих, можно просто взять банальную формулу:
a(n)=Pi/2+[n/8]*M, где [x] — целая часть числа x, а M — любое отличное от 0 число (например, 1).

То есть троллинг можно было бы устроить и более доступными средствами.
А так — да, решение для ценителей.
Решение в двумерном случае было бы интересно увидеть.
Но здесь еще (как мне кажется) нужно уточнить некоторые детали, например, проливается ли вода по диагонали.
1
23 ...

Information

Rating
Does not participate
Location
Москва и Московская обл., Россия
Registered
Activity